mirror of
https://github.com/devonthesofa/obsidian-note-status.git
synced 2026-07-22 05:45:04 +00:00
feat: add strict statuses
This commit is contained in:
parent
23118c613c
commit
0bd515ac61
4 changed files with 26 additions and 6 deletions
|
|
@ -23,6 +23,7 @@ export const DEFAULT_SETTINGS: NoteStatusSettings = {
|
|||
useCustomStatusesOnly: false,
|
||||
useMultipleStatuses: true,
|
||||
tagPrefix: 'obsidian-note-status',
|
||||
strictStatuses: false, // Default to show all statuses from frontmatter
|
||||
excludeUnknownStatus: true, // Default to exclude unknown status files for better performance
|
||||
};
|
||||
|
||||
|
|
@ -35,4 +36,4 @@ export const DEFAULT_COLORS: Record<string, string> = {
|
|||
completed: '#00aaff', // Blue for accent
|
||||
dropped: '#ff0000', // Red for error
|
||||
unknown: '#888888' // Gray for muted
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -160,6 +160,14 @@ export class NoteStatusSettingsUI {
|
|||
this.callbacks.onSettingChange('tagPrefix', value.trim());
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
new Setting(containerEl)
|
||||
.setName('Strict status validation')
|
||||
.setDesc('Only show statuses that are defined in templates or custom statuses. ⚠️ WARNING: When enabled, any unknown statuses will be automatically removed when modifying file statuses.')
|
||||
.addToggle(toggle => toggle
|
||||
.setValue(settings.strictStatuses || false)
|
||||
.onChange(value => this.callbacks.onSettingChange('strictStatuses', value)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ export interface NoteStatusSettings {
|
|||
useCustomStatusesOnly: boolean; // Whether to use only custom statuses or include templates
|
||||
useMultipleStatuses: boolean; // Whether to allow multiple statuses per note
|
||||
tagPrefix: string; // Prefix for the status tag (default: 'status')
|
||||
strictStatuses: boolean; // Whether to only show known statuses
|
||||
excludeUnknownStatus: boolean; // Whether to exclude files with unknown status from the status pane
|
||||
}
|
||||
|
||||
|
|
@ -39,4 +40,4 @@ export interface FileExplorerView extends View {
|
|||
titleEl?: HTMLElement;
|
||||
selfEl?: HTMLElement;
|
||||
}>;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,12 +83,22 @@ export class StatusService {
|
|||
|
||||
if (Array.isArray(frontmatterStatus)) {
|
||||
for (const statusName of frontmatterStatus) {
|
||||
this.addValidStatus(statusName.toString(), statuses);
|
||||
if (this.settings.strictStatuses) {
|
||||
this.addValidStatus(statusName.toString(), statuses);
|
||||
} else {
|
||||
const cleanStatus = statusName.toString().trim();
|
||||
if (cleanStatus) statuses.push(cleanStatus);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.addValidStatus(frontmatterStatus.toString(), statuses);
|
||||
if (this.settings.strictStatuses) {
|
||||
this.addValidStatus(frontmatterStatus.toString(), statuses);
|
||||
} else {
|
||||
const cleanStatus = frontmatterStatus.toString().trim();
|
||||
if (cleanStatus) statuses.push(cleanStatus);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return statuses.length > 0 ? statuses : ['unknown'];
|
||||
}
|
||||
|
||||
|
|
@ -361,4 +371,4 @@ export class StatusService {
|
|||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue