✨ feat: Update setting utils
This commit is contained in:
parent
bf21514b99
commit
953d15c661
1 changed files with 43 additions and 6 deletions
|
@ -1,10 +1,10 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023 by frostime. All Rights Reserved.
|
* Copyright (c) 2023 by frostime. All Rights Reserved.
|
||||||
* @Author : frostime
|
* @Author : frostime
|
||||||
* @Date : 2023-09-16 18:05:00
|
* @Date : 2023-12-17 18:28:19
|
||||||
* @FilePath : /src/libs/setting-utils.ts
|
* @FilePath : /src/libs/setting-utils.ts
|
||||||
* @LastEditTime : 2023-12-28 18:10:12
|
* @LastEditTime : 2024-01-15 20:45:16
|
||||||
* @Description : A utility for siyuan plugin settings
|
* @Description :
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Plugin, Setting } from 'siyuan';
|
import { Plugin, Setting } from 'siyuan';
|
||||||
|
@ -26,7 +26,7 @@ export class SettingUtils {
|
||||||
height: height,
|
height: height,
|
||||||
confirmCallback: () => {
|
confirmCallback: () => {
|
||||||
for (let key of this.settings.keys()) {
|
for (let key of this.settings.keys()) {
|
||||||
this.updateValue(key);
|
this.updateValueFromElement(key);
|
||||||
}
|
}
|
||||||
let data = this.dump();
|
let data = this.dump();
|
||||||
if (callback !== undefined) {
|
if (callback !== undefined) {
|
||||||
|
@ -35,6 +35,12 @@ export class SettingUtils {
|
||||||
this.plugin.data[this.name] = data;
|
this.plugin.data[this.name] = data;
|
||||||
this.save();
|
this.save();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
destroyCallback: () => {
|
||||||
|
//从值恢复元素
|
||||||
|
for (let key of this.settings.keys()) {
|
||||||
|
this.updateElementFromValue(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -54,6 +60,7 @@ export class SettingUtils {
|
||||||
async save() {
|
async save() {
|
||||||
let data = this.dump();
|
let data = this.dump();
|
||||||
await this.plugin.saveData(this.file, this.dump());
|
await this.plugin.saveData(this.file, this.dump());
|
||||||
|
console.debug('Save config:', data);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +73,14 @@ export class SettingUtils {
|
||||||
return this.settings.get(key)?.value;
|
return this.settings.get(key)?.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set(key: string, value: any) {
|
||||||
|
let item = this.settings.get(key);
|
||||||
|
if (item) {
|
||||||
|
item.value = value;
|
||||||
|
this.updateElementFromValue(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将设置项目导出为 JSON 对象
|
* 将设置项目导出为 JSON 对象
|
||||||
* @returns object
|
* @returns object
|
||||||
|
@ -161,7 +176,7 @@ export class SettingUtils {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private getElement(key: string) {
|
getElement(key: string) {
|
||||||
let item = this.settings.get(key);
|
let item = this.settings.get(key);
|
||||||
let element = this.elements.get(key) as any;
|
let element = this.elements.get(key) as any;
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
|
@ -185,7 +200,7 @@ export class SettingUtils {
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateValue(key: string) {
|
private updateValueFromElement(key: string) {
|
||||||
let item = this.settings.get(key);
|
let item = this.settings.get(key);
|
||||||
let element = this.elements.get(key) as any;
|
let element = this.elements.get(key) as any;
|
||||||
// console.debug(element, element?.value);
|
// console.debug(element, element?.value);
|
||||||
|
@ -208,4 +223,26 @@ export class SettingUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private updateElementFromValue(key: string) {
|
||||||
|
let item = this.settings.get(key);
|
||||||
|
let element = this.elements.get(key) as any;
|
||||||
|
switch (item.type) {
|
||||||
|
case 'checkbox':
|
||||||
|
element.checked = item.value;
|
||||||
|
break;
|
||||||
|
case 'select':
|
||||||
|
element.value = item.value;
|
||||||
|
break;
|
||||||
|
case 'slider':
|
||||||
|
element.value = item.value;
|
||||||
|
break;
|
||||||
|
case 'textinput':
|
||||||
|
element.value = item.value;
|
||||||
|
break;
|
||||||
|
case 'textarea':
|
||||||
|
element.value = item.value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue