Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit 16e0c57

Browse files
committed
now local settings modal load correctly the database yaml config
1 parent 7b8d04e commit 16e0c57

File tree

8 files changed

+39
-32
lines changed

8 files changed

+39
-32
lines changed

dist/main.js

Lines changed: 17 additions & 15 deletions
Large diffs are not rendered by default.

src/DatabaseView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export class DatabaseView extends TextFileView implements HoverParent {
110110
async initDatabase(): Promise<void> {
111111
LOGGER.info(`=>initDatabase ${this.file.path}`);
112112
this.diskConfig = new DatabaseInfo(this.file);
113-
await this.diskConfig.initDatabaseconfigYaml();
113+
await this.diskConfig.initDatabaseconfigYaml(this.plugin.settings.local_settings);
114114
const columns = await obtainColumnsFromFolder(this.diskConfig.yaml.columns);
115115
const metatadaColumns = await obtainMetadataColumns();
116116
columns.push(...metatadaColumns);

src/Settings.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ interface GlobalSettings {
1010
logger_level_info: string;
1111
}
1212

13-
interface LocalSettings {
13+
export interface LocalSettings {
1414
enable_show_state: boolean;
1515
}
1616
export interface DatabaseSettings {
@@ -109,7 +109,7 @@ export class SettingsModal extends Modal {
109109

110110
modalEl.addClass('database-settings-modal');
111111

112-
this.settingsManager.constructUI(contentEl, this.view.file.basename, true);
112+
this.settingsManager.constructUI(contentEl, this.view.file.basename, true, this.view);
113113
}
114114

115115
onClose() {

src/cdm/DatabaseModel.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { RowType } from "cdm/RowTypeModel"
2+
import { LocalSettings } from "Settings"
23

34
/** database column */
45
export type DatabaseColumn = {
@@ -22,5 +23,5 @@ export type DatabaseYaml = {
2223
columns: Record<string, DatabaseColumn>
2324
/** database local configuration
2425
* TODO typing*/
25-
config?: Record<string, any>
26+
config?: LocalSettings
2627
}

src/services/DatabaseInfo.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { LOGGER } from 'services/Logger';
77
import { VaultManagerDB } from 'services/FileManagerService';
88
import { convertDatabaseYamlToParsedString, hasFrontmatterKey } from 'parsers/DatabaseParser';
99
import { NoteContentAction } from 'cdm/FolderModel';
10+
import { LocalSettings } from 'Settings';
1011

1112
export default class DatabaseInfo {
1213
private file: TFile;
@@ -20,7 +21,7 @@ export default class DatabaseInfo {
2021
* @param file
2122
* @returns
2223
*/
23-
async initDatabaseconfigYaml():Promise<void> {
24+
async initDatabaseconfigYaml(default_local_settings:LocalSettings):Promise<void> {
2425
LOGGER.info(`=>initDatabaseconfigYaml`,`file:${this.file.path}`);
2526
const databaseRaw = await VaultManagerDB.obtainContentFromTfile(this.file);
2627
if (!databaseRaw || !hasFrontmatterKey(databaseRaw)) throw new Error('No frontmatter found');
@@ -32,6 +33,8 @@ export default class DatabaseInfo {
3233
}
3334
const frontmatterRaw = match[1];
3435
this.yaml = parseYaml(frontmatterRaw);
36+
// Add default config in case of does not exist on file yet
37+
if(!this.yaml.config) this.yaml.config = default_local_settings;
3538
LOGGER.info(`<=initDatabaseconfigYaml`);
3639
}
3740
/**
@@ -109,10 +112,8 @@ export default class DatabaseInfo {
109112
await this.saveOnDisk();
110113
}
111114

112-
async updateConfig(config:Record<string,any>):Promise<void>{
113-
for (let key in config) {
114-
this.yaml.config[key] = config[key];
115-
}
115+
async updateConfig<K extends keyof LocalSettings>(key: K, value: LocalSettings[K]): Promise<void> {
116+
this.yaml.config[key] = value;
116117
await this.saveOnDisk();
117-
}
118+
}
118119
}

src/settings/handlers/developer/LoggerLevelInfoDropDownHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import { DatabaseView } from "DatabaseView";
12
import { Setting } from "obsidian";
23
import { LOGGER } from "services/Logger";
34
import { SettingsManager } from "Settings";
45
import { AbstractSettingsHandler } from "settings/handlers/AbstractSettingHandler";
56

67
export class LoggerLevelInfoDropDownHandler extends AbstractSettingsHandler {
78
settingTitle: string = 'Enable debug mode';
8-
handle(settingsManager: SettingsManager, containerEl: HTMLElement, local: boolean): [string, string][] {
9+
handle(settingsManager: SettingsManager, containerEl: HTMLElement, local: boolean, view?: DatabaseView): [string, string][] {
910
if(!local && settingsManager.plugin.settings.global_settings.enable_debug_mode){
1011
new Setting(containerEl)
1112
.setName('Select level info of logs')
@@ -31,7 +32,7 @@ export class LoggerLevelInfoDropDownHandler extends AbstractSettingsHandler {
3132
});
3233
}
3334
if (this.nextHandler) {
34-
return this.nextHandler.handle(settingsManager, containerEl, local);
35+
return this.nextHandler.handle(settingsManager, containerEl, local, view);
3536
}
3637
return this.listOfErrors;
3738
}

src/settings/handlers/developer/LoggerToggleHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import { LOGGER } from "services/Logger";
22
import { SettingsManager } from "Settings";
33
import { add_toggle } from "settings/SettingsComponents";
44
import { AbstractSettingsHandler } from "settings/handlers/AbstractSettingHandler";
5+
import { DatabaseView } from "DatabaseView";
56
export class LoggerToggleHandler extends AbstractSettingsHandler {
67
settingTitle: string = 'Enable developer settings. Logger will be enabled';
7-
handle(settingsManager: SettingsManager, containerEl: HTMLElement, local: boolean): [string, string][] {
8+
handle(settingsManager: SettingsManager, containerEl: HTMLElement, local: boolean, view?: DatabaseView): [string, string][] {
89
// pass if modal opened from local settings
910
if(!local){
1011
const logger_togle_promise = async (value: boolean): Promise<void> => {
@@ -30,7 +31,7 @@ export class LoggerToggleHandler extends AbstractSettingsHandler {
3031
}
3132
// Check next handler
3233
if (this.nextHandler) {
33-
return this.nextHandler.handle(settingsManager, containerEl, local);
34+
return this.nextHandler.handle(settingsManager, containerEl, local, view);
3435
}
3536

3637
return this.listOfErrors;

src/settings/handlers/developer/TableStateToggleHandler.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class TableStateToggleHandler extends AbstractSettingsHandler {
1111
// Check context to define correct promise
1212
if(local){
1313
// Persist value
14-
view .diskConfig.updateConfig({enable_show_state: value});
14+
view .diskConfig.updateConfig('enable_show_state', value);
1515
}else{
1616
// switch table state on/off
1717
const update_local_settings = settingsManager.plugin.settings.local_settings;
@@ -22,17 +22,18 @@ export class TableStateToggleHandler extends AbstractSettingsHandler {
2222
});
2323
}
2424
}
25+
2526
add_toggle(
2627
containerEl,
2728
this.settingTitle,
2829
"This will show/hide properties of the table on the bottom of the view",
29-
settingsManager.plugin.settings.local_settings.enable_show_state,
30+
local ? view.diskConfig.yaml.config.enable_show_state : settingsManager.plugin.settings.local_settings.enable_show_state,
3031
table_state_togle_promise
3132
);
3233
}
3334
// Check next handler
3435
if (this.nextHandler) {
35-
return this.nextHandler.handle(settingsManager, containerEl, local);
36+
return this.nextHandler.handle(settingsManager, containerEl, local, view);
3637
}
3738
return this.listOfErrors;
3839
}

0 commit comments

Comments
 (0)