obsidian-douban/douban/DoubanSettingTab.ts

159 lines
4.9 KiB
TypeScript

import { App, PluginSettingTab, Setting } from "obsidian";
import { DEFAULT_SETTINGS } from "./Douban";
import DoubanPlugin from "main";
import { i18nHelper } from "lang/helper";
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('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();
// });
// });
}
}