From 68c79845db3c5d3eb7120256c992cdcd16cda164 Mon Sep 17 00:00:00 2001 From: Milan Date: Tue, 8 Apr 2025 22:42:41 +0100 Subject: [PATCH] Changes following code review. --- manifest.json | 2 +- package.json | 2 +- src/dateInputModal.ts | 29 +--------------------- src/main.ts | 56 +++++++++++++++---------------------------- src/settingsTab.ts | 3 ++- styles.css | 24 +++++++++++++++---- 6 files changed, 43 insertions(+), 73 deletions(-) diff --git a/manifest.json b/manifest.json index fb00b8c..81c766c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "date-range-expander", "name": "Date Range Expander", - "version": "1.0.1", + "version": "1.0.2", "minAppVersion": "1.5.8", "description": "Quickly add a range of day references given a date duration.", "author": "Mil", diff --git a/package.json b/package.json index 30dc642..1b35d17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-date-range-expander", - "version": "1.0.1", + "version": "1.0.2", "description": "Quickly add a range of day references given a date duration.", "main": "main.js", "scripts": { diff --git a/src/dateInputModal.ts b/src/dateInputModal.ts index d4814db..5a17918 100644 --- a/src/dateInputModal.ts +++ b/src/dateInputModal.ts @@ -29,7 +29,6 @@ export class DateInputModal extends Modal { const { contentEl } = this; contentEl.empty(); - this.addStyles(); this.setupKeyboardListener(); this.createStartDateInput(); this.createRangeOptions(); @@ -93,32 +92,6 @@ export class DateInputModal extends Modal { return dateCount; } - private addStyles() { - const styleEl = document.createElement('style'); - styleEl.textContent = ` - .date-option-container { - margin-bottom: 15px; - } - .date-input-row { - display: flex; - align-items: center; - margin-bottom: 10px; - } - .date-input-row input[type="radio"] { - margin-right: 8px; - } - .date-input-row input[type="text"], - .date-input-row input[type="number"] { - margin-left: 5px; - } - .date-input-row select { - margin-left: 5px; - } - `; - - this.contentEl.appendChild(styleEl); - } - private setupKeyboardListener() { this.keyboardListener = (event: KeyboardEvent) => { if (event.key === 'Enter' && this.validateInput()) { @@ -284,7 +257,7 @@ export class DateInputModal extends Modal { if (validInput) { const dateCount = this.calculateDateCount(); - this.submitButton.textContent = `Insert ${dateCount} Date${dateCount !== 1 ? 's' : ''}`; + this.submitButton.textContent = `Insert ${dateCount} date${dateCount !== 1 ? 's' : ''}`; } else { this.submitButton.textContent = 'Insert'; } diff --git a/src/main.ts b/src/main.ts index 04c5e77..5556014 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { MarkdownView, Plugin } from 'obsidian'; +import { Editor, MarkdownView, Plugin } from 'obsidian'; import { DateInputModal } from './dateInputModal'; import { DEFAULT_SETTINGS, PluginSettings } from './types'; import { DateRangeExpanderSettingTab } from './settingsTab'; @@ -12,41 +12,31 @@ export default class DateRangeExpanderPlugin extends Plugin { async onload() { await this.loadSettings(); - + this.dateUtils = new DateUtils(); this.dateRangeExpander = new DateRangeExpander(this.app, this.settings, this.dateUtils); - + this.addSettingTab(new DateRangeExpanderSettingTab(this.app, this)); - + this.addCommand({ id: 'insert-expanded-date-range', name: 'Insert', - checkCallback: (checking: boolean) => { - const markdownView = this.app.workspace.getActiveViewOfType(MarkdownView); - if (markdownView) { - if (!checking) { - new DateInputModal(this.app, (rangeInput) => { - const dateStartAndEnd = this.dateUtils.getStartAndEndDates(rangeInput); - - if (dateStartAndEnd) { - const editor = this.getActiveEditor(); - if (editor) { - const cursor = editor.getCursor(); - let insertedDateRange = this.dateRangeExpander.expandDateRange(dateStartAndEnd) + ' '; - if (rangeInput.useCallout) { - insertedDateRange = this.dateRangeExpander.wrapInCallout(dateStartAndEnd, insertedDateRange); - } - editor.replaceRange(insertedDateRange, { line: cursor.line, ch: cursor.ch }, cursor); - - const endPos = { line: cursor.line, ch: cursor.ch + insertedDateRange.length }; - editor.setCursor(endPos); - } - } - }).open(); + editorCallback: (editor: Editor, view: MarkdownView) => { + new DateInputModal(this.app, (rangeInput) => { + const dateStartAndEnd = this.dateUtils.getStartAndEndDates(rangeInput); + + if (dateStartAndEnd) { + const cursor = editor.getCursor(); + let insertedDateRange = this.dateRangeExpander.expandDateRange(dateStartAndEnd) + ' '; + if (rangeInput.useCallout) { + insertedDateRange = this.dateRangeExpander.wrapInCallout(dateStartAndEnd, insertedDateRange); + } + editor.replaceRange(insertedDateRange, { line: cursor.line, ch: cursor.ch }, cursor); + + const endPos = { line: cursor.line, ch: cursor.ch + insertedDateRange.length }; + editor.setCursor(endPos); } - - return true; - } + }).open(); } }); } @@ -54,12 +44,4 @@ export default class DateRangeExpanderPlugin extends Plugin { async loadSettings() { this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); } async saveSettings() { await this.saveData(this.settings); } - - getActiveEditor() { - const activeLeaf = this.app.workspace.getActiveViewOfType(MarkdownView); - if (activeLeaf) { - return activeLeaf.editor; - } - return null; - } } \ No newline at end of file diff --git a/src/settingsTab.ts b/src/settingsTab.ts index 6b2b011..9b1f5c2 100644 --- a/src/settingsTab.ts +++ b/src/settingsTab.ts @@ -1,6 +1,7 @@ import { App, PluginSettingTab, Setting } from 'obsidian'; import DateRangeExpanderPlugin from './main'; import { DEFAULT_SETTINGS } from './types'; +import { normalizePath } from 'obsidian'; export class DateRangeExpanderSettingTab extends PluginSettingTab { plugin: DateRangeExpanderPlugin; @@ -98,7 +99,7 @@ export class DateRangeExpanderSettingTab extends PluginSettingTab { text.setPlaceholder('Enter folder path') .setValue(this.plugin.settings.customFolderPath || '') .onChange(async (value) => { - this.plugin.settings.customFolderPath = value; + this.plugin.settings.customFolderPath = normalizePath(value); await this.plugin.saveSettings(); }); }); diff --git a/styles.css b/styles.css index 71cc60f..da25f54 100644 --- a/styles.css +++ b/styles.css @@ -1,8 +1,22 @@ -/* +.date-option-container { + margin-bottom: 15px; +} -This CSS file will be included with your plugin, and -available in the app when your plugin is enabled. +.date-input-row { + display: flex; + align-items: center; + margin-bottom: 10px; +} -If your plugin does not need CSS, delete this file. +.date-input-row input[type="radio"] { + margin-right: 8px; +} -*/ +.date-input-row input[type="text"], +.date-input-row input[type="number"] { + margin-left: 5px; +} + +.date-input-row select { + margin-left: 5px; +} \ No newline at end of file