This commit is contained in:
Vanessa 2023-08-07 12:15:03 +08:00
parent 398afa854f
commit 2640412667
6 changed files with 55 additions and 19 deletions

View file

@ -1,4 +1,5 @@
{
"searchOverwrite": "The query name is duplicated, do you want to overwrite it?",
"onepay": "PRO",
"format": "Number format",
"numberFormatNone": "Number",

View file

@ -1,4 +1,5 @@
{
"searchOverwrite": "El nombre de la consulta está duplicado, ¿quieres sobrescribirlo?",
"onepay": "PRO",
"format": "Formato de número",
"numberFormatNone": "Número",

View file

@ -1,4 +1,5 @@
{
"searchOverwrite": "Le nom de la requête est dupliqué, voulez-vous l'écraser ?",
"onepay": "PRO",
"format": "Format des nombres",
"numberFormatNone": "Numéro",

View file

@ -1,4 +1,5 @@
{
"searchOverwrite": "查詢名稱重複,是否進行覆蓋?",
"onepay": "功能特性",
"format": "格式化",
"numberFormatNone": "數字",

View file

@ -1,4 +1,5 @@
{
"searchOverwrite": "查询名称重复,是否进行覆盖?",
"onepay": "功能特性",
"format": "格式化",
"numberFormatNone": "数字",

View file

@ -6,6 +6,7 @@ import {showMessage} from "../dialog/message";
import {fetchPost} from "../util/fetch";
import {escapeHtml} from "../util/escape";
import {setStorageVal} from "../protyle/util/compatibility";
import {confirmDialog} from "../dialog/confirmDialog";
export const filterMenu = (config: ISearchOption, cb: () => void) => {
const filterDialog = new Dialog({
@ -186,9 +187,35 @@ export const queryMenu = (config: ISearchOption, cb: () => void) => {
}).element);
};
const saveCriterionData = (config: ISearchOption,
criteriaData: ISearchOption[],
element: Element,
value: string,
saveDialog: Dialog) => {
if (isMobile()) {
config.k = (document.querySelector("#toolbarSearch") as HTMLInputElement).value;
config.r = (element.querySelector("#toolbarReplace") as HTMLInputElement).value;
} else {
config.k = (element.querySelector("#searchInput") as HTMLInputElement).value;
config.r = (element.querySelector("#replaceInput") as HTMLInputElement).value;
}
config.removed = false;
const criterion = config;
criterion.name = value;
criteriaData.push(Object.assign({}, criterion));
window.siyuan.storage[Constants.LOCAL_SEARCHDATA] = Object.assign({}, config);
setStorageVal(Constants.LOCAL_SEARCHDATA, window.siyuan.storage[Constants.LOCAL_SEARCHDATA]);
fetchPost("/api/storage/setCriterion", {criterion}, () => {
saveDialog.destroy();
const criteriaElement = element.querySelector("#criteria").firstElementChild;
criteriaElement.querySelector(".b3-chip--current")?.classList.remove("b3-chip--current");
criteriaElement.insertAdjacentHTML("beforeend", `<div data-type="set-criteria" class="b3-chip b3-chip--current b3-chip--middle b3-chip--pointer b3-chip--${["secondary", "primary", "info", "success", "warning", "error", ""][(criteriaElement.childElementCount) % 7]}">${criterion.name}<svg class="b3-chip__close" data-type="remove-criteria"><use xlink:href="#iconCloseRound"></use></svg></div>`);
});
}
export const saveCriterion = (config: ISearchOption,
criteriaData: ISearchOption[],
element: Element,) => {
element: Element) => {
const saveDialog = new Dialog({
title: window.siyuan.languages.saveCriterion,
content: `<div class="b3-dialog__content">
@ -213,26 +240,30 @@ export const saveCriterion = (config: ISearchOption,
showMessage(window.siyuan.languages["_kernel"]["142"]);
return;
}
if (isMobile()) {
config.k = (document.querySelector("#toolbarSearch") as HTMLInputElement).value;
config.r = (element.querySelector("#toolbarReplace") as HTMLInputElement).value;
const hasSame = criteriaData.find(item => {
if (item.name === value) {
return true;
}
})
if (hasSame) {
confirmDialog(window.siyuan.languages.confirm, window.siyuan.languages.searchOverwrite, () => {
const criteriaElement = element.querySelector("#criteria").firstElementChild;
Array.from(criteriaElement.children).forEach(item => {
if (item.textContent === value) {
item.remove();
}
});
criteriaData.find((item, index) => {
if (item.name === value) {
criteriaData.splice(index, 1);
return true;
}
});
saveCriterionData(config, criteriaData, element, value, saveDialog);
});
} else {
config.k = (element.querySelector("#searchInput") as HTMLInputElement).value;
config.r = (element.querySelector("#replaceInput") as HTMLInputElement).value;
saveCriterionData(config, criteriaData, element, value, saveDialog);
}
config.removed = false;
const criterion = config;
criterion.name = value;
criteriaData.push(Object.assign({}, criterion));
window.siyuan.storage[Constants.LOCAL_SEARCHDATA] = Object.assign({}, config);
setStorageVal(Constants.LOCAL_SEARCHDATA, window.siyuan.storage[Constants.LOCAL_SEARCHDATA]);
fetchPost("/api/storage/setCriterion", {criterion}, () => {
saveDialog.destroy();
const criteriaElement = element.querySelector("#criteria");
criteriaElement.querySelector(".b3-chip--current")?.classList.remove("b3-chip--current");
criteriaElement.classList.remove("fn__none");
criteriaElement.firstElementChild.insertAdjacentHTML("beforeend", `<div data-type="set-criteria" class="b3-chip b3-chip--current b3-chip--middle b3-chip--pointer b3-chip--${["secondary", "primary", "info", "success", "warning", "error", ""][(criteriaElement.firstElementChild.childElementCount) % 7]}">${criterion.name}<svg class="b3-chip__close" data-type="remove-criteria"><use xlink:href="#iconCloseRound"></use></svg></div>`);
});
});
};