mirror of
https://github.com/zadam/trilium.git
synced 2025-10-26 07:46:30 +01:00
feat(react/settings): port revision snapshot list
This commit is contained in:
@@ -7,11 +7,12 @@ import FormText from "../../react/FormText";
|
||||
import OptionsSection from "./components/OptionsSection";
|
||||
import TimeSelector from "./components/TimeSelector";
|
||||
import { useMemo } from "preact/hooks";
|
||||
import { useTriliumOptionBool, useTriliumOptionJson } from "../../react/hooks";
|
||||
import { useTriliumOption, useTriliumOptionBool, useTriliumOptionInt, useTriliumOptionJson } from "../../react/hooks";
|
||||
import { SANITIZER_DEFAULT_ALLOWED_TAGS } from "@triliumnext/commons";
|
||||
import FormCheckbox from "../../react/FormCheckbox";
|
||||
import FormGroup from "../../react/FormGroup";
|
||||
import search from "../../../services/search";
|
||||
import { FormTextBoxWithUnit } from "../../react/FormTextBox";
|
||||
|
||||
export default function OtherSettings() {
|
||||
return (
|
||||
@@ -19,6 +20,7 @@ export default function OtherSettings() {
|
||||
<NoteErasureTimeout />
|
||||
<AttachmentErasureTimeout />
|
||||
<RevisionSnapshotInterval />
|
||||
<RevisionSnapshotLimit />
|
||||
<HtmlImportTags />
|
||||
<ShareSettings />
|
||||
<NetworkSettings />
|
||||
@@ -91,6 +93,39 @@ function RevisionSnapshotInterval() {
|
||||
)
|
||||
}
|
||||
|
||||
function RevisionSnapshotLimit() {
|
||||
const [ revisionSnapshotNumberLimit, setRevisionSnapshotNumberLimit ] = useTriliumOption("revisionSnapshotNumberLimit");
|
||||
|
||||
return (
|
||||
<OptionsSection title={t("revisions_snapshot_limit.note_revisions_snapshot_limit_title")}>
|
||||
<FormText>{t("revisions_snapshot_limit.note_revisions_snapshot_limit_description")}</FormText>
|
||||
|
||||
<FormGroup>
|
||||
<FormTextBoxWithUnit
|
||||
name="revision-snapshot-number-limit"
|
||||
type="number" min={-1}
|
||||
currentValue={revisionSnapshotNumberLimit}
|
||||
unit={t("revisions_snapshot_limit.snapshot_number_limit_unit")}
|
||||
onChange={value => {
|
||||
const newValue = parseInt(value, 10);
|
||||
if (!isNaN(newValue) && newValue >= -1) {
|
||||
setRevisionSnapshotNumberLimit(newValue);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<Button
|
||||
text={t("revisions_snapshot_limit.erase_excess_revision_snapshots")}
|
||||
onClick={async () => {
|
||||
await server.post("revisions/erase-all-excess-revisions");
|
||||
toast.showMessage(t("revisions_snapshot_limit.erase_excess_revision_snapshots_prompt"));
|
||||
}}
|
||||
/>
|
||||
</OptionsSection>
|
||||
)
|
||||
}
|
||||
|
||||
function HtmlImportTags() {
|
||||
const [ allowedHtmlTags, setAllowedHtmlTags ] = useTriliumOptionJson<readonly string[]>("allowedHtmlTags");
|
||||
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
import OptionsWidget from "../options_widget.js";
|
||||
import { t } from "../../../../services/i18n.js";
|
||||
import server from "../../../../services/server.js";
|
||||
import toastService from "../../../../services/toast.js";
|
||||
import type { OptionMap } from "@triliumnext/commons";
|
||||
|
||||
const TPL = /*html*/`
|
||||
<div class="options-section">
|
||||
<h4>${t("revisions_snapshot_limit.note_revisions_snapshot_limit_title")}</h4>
|
||||
|
||||
<p class="form-text">${t("revisions_snapshot_limit.note_revisions_snapshot_limit_description")}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>${t("revisions_snapshot_limit.snapshot_number_limit_label")}</label>
|
||||
<label class="input-group tn-number-unit-pair">
|
||||
<input class="revision-snapshot-number-limit form-control options-number-input" type="number" min="-1">
|
||||
<span class="input-group-text">${t("revisions_snapshot_limit.snapshot_number_limit_unit")}</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<button class="erase-excess-revision-snapshots-now-button btn btn-sm">
|
||||
${t("revisions_snapshot_limit.erase_excess_revision_snapshots")}</button>
|
||||
</div>`;
|
||||
|
||||
export default class RevisionSnapshotsLimitOptions extends OptionsWidget {
|
||||
|
||||
private $revisionSnapshotsNumberLimit!: JQuery<HTMLElement>;
|
||||
private $eraseExcessRevisionSnapshotsButton!: JQuery<HTMLElement>;
|
||||
|
||||
doRender() {
|
||||
this.$widget = $(TPL);
|
||||
this.$revisionSnapshotsNumberLimit = this.$widget.find(".revision-snapshot-number-limit");
|
||||
this.$revisionSnapshotsNumberLimit.on("change", () => {
|
||||
let revisionSnapshotNumberLimit = parseInt(String(this.$revisionSnapshotsNumberLimit.val()), 10);
|
||||
if (!isNaN(revisionSnapshotNumberLimit) && revisionSnapshotNumberLimit >= -1) {
|
||||
this.updateOption("revisionSnapshotNumberLimit", revisionSnapshotNumberLimit);
|
||||
}
|
||||
});
|
||||
this.$eraseExcessRevisionSnapshotsButton = this.$widget.find(".erase-excess-revision-snapshots-now-button");
|
||||
this.$eraseExcessRevisionSnapshotsButton.on("click", () => {
|
||||
server.post("revisions/erase-all-excess-revisions").then(() => {
|
||||
toastService.showMessage(t("revisions_snapshot_limit.erase_excess_revision_snapshots_prompt"));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async optionsLoaded(options: OptionMap) {
|
||||
this.$revisionSnapshotsNumberLimit.val(options.revisionSnapshotNumberLimit);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user