mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 08:38:41 +08:00
1. 优化配置将配置页面调整为tab 2. 优化文件夹选取方式避免卡顿 3. 优化模板文件选取方式避免卡顿 4. 增加设置的导入导出用以备份 5. 优化加载插件的卡顿问题,现在加载会非常快 6. 优化了配置的文本,简化了文本内容
97 lines
3.6 KiB
TypeScript
97 lines
3.6 KiB
TypeScript
import {i18nHelper} from "../../lang/helper";
|
|
import SettingsManager from "./SettingsManager";
|
|
import {CustomProperty} from "./model/CustomProperty";
|
|
import {ButtonComponent, DropdownComponent, ExtraButtonComponent, Setting, TextComponent} from "obsidian";
|
|
import {SupportType} from "../../constant/Constsant";
|
|
import DoubanPlugin from "../../main";
|
|
|
|
export function constructCustomPropertySettingsUI(containerEl: HTMLElement, manager: SettingsManager) {
|
|
// containerEl.createEl('h3', { text: i18nHelper.getMessage('1240') });
|
|
containerEl.createEl('p', { text: i18nHelper.getMessage('1242') });
|
|
const customProperties = manager.plugin.settings.customProperties;
|
|
new Setting(containerEl)
|
|
.setDesc(i18nHelper.getMessage('1241'))
|
|
.addButton((button) => {
|
|
button.setButtonText(i18nHelper.getMessage('124101'));
|
|
button.setTooltip(i18nHelper.getMessage('124101'));
|
|
button.setIcon('plus');
|
|
button.onClick(async () => {
|
|
customProperties.push({name: '', value: '', field: SupportType.ALL});
|
|
constructCustomPropertyUI(list, customProperties, manager);
|
|
});
|
|
});
|
|
const list = containerEl.createDiv('custom-property-list');
|
|
constructCustomPropertyUI(list, customProperties, manager);
|
|
}
|
|
|
|
export function constructCustomPropertyUI(containerEl: HTMLElement, customProperties: CustomProperty[], manager: SettingsManager) {
|
|
containerEl.empty();
|
|
for(let i: number = 0; i < customProperties.length; i++) {
|
|
addFilterInput(customProperties[i], containerEl, customProperties, manager, i);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function addFilterInput(data: CustomProperty, el: HTMLElement, customProperties: CustomProperty[] , manager: SettingsManager, idx: number) {
|
|
const item = el.createEl('li')
|
|
item.createEl('span', { text: i18nHelper.getMessage('124102') })
|
|
const nameField = new TextComponent(el);
|
|
nameField.setPlaceholder(i18nHelper.getMessage('124103'))
|
|
.setValue(data.name)
|
|
.onChange(async (value) => {
|
|
if (!value) {
|
|
return;
|
|
}
|
|
customProperties[idx].name = value;
|
|
await manager.plugin.saveSettings();
|
|
});
|
|
let nameEl = nameField.inputEl;
|
|
nameEl.addClass('obsidian_douban_settings_input')
|
|
item.appendChild(nameEl);
|
|
|
|
|
|
item.createEl('span', { text: i18nHelper.getMessage('124104') })
|
|
const valueField = new TextComponent(el);
|
|
valueField.setPlaceholder(i18nHelper.getMessage('124105'))
|
|
.setValue(data.value)
|
|
.onChange(async (value) => {
|
|
if (!value) {
|
|
return;
|
|
}
|
|
customProperties[idx].value = value;
|
|
await manager.plugin.saveSettings();
|
|
});
|
|
const valueEl = valueField.inputEl;
|
|
valueEl.addClass('obsidian_douban_settings_input')
|
|
item.appendChild(valueEl);
|
|
|
|
const fieldsDropdown = new DropdownComponent(el);
|
|
for (const fieldSelect in SupportType) {
|
|
// @ts-ignore
|
|
fieldsDropdown.addOption(fieldSelect, i18nHelper.getMessage(fieldSelect));
|
|
}
|
|
item.createEl('span', { text: i18nHelper.getMessage('124106') });
|
|
fieldsDropdown.setValue(data.field)
|
|
.onChange(async (value: SupportType) => {
|
|
customProperties[idx].field = value;
|
|
await manager.plugin.saveSettings();
|
|
});
|
|
const fieldSelectEl = fieldsDropdown.selectEl;
|
|
fieldSelectEl.addClass('obsidian_douban_settings_input')
|
|
item.appendChild(fieldSelectEl);
|
|
|
|
const extractButton = new ButtonComponent(el);
|
|
extractButton.setIcon('minus-with-circle');
|
|
extractButton.setTooltip(i18nHelper.getMessage('124107'));
|
|
extractButton.onClick(async () => {
|
|
customProperties.splice(idx, 1);
|
|
constructCustomPropertyUI(el, customProperties, manager);
|
|
await manager.plugin.saveSettings();
|
|
});
|
|
const extractButtonEl = extractButton.buttonEl;
|
|
extractButtonEl.addClass('obsidian_douban_settings_button')
|
|
item.appendChild(extractButtonEl);
|
|
// item.appendChild(extractButton.extraSettingsEl);
|
|
}
|