mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 08:38:41 +08:00
187 lines
6.2 KiB
TypeScript
187 lines
6.2 KiB
TypeScript
import { App, PluginSettingTab, Setting } from "obsidian";
|
|
import { DEFAULT_SETTINGS, PersonNameMode, personNameModeRecords } from "./Douban";
|
|
|
|
import DoubanPlugin from "main";
|
|
import { i18nHelper } from "lang/helper";
|
|
import { log } from "utils/Logutil";
|
|
|
|
export class DoubanSettingTab extends PluginSettingTab {
|
|
plugin: DoubanPlugin;
|
|
|
|
constructor(app: App, plugin: DoubanPlugin) {
|
|
super(app, plugin);
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
display(): void {
|
|
let { containerEl } = this;
|
|
|
|
containerEl.empty();
|
|
|
|
containerEl.createEl("h2", { text: "Obsidian Douban" });
|
|
|
|
new Setting(containerEl).setName(i18nHelper.getMessage('douban search url'))
|
|
.then((setting) => {
|
|
setting.addText((textField) => {
|
|
setting.descEl.appendChild(
|
|
createFragment((frag) => {
|
|
frag.appendText(i18nHelper.getMessage('douban search url desc 1'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('douban search url desc 2'));
|
|
frag.createEl(
|
|
'a',
|
|
{
|
|
text: i18nHelper.getMessage('Douban'),
|
|
href: 'https://www.douban.com',
|
|
},
|
|
(a) => {
|
|
a.setAttr('target', '_blank');
|
|
}
|
|
);
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('douban search url desc 3'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('douban search url desc 4'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('douban search url desc 5'));
|
|
frag.createEl('br');
|
|
})
|
|
);
|
|
textField.inputEl.addClass("settings_textField");
|
|
textField
|
|
.setPlaceholder(DEFAULT_SETTINGS.searchUrl)
|
|
.setValue(this.plugin.settings.searchUrl)
|
|
.onChange(async (value) => {
|
|
this.plugin.settings.searchUrl = value;
|
|
await this.plugin.saveSettings();
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
new Setting(containerEl).setName(i18nHelper.getMessage("movie content template")).then((setting) => {
|
|
setting.addTextArea((textarea) => {
|
|
setting.descEl.appendChild(
|
|
createFragment((frag) => {
|
|
frag.appendText(i18nHelper.getMessage('movie content template desc 1'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('movie content template desc 2'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('movie content template desc 3'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('movie content template desc 4'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('movie content template desc 5'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('movie content template desc 6'));
|
|
frag.createEl('br');
|
|
})
|
|
);
|
|
textarea.inputEl.addClass("settings_area");
|
|
textarea.inputEl.setAttr("rows", 10);
|
|
textarea.setPlaceholder(DEFAULT_SETTINGS.movieTemplate)
|
|
.setValue(this.plugin.settings.movieTemplate)
|
|
.onChange(async (value) => {
|
|
this.plugin.settings.movieTemplate = value;
|
|
await this.plugin.saveSettings();
|
|
});
|
|
});
|
|
});
|
|
|
|
new Setting(containerEl).setName(i18nHelper.getMessage("Person Name Language Mode")).then((setting) => {
|
|
setting.addDropdown((dropdwon) => {
|
|
setting.descEl.appendChild(
|
|
createFragment((frag) => {
|
|
frag.appendText(i18nHelper.getMessage('options:'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('Chinese Name mode, only show Chinese name'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('English Name mode, only show English name'));
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('Chinese English Name mode, show Chinese English name both'));
|
|
frag.createEl('br');
|
|
})
|
|
);
|
|
// dropdwon.inputEl.addClass("settings_area");
|
|
// dropdwon.inputEl.setAttr("rows", 10);
|
|
dropdwon.addOption(PersonNameMode.CH_NAME, personNameModeRecords.CH)
|
|
dropdwon.addOption(PersonNameMode.EN_NAME, personNameModeRecords.EN)
|
|
dropdwon.addOption(PersonNameMode.CH_EN_NAME, personNameModeRecords.CH_EN)
|
|
dropdwon.setValue(this.plugin.settings.personNameMode)
|
|
.onChange(async (value:string) => {
|
|
this.plugin.settings.personNameMode = value as PersonNameMode;
|
|
await this.plugin.saveSettings();
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
new Setting(containerEl).setName(i18nHelper.getMessage('Date format')).then((setting) => {
|
|
setting.addMomentFormat((mf) => {
|
|
setting.descEl.appendChild(
|
|
createFragment((frag) => {
|
|
frag.appendText(
|
|
i18nHelper.getMessage('This format will be used when available template variables contain date.')
|
|
);
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('For more syntax, refer to') + ' ');
|
|
frag.createEl(
|
|
'a',
|
|
{
|
|
text: i18nHelper.getMessage('format reference'),
|
|
href: 'https://momentjs.com/docs/#/displaying/format/',
|
|
},
|
|
(a) => {
|
|
a.setAttr('target', '_blank');
|
|
}
|
|
);
|
|
frag.createEl('br');
|
|
frag.appendText(i18nHelper.getMessage('Your current syntax looks like this') + ': ');
|
|
mf.setSampleEl(frag.createEl('b', { cls: 'u-pop' }));
|
|
frag.createEl('br');
|
|
})
|
|
);
|
|
mf.setPlaceholder(DEFAULT_SETTINGS.dateFormat);
|
|
mf.setValue(this.plugin.settings.dateFormat)
|
|
mf.onChange(async (value) => {
|
|
this.plugin.settings.dateFormat = value;
|
|
await this.plugin.saveSettings();
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
|
|
new Setting(containerEl)
|
|
.setName(i18nHelper.getMessage("Array Spilt String"))
|
|
.setDesc(i18nHelper.getMessage(`string to join between array type, such as author, actor`))
|
|
.addText((textField) => {
|
|
textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt)
|
|
.setValue(this.plugin.settings.arraySpilt)
|
|
.onChange(async (value) => {
|
|
this.plugin.settings.arraySpilt = value;
|
|
await this.plugin.saveSettings();
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// new Setting(containerEl)
|
|
// .setName("Douban Request Headers")
|
|
// .setDesc(`if can not fetch data from douban,\n
|
|
// please go to douban.com\n and copy headers to this text area `)
|
|
// .addTextArea((textField) => {
|
|
// textField
|
|
// .setPlaceholder(DEFAULT_SETTINGS.searchHeaders)
|
|
// .setValue(this.plugin.settings.searchHeaders)
|
|
// .onChange(async (value) => {
|
|
// this.plugin.settings.searchHeaders = value;
|
|
// await this.plugin.saveSettings();
|
|
// });
|
|
// });
|
|
|
|
|
|
}
|
|
} |