From 7539134b05186831660817460c92f697b394f85c Mon Sep 17 00:00:00 2001 From: HughWan <977741432@qq.com> Date: Fri, 29 Dec 2023 23:09:05 +0800 Subject: [PATCH] add new setting for {{scoreStar}} and {{myRatingStar}} --- doc/Obsidian-Douban-BlueTopaz.md | 4 +- manifest.json | 2 +- package.json | 2 +- src/org/wanxp/constant/DefaultSettings.ts | 2 +- .../douban/component/ConfirmDialogModal.ts | 35 ++++++++++++ .../douban/setting/AdvancedSettingsHelper.ts | 55 +++++++++++++++++++ .../douban/setting/OutputSettingsHelper.ts | 6 +- .../wanxp/douban/setting/SettingsManager.ts | 36 ++++++++++++ src/org/wanxp/lang/locale/en.ts | 14 +++++ src/org/wanxp/lang/locale/zh-cn.ts | 13 ++++- src/org/wanxp/main.ts | 5 +- versions.json | 3 +- 12 files changed, 165 insertions(+), 12 deletions(-) create mode 100644 src/org/wanxp/douban/component/ConfirmDialogModal.ts diff --git a/doc/Obsidian-Douban-BlueTopaz.md b/doc/Obsidian-Douban-BlueTopaz.md index c3e22dc..b5d9f26 100644 --- a/doc/Obsidian-Douban-BlueTopaz.md +++ b/doc/Obsidian-Douban-BlueTopaz.md @@ -12,8 +12,8 @@ --- # {{title}} -
{{originalTitle}}
-
⭐⭐⭐⭐⭐
+
{{originalTitle}}
+
{{scoreStar}}
--- diff --git a/manifest.json b/manifest.json index b9d5cdf..33a4a26 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-douban-plugin", "name": "Douban", - "version": "1.9.9", + "version": "2.0.0", "minAppVersion": "0.12.0", "description": "This is a plugin that can import movies/books/musics/notes/games info data from Douban for Obsidian .", "author": "Wanxp", diff --git a/package.json b/package.json index fb3c5a1..d2309c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-douban-plugin", - "version": "1.9.9", + "version": "2.0.0", "description": "This is a plugin for Obsidian (https://obsidian.md) that can import data from Douban (https://www.douban.com/).", "main": "main.js", "scripts": { diff --git a/src/org/wanxp/constant/DefaultSettings.ts b/src/org/wanxp/constant/DefaultSettings.ts index aef0b0c..ec96c55 100644 --- a/src/org/wanxp/constant/DefaultSettings.ts +++ b/src/org/wanxp/constant/DefaultSettings.ts @@ -51,7 +51,7 @@ export const DEFAULT_SETTINGS: DoubanPluginSetting = { scoreSetting: { starFull: '⭐', starEmpty: '☆', - displayStarEmpty: true, + displayStarEmpty: false, maxStar: 5, } diff --git a/src/org/wanxp/douban/component/ConfirmDialogModal.ts b/src/org/wanxp/douban/component/ConfirmDialogModal.ts new file mode 100644 index 0000000..d9ce712 --- /dev/null +++ b/src/org/wanxp/douban/component/ConfirmDialogModal.ts @@ -0,0 +1,35 @@ +import {ButtonComponent, Modal} from "obsidian"; +import {i18nHelper} from "../../lang/helper"; + +export class ConfirmDialogModal extends Modal { + private promise:Promise; + private message:string; + + constructor(app: any, message:string, promise: Promise) { + super(app); + this.message = message; + this.promise = promise; + } + + onOpen() { + const {contentEl} = this; + contentEl.createEl('h3', {text: i18nHelper.getMessage('110152')}); + contentEl.createEl('p', {text: `${this.message}`}); + contentEl.createEl('p', {text: i18nHelper.getMessage('125033')}); + + const controls = contentEl.createDiv("controls"); + controls.addClass("obsidian_douban_search_controls") + new ButtonComponent(controls) + .setButtonText(i18nHelper.getMessage('110152')) + .setCta() + .onClick(async () => { + await this.promise; + this.close(); + }).setClass( "obsidian_douban_search_button"); + new ButtonComponent(controls) + .setButtonText(i18nHelper.getMessage('110005')) + .onClick(() => { + this.close(); + }).setClass( "obsidian_douban_cancel_button"); + } +} diff --git a/src/org/wanxp/douban/setting/AdvancedSettingsHelper.ts b/src/org/wanxp/douban/setting/AdvancedSettingsHelper.ts index f47ec14..7d9eb2a 100644 --- a/src/org/wanxp/douban/setting/AdvancedSettingsHelper.ts +++ b/src/org/wanxp/douban/setting/AdvancedSettingsHelper.ts @@ -7,6 +7,7 @@ import DoubanLogoutModel from "../component/DoubanLogoutModel"; import User from "../user/User"; import {createFolderSelectionSetting} from "./TemplateSettingHelper"; import { log } from "../../utils/Logutil"; +import {ConfirmDialogModal} from "../component/ConfirmDialogModal"; @@ -31,6 +32,7 @@ export function constructAdvancedUI(containerEl: HTMLElement, manager: SettingsM function showAdvancedSettings(containerEl: HTMLElement, manager: SettingsManager) { containerEl.empty(); + const promise:Promise = new Promise((resolve, reject) => {resolve(null)}); new Setting(containerEl) .setName(i18nHelper.getMessage('125001')) .setDesc(i18nHelper.getMessage('125002')) @@ -48,6 +50,48 @@ function showAdvancedSettings(containerEl: HTMLElement, manager: SettingsManager await manager.plugin.saveSettings(); }); }); + new Setting(containerEl) + .setName(i18nHelper.getMessage('125011')) + .setDesc(i18nHelper.getMessage('125012')) + .addButton((buttonComponent) => { + buttonComponent + .setIcon('reset') + .setTooltip(i18nHelper.getMessage('125013')) + .onClick(async (value) => { + showConfirmDialog(i18nHelper.getMessage('125012'), + promise.then(() => { + manager.resetSetting(); + }), manager) + }); + }); + new Setting(containerEl) + .setName(i18nHelper.getMessage('125021')) + .setDesc(i18nHelper.getMessage('125022')) + .addButton((buttonComponent) => { + buttonComponent + .setIcon('reset') + .setTooltip(i18nHelper.getMessage('125022')) + .onClick(async (value) => { + showConfirmDialog(i18nHelper.getMessage('125022'), + promise.then(() => { + manager.clearLoginInfo(); + manager.plugin.userComponent.logout() + }), manager) + }); + }); + new Setting(containerEl) + .setName(i18nHelper.getMessage('125031')) + .setDesc(i18nHelper.getMessage('125032')) + .addButton((buttonComponent) => { + buttonComponent + .setIcon('reset') + .setTooltip(i18nHelper.getMessage('125032')) + .onClick(async (value) => { + showConfirmDialog(i18nHelper.getMessage('125032'), promise.then(() => { + manager.clearSyncCache(); + }), manager); + }); + }); } function resetAdvanced( manager: SettingsManager) { @@ -55,3 +99,14 @@ function resetAdvanced( manager: SettingsManager) { manager.plugin.settings.debugMode = false; } +function showConfirmDialog(message:string, promise:Promise, manager: SettingsManager) { + new ConfirmDialogModal(manager.plugin.app, message, promise + .then( () => { + manager.plugin.saveSettings(); + }) + .then( () => { + manager.plugin.settingTab.display(); + }) + ).open(); +} + diff --git a/src/org/wanxp/douban/setting/OutputSettingsHelper.ts b/src/org/wanxp/douban/setting/OutputSettingsHelper.ts index 30bf9c7..b7f8bf8 100644 --- a/src/org/wanxp/douban/setting/OutputSettingsHelper.ts +++ b/src/org/wanxp/douban/setting/OutputSettingsHelper.ts @@ -1,5 +1,5 @@ import {i18nHelper} from "../../lang/helper"; -import {Setting, TextComponent, ToggleComponent, ValueComponent} from "obsidian"; +import {Setting, TextComponent, ToggleComponent} from "obsidian"; import {createFolderSelectionSetting} from "./TemplateSettingHelper"; import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings"; import { @@ -31,7 +31,7 @@ export function showFileExample(containerEl: HTMLElement, manager: SettingsManag containerEl.empty(); const document = new DocumentFragment(); document.createDiv('file-path-example') - .innerHTML = `文件路径预览《简爱》: ${VariableUtil.replaceSubject(EXAMPLE_SUBJECT_MAP, + .innerHTML = `${i18nHelper.getMessage('121604')}《简爱》: ${VariableUtil.replaceSubject(EXAMPLE_SUBJECT_MAP, FileUtil.join(manager.plugin.settings.dataFilePath, manager.plugin.settings.dataFileNamePath + ".md"), SupportType.BOOK, manager)}`; @@ -47,7 +47,7 @@ function scoreSettingDisplay(containerEl: HTMLElement, manager: SettingsManager) const scoreSettingsUI = containerEl.createDiv('score-settings'); const scoreShowUI = containerEl.createDiv('score-show'); - //@ts-ignore + //@ts-ignore1· const scoreSetting:ScoreSetting = manager.getSetting('scoreSetting'); scoreSettingsUI.createEl('span', {text: i18nHelper.getMessage('124120')}) const starFullUI = new TextComponent(scoreSettingsUI); diff --git a/src/org/wanxp/douban/setting/SettingsManager.ts b/src/org/wanxp/douban/setting/SettingsManager.ts index 1440c74..b0113ee 100644 --- a/src/org/wanxp/douban/setting/SettingsManager.ts +++ b/src/org/wanxp/douban/setting/SettingsManager.ts @@ -192,4 +192,40 @@ export default class SettingsManager { } return false; } + + resetSetting() { + this.settings.scoreSetting = DEFAULT_SETTINGS.scoreSetting; + this.settings.arraySettings = DEFAULT_SETTINGS.arraySettings; + this.settings.arrayStart = DEFAULT_SETTINGS.arrayStart; + this.settings.arrayElementStart = DEFAULT_SETTINGS.arrayElementStart; + this.settings.arraySpiltV2 = DEFAULT_SETTINGS.arraySpiltV2; + this.settings.arrayElementEnd = DEFAULT_SETTINGS.arrayElementEnd; + this.settings.arrayEnd = DEFAULT_SETTINGS.arrayEnd; + this.settings.attachmentPath = DEFAULT_SETTINGS.attachmentPath; + this.settings.bookTemplateFile = DEFAULT_SETTINGS.bookTemplateFile; + this.settings.movieTemplateFile = DEFAULT_SETTINGS.movieTemplateFile; + this.settings.musicTemplateFile = DEFAULT_SETTINGS.musicTemplateFile; + this.settings.noteTemplateFile = DEFAULT_SETTINGS.noteTemplateFile; + this.settings.gameTemplateFile = DEFAULT_SETTINGS.gameTemplateFile; + this.settings.teleplayTemplateFile = DEFAULT_SETTINGS.teleplayTemplateFile; + this.settings.dateFormat = DEFAULT_SETTINGS.dateFormat; + this.settings.timeFormat = DEFAULT_SETTINGS.timeFormat; + this.settings.searchUrl = DEFAULT_SETTINGS.searchUrl; + this.settings.personNameMode = DEFAULT_SETTINGS.personNameMode; + this.settings.dataFilePath = DEFAULT_SETTINGS.dataFilePath; + this.settings.dataFileNamePath = DEFAULT_SETTINGS.dataFileNamePath; + this.settings.statusBar = DEFAULT_SETTINGS.statusBar; + this.settings.debugMode = DEFAULT_SETTINGS.debugMode; + this.settings.cacheImage = DEFAULT_SETTINGS.cacheImage; + this.settings.cacheHighQuantityImage = DEFAULT_SETTINGS.cacheHighQuantityImage; + } + + clearLoginInfo() { + this.settings.loginCookiesContent = DEFAULT_SETTINGS.loginHeadersContent; + this.settings.loginHeadersContent = DEFAULT_SETTINGS.loginHeadersContent; + } + + clearSyncCache() { + this.settings.syncHandledDataArray = []; + } } diff --git a/src/org/wanxp/lang/locale/en.ts b/src/org/wanxp/lang/locale/en.ts index 22857ab..f228a13 100644 --- a/src/org/wanxp/lang/locale/en.ts +++ b/src/org/wanxp/lang/locale/en.ts @@ -42,6 +42,8 @@ PS: This file could be delete if you want to. '110050': `Type`, '110051': `Number`, '110052': `Description`, + '110152': `Confirm`, + 'exists':`[exists]`, 'unHandle':`[unHandle]`, @@ -227,6 +229,7 @@ PS: This file could be delete if you want to. '121601': `Note Name`, '121602': `Nodes created from Obsidian-Douban will use this fileName as template(also support filePath), If blank, they will be created by default name. support all basic template variables. example: {{type}}/{{title}}`, + '121604': `Note Path Previous`, '120603': `Display Preview`, '120604': `ArrayTypeName:`, '120605': `Template use example: propertyName:{{actor`, @@ -251,6 +254,17 @@ PS: This file could be delete if you want to. '125001': `Debug Mode`, '125002': `Open Debug Mode, so that this plugin will log some message in console`, + '125011': `Reset Setting`, + '125012': `Reset Setting to default value, but not include \`Custom Variables\``, + '125013': `Reset Setting to default value`, + + '125021': `Clear Login Cache`, + '125022': `Clear Login Info, so that you can login again`, + + '125031': `Clear Sync Cache`, + '125032': `Clear Sync Cache, It will clear all the sync data, so that you can sync again`, + + '125033': `Are you sure you want to perform this operation?`, //error '130101': `Fetch Data Error, {0}`, diff --git a/src/org/wanxp/lang/locale/zh-cn.ts b/src/org/wanxp/lang/locale/zh-cn.ts index 0c45cb1..2982462 100644 --- a/src/org/wanxp/lang/locale/zh-cn.ts +++ b/src/org/wanxp/lang/locale/zh-cn.ts @@ -24,6 +24,8 @@ export default { '110034': `输出文件夹:`, '110035': `文档名: (提示:支持参数化以及多级路径, 可用参数见配置界面)`, '110036': `完成`, + '110152': `确认`, + '110037': ` ### 同步结果汇总 {0} @@ -117,7 +119,16 @@ export default { '125001': `调试模式`, '125002': `调试模式开启后,将会在控制台打印此插件的日志信息`, + '125011': `重置设置为默认`, + '125012': `将设置重置为默认值,但不会清除登录信息,也不会清除自定义参数`, + '125021': `清除登录缓存`, + '125022': `清除登录信息,如果你遇到登录问题,可以尝试清除登录缓存,点击按钮将清除所有登录缓存数据`, + + '125031': `清除同步缓存`, + '125032': `清除同步缓存,点击按钮将清除所有同步缓存数据(但不会清除已同步的文档)`, + + '125033': `确认要执行此操作吗?`, '124101': `新增`, @@ -236,7 +247,7 @@ export default { '121601': `笔记名称`, '121602': `创建的笔记将会使用此名称作为模板, 支持所有'通用'的参数作为名称(如:{{type}}/{{title}}), 且支持路径, 比如: 'MyData/{{title}}'. 如果为空, 笔记将会使用默认名称. `, - + '121604': `文件路径预览`, '120603': `输出效果预览`, '120604': `数组类型名称:`, '120605': `模板中使用举例: propertyName:{{actor`, diff --git a/src/org/wanxp/main.ts b/src/org/wanxp/main.ts index 59592a1..e4fea25 100644 --- a/src/org/wanxp/main.ts +++ b/src/org/wanxp/main.ts @@ -44,6 +44,7 @@ export default class DoubanPlugin extends Plugin { public netFileHandler: NetFileHandler; public statusHolder: GlobalStatusHolder; public onlineData: DoubanPluginOnlineData; + public settingTab: DoubanSettingTab; async putToObsidian(context: HandleContext, extract: DoubanSubject) { @@ -231,8 +232,8 @@ export default class DoubanPlugin extends Plugin { log.debug(i18nHelper.getMessage('100101')); } } - - this.addSettingTab(new DoubanSettingTab(this.app, this)); + this.settingTab = new DoubanSettingTab(this.app, this); + this.addSettingTab(this.settingTab); this.statusHolder = new GlobalStatusHolder(this.app, this); } diff --git a/versions.json b/versions.json index 83ccbad..110fa49 100644 --- a/versions.json +++ b/versions.json @@ -44,6 +44,7 @@ "1.9.6": "0.12.0", "1.9.7": "0.12.0", "1.9.8": "0.12.0", - "1.9.9": "0.12.0" + "1.9.9": "0.12.0", + "2.0.0": "0.12.0" }