obsidian-douban/src/org/wanxp/douban/setting/TemplateSettingHelper.ts
Wanxp 4d3dc61d33 fix #139
1. 优化导入配置,增加更多导入时的选项
2. 优化导入结果的显示,现在会在结果文本中显示具体的条件
2025-03-06 18:44:31 +08:00

117 lines
4.9 KiB
TypeScript

import {i18nHelper} from "../../lang/helper";
import {CreateTemplateSelectParams} from "./model/CreateTemplateSelectParams";
import { FileSuggest } from "./model/FileSuggest";
import {SearchComponent, Setting} from "obsidian";
import { log } from "src/org/wanxp/utils/Logutil";
import {getDefaultTemplateContent} from "../../constant/DefaultTemplateContent";
import {FolderSuggest} from "./model/FolderSuggest";
import SettingsManager from "./SettingsManager";
import {showFileExample} from "./OutputSettingsHelper";
import {FileTreeSelectSuggest} from "./model/FileTreeSelectSuggest";
import DoubanPlugin from "../../main";
import {FolderTreeSelectSuggest} from "./model/FolderTreeSelectSuggest";
export function constructTemplateUI(containerEl: HTMLElement, manager: SettingsManager) {
// containerEl.createEl('h3', { text: i18nHelper.getMessage('1203') });
containerEl.createEl('p', { text: i18nHelper.getMessage('1204') });
new Setting(containerEl).setDesc(i18nHelper.getMessage('1205'))
new Setting(containerEl).then(createFileSelectionSetting({containerEl: containerEl, name: '120101', desc: '120102', placeholder: '121701', key: 'movieTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({containerEl: containerEl, name: '120201', desc: '120202', placeholder: '121701', key: 'bookTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({containerEl: containerEl, name: '120301', desc: '120302', placeholder: '121701', key: 'musicTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({containerEl: containerEl, name: '120401', desc: '120402', placeholder: '121701', key: 'noteTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({containerEl: containerEl, name: '121301', desc: '121302', placeholder: '121701', key: 'gameTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({containerEl: containerEl, name: '121801', desc: '121802', placeholder: '121701', key: 'teleplayTemplateFile', manager: manager}));
}
export function createFileSelectionSetting({containerEl, name, desc, placeholder, key, manager
}: CreateTemplateSelectParams) {
return (setting: Setting) => {
setting.controlEl.addClass('obsidian_douban_template_file_select');
// @ts-ignore
setting.setName(i18nHelper.getMessage(name));
// settingDesc.setDesc(i18nHelper.getMessage(desc));
setting.addSearch(async (search: SearchComponent) => {
const [oldValue, defaultVal] = manager.getSettingWithDefault(key);
let v = defaultVal;
if (oldValue) {
v = oldValue;
}
const fileTreeSelectSuggest = new FileTreeSelectSuggest(manager.app, search.inputEl, manager, key);
// @ts-ignore
search.setValue(v);
// @ts-ignore
search.setPlaceholder(i18nHelper.getMessage(placeholder));
search.inputEl.addClass('obsidian_douban_template_file_select_input');
search.inputEl.style.width = '100%';
search.onChange(async (value: string) => {
manager.updateSetting(key, value);
});
});
setting.addExtraButton((button) => {
button
.setIcon('copy')
.setTooltip(i18nHelper.getMessage('121903'))
.onClick(async () => {
// @ts-ignore
navigator.clipboard.writeText(getDefaultTemplateContent(key))
});
});
setting.addExtraButton((button) => {
button
.setIcon('document')
.setTooltip(i18nHelper.getMessage('121901'))
.onClick(async () => {
// @ts-ignore
navigator.clipboard.writeText(getDefaultTemplateContent(key, false))
});
});
};
}
export function createFolderSelectionSetting({
name, desc, placeholder, key, manager,
}: CreateTemplateSelectParams, filePathDisplayExample?:HTMLDivElement) {
return (setting: Setting) => {
// @ts-ignore
setting.setName( i18nHelper.getMessage(name));
// @ts-ignore
setting.setDesc( i18nHelper.getMessage(desc));
};
}
export function createFolderSelectionSettingInput({
name, desc, placeholder, key, manager,
}: CreateTemplateSelectParams, filePathDisplayExample?:HTMLDivElement) {
return (setting: Setting) => {
setting.controlEl.addClass('obsidian_douban_template_file_select');
setting.addSearch(async (search: SearchComponent) => {
const [oldValue, defaultVal] = manager.getSettingWithDefault(key);
let v = defaultVal;
if (oldValue) {
v = oldValue;
}
new FolderTreeSelectSuggest(manager.app, search.inputEl);
search.inputEl.addClass('obsidian_douban_template_file_select_input');
search.inputEl.style.width = '100%';
// @ts-ignore
search.setValue(v)
// @ts-ignore
.setPlaceholder(i18nHelper.getMessage(placeholder))
.onChange(async (value: string) => {
manager.updateSetting(key, value);
if (filePathDisplayExample) {
showFileExample(filePathDisplayExample, manager);
}
});
});
};
}