mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 16:48:44 +08:00
add custom variable
This commit is contained in:
parent
9507f7fdf2
commit
f8d453abb2
@ -139,3 +139,9 @@ If you want some features or have any questions about this plugin, create issues
|
|||||||
`npm run dev`
|
`npm run dev`
|
||||||
6. 进入Obsidian插件中心重新加载当前插件
|
6. 进入Obsidian插件中心重新加载当前插件
|
||||||
7. 享受开发吧
|
7. 享受开发吧
|
||||||
|
|
||||||
|
## 免责声明
|
||||||
|
本程序没有爬取任何书影音等内容,只供技术研究使用。没有侵犯书影音作者版权和豆瓣官方利益。如有任何侵权行为,请联系我删除。
|
||||||
|
|
||||||
|
## Thanks
|
||||||
|
|
||||||
|
|||||||
@ -52,6 +52,16 @@ export enum TemplateKey {
|
|||||||
teleplayTemplateFile = 'teleplayTemplateFile',
|
teleplayTemplateFile = 'teleplayTemplateFile',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum SupportType {
|
||||||
|
ALL = "ALL",
|
||||||
|
MOVIE = 'MOVIE',
|
||||||
|
BOOK = 'BOOK',
|
||||||
|
MUSIC = 'MUSIC',
|
||||||
|
NOTE = 'NOTE',
|
||||||
|
GAME = 'GAME',
|
||||||
|
TELEPLAY = 'TELEPLAY',
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称模式选项
|
* 名称模式选项
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import {DoubanPluginSetting} from "@App/setting/model/DoubanPluginSetting";
|
import {DoubanPluginSetting} from "@App/setting/model/DoubanPluginSetting";
|
||||||
import {PersonNameMode} from "./Constsant";
|
import {PersonNameMode, SupportType} from "./Constsant";
|
||||||
import {doubanHeaders} from "./Douban";
|
import {doubanHeaders} from "./Douban";
|
||||||
|
|
||||||
export const DEFAULT_SETTINGS: DoubanPluginSetting = {
|
export const DEFAULT_SETTINGS: DoubanPluginSetting = {
|
||||||
@ -19,4 +19,12 @@ export const DEFAULT_SETTINGS: DoubanPluginSetting = {
|
|||||||
dataFilePath: "",
|
dataFilePath: "",
|
||||||
dataFileNamePath: "/{{type}}/{{title}}",
|
dataFileNamePath: "/{{type}}/{{title}}",
|
||||||
statusBar: true,
|
statusBar: true,
|
||||||
|
customProperties: [
|
||||||
|
{name: 'myType', value: 'movie', field: SupportType.MOVIE},
|
||||||
|
{name: 'myType', value: 'book', field: SupportType.BOOK},
|
||||||
|
{name: 'myType', value: 'music', field: SupportType.MUSIC},
|
||||||
|
{name: 'myType', value: 'note', field: SupportType.NOTE},
|
||||||
|
{name: 'myType', value: 'game', field: SupportType.GAME},
|
||||||
|
{name: 'myType', value: 'teleplay', field: SupportType.TELEPLAY},
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import DoubanPageBroadcastSubject from '../model/DoubanPageBroadcastSubject';
|
|||||||
import DoubanPlugin from "main";
|
import DoubanPlugin from "main";
|
||||||
import DoubanSubject from 'src/douban/data/model/DoubanSubject';
|
import DoubanSubject from 'src/douban/data/model/DoubanSubject';
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {TemplateKey} from "../../../constant/Constsant";
|
import {SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
//TODO will support in future version
|
//TODO will support in future version
|
||||||
class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHandler<DoubanPageBroadcastSubject> {
|
class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHandler<DoubanPageBroadcastSubject> {
|
||||||
@ -14,7 +14,7 @@ class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHandler<DoubanPage
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import DoubanPlugin from "main";
|
import DoubanPlugin from "main";
|
||||||
import DoubanSubject, {DoubanParameter} from '../model/DoubanSubject';
|
import DoubanSubject, {DoubanParameter} from '../model/DoubanSubject';
|
||||||
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
|
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
|
||||||
@ -7,11 +6,17 @@ import {i18nHelper} from 'src/lang/helper';
|
|||||||
import {log} from "src/utils/Logutil";
|
import {log} from "src/utils/Logutil";
|
||||||
import {CheerioAPI, load} from "cheerio";
|
import {CheerioAPI, load} from "cheerio";
|
||||||
import YamlUtil from "../../../utils/YamlUtil";
|
import YamlUtil from "../../../utils/YamlUtil";
|
||||||
import {BasicConst, PersonNameMode, SearchHandleMode, TemplateKey, TemplateTextMode} from "../../../constant/Constsant";
|
import {
|
||||||
|
BasicConst,
|
||||||
|
PersonNameMode,
|
||||||
|
SearchHandleMode,
|
||||||
|
SupportType,
|
||||||
|
TemplateKey,
|
||||||
|
TemplateTextMode
|
||||||
|
} from "../../../constant/Constsant";
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import HandleResult from "@App/data/model/HandleResult";
|
import HandleResult from "@App/data/model/HandleResult";
|
||||||
import {DEFAULT_TEMPLATE_CONTENT, getDefaultTemplateContent} from "../../../constant/DefaultTemplateContent";
|
import {getDefaultTemplateContent} from "../../../constant/DefaultTemplateContent";
|
||||||
import FileHandler from "../../../file/FileHandler";
|
|
||||||
import StringUtil from "../../../utils/StringUtil";
|
import StringUtil from "../../../utils/StringUtil";
|
||||||
import {DEFAULT_SETTINGS} from "../../../constant/DefaultSettings";
|
import {DEFAULT_SETTINGS} from "../../../constant/DefaultSettings";
|
||||||
|
|
||||||
@ -31,7 +36,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
let frontMatter: string = '';
|
let frontMatter: string = '';
|
||||||
let frontMatterBefore: string = '';
|
let frontMatterBefore: string = '';
|
||||||
let frontMatterAfter: string = '';
|
let frontMatterAfter: string = '';
|
||||||
let result:string = '';
|
let result: string = '';
|
||||||
if (frontMatterStart > -1 && frontMatterEnd > -1) {
|
if (frontMatterStart > -1 && frontMatterEnd > -1) {
|
||||||
frontMatterBefore = template.substring(0, frontMatterStart);
|
frontMatterBefore = template.substring(0, frontMatterStart);
|
||||||
frontMatter = template.substring(frontMatterStart, frontMatterEnd + 3);
|
frontMatter = template.substring(frontMatterStart, frontMatterEnd + 3);
|
||||||
@ -49,7 +54,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
} else {
|
} else {
|
||||||
result = this.parsePartText(template, extract, context);
|
result = this.parsePartText(template, extract, context);
|
||||||
}
|
}
|
||||||
let fileName:string = '';
|
let fileName: string = '';
|
||||||
if (SearchHandleMode.FOR_CREATE == context.mode) {
|
if (SearchHandleMode.FOR_CREATE == context.mode) {
|
||||||
fileName = this.parsePartText(this.getFileName(context), extract, context);
|
fileName = this.parsePartText(this.getFileName(context), extract, context);
|
||||||
}
|
}
|
||||||
@ -57,7 +62,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
return {content: result, fileName: fileName};
|
return {content: result, fileName: fileName};
|
||||||
}
|
}
|
||||||
|
|
||||||
private getFileName(context:HandleContext): string {
|
private getFileName(context: HandleContext): string {
|
||||||
const {dataFileNamePath} = context.settings;
|
const {dataFileNamePath} = context.settings;
|
||||||
return dataFileNamePath ? dataFileNamePath : DEFAULT_SETTINGS.dataFileNamePath;
|
return dataFileNamePath ? dataFileNamePath : DEFAULT_SETTINGS.dataFileNamePath;
|
||||||
}
|
}
|
||||||
@ -116,7 +121,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract getTemplateKey(context: HandleContext): TemplateKey;
|
abstract getSupportType(): SupportType;
|
||||||
|
|
||||||
abstract parseText(beforeContent: string, extract: T, context: HandleContext, textMode: TemplateTextMode): string;
|
abstract parseText(beforeContent: string, extract: T, context: HandleContext, textMode: TemplateTextMode): string;
|
||||||
|
|
||||||
@ -198,8 +203,8 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
}
|
}
|
||||||
|
|
||||||
private parsePartText(template: string, extract: T, context: HandleContext, textMode: TemplateTextMode = TemplateTextMode.NORMAL): string {
|
private parsePartText(template: string, extract: T, context: HandleContext, textMode: TemplateTextMode = TemplateTextMode.NORMAL): string {
|
||||||
const resultContent = template
|
let resultContent = this.handleCustomVariable(template, context);
|
||||||
.replaceAll(DoubanParameter.ID, extract.id)
|
resultContent = resultContent.replaceAll(DoubanParameter.ID, extract.id)
|
||||||
.replaceAll(DoubanParameter.TITLE, this.handleSpecialContent(this.getPersonName(extract.title, context), textMode))
|
.replaceAll(DoubanParameter.TITLE, this.handleSpecialContent(this.getPersonName(extract.title, context), textMode))
|
||||||
.replaceAll(DoubanParameter.TYPE, extract.type)
|
.replaceAll(DoubanParameter.TYPE, extract.type)
|
||||||
.replaceAll(DoubanParameter.SCORE, this.handleSpecialContent(extract.score))
|
.replaceAll(DoubanParameter.SCORE, this.handleSpecialContent(extract.score))
|
||||||
@ -216,21 +221,70 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
return this.parseText(resultContent, extract, context, textMode);
|
return this.parseText(resultContent, extract, context, textMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getTemplate(context: HandleContext):Promise<string> {
|
/**
|
||||||
const tempKey:TemplateKey = this.getTemplateKey(context);
|
* 处理自定义参数
|
||||||
const templatePath:string = context.settings[tempKey];
|
* @param template
|
||||||
|
* @param context
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
private handleCustomVariable(template: string, context: HandleContext): string {
|
||||||
|
let customProperties = context.settings.customProperties;
|
||||||
|
let resultContent = template;
|
||||||
|
if (!customProperties) {
|
||||||
|
return resultContent;
|
||||||
|
}
|
||||||
|
customProperties.filter(customProperty => customProperty.name &&
|
||||||
|
customProperty.field
|
||||||
|
&& (customProperty.field == SupportType.ALL ||
|
||||||
|
customProperty.field == this.getSupportType())).forEach(customProperty => {
|
||||||
|
resultContent = resultContent.replaceAll(`{{${customProperty.name}}}`, customProperty.value);
|
||||||
|
});
|
||||||
|
return resultContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getTemplateKey():TemplateKey {
|
||||||
|
let templateKey: TemplateKey;
|
||||||
|
switch (this.getSupportType()) {
|
||||||
|
case SupportType.MOVIE:
|
||||||
|
templateKey = TemplateKey.movieTemplateFile;
|
||||||
|
break;
|
||||||
|
case SupportType.BOOK:
|
||||||
|
templateKey = TemplateKey.bookTemplateFile;
|
||||||
|
break;
|
||||||
|
case SupportType.MUSIC:
|
||||||
|
templateKey = TemplateKey.musicTemplateFile;
|
||||||
|
break;
|
||||||
|
case SupportType.TELEPLAY:
|
||||||
|
templateKey = TemplateKey.teleplayTemplateFile;
|
||||||
|
break;
|
||||||
|
case SupportType.GAME:
|
||||||
|
templateKey = TemplateKey.gameTemplateFile;
|
||||||
|
break;
|
||||||
|
case SupportType.NOTE:
|
||||||
|
templateKey = TemplateKey.noteTemplateFile;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
templateKey = null;
|
||||||
|
|
||||||
|
}
|
||||||
|
return templateKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getTemplate(context: HandleContext): Promise<string> {
|
||||||
|
const tempKey: TemplateKey = this.getTemplateKey();
|
||||||
|
const templatePath: string = context.settings[tempKey];
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (!templatePath || StringUtil.isBlank(templatePath)) {
|
if (!templatePath || StringUtil.isBlank(templatePath)) {
|
||||||
return getDefaultTemplateContent(tempKey);
|
return getDefaultTemplateContent(tempKey);
|
||||||
}
|
}
|
||||||
const defaultContent = getDefaultTemplateContent(tempKey);
|
const defaultContent = getDefaultTemplateContent(tempKey);
|
||||||
let firstLinkpathDest:TFile = this.doubanPlugin.app.metadataCache.getFirstLinkpathDest(templatePath, '');
|
let firstLinkpathDest: TFile = this.doubanPlugin.app.metadataCache.getFirstLinkpathDest(templatePath, '');
|
||||||
if (!firstLinkpathDest) {
|
if (!firstLinkpathDest) {
|
||||||
return defaultContent;
|
return defaultContent;
|
||||||
}else {
|
} else {
|
||||||
const val = await this.doubanPlugin.fileHandler.getFileContent(firstLinkpathDest.path);
|
const val = await this.doubanPlugin.fileHandler.getFileContent(firstLinkpathDest.path);
|
||||||
return val?val:defaultContent;
|
return val ? val : defaultContent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,8 @@ import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
|
|||||||
import DoubanBookSubject, {DoubanBookParameter} from "../model/DoubanBookSubject";
|
import DoubanBookSubject, {DoubanBookParameter} from "../model/DoubanBookSubject";
|
||||||
import DoubanPlugin from "main";
|
import DoubanPlugin from "main";
|
||||||
import DoubanSubject from "../model/DoubanSubject";
|
import DoubanSubject from "../model/DoubanSubject";
|
||||||
import {TemplateKey, TemplateTextMode} from "../../../constant/Constsant";
|
import {SupportType, TemplateTextMode} from "../../../constant/Constsant";
|
||||||
import StringUtil from "../../../utils/StringUtil";
|
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {i18nHelper} from "../../../lang/helper";
|
|
||||||
|
|
||||||
export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<DoubanBookSubject> {
|
export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<DoubanBookSubject> {
|
||||||
|
|
||||||
@ -14,8 +12,8 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return TemplateKey.bookTemplateFile;
|
return SupportType.BOOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanBookSubject, context: HandleContext, textMode: TemplateTextMode): string {
|
parseText(beforeContent: string, extract: DoubanBookSubject, context: HandleContext, textMode: TemplateTextMode): string {
|
||||||
@ -31,7 +29,9 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
.replaceAll(DoubanBookParameter.menu, extract.menu.join('\n'))
|
.replaceAll(DoubanBookParameter.menu, extract.menu.join('\n'))
|
||||||
.replaceAll(DoubanBookParameter.price, super.handleSpecialContent(extract.price, textMode))
|
.replaceAll(DoubanBookParameter.price, super.handleSpecialContent(extract.price, textMode))
|
||||||
.replaceAll(DoubanBookParameter.series, super.handleSpecialContent(extract.series, textMode))
|
.replaceAll(DoubanBookParameter.series, super.handleSpecialContent(extract.series, textMode))
|
||||||
.replaceAll(DoubanBookParameter.binding, super.handleSpecialContent(extract.binding, textMode));
|
.replaceAll(DoubanBookParameter.binding, super.handleSpecialContent(extract.binding, textMode))
|
||||||
|
.replaceAll(DoubanBookParameter.producer, super.handleSpecialContent(extract.producer, textMode))
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
@ -69,7 +69,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
html(info.parent).find("a").map((index, a) => {
|
html(info.parent).find("a").map((index, a) => {
|
||||||
value.push(html(a).text().trim());
|
value.push(html(a).text().trim());
|
||||||
});
|
});
|
||||||
} else if (key.indexOf('作者') >= 0 || key.indexOf('丛书') >= 0 || key.indexOf('出版社') >= 0) {
|
} else if (key.indexOf('作者') >= 0 || key.indexOf('丛书') >= 0 || key.indexOf('出版社') >= 0 || key.indexOf('出品方') >= 0) {
|
||||||
value = html(info.next.next).text().trim();
|
value = html(info.next.next).text().trim();
|
||||||
} else {
|
} else {
|
||||||
value = html(info.next).text().trim();
|
value = html(info.next).text().trim();
|
||||||
@ -104,6 +104,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
url: url,
|
url: url,
|
||||||
genre: [],
|
genre: [],
|
||||||
binding: valueMap.has('binding') ? valueMap.get('binding') : "",
|
binding: valueMap.has('binding') ? valueMap.get('binding') : "",
|
||||||
|
producer: valueMap.has('producer') ? valueMap.get('producer') : "",
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -124,5 +125,6 @@ const BookKeyValueMap: Map<string, string> = new Map(
|
|||||||
['ISBN:', 'isbn'],
|
['ISBN:', 'isbn'],
|
||||||
['译者', 'translator'],
|
['译者', 'translator'],
|
||||||
['副标题:', 'subTitle'],
|
['副标题:', 'subTitle'],
|
||||||
|
['出品方:', 'producer'],
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import DoubanSubject from '../model/DoubanSubject';
|
|||||||
import DoubanGameSubject from '../model/DoubanGameSubject';
|
import DoubanGameSubject from '../model/DoubanGameSubject';
|
||||||
import StringUtil from "../../../utils/StringUtil";
|
import StringUtil from "../../../utils/StringUtil";
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {TemplateKey} from "../../../constant/Constsant";
|
import {SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<DoubanGameSubject> {
|
export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<DoubanGameSubject> {
|
||||||
|
|
||||||
@ -13,8 +13,8 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return TemplateKey.gameTemplateFile;
|
return SupportType.GAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanGameSubject, context: HandleContext): string {
|
parseText(beforeContent: string, extract: DoubanGameSubject, context: HandleContext): string {
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import DoubanSubject from '../model/DoubanSubject';
|
|||||||
import DoubanMovieSubject from '../model/DoubanMovieSubject';
|
import DoubanMovieSubject from '../model/DoubanMovieSubject';
|
||||||
import StringUtil from "../../../utils/StringUtil";
|
import StringUtil from "../../../utils/StringUtil";
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {PersonNameMode, TemplateKey} from "../../../constant/Constsant";
|
import {PersonNameMode, SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> {
|
export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> {
|
||||||
|
|
||||||
@ -14,8 +14,8 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return TemplateKey.movieTemplateFile;
|
return SupportType.MOVIE;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanMovieSubject, context: HandleContext): string {
|
parseText(beforeContent: string, extract: DoubanMovieSubject, context: HandleContext): string {
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import DoubanMusicSubject from '../model/DoubanMusicSubject';
|
|||||||
import DoubanPlugin from "main";
|
import DoubanPlugin from "main";
|
||||||
import DoubanSubject from '../model/DoubanSubject';
|
import DoubanSubject from '../model/DoubanSubject';
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {TemplateKey} from "../../../constant/Constsant";
|
import {SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<DoubanMusicSubject> {
|
export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<DoubanMusicSubject> {
|
||||||
|
|
||||||
@ -12,8 +12,8 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return TemplateKey.musicTemplateFile;
|
return SupportType.MUSIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanMusicSubject, context: HandleContext): string {
|
parseText(beforeContent: string, extract: DoubanMusicSubject, context: HandleContext): string {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import DoubanPlugin from "main";
|
|||||||
import DoubanSubject from '../model/DoubanSubject';
|
import DoubanSubject from '../model/DoubanSubject';
|
||||||
import html2markdown from '@notable/html2markdown';
|
import html2markdown from '@notable/html2markdown';
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {TemplateKey} from "../../../constant/Constsant";
|
import {SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<DoubanNoteSubject> {
|
export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<DoubanNoteSubject> {
|
||||||
|
|
||||||
@ -13,8 +13,8 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return TemplateKey.noteTemplateFile;
|
return SupportType.NOTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanNoteSubject, context: HandleContext): string {
|
parseText(beforeContent: string, extract: DoubanNoteSubject, context: HandleContext): string {
|
||||||
|
|||||||
@ -4,14 +4,14 @@ import DoubanSubject from "../model/DoubanSubject";
|
|||||||
import {i18nHelper} from "src/lang/helper";
|
import {i18nHelper} from "src/lang/helper";
|
||||||
import {log} from "src/utils/Logutil";
|
import {log} from "src/utils/Logutil";
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {TemplateKey} from "../../../constant/Constsant";
|
import {SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认的处理器
|
* 默认的处理器
|
||||||
*/
|
*/
|
||||||
export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> {
|
export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> {
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType.ALL {
|
||||||
return TemplateKey.bookTemplateFile
|
return SupportType.ALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanSubject, context: HandleContext): string {
|
parseText(beforeContent: string, extract: DoubanSubject, context: HandleContext): string {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import DoubanSubject from "../model/DoubanSubject";
|
|||||||
import DoubanTeleplaySubject from "../model/DoubanTeleplaySubject";
|
import DoubanTeleplaySubject from "../model/DoubanTeleplaySubject";
|
||||||
import SchemaOrg from "src/utils/SchemaOrg";
|
import SchemaOrg from "src/utils/SchemaOrg";
|
||||||
import HandleContext from "@App/data/model/HandleContext";
|
import HandleContext from "@App/data/model/HandleContext";
|
||||||
import {TemplateKey} from "../../../constant/Constsant";
|
import {SupportType, TemplateKey} from "../../../constant/Constsant";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* teleplay
|
* teleplay
|
||||||
@ -16,8 +16,8 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
|
|||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTemplateKey(context: HandleContext): TemplateKey {
|
getSupportType(): SupportType {
|
||||||
return TemplateKey.teleplayTemplateFile;
|
return SupportType.TELEPLAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseText(beforeContent: string, extract: DoubanTeleplaySubject, context: HandleContext): string {
|
parseText(beforeContent: string, extract: DoubanTeleplaySubject, context: HandleContext): string {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ export default class DoubanBookSubject extends DoubanSubject {
|
|||||||
menu: string[];
|
menu: string[];
|
||||||
price: number;
|
price: number;
|
||||||
binding: string;
|
binding: string;
|
||||||
|
producer: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DoubanBookParameter = {
|
export const DoubanBookParameter = {
|
||||||
@ -24,4 +25,5 @@ export const DoubanBookParameter = {
|
|||||||
menu: '{{menu}}',
|
menu: '{{menu}}',
|
||||||
price: '{{price}}',
|
price: '{{price}}',
|
||||||
binding: '{{binding}}',
|
binding: '{{binding}}',
|
||||||
|
producer: '{{producer}}',
|
||||||
}
|
}
|
||||||
|
|||||||
129
src/douban/setting/BasicSettingsHelper.ts
Normal file
129
src/douban/setting/BasicSettingsHelper.ts
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
import {i18nHelper} from "../../lang/helper";
|
||||||
|
import {Setting} from "obsidian";
|
||||||
|
import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings";
|
||||||
|
import SettingsManager from "@App/setting/SettingsManager";
|
||||||
|
|
||||||
|
export function constructBasicUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
|
containerEl.createEl('h3', { text: i18nHelper.getMessage('1210') });
|
||||||
|
new Setting(containerEl).setName(i18nHelper.getMessage('120001'))
|
||||||
|
.then((setting) => {
|
||||||
|
setting.addText((textField) => {
|
||||||
|
setting.descEl.appendChild(
|
||||||
|
createFragment((frag) => {
|
||||||
|
frag.appendText(i18nHelper.getMessage('120002'));
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120003'));
|
||||||
|
frag.createEl(
|
||||||
|
'a',
|
||||||
|
{
|
||||||
|
text: i18nHelper.getMessage('120901'),
|
||||||
|
href: 'https://www.douban.com',
|
||||||
|
},
|
||||||
|
(a) => {
|
||||||
|
a.setAttr('target', '_blank');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120004'));
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120005'));
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120006'));
|
||||||
|
frag.createEl('br');
|
||||||
|
})
|
||||||
|
);
|
||||||
|
textField.inputEl.addClass("obsidian_douban_settings_textField");
|
||||||
|
textField
|
||||||
|
.setPlaceholder(DEFAULT_SETTINGS.searchUrl)
|
||||||
|
.setValue(manager.plugin.settings.searchUrl)
|
||||||
|
.onChange(async (value) => {
|
||||||
|
manager.plugin.settings.searchUrl = value;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
new Setting(containerEl).setName(i18nHelper.getMessage('120501')).then((setting) => {
|
||||||
|
setting.addMomentFormat((mf) => {
|
||||||
|
setting.descEl.appendChild(
|
||||||
|
createFragment((frag) => {
|
||||||
|
frag.appendText(
|
||||||
|
i18nHelper.getMessage('120503')
|
||||||
|
);
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120506') + ' ');
|
||||||
|
frag.createEl(
|
||||||
|
'a',
|
||||||
|
{
|
||||||
|
text: i18nHelper.getMessage('120508'),
|
||||||
|
href: 'https://momentjs.com/docs/#/displaying/format/',
|
||||||
|
},
|
||||||
|
(a) => {
|
||||||
|
a.setAttr('target', '_blank');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120507') + ': ');
|
||||||
|
mf.setSampleEl(frag.createEl('b', {cls: 'u-pop'}));
|
||||||
|
frag.createEl('br');
|
||||||
|
})
|
||||||
|
);
|
||||||
|
mf.setPlaceholder(DEFAULT_SETTINGS.dateFormat);
|
||||||
|
mf.setValue(manager.plugin.settings.dateFormat)
|
||||||
|
mf.onChange(async (value) => {
|
||||||
|
manager.plugin.settings.dateFormat = value;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
new Setting(containerEl).setName(i18nHelper.getMessage('120502')).then((setting) => {
|
||||||
|
setting.addMomentFormat((mf) => {
|
||||||
|
setting.descEl.appendChild(
|
||||||
|
createFragment((frag) => {
|
||||||
|
frag.appendText(
|
||||||
|
i18nHelper.getMessage('120504')
|
||||||
|
);
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120506') + ' ');
|
||||||
|
frag.createEl(
|
||||||
|
'a',
|
||||||
|
{
|
||||||
|
text: i18nHelper.getMessage('120508'),
|
||||||
|
href: 'https://momentjs.com/docs/#/displaying/format/',
|
||||||
|
},
|
||||||
|
(a) => {
|
||||||
|
a.setAttr('target', '_blank');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('120507') + ': ');
|
||||||
|
mf.setSampleEl(frag.createEl('b', {cls: 'u-pop'}));
|
||||||
|
frag.createEl('br');
|
||||||
|
})
|
||||||
|
);
|
||||||
|
mf.setPlaceholder(DEFAULT_SETTINGS.timeFormat);
|
||||||
|
mf.setValue(manager.plugin.settings.timeFormat)
|
||||||
|
mf.onChange(async (value) => {
|
||||||
|
manager.plugin.settings.timeFormat = value;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
new Setting(containerEl)
|
||||||
|
.setName(i18nHelper.getMessage('121401'))
|
||||||
|
.setDesc(i18nHelper.getMessage('121402'))
|
||||||
|
.addToggle((toggleComponent) => {
|
||||||
|
toggleComponent
|
||||||
|
// .setTooltip(i18nHelper.getMessage('121403'))
|
||||||
|
.setValue(manager.plugin.settings.statusBar)
|
||||||
|
.onChange(async (value) => {
|
||||||
|
manager.plugin.settings.statusBar = value;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
95
src/douban/setting/CustomPropertySettingsHelper.ts
Normal file
95
src/douban/setting/CustomPropertySettingsHelper.ts
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
import {i18nHelper} from "../../lang/helper";
|
||||||
|
import SettingsManager from "@App/setting/SettingsManager";
|
||||||
|
import {CustomProperty} from "@App/setting/model/CustomProperty";
|
||||||
|
import {ButtonComponent, DropdownComponent, ExtraButtonComponent, Setting, TextComponent} from "obsidian";
|
||||||
|
import {SupportType} from "../../constant/Constsant";
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
@ -6,6 +6,11 @@ import {PersonNameMode, PersonNameModeRecords} from "../../constant/Constsant";
|
|||||||
import SettingsManager from "@App/setting/SettingsManager";
|
import SettingsManager from "@App/setting/SettingsManager";
|
||||||
import {FolderSuggest} from "@App/setting/model/FolderSuggest";
|
import {FolderSuggest} from "@App/setting/model/FolderSuggest";
|
||||||
import { DEFAULT_SETTINGS } from "src/constant/DefaultSettings";
|
import { DEFAULT_SETTINGS } from "src/constant/DefaultSettings";
|
||||||
|
import { constructOutUI } from "./OutputSettingsHelper";
|
||||||
|
import { constructTemplateUI } from "./TemplateSettingHelper";
|
||||||
|
import { constructBasicUI } from "./BasicSettingsHelper";
|
||||||
|
import { constructTemplateVariablesUI } from "./TemplateVariableSettingsHelper";
|
||||||
|
import {constructCustomPropertySettingsUI, constructCustomPropertyUI} from "@App/setting/CustomPropertySettingsHelper";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部分逻辑参考以下项目
|
* 部分逻辑参考以下项目
|
||||||
@ -25,11 +30,10 @@ export class DoubanSettingTab extends PluginSettingTab {
|
|||||||
containerEl.empty();
|
containerEl.empty();
|
||||||
containerEl.createEl("h2", {text: 'Obsidian Douban'});
|
containerEl.createEl("h2", {text: 'Obsidian Douban'});
|
||||||
new Setting(containerEl);
|
new Setting(containerEl);
|
||||||
this.settingsManager.constructBasicUI(containerEl);
|
constructBasicUI(containerEl, this.settingsManager);
|
||||||
this.settingsManager.constructTemplateUI(containerEl);
|
constructTemplateUI(containerEl, this.settingsManager);
|
||||||
this.settingsManager.constructOutUI(containerEl);
|
constructOutUI(containerEl, this.settingsManager);
|
||||||
|
constructCustomPropertySettingsUI(containerEl, this.settingsManager);
|
||||||
this.settingsManager.constructTemplateVariablesUI(containerEl);
|
constructTemplateVariablesUI(containerEl, this.settingsManager);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
78
src/douban/setting/OutputSettingsHelper.ts
Normal file
78
src/douban/setting/OutputSettingsHelper.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
import {i18nHelper} from "../../lang/helper";
|
||||||
|
import {Setting} from "obsidian";
|
||||||
|
import {createFolderSelectionSetting} from "@App/setting/TemplateSettingHelper";
|
||||||
|
import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings";
|
||||||
|
import {PersonNameMode, PersonNameModeRecords} from "../../constant/Constsant";
|
||||||
|
import SettingsManager from "@App/setting/SettingsManager";
|
||||||
|
|
||||||
|
export function constructOutUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
|
containerEl.createEl('h3', { text: i18nHelper.getMessage('1220') });
|
||||||
|
new Setting(containerEl).then(createFolderSelectionSetting({name: '121501', desc: '121502', placeholder: '121503', key: 'dataFilePath', manager: manager}));
|
||||||
|
let outfolder = containerEl.createDiv({ cls: 'settings-item' });
|
||||||
|
constructOutFolderUI(outfolder, manager);
|
||||||
|
|
||||||
|
new Setting(containerEl)
|
||||||
|
.setName(i18nHelper.getMessage('120601'))
|
||||||
|
.setDesc(i18nHelper.getMessage('120602'))
|
||||||
|
.addText((textField) => {
|
||||||
|
textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt)
|
||||||
|
.setValue(manager.plugin.settings.arraySpilt)
|
||||||
|
.onChange(async (value) => {
|
||||||
|
manager.plugin.settings.arraySpilt = value;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
new Setting(containerEl).setName(i18nHelper.getMessage('121201')).then((setting) => {
|
||||||
|
setting.addDropdown((dropdwon) => {
|
||||||
|
setting.descEl.appendChild(
|
||||||
|
createFragment((frag) => {
|
||||||
|
frag.appendText(i18nHelper.getMessage('121202'));
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('121203'));
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('121204'));
|
||||||
|
frag.createEl('br');
|
||||||
|
frag.appendText(i18nHelper.getMessage('121205'));
|
||||||
|
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(manager.plugin.settings.personNameMode)
|
||||||
|
.onChange(async (value: string) => {
|
||||||
|
manager.plugin.settings.personNameMode = value as PersonNameMode;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function constructOutFolderUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
|
containerEl.empty();
|
||||||
|
const dataFilePathSetting = new Setting(containerEl)
|
||||||
|
.setName(i18nHelper.getMessage('121601'))
|
||||||
|
.setDesc(i18nHelper.getMessage('121602'))
|
||||||
|
.addText((textField) => {
|
||||||
|
textField.setPlaceholder(DEFAULT_SETTINGS.dataFileNamePath)
|
||||||
|
.setValue(manager.plugin.settings.dataFileNamePath)
|
||||||
|
.onChange(async (value) => {
|
||||||
|
manager.plugin.settings.dataFileNamePath = value;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
dataFilePathSetting.addExtraButton((button) => {
|
||||||
|
button
|
||||||
|
.setIcon('reset')
|
||||||
|
.setTooltip(i18nHelper.getMessage('121902'))
|
||||||
|
.onClick(async () => {
|
||||||
|
manager.plugin.settings.dataFileNamePath = DEFAULT_SETTINGS.dataFileNamePath;
|
||||||
|
await manager.plugin.saveSettings();
|
||||||
|
constructOutFolderUI(containerEl, manager)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -2,9 +2,10 @@ import {App, Setting} from "obsidian";
|
|||||||
import { DEFAULT_SETTINGS } from "src/constant/DefaultSettings";
|
import { DEFAULT_SETTINGS } from "src/constant/DefaultSettings";
|
||||||
import DoubanPlugin from "../../../main";
|
import DoubanPlugin from "../../../main";
|
||||||
import { DoubanPluginSetting } from "./model/DoubanPluginSetting";
|
import { DoubanPluginSetting } from "./model/DoubanPluginSetting";
|
||||||
import {createFileSelectionSetting, createFolderSelectionSetting} from "@App/setting/SettingHelper";
|
import {createFileSelectionSetting, createFolderSelectionSetting} from "@App/setting/TemplateSettingHelper";
|
||||||
import {i18nHelper} from "../../lang/helper";
|
import {i18nHelper} from "../../lang/helper";
|
||||||
import {PersonNameMode, PersonNameModeRecords} from "../../constant/Constsant";
|
import {PersonNameMode, PersonNameModeRecords} from "../../constant/Constsant";
|
||||||
|
import {constructBasicUI} from "@App/setting/BasicSettingsHelper";
|
||||||
|
|
||||||
export default class SettingsManager {
|
export default class SettingsManager {
|
||||||
app: App;
|
app: App;
|
||||||
@ -31,454 +32,4 @@ export default class SettingsManager {
|
|||||||
await this.plugin.saveSettings();
|
await this.plugin.saveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
constructBasicUI(containerEl: HTMLElement){
|
|
||||||
containerEl.createEl('h3', { text: i18nHelper.getMessage('1210') });
|
|
||||||
new Setting(containerEl).setName(i18nHelper.getMessage('120001'))
|
|
||||||
.then((setting) => {
|
|
||||||
setting.addText((textField) => {
|
|
||||||
setting.descEl.appendChild(
|
|
||||||
createFragment((frag) => {
|
|
||||||
frag.appendText(i18nHelper.getMessage('120002'));
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120003'));
|
|
||||||
frag.createEl(
|
|
||||||
'a',
|
|
||||||
{
|
|
||||||
text: i18nHelper.getMessage('120901'),
|
|
||||||
href: 'https://www.douban.com',
|
|
||||||
},
|
|
||||||
(a) => {
|
|
||||||
a.setAttr('target', '_blank');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120004'));
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120005'));
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120006'));
|
|
||||||
frag.createEl('br');
|
|
||||||
})
|
|
||||||
);
|
|
||||||
textField.inputEl.addClass("obsidian_douban_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('120501')).then((setting) => {
|
|
||||||
setting.addMomentFormat((mf) => {
|
|
||||||
setting.descEl.appendChild(
|
|
||||||
createFragment((frag) => {
|
|
||||||
frag.appendText(
|
|
||||||
i18nHelper.getMessage('120503')
|
|
||||||
);
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120506') + ' ');
|
|
||||||
frag.createEl(
|
|
||||||
'a',
|
|
||||||
{
|
|
||||||
text: i18nHelper.getMessage('120508'),
|
|
||||||
href: 'https://momentjs.com/docs/#/displaying/format/',
|
|
||||||
},
|
|
||||||
(a) => {
|
|
||||||
a.setAttr('target', '_blank');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120507') + ': ');
|
|
||||||
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('120502')).then((setting) => {
|
|
||||||
setting.addMomentFormat((mf) => {
|
|
||||||
setting.descEl.appendChild(
|
|
||||||
createFragment((frag) => {
|
|
||||||
frag.appendText(
|
|
||||||
i18nHelper.getMessage('120504')
|
|
||||||
);
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120506') + ' ');
|
|
||||||
frag.createEl(
|
|
||||||
'a',
|
|
||||||
{
|
|
||||||
text: i18nHelper.getMessage('120508'),
|
|
||||||
href: 'https://momentjs.com/docs/#/displaying/format/',
|
|
||||||
},
|
|
||||||
(a) => {
|
|
||||||
a.setAttr('target', '_blank');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('120507') + ': ');
|
|
||||||
mf.setSampleEl(frag.createEl('b', {cls: 'u-pop'}));
|
|
||||||
frag.createEl('br');
|
|
||||||
})
|
|
||||||
);
|
|
||||||
mf.setPlaceholder(DEFAULT_SETTINGS.timeFormat);
|
|
||||||
mf.setValue(this.plugin.settings.timeFormat)
|
|
||||||
mf.onChange(async (value) => {
|
|
||||||
this.plugin.settings.timeFormat = value;
|
|
||||||
await this.plugin.saveSettings();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
new Setting(containerEl)
|
|
||||||
.setName(i18nHelper.getMessage('121401'))
|
|
||||||
.setDesc(i18nHelper.getMessage('121402'))
|
|
||||||
.addToggle((toggleComponent) => {
|
|
||||||
toggleComponent
|
|
||||||
// .setTooltip(i18nHelper.getMessage('121403'))
|
|
||||||
.setValue(this.plugin.settings.statusBar)
|
|
||||||
.onChange(async (value) => {
|
|
||||||
this.plugin.settings.statusBar = value;
|
|
||||||
await this.plugin.saveSettings();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
constructTemplateUI(containerEl: HTMLElement) {
|
|
||||||
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({name: '120101', desc: '120102', placeholder: '121701', key: 'movieTemplateFile', manager: this}));
|
|
||||||
new Setting(containerEl).then(createFileSelectionSetting({name: '120201', desc: '120202', placeholder: '121701', key: 'bookTemplateFile', manager: this}));
|
|
||||||
new Setting(containerEl).then(createFileSelectionSetting({name: '120301', desc: '120302', placeholder: '121701', key: 'musicTemplateFile', manager: this}));
|
|
||||||
new Setting(containerEl).then(createFileSelectionSetting({name: '120401', desc: '120402', placeholder: '121701', key: 'noteTemplateFile', manager: this}));
|
|
||||||
new Setting(containerEl).then(createFileSelectionSetting({name: '121301', desc: '121302', placeholder: '121701', key: 'gameTemplateFile', manager: this}));
|
|
||||||
new Setting(containerEl).then(createFileSelectionSetting({name: '121801', desc: '121802', placeholder: '121701', key: 'teleplayTemplateFile', manager: this}));
|
|
||||||
}
|
|
||||||
|
|
||||||
constructOutUI(containerEl: HTMLElement) {
|
|
||||||
containerEl.createEl('h3', { text: i18nHelper.getMessage('1220') });
|
|
||||||
new Setting(containerEl).then(createFolderSelectionSetting({name: '121501', desc: '121502', placeholder: '121503', key: 'dataFilePath', manager: this}));
|
|
||||||
let outfolder = containerEl.createDiv({ cls: 'settings-item' });
|
|
||||||
this.constructOutFolderUI(outfolder);
|
|
||||||
|
|
||||||
new Setting(containerEl)
|
|
||||||
.setName(i18nHelper.getMessage('120601'))
|
|
||||||
.setDesc(i18nHelper.getMessage('120602'))
|
|
||||||
.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(i18nHelper.getMessage('121201')).then((setting) => {
|
|
||||||
setting.addDropdown((dropdwon) => {
|
|
||||||
setting.descEl.appendChild(
|
|
||||||
createFragment((frag) => {
|
|
||||||
frag.appendText(i18nHelper.getMessage('121202'));
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('121203'));
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('121204'));
|
|
||||||
frag.createEl('br');
|
|
||||||
frag.appendText(i18nHelper.getMessage('121205'));
|
|
||||||
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();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
constructTemplateVariablesUI(containerEl: HTMLElement) {
|
|
||||||
containerEl.createEl('h3', { text: i18nHelper.getMessage('1230') });
|
|
||||||
containerEl.createEl('p', { text: i18nHelper.getMessage('122003') });
|
|
||||||
|
|
||||||
const basicVariablesTable = new DocumentFragment();
|
|
||||||
basicVariablesTable.createDiv().innerHTML = `
|
|
||||||
${i18nHelper.getMessage('122004')}
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<table border="1">
|
|
||||||
<tr>
|
|
||||||
<th>${i18nHelper.getMessage('300101')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300102')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300103')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300104')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300105')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300106')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300107')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300108')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>id</td>
|
|
||||||
<td>${i18nHelper.getMessage('310101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310201')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310301')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310401')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310501')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310601')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310701')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>title</td>
|
|
||||||
<td>${i18nHelper.getMessage('310102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310202')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310302')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310402')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310502')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310602')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310702')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>type</td>
|
|
||||||
<td>${i18nHelper.getMessage('310103')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310203')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310303')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310403')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310503')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310603')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310703')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>score</td>
|
|
||||||
<td>${i18nHelper.getMessage('310104')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310204')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310304')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310404')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310504')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310604')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310704')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>image</td>
|
|
||||||
<td>${i18nHelper.getMessage('310105')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310205')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310305')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310405')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310505')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310605')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310705')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>url</td>
|
|
||||||
<td>${i18nHelper.getMessage('310106')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310206')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310306')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310406')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310506')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310606')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310706')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>desc</td>
|
|
||||||
<td>${i18nHelper.getMessage('310107')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310207')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310307')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310407')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310507')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310607')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310707')}</td>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>publisher</td>
|
|
||||||
<td>${i18nHelper.getMessage('310108')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310208')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310308')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310408')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310508')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310608')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310708')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>datePublished</td>
|
|
||||||
<td>${i18nHelper.getMessage('310109')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310209')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310309')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310409')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310509')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310609')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310709')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>genre</td>
|
|
||||||
<td>${i18nHelper.getMessage('310110')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310210')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310310')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310410')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310510')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310610')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('310710')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>currentDate</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330101')}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>currentTime</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
<td>${i18nHelper.getMessage('330102')}</td>
|
|
||||||
</tr>
|
|
||||||
</table>`;
|
|
||||||
|
|
||||||
new Setting(containerEl)
|
|
||||||
.setName(i18nHelper.getMessage('122001'))
|
|
||||||
.setDesc(basicVariablesTable)
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
const extraVariablesTable = new DocumentFragment();
|
|
||||||
extraVariablesTable.createDiv().innerHTML = `
|
|
||||||
${i18nHelper.getMessage('122004')}
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<table border="1">
|
|
||||||
<tr>
|
|
||||||
<th>${i18nHelper.getMessage('300101')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300102')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300103')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300104')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300105')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300106')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300107')}</th>
|
|
||||||
<th>${i18nHelper.getMessage('300108')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${i18nHelper.getMessage('320101')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310111')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310211')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310311')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310411')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310511')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310611')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310711')}</th>
|
|
||||||
</tr>
|
|
||||||
<td>${i18nHelper.getMessage('320102')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310112')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310212')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310312')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310412')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310512')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310612')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310712')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${i18nHelper.getMessage('320103')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310113')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310213')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310313')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310413')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310513')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310613')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310713')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${i18nHelper.getMessage('320104')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310114')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310214')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310314')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310414')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310514')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310614')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310714')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${i18nHelper.getMessage('320105')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310115')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310215')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310315')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310415')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310515')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310615')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310715')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${i18nHelper.getMessage('320106')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310116')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310216')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310316')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310416')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310516')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310616')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310716')}</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${i18nHelper.getMessage('320107')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310117')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310217')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310317')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310417')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310517')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310617')}</th>
|
|
||||||
<td>${i18nHelper.getMessage('310717')}</th>
|
|
||||||
</tr>
|
|
||||||
</table>`;
|
|
||||||
|
|
||||||
|
|
||||||
new Setting(containerEl)
|
|
||||||
.setName(i18nHelper.getMessage('122002'))
|
|
||||||
.setDesc(extraVariablesTable);
|
|
||||||
}
|
|
||||||
|
|
||||||
constructOutFolderUI(containerEl: HTMLElement) {
|
|
||||||
containerEl.empty();
|
|
||||||
const dataFilePathSetting = new Setting(containerEl)
|
|
||||||
.setName(i18nHelper.getMessage('121601'))
|
|
||||||
.setDesc(i18nHelper.getMessage('121602'))
|
|
||||||
.addText((textField) => {
|
|
||||||
textField.setPlaceholder(DEFAULT_SETTINGS.dataFileNamePath)
|
|
||||||
.setValue(this.plugin.settings.dataFileNamePath)
|
|
||||||
.onChange(async (value) => {
|
|
||||||
this.plugin.settings.dataFileNamePath = value;
|
|
||||||
await this.plugin.saveSettings();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
dataFilePathSetting.addExtraButton((button) => {
|
|
||||||
button
|
|
||||||
.setIcon('reset')
|
|
||||||
.setTooltip(i18nHelper.getMessage('121902'))
|
|
||||||
.onClick(async () => {
|
|
||||||
this.plugin.settings.dataFileNamePath = DEFAULT_SETTINGS.dataFileNamePath;
|
|
||||||
await this.plugin.saveSettings();
|
|
||||||
this.constructOutFolderUI(containerEl)
|
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,8 +5,22 @@ import {SearchComponent, Setting} from "obsidian";
|
|||||||
import { log } from "src/utils/Logutil";
|
import { log } from "src/utils/Logutil";
|
||||||
import {getDefaultTemplateContent} from "../../constant/DefaultTemplateContent";
|
import {getDefaultTemplateContent} from "../../constant/DefaultTemplateContent";
|
||||||
import {FolderSuggest} from "@App/setting/model/FolderSuggest";
|
import {FolderSuggest} from "@App/setting/model/FolderSuggest";
|
||||||
|
import SettingsManager from "@App/setting/SettingsManager";
|
||||||
|
|
||||||
|
|
||||||
|
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({name: '120101', desc: '120102', placeholder: '121701', key: 'movieTemplateFile', manager: manager}));
|
||||||
|
new Setting(containerEl).then(createFileSelectionSetting({name: '120201', desc: '120202', placeholder: '121701', key: 'bookTemplateFile', manager: manager}));
|
||||||
|
new Setting(containerEl).then(createFileSelectionSetting({name: '120301', desc: '120302', placeholder: '121701', key: 'musicTemplateFile', manager: manager}));
|
||||||
|
new Setting(containerEl).then(createFileSelectionSetting({name: '120401', desc: '120402', placeholder: '121701', key: 'noteTemplateFile', manager: manager}));
|
||||||
|
new Setting(containerEl).then(createFileSelectionSetting({name: '121301', desc: '121302', placeholder: '121701', key: 'gameTemplateFile', manager: manager}));
|
||||||
|
new Setting(containerEl).then(createFileSelectionSetting({name: '121801', desc: '121802', placeholder: '121701', key: 'teleplayTemplateFile', manager: manager}));
|
||||||
|
}
|
||||||
|
|
||||||
export function createFileSelectionSetting({name, desc, placeholder, key, manager
|
export function createFileSelectionSetting({name, desc, placeholder, key, manager
|
||||||
}: CreateTemplateSelectParams) {
|
}: CreateTemplateSelectParams) {
|
||||||
return (setting: Setting) => {
|
return (setting: Setting) => {
|
||||||
245
src/douban/setting/TemplateVariableSettingsHelper.ts
Normal file
245
src/douban/setting/TemplateVariableSettingsHelper.ts
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
import SettingsManager from "@App/setting/SettingsManager";
|
||||||
|
import {i18nHelper} from "../../lang/helper";
|
||||||
|
import {Setting} from "obsidian";
|
||||||
|
|
||||||
|
export function constructTemplateVariablesUI(containerEl: HTMLElement, manager: SettingsManager) {
|
||||||
|
containerEl.createEl('h3', { text: i18nHelper.getMessage('1230') });
|
||||||
|
containerEl.createEl('p', { text: i18nHelper.getMessage('122003') });
|
||||||
|
|
||||||
|
const basicVariablesTable = new DocumentFragment();
|
||||||
|
basicVariablesTable.createDiv().innerHTML = `
|
||||||
|
${i18nHelper.getMessage('122004')}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<table border="1">
|
||||||
|
<tr>
|
||||||
|
<th>${i18nHelper.getMessage('300101')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300102')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300103')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300104')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300105')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300106')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300107')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300108')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>id</td>
|
||||||
|
<td>${i18nHelper.getMessage('310101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310201')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310301')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310401')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310501')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310601')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310701')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>title</td>
|
||||||
|
<td>${i18nHelper.getMessage('310102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310202')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310302')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310402')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310502')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310602')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310702')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>type</td>
|
||||||
|
<td>${i18nHelper.getMessage('310103')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310203')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310303')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310403')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310503')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310603')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310703')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>score</td>
|
||||||
|
<td>${i18nHelper.getMessage('310104')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310204')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310304')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310404')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310504')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310604')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310704')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>image</td>
|
||||||
|
<td>${i18nHelper.getMessage('310105')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310205')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310305')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310405')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310505')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310605')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310705')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>url</td>
|
||||||
|
<td>${i18nHelper.getMessage('310106')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310206')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310306')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310406')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310506')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310606')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310706')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>desc</td>
|
||||||
|
<td>${i18nHelper.getMessage('310107')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310207')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310307')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310407')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310507')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310607')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310707')}</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>publisher</td>
|
||||||
|
<td>${i18nHelper.getMessage('310108')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310208')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310308')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310408')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310508')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310608')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310708')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>datePublished</td>
|
||||||
|
<td>${i18nHelper.getMessage('310109')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310209')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310309')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310409')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310509')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310609')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310709')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>genre</td>
|
||||||
|
<td>${i18nHelper.getMessage('310110')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310210')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310310')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310410')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310510')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310610')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('310710')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>currentDate</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330101')}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>currentTime</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
<td>${i18nHelper.getMessage('330102')}</td>
|
||||||
|
</tr>
|
||||||
|
</table>`;
|
||||||
|
|
||||||
|
new Setting(containerEl)
|
||||||
|
.setName(i18nHelper.getMessage('122001'))
|
||||||
|
.setDesc(basicVariablesTable)
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
const extraVariablesTable = new DocumentFragment();
|
||||||
|
extraVariablesTable.createDiv().innerHTML = `
|
||||||
|
${i18nHelper.getMessage('122004')}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<table border="1">
|
||||||
|
<tr>
|
||||||
|
<th>${i18nHelper.getMessage('300101')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300102')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300103')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300104')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300105')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300106')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300107')}</th>
|
||||||
|
<th>${i18nHelper.getMessage('300108')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${i18nHelper.getMessage('320101')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310111')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310211')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310311')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310411')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310511')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310611')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310711')}</th>
|
||||||
|
</tr>
|
||||||
|
<td>${i18nHelper.getMessage('320102')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310112')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310212')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310312')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310412')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310512')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310612')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310712')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${i18nHelper.getMessage('320103')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310113')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310213')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310313')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310413')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310513')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310613')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310713')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${i18nHelper.getMessage('320104')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310114')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310214')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310314')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310414')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310514')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310614')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310714')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${i18nHelper.getMessage('320105')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310115')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310215')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310315')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310415')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310515')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310615')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310715')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${i18nHelper.getMessage('320106')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310116')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310216')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310316')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310416')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310516')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310616')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310716')}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${i18nHelper.getMessage('320107')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310117')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310217')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310317')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310417')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310517')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310617')}</th>
|
||||||
|
<td>${i18nHelper.getMessage('310717')}</th>
|
||||||
|
</tr>
|
||||||
|
</table>`;
|
||||||
|
|
||||||
|
|
||||||
|
new Setting(containerEl)
|
||||||
|
.setName(i18nHelper.getMessage('122002'))
|
||||||
|
.setDesc(extraVariablesTable);
|
||||||
|
}
|
||||||
7
src/douban/setting/model/CustomProperty.ts
Normal file
7
src/douban/setting/model/CustomProperty.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import {SupportType} from "../../../constant/Constsant";
|
||||||
|
|
||||||
|
export interface CustomProperty {
|
||||||
|
name: string;
|
||||||
|
value: string;
|
||||||
|
field: SupportType;
|
||||||
|
}
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
import {CustomProperty} from "@App/setting/model/CustomProperty";
|
||||||
|
|
||||||
export interface DoubanPluginSetting {
|
export interface DoubanPluginSetting {
|
||||||
movieTemplateFile: string,
|
movieTemplateFile: string,
|
||||||
@ -15,5 +16,6 @@ export interface DoubanPluginSetting {
|
|||||||
dataFilePath: string,
|
dataFilePath: string,
|
||||||
dataFileNamePath: string,
|
dataFileNamePath: string,
|
||||||
statusBar: boolean,
|
statusBar: boolean,
|
||||||
|
customProperties: CustomProperty[],
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { App, ISuggestOwner, Scope } from "obsidian";
|
import { App, ISuggestOwner, Scope } from "obsidian";
|
||||||
import { createPopper, Instance as PopperInstance } from "@popperjs/core";
|
|
||||||
|
|
||||||
|
// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes
|
||||||
|
|
||||||
const wrapAround = (value: number, size: number): number => {
|
const wrapAround = (value: number, size: number): number => {
|
||||||
return ((value % size) + size) % size;
|
return ((value % size) + size) % size;
|
||||||
|
|||||||
@ -28,7 +28,17 @@ export default {
|
|||||||
'1230': `Usable Variables`,
|
'1230': `Usable Variables`,
|
||||||
'1204': `Set template file path. If keep empty, it will use the default template file to create file. All the usable variables at the end.👇`,
|
'1204': `Set template file path. If keep empty, it will use the default template file to create file. All the usable variables at the end.👇`,
|
||||||
'1205': `🧡Tip: You can click the 'Copy' button to copy default template content, then create and paste to your own template file. After that, back to select the file. `,
|
'1205': `🧡Tip: You can click the 'Copy' button to copy default template content, then create and paste to your own template file. After that, back to select the file. `,
|
||||||
|
'1240': `Custom Variable`,
|
||||||
|
'1241': `To use the custom variables, you need to wrap them in double curly brackets. For example, {{myType}} will be replaced with the your custom type value. `,
|
||||||
|
'1242': `Add custom variable, so that you can use it in the template file or file name. `,
|
||||||
|
'124101': `Add`,
|
||||||
|
'124108': `Add a new variable`,
|
||||||
|
'124102': `Name:`,
|
||||||
|
'124103': `Input custom variable name`,
|
||||||
|
'124104': `Value:`,
|
||||||
|
'124105': `Input custom variable value`,
|
||||||
|
'124106': `Active type`,
|
||||||
|
'124107': `Delete custom variable`,
|
||||||
|
|
||||||
'120101': `Movie Template File`,
|
'120101': `Movie Template File`,
|
||||||
'120102': `This template will be used when creating new notes for Movie from Obsidian-Douban.`,
|
'120102': `This template will be used when creating new notes for Movie from Obsidian-Douban.`,
|
||||||
@ -119,6 +129,7 @@ export default {
|
|||||||
'121902': `Reset to default value`,
|
'121902': `Reset to default value`,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//error
|
//error
|
||||||
'130101': `Fetch Data Error, You can go to Github add Issues`,
|
'130101': `Fetch Data Error, You can go to Github add Issues`,
|
||||||
'140101': `Not support for current type. You can add Issues at Github:Wanxp/obsidian-douban`,
|
'140101': `Not support for current type. You can add Issues at Github:Wanxp/obsidian-douban`,
|
||||||
@ -132,6 +143,10 @@ export default {
|
|||||||
|
|
||||||
'150101': `Choose an item...`,
|
'150101': `Choose an item...`,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//content
|
//content
|
||||||
'200101': `. `,
|
'200101': `. `,
|
||||||
|
|
||||||
@ -143,6 +158,10 @@ export default {
|
|||||||
'122003': `Basic Variables must has value, Extra Variables can be empty`,
|
'122003': `Basic Variables must has value, Extra Variables can be empty`,
|
||||||
'122004': `To use the template variables, you need to wrap them in double curly brackets. For example, {{title}} will be replaced with the title of the note.`,
|
'122004': `To use the template variables, you need to wrap them in double curly brackets. For example, {{title}} will be replaced with the title of the note.`,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'410101': `Unknown`,
|
'410101': `Unknown`,
|
||||||
|
|
||||||
//参数
|
//参数
|
||||||
@ -173,6 +192,7 @@ export default {
|
|||||||
'310115': `subTitle:副标题`,
|
'310115': `subTitle:副标题`,
|
||||||
'310116': `totalPage:页数`,
|
'310116': `totalPage:页数`,
|
||||||
'310117': `binding:装帧`,
|
'310117': `binding:装帧`,
|
||||||
|
'310118': `producer:出品方`,
|
||||||
|
|
||||||
//电影
|
//电影
|
||||||
'310201': `豆瓣ID`,
|
'310201': `豆瓣ID`,
|
||||||
@ -305,4 +325,12 @@ export default {
|
|||||||
'330101': `今日日期`,
|
'330101': `今日日期`,
|
||||||
'330102': `当前时间`,
|
'330102': `当前时间`,
|
||||||
|
|
||||||
|
|
||||||
|
'ALL': `all`,
|
||||||
|
'MOVIE': `movie`,
|
||||||
|
'BOOK': `book`,
|
||||||
|
'MUSIC': `music`,
|
||||||
|
'NOTE': `note`,
|
||||||
|
'GAME': `game`,
|
||||||
|
'TELEPLAY': `teleplay`,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,6 +30,17 @@ export default {
|
|||||||
|
|
||||||
'1204': `配置对应类型的模板文件, 如果为空则使用默认的文件模板. 模板可使用的参数列举在最下面.👇 `,
|
'1204': `配置对应类型的模板文件, 如果为空则使用默认的文件模板. 模板可使用的参数列举在最下面.👇 `,
|
||||||
'1205': `🧡提示: 建议点击右侧'复制'默认模板按钮, 然后在新建的文件中粘贴修改模板, 最后回到此处选择对应模板. `,
|
'1205': `🧡提示: 建议点击右侧'复制'默认模板按钮, 然后在新建的文件中粘贴修改模板, 最后回到此处选择对应模板. `,
|
||||||
|
'1240': `自定义属性`,
|
||||||
|
'1241': `自定义参数使用时请用'{{}}'包裹, 举例: 参数myType, 则使用时为{{myType}}. `,
|
||||||
|
'1242': `添加自定义参数, 参数可用于模板中或者文件名中. `,
|
||||||
|
'124101': `新增`,
|
||||||
|
'124108': `新增一个自定义参数`,
|
||||||
|
'124102': `参数名称:`,
|
||||||
|
'124103': `自定义参数名称`,
|
||||||
|
'124104': `参数值:`,
|
||||||
|
'124105': `自定义参值`,
|
||||||
|
'124106': `生效类型`,
|
||||||
|
'124107': `删除自定义参数`,
|
||||||
|
|
||||||
|
|
||||||
'120101': `电影模板文件`,
|
'120101': `电影模板文件`,
|
||||||
@ -114,6 +125,9 @@ export default {
|
|||||||
'121601': `笔记名称`,
|
'121601': `笔记名称`,
|
||||||
'121602': `创建的笔记将会使用此名称作为模板, 支持所有'通用'的参数作为名称(如:{{type}}/{{title}}), 且支持路径, 比如: 'MyData/{{title}}'. 如果为空, 笔记将会使用默认名称. `,
|
'121602': `创建的笔记将会使用此名称作为模板, 支持所有'通用'的参数作为名称(如:{{type}}/{{title}}), 且支持路径, 比如: 'MyData/{{title}}'. 如果为空, 笔记将会使用默认名称. `,
|
||||||
|
|
||||||
|
'121701': `选择模板文件`,
|
||||||
|
|
||||||
|
|
||||||
'121901': `复制'默认'模板内容`,
|
'121901': `复制'默认'模板内容`,
|
||||||
|
|
||||||
'130101': `获取数据失败,您如有需要请至Github提交Issues`,
|
'130101': `获取数据失败,您如有需要请至Github提交Issues`,
|
||||||
@ -135,28 +149,28 @@ export default {
|
|||||||
'200101': `。`,
|
'200101': `。`,
|
||||||
|
|
||||||
//book example
|
//book example
|
||||||
'book': {
|
// 'book': {
|
||||||
id: {desc: `豆瓣ID`, example: `25982198`},
|
// id: {desc: `豆瓣ID`, example: `25982198`},
|
||||||
title: {desc: `书名`, example: `社会心理学(第11版,精装彩印)`},
|
// title: {desc: `书名`, example: `社会心理学(第11版,精装彩印)`},
|
||||||
type: {desc: `类型`, example: `Book`},
|
// type: {desc: `类型`, example: `Book`},
|
||||||
score: {desc: `评分`, example: `9.4`},
|
// score: {desc: `评分`, example: `9.4`},
|
||||||
image: {desc: `图片URL`, example: `https://img1.doubanio.com/view/subject/l/public/s28261247.jpg`},
|
// image: {desc: `图片URL`, example: `https://img1.doubanio.com/view/subject/l/public/s28261247.jpg`},
|
||||||
url: {desc: `豆瓣URL`, example: `https://book.douban.com/subject/25982198/`},
|
// url: {desc: `豆瓣URL`, example: `https://book.douban.com/subject/25982198/`},
|
||||||
desc: {
|
// desc: {
|
||||||
desc: `简述`,
|
// desc: `简述`,
|
||||||
example: `戴维·迈尔斯的《社会心理学》是美国700 多所大专院校社会心理学教学所采用的教材,自出版以来深受广大师生和社会心理学爱好者的喜爱,并被翻译成多种语言,有着广泛的影响力。本书译自第11 版。全书共分四...`
|
// example: `戴维·迈尔斯的《社会心理学》是美国700 多所大专院校社会心理学教学所采用的教材,自出版以来深受广大师生和社会心理学爱好者的喜爱,并被翻译成多种语言,有着广泛的影响力。本书译自第11 版。全书共分四...`
|
||||||
},
|
// },
|
||||||
publisher: {desc: `出版社`, example: `人民邮电出版社`},
|
// publisher: {desc: `出版社`, example: `人民邮电出版社`},
|
||||||
datePublished: {desc: `出版时间`, example: `2014-10-1`},
|
// datePublished: {desc: `出版时间`, example: `2014-10-1`},
|
||||||
genre: {desc: `类型`, example: `社会科学`},
|
// genre: {desc: `类型`, example: `社会科学`},
|
||||||
author: {desc: `作者`, example: `戴维·迈尔斯`},
|
// author: {desc: `作者`, example: `戴维·迈尔斯`},
|
||||||
translator: {desc: `译者`, example: `侯玉波 / 乐国安 / 张志勇`},
|
// translator: {desc: `译者`, example: `侯玉波 / 乐国安 / 张志勇`},
|
||||||
isbn: {desc: `ISBN`, example: `9787115369840`},
|
// isbn: {desc: `ISBN`, example: `9787115369840`},
|
||||||
originTitle: {desc: `原作名`, example: `Social Psychology (11th)`},
|
// originTitle: {desc: `原作名`, example: `Social Psychology (11th)`},
|
||||||
subTitle: {desc: `副标题`, example: `社会心理学`},
|
// subTitle: {desc: `副标题`, example: `社会心理学`},
|
||||||
binding: {desc: `装帧`, example: `精装`},
|
// binding: {desc: `装帧`, example: `精装`},
|
||||||
totalPages: {desc: `页数`, example: `707`},
|
// totalPages: {desc: `页数`, example: `707`},
|
||||||
},
|
// },
|
||||||
|
|
||||||
'122001': `通用参数`,
|
'122001': `通用参数`,
|
||||||
'122002': `扩展参数`,
|
'122002': `扩展参数`,
|
||||||
@ -333,7 +347,13 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'ALL': `全部类型`,
|
||||||
|
'MOVIE': `电影`,
|
||||||
|
'BOOK': `书籍`,
|
||||||
|
'MUSIC': `音乐`,
|
||||||
|
'NOTE': `笔记`,
|
||||||
|
'GAME': `游戏`,
|
||||||
|
'TELEPLAY': `电视剧`,
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,11 +5,13 @@ class Logger {
|
|||||||
|
|
||||||
public error(e: any): any {
|
public error(e: any): any {
|
||||||
new Notice(e);
|
new Notice(e);
|
||||||
|
console.log(`Douban Plugin error: ${e}`);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
public warn(e: any): any {
|
public warn(e: any): any {
|
||||||
new Notice(e);
|
new Notice(e);
|
||||||
|
console.log(`Douban Plugin error: ${e}`);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
16
styles.css
16
styles.css
@ -10,6 +10,22 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.obsidian_douban_settings_text {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian_douban_settings_input {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian_douban_settings_button {
|
||||||
|
margin: auto;
|
||||||
|
vertical-align: bottom;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
.obsidian_douban_search_input {
|
.obsidian_douban_search_input {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user