From 1a0b1018c55cd600916131846011de75b5d862c1 Mon Sep 17 00:00:00 2001 From: frostime Date: Sat, 16 Sep 2023 18:17:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20setting-utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 14 +++++++++++--- src/libs/setting-utils.ts | 20 ++++++++++++++++++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index b98b48a..f65b4e1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -176,6 +176,13 @@ export default class PluginSample extends Plugin { title: "Readonly text", description: "Input description", }); + this.settingUtils.addItem({ + key: "Check", + value: true, + type: "checkbox", + title: "Checkbox text", + description: "Check description", + }); this.settingUtils.addItem({ key: "Select", value: 1, @@ -220,7 +227,6 @@ export default class PluginSample extends Plugin { } } }); - this.settingUtils.load(); this.protyleSlash = [{ filter: ["insert emoji ๐Ÿ˜Š", "ๆ’ๅ…ฅ่กจๆƒ… ๐Ÿ˜Š", "crbqwx"], @@ -235,12 +241,14 @@ export default class PluginSample extends Plugin { } onLayoutReady() { - this.loadData(STORAGE_NAME); + // this.loadData(STORAGE_NAME); + this.settingUtils.load(); console.log(`frontend: ${getFrontend()}; backend: ${getBackend()}`); } - onunload() { + async onunload() { console.log(this.i18n.byePlugin); + await this.settingUtils.save(); showMessage("Goodbye SiYuan Plugin"); console.log("onunload"); } diff --git a/src/libs/setting-utils.ts b/src/libs/setting-utils.ts index 5c5638b..ff78af8 100644 --- a/src/libs/setting-utils.ts +++ b/src/libs/setting-utils.ts @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2023 by frostime. All Rights Reserved. + * @Author : frostime + * @Date : 2023-09-16 18:05:00 + * @FilePath : /src/libs/setting-utils.ts + * @LastEditTime : 2023-09-16 18:17:03 + * @Description : A utility for siyuan plugin settings + */ + import { Plugin, Setting } from 'siyuan'; export class SettingUtils { @@ -33,6 +42,9 @@ export class SettingUtils { item.value = data?.[key] ?? item.value; } } + this.plugin.data[this.name] = this.dump(); + console.log(data); + return data; } async save() { @@ -89,12 +101,15 @@ export class SettingUtils { case 'slider': let sliderElement: HTMLInputElement = document.createElement('input'); sliderElement.type = 'range'; - sliderElement.className = 'b3-slider fn__size200'; + sliderElement.className = 'b3-slider fn__size200 b3-tooltips b3-tooltips__n'; sliderElement.ariaLabel = item.value; sliderElement.min = item.slider?.min.toString() ?? '0'; sliderElement.max = item.slider?.max.toString() ?? '100'; sliderElement.step = item.slider?.step.toString() ?? '1'; sliderElement.value = item.value; + sliderElement.onchange = () => { + sliderElement.ariaLabel = sliderElement.value; + } itemElement = sliderElement; break; case 'textinput': @@ -154,6 +169,7 @@ export class SettingUtils { private updateValue(key: string) { let item = this.settings.get(key); let element = this.elements.get(key) as any; + console.log(element, element?.value); switch (item.type) { case 'checkbox': item.value = element.checked; @@ -162,7 +178,7 @@ export class SettingUtils { item.value = element.value; break; case 'slider': - item.value = element.value; + item.value = parseInt(element.value); break; case 'textinput': item.value = element.value;