fix(prio): improving prio type

This commit is contained in:
EloiMusk 2023-03-08 14:42:10 +01:00
parent 556b40a5b2
commit b26d2c0681
No known key found for this signature in database
GPG key ID: A59863E13934DD4F
4 changed files with 38 additions and 37 deletions

38
main.ts
View file

@ -1,4 +1,4 @@
import {App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting} from 'obsidian';
import {App, Editor, MarkdownView, Modal, Notice, Plugin} from 'obsidian';
import {PrioPluginSettings} from "./utils/Settings";
import {SettingTab} from "./utils/SettingTab";
import {decreasePrio, increasePrio, removePrio, setPrio} from "./utils/Priority";
@ -6,28 +6,28 @@ import {decreasePrio, increasePrio, removePrio, setPrio} from "./utils/Priority"
const DEFAULT_SETTINGS: PrioPluginSettings = {
selectedPreset: 'default',
levels: ['1', '2', '3', '4', '5', '6'],
levelAliases: {
'1': 'Major',
'2': 'Minor',
'3': 'Trivial',
'4': 'Cosmetic',
'5': 'Enhancement',
'6': 'Bug'
},
levels: 6,
levelAliases: [
'Major',
'Minor',
'Trivial',
'Cosmetic',
'Enhancement',
'Bug'
],
presets: [{
id: 'default',
name: 'Default',
settings: {
levels: ['1', '2', '3', '4', '5', '6'],
levelAliases: {
'1': 'Major',
'2': 'Minor',
'3': 'Trivial',
'4': 'Cosmetic',
'5': 'Enhancement',
'6': 'Bug'
},
levels: 6,
levelAliases: [
'Major',
'Minor',
'Trivial',
'Cosmetic',
'Enhancement',
'Bug'
],
}
}]
}

View file

@ -7,9 +7,8 @@ export const setPrio = (editor: Editor, view: MarkdownView, settings: PrioPlugin
}
const cursor = editor.getCursor();
const line = editor.getLine(cursor.line);
const levels = settings.levels;
const levelAliases = settings.levelAliases;
const level = levels[Math.round((levels.length - 1) / 2)];
const level = Math.round(settings.levels/2);
const levelAlias = levelAliases[level];
const newLine = `${line} #${levelAlias}`;
editor.replaceRange(newLine, {line: cursor.line, ch: 0}, {line: cursor.line, ch: line.length});
@ -22,7 +21,7 @@ export const increasePrio = (editor: Editor, view: MarkdownView, settings: PrioP
setPrio(editor, view, settings);
return;
}
const currentLevelIndex = getLevelIndex(editor, view, settings, currentPrio);
const currentLevelIndex = settings.levelAliases.indexOf(currentPrio);
replacePrio(editor, view, settings, currentLevelIndex - 1 < 0 ? 0 : currentLevelIndex - 1);
}
@ -33,9 +32,8 @@ export const decreasePrio = (editor: Editor, view: MarkdownView, settings: PrioP
setPrio(editor, view, settings);
return;
}
const currentLevelIndex = getLevelIndex(editor, view, settings, currentPrio);
const levels = settings.levels;
replacePrio(editor, view, settings, currentLevelIndex + 1 > levels.length - 1 ? levels.length - 1 : currentLevelIndex + 1);
const currentLevelIndex = settings.levelAliases.indexOf(currentPrio);
replacePrio(editor, view, settings, currentLevelIndex + 1 > settings.levels - 1 ? settings.levels - 1 : currentLevelIndex + 1);
}
export const removePrio = (editor: Editor, view: MarkdownView, settings: PrioPluginSettings) => {
@ -46,19 +44,10 @@ export const removePrio = (editor: Editor, view: MarkdownView, settings: PrioPlu
view.editor.focus();
}
export const getLevelIndex = (editor: Editor, view: MarkdownView, settings: PrioPluginSettings, prio: string) => {
const levels = settings.levels;
const levelAliases = settings.levelAliases;
const currentLevel = levels.find(level => levelAliases[level] === prio);
return levels.indexOf(currentLevel as string);
}
export const replacePrio = (editor: Editor, view: MarkdownView, settings: PrioPluginSettings, levelIndex: number) => {
export const replacePrio = (editor: Editor, view: MarkdownView, settings: PrioPluginSettings, level: number) => {
const cursor = editor.getCursor();
const line = editor.getLine(cursor.line);
const levels = settings.levels;
const levelAliases = settings.levelAliases;
const level = levels[levelIndex];
const levelAlias = levelAliases[level];
const newLine = line.replace(`#${getPrio(editor, view, settings)}`, `#${levelAlias}`);
editor.replaceRange(newLine, {line: cursor.line, ch: 0}, {line: cursor.line, ch: line.length});

View file

@ -33,6 +33,18 @@ export class SettingTab extends PluginSettingTab {
});
});
}
new Setting(containerEl)
.setName('Levels')
.setDesc('Set the priority levels to use.')
.addSlider((slider) => {
slider
.setLimits(1, 10, 1)
.setValue(this.plugin.settings.levels)
.onChange(async (value) => {
this.plugin.settings.levels = value;
});
});
const presetList = createEl('ol', {
cls: 'preset-list',
parent: containerEl

View file

@ -2,7 +2,7 @@ import {Preset} from "./Presets";
export interface PrioPluginSettings {
selectedPreset?: string;
levels: string[];
levelAliases: Record<string, string>;
levels: number;
levelAliases: string[];
presets?: Preset[];
}