Skip to content

Commit 6d0419a

Browse files
committed
implemented #6
1 parent ba74a50 commit 6d0419a

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/MarkdownInputField.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export class MarkdownInputField extends MarkdownRenderChild {
3333

3434
this.valueQueue = [];
3535
this.intervalCounter = 0;
36-
this.limitInterval = window.setInterval(this.incrementInterval.bind(this), 10);
36+
this.limitInterval = window.setInterval(() => this.incrementInterval(), this.plugin.settings.syncInterval);
3737

3838
const declarationRegExp: RegExp = new RegExp(/\[.*?\]/);
3939
let declaration: string = declarationRegExp.exec(fullDeclaration)[0];
@@ -49,7 +49,7 @@ export class MarkdownInputField extends MarkdownRenderChild {
4949
this.arguments = [];
5050
let inputFieldArgumentsRegExpResult = inputFieldArgumentsRegExp.exec(inputFieldTypeWithArguments);
5151
let inputFieldArgumentsString = inputFieldArgumentsRegExpResult ? inputFieldArgumentsRegExpResult[0] : '';
52-
console.log(inputFieldArgumentsString);
52+
// console.log(inputFieldArgumentsString);
5353
if (inputFieldArgumentsString) {
5454
inputFieldArgumentsString = inputFieldArgumentsString.substring(1, inputFieldArgumentsString.length - 1);
5555
let inputFieldArguments: string[] = inputFieldArgumentsString.split(',');
@@ -119,15 +119,11 @@ export class MarkdownInputField extends MarkdownRenderChild {
119119

120120
// use this interval to reduce writing operations
121121
async incrementInterval() {
122-
this.intervalCounter += 1;
123-
124-
if (this.intervalCounter >= 20 && this.valueQueue.length > 0) {
122+
if (this.valueQueue.length > 0) {
125123
// console.log(this.valueQueue.at(-1))
126124
await this.plugin.updateMetaData(this.boundMetadataField, this.valueQueue.at(-1), this.file);
127125
this.valueQueue = [];
128-
this.intervalCounter = 0;
129126
}
130-
131127
}
132128

133129
async updateMetaData(value: any) {

src/settings/Settings.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@ import MetaBindPlugin from '../main';
33

44
export interface MetaBindPluginSettings {
55
devMode: boolean;
6+
syncInterval: number;
7+
maxSyncInterval: number;
8+
minSyncInterval: number;
69
}
710

811
export const DEFAULT_SETTINGS: MetaBindPluginSettings = {
912
devMode: false,
13+
syncInterval: 200,
14+
minSyncInterval: 50,
15+
maxSyncInterval: 1000,
1016
};
1117

1218
export class MetaBindSettingTab extends PluginSettingTab {
@@ -24,6 +30,26 @@ export class MetaBindSettingTab extends PluginSettingTab {
2430

2531
containerEl.createEl('h2', {text: 'Meta Bind Plugin Settings'});
2632

33+
new Setting(containerEl)
34+
.setName('Sync Interval')
35+
.setDesc(`The interval in milli-seconds between disk writes. Changing this number is not recommended except if your hard drive is exceptionally slow. Standard: ${DEFAULT_SETTINGS.syncInterval}; Minimum: ${DEFAULT_SETTINGS.minSyncInterval}; Maximum: ${DEFAULT_SETTINGS.maxSyncInterval}`)
36+
.addText(cb => {
37+
cb.setValue(this.plugin.settings.syncInterval.toString())
38+
.onChange(data => {
39+
this.plugin.settings.syncInterval = Number.parseInt(data);
40+
if (Number.isNaN(this.plugin.settings.syncInterval)) {
41+
this.plugin.settings.syncInterval = DEFAULT_SETTINGS.syncInterval;
42+
}
43+
if (this.plugin.settings.syncInterval < DEFAULT_SETTINGS.minSyncInterval) {
44+
this.plugin.settings.syncInterval = DEFAULT_SETTINGS.minSyncInterval;
45+
}
46+
if (this.plugin.settings.syncInterval > DEFAULT_SETTINGS.maxSyncInterval) {
47+
this.plugin.settings.syncInterval = DEFAULT_SETTINGS.maxSyncInterval;
48+
}
49+
this.plugin.saveSettings();
50+
});
51+
});
52+
2753
new Setting(containerEl)
2854
.setName('Dev Mode')
2955
.setDesc('Enable dev mode. Not recommended unless you want to debug this plugin.')

0 commit comments

Comments
 (0)