Skip to content

Commit 1a0b101

Browse files
committed
优化 setting-utils
1 parent b1a061c commit 1a0b101

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

src/index.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,13 @@ export default class PluginSample extends Plugin {
176176
title: "Readonly text",
177177
description: "Input description",
178178
});
179+
this.settingUtils.addItem({
180+
key: "Check",
181+
value: true,
182+
type: "checkbox",
183+
title: "Checkbox text",
184+
description: "Check description",
185+
});
179186
this.settingUtils.addItem({
180187
key: "Select",
181188
value: 1,
@@ -220,7 +227,6 @@ export default class PluginSample extends Plugin {
220227
}
221228
}
222229
});
223-
this.settingUtils.load();
224230

225231
this.protyleSlash = [{
226232
filter: ["insert emoji 😊", "插入表情 😊", "crbqwx"],
@@ -235,12 +241,14 @@ export default class PluginSample extends Plugin {
235241
}
236242

237243
onLayoutReady() {
238-
this.loadData(STORAGE_NAME);
244+
// this.loadData(STORAGE_NAME);
245+
this.settingUtils.load();
239246
console.log(`frontend: ${getFrontend()}; backend: ${getBackend()}`);
240247
}
241248

242-
onunload() {
249+
async onunload() {
243250
console.log(this.i18n.byePlugin);
251+
await this.settingUtils.save();
244252
showMessage("Goodbye SiYuan Plugin");
245253
console.log("onunload");
246254
}

src/libs/setting-utils.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
/*
2+
* Copyright (c) 2023 by frostime. All Rights Reserved.
3+
* @Author : frostime
4+
* @Date : 2023-09-16 18:05:00
5+
* @FilePath : /src/libs/setting-utils.ts
6+
* @LastEditTime : 2023-09-16 18:17:03
7+
* @Description : A utility for siyuan plugin settings
8+
*/
9+
110
import { Plugin, Setting } from 'siyuan';
211

312
export class SettingUtils {
@@ -33,6 +42,9 @@ export class SettingUtils {
3342
item.value = data?.[key] ?? item.value;
3443
}
3544
}
45+
this.plugin.data[this.name] = this.dump();
46+
console.log(data);
47+
return data;
3648
}
3749

3850
async save() {
@@ -89,12 +101,15 @@ export class SettingUtils {
89101
case 'slider':
90102
let sliderElement: HTMLInputElement = document.createElement('input');
91103
sliderElement.type = 'range';
92-
sliderElement.className = 'b3-slider fn__size200';
104+
sliderElement.className = 'b3-slider fn__size200 b3-tooltips b3-tooltips__n';
93105
sliderElement.ariaLabel = item.value;
94106
sliderElement.min = item.slider?.min.toString() ?? '0';
95107
sliderElement.max = item.slider?.max.toString() ?? '100';
96108
sliderElement.step = item.slider?.step.toString() ?? '1';
97109
sliderElement.value = item.value;
110+
sliderElement.onchange = () => {
111+
sliderElement.ariaLabel = sliderElement.value;
112+
}
98113
itemElement = sliderElement;
99114
break;
100115
case 'textinput':
@@ -154,6 +169,7 @@ export class SettingUtils {
154169
private updateValue(key: string) {
155170
let item = this.settings.get(key);
156171
let element = this.elements.get(key) as any;
172+
console.log(element, element?.value);
157173
switch (item.type) {
158174
case 'checkbox':
159175
item.value = element.checked;
@@ -162,7 +178,7 @@ export class SettingUtils {
162178
item.value = element.value;
163179
break;
164180
case 'slider':
165-
item.value = element.value;
181+
item.value = parseInt(element.value);
166182
break;
167183
case 'textinput':
168184
item.value = element.value;

0 commit comments

Comments
 (0)