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

Commit b47bd11

Browse files
committed
move metainfo to add columns
1 parent 2d48f20 commit b47bd11

File tree

11 files changed

+291
-191
lines changed

11 files changed

+291
-191
lines changed

src/components/modals/newColumn/SelectNewColumnSection.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { AbstractHandler } from "patterns/chain/AbstractHandler";
44
import { AddEmptyColumnHandler } from "components/modals/newColumn/handlers/AddEmptyColumnHandler";
55
import { AddExistingColumnHandler } from "components/modals/newColumn/handlers/AddExistingColumnHandler";
66
import { QuickOptionsColumnsHandler } from "components/modals/newColumn/handlers/QuickOptionsColumnsHandler";
7+
import { MetadataToggleGroupHandler } from "./handlers/MetadataToggleGroupHandler";
78

89
class SelectNewColumnSection extends AbstractChain<AddColumnModalHandlerResponse> {
910
protected getHandlers(): AbstractHandler<AddColumnModalHandlerResponse>[] {
1011
return [
1112
new AddEmptyColumnHandler(),
1213
new AddExistingColumnHandler(),
14+
new MetadataToggleGroupHandler(),
1315
new QuickOptionsColumnsHandler()
1416
];
1517
}

src/components/modals/newColumn/handlers/AddEmptyColumnHandler.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export class AddEmptyColumnHandler extends AbstractHandlerClass<AddColumnModalHa
3131
t("add_row_modal_add_empty_notice_informed", newColumnName),
3232
1500);
3333
(activeDocument.getElementById(this.textElId) as HTMLInputElement).value = "";
34+
addColumnModalManager.addColumnModal.enableReset = true;
3435
}
3536

3637
const selectTypeHandler = (value: string): void => {
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import { AddColumnModalHandlerResponse } from "cdm/ModalsModel";
2+
import { ColumnSettingsModal } from "components/modals/columnSettings/ColumnSettingsModal";
3+
import { MetadataColumns } from "helpers/Constants";
4+
import { t } from "lang/helpers";
5+
import { Setting } from "obsidian";
6+
import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
7+
import { add_setting_header } from "settings/SettingsComponents";
8+
9+
export class MetadataToggleGroupHandler extends AbstractHandlerClass<AddColumnModalHandlerResponse> {
10+
settingTitle: string = t("settings_metatata_title");
11+
handle(response: AddColumnModalHandlerResponse): AddColumnModalHandlerResponse {
12+
const { containerEl, addColumnModalManager } = response;
13+
const { view } = addColumnModalManager.props;
14+
15+
const metadata_section = containerEl.createDiv("configuration-section-container-columns-metadata");
16+
// title of the section
17+
add_setting_header(metadata_section, this.settingTitle, 'h4');
18+
/*************************
19+
* METADATA CREATED COLUMN
20+
*************************/
21+
const metadata_file_toggle_promise = async (value: boolean): Promise<void> => {
22+
// Persist value
23+
await view.diskConfig.updateColumnProperties(MetadataColumns.FILE, { isHidden: value });
24+
addColumnModalManager.addColumnModal.enableReset = true;
25+
}
26+
new Setting(metadata_section)
27+
.setName(t("settings_metatata_file_toggle_title"))
28+
.setDesc(t("settings_metatata_file_toggle_desc"))
29+
.addToggle(toggle =>
30+
toggle.setValue(view.diskConfig.yaml.columns.__file__.isHidden)
31+
.onChange(metadata_file_toggle_promise)
32+
);
33+
34+
/*************************
35+
* METADATA CREATED COLUMN
36+
*************************/
37+
const metadata_created_toggle_promise = async (value: boolean): Promise<void> => {
38+
// Persist value
39+
view.diskConfig.updateConfig({ show_metadata_created: value });
40+
addColumnModalManager.addColumnModal.enableReset = true;
41+
}
42+
new Setting(metadata_section)
43+
.setName(t("settings_metatata_create_toggle_title"))
44+
.setDesc(t("settings_metatata_create_toggle_desc"))
45+
.addToggle(toggle =>
46+
toggle.setValue(view.diskConfig.yaml.config.show_metadata_created)
47+
.onChange(metadata_created_toggle_promise)
48+
);
49+
50+
/*************************
51+
* METADATA MODIFIED COLUMN
52+
*************************/
53+
const metadata_modified_toggle_promise = async (value: boolean): Promise<void> => {
54+
// Persist value
55+
view.diskConfig.updateConfig({ show_metadata_modified: value });
56+
addColumnModalManager.addColumnModal.enableReset = true;
57+
}
58+
59+
new Setting(metadata_section)
60+
.setName(t("settings_metatata_modified_toggle_title"))
61+
.setDesc(t("settings_metatata_modified_toggle_desc"))
62+
.addToggle(toggle =>
63+
toggle
64+
.setValue(view.diskConfig.yaml.config.show_metadata_modified)
65+
.onChange(metadata_modified_toggle_promise)
66+
);
67+
68+
/*************************
69+
* METADATA TASK COLUMN
70+
*************************/
71+
const metadata_tasks_toggle_promise = async (value: boolean): Promise<void> => {
72+
// Persist value
73+
view.diskConfig.updateConfig({ show_metadata_tasks: value });
74+
addColumnModalManager.addColumnModal.enableReset = true;
75+
}
76+
77+
new Setting(metadata_section)
78+
.setName(t("settings_metatata_task_toggle_title"))
79+
.setDesc(t("settings_metatata_task_toggle_desc"))
80+
.addToggle(toggle =>
81+
toggle.setValue(view.diskConfig.yaml.config.show_metadata_tasks)
82+
.onChange(metadata_tasks_toggle_promise)
83+
);
84+
85+
/*************************
86+
* INLINKS COLUMN
87+
*************************/
88+
const metadata_inlinks_toggle_promise = async (value: boolean): Promise<void> => {
89+
// Persist value
90+
view.diskConfig.updateConfig({ show_metadata_inlinks: value });
91+
addColumnModalManager.addColumnModal.enableReset = true;
92+
}
93+
94+
new Setting(metadata_section)
95+
.setName(t("settings_metatata_inlinks_toggle_title"))
96+
.setDesc(t("settings_metatata_inlinks_toggle_desc"))
97+
.addToggle(toggle =>
98+
toggle.setValue(view.diskConfig.yaml.config.show_metadata_inlinks)
99+
.onChange(metadata_inlinks_toggle_promise)
100+
);
101+
102+
/*************************
103+
* OUTLINKS COLUMN
104+
*************************/
105+
const metadata_outlinks_toggle_promise = async (value: boolean): Promise<void> => {
106+
// Persist value
107+
view.diskConfig.updateConfig({ show_metadata_outlinks: value });
108+
addColumnModalManager.addColumnModal.enableReset = true;
109+
}
110+
111+
new Setting(metadata_section)
112+
.setName(t("settings_metatata_outlinks_toggle_title"))
113+
.setDesc(t("settings_metatata_outlinks_toggle_desc"))
114+
.addToggle(toggle =>
115+
toggle.setValue(view.diskConfig.yaml.config.show_metadata_outlinks)
116+
.onChange(metadata_outlinks_toggle_promise)
117+
);
118+
119+
return this.goNext(response);
120+
}
121+
}

src/components/modals/newColumn/handlers/QuickOptionsColumnsHandler.ts

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ export class QuickOptionsColumnsHandler extends AbstractHandlerClass<AddColumnMo
2222
Object.values(DynamicInputType).forEach((value) => {
2323
typesRecord[value] = t(value);
2424
});
25+
2526
// List of columns to show/hide
2627
columnState.info.getAllColumns()
27-
.filter(c => !c.skipPersist)
28+
.filter(c => !c.skipPersist && !c.isMetadata)
2829
.sort((a, b) => a.position - b.position)
2930
.forEach((column) => {
3031
const toggleHandler = (shown: boolean): void => {
@@ -64,37 +65,31 @@ export class QuickOptionsColumnsHandler extends AbstractHandlerClass<AddColumnMo
6465
.setIcon("gear")
6566
.setTooltip(t("add_row_modal_quick_options_desc_button_add_tooltip", column.label))
6667
.onClick(openSettingsHandler)
68+
}).addDropdown((dropdown) => {
69+
dropdown.addOptions(typesRecord);
70+
dropdown.setValue(column.input);
71+
dropdown.onChange(selectTypeHandler);
72+
});
73+
// Delete column
74+
columnSetting
75+
.addButton(button => {
76+
button
77+
.setIcon("trash")
78+
.setTooltip(t("add_row_modal_quick_options_desc_button_delete_tooltip", column.label))
79+
.onClick(async () => {
80+
const confirmation = await new ConfirmModal()
81+
.setMessage(t(
82+
"add_row_modal_quick_options_desc_button_delete_notice_confirm",
83+
column.label
84+
))
85+
.isConfirmed();
86+
if (confirmation) {
87+
columnState.actions.remove(column);
88+
// Refresh the modal to remove the selected column from the dropdown
89+
addColumnModalManager.reset(response);
90+
}
91+
})
6792
});
68-
// Add extra options for non-metadata columns
69-
if (!column.isMetadata) {
70-
// Select type
71-
columnSetting
72-
.addDropdown((dropdown) => {
73-
dropdown.addOptions(typesRecord);
74-
dropdown.setValue(column.input);
75-
dropdown.onChange(selectTypeHandler);
76-
});
77-
// Delete column
78-
columnSetting
79-
.addButton(button => {
80-
button
81-
.setIcon("trash")
82-
.setTooltip(t("add_row_modal_quick_options_desc_button_delete_tooltip", column.label))
83-
.onClick(async () => {
84-
const confirmation = await new ConfirmModal()
85-
.setMessage(t(
86-
"add_row_modal_quick_options_desc_button_delete_notice_confirm",
87-
column.label
88-
))
89-
.isConfirmed();
90-
if (confirmation) {
91-
columnState.actions.remove(column);
92-
// Refresh the modal to remove the selected column from the dropdown
93-
addColumnModalManager.reset(response);
94-
}
95-
})
96-
});
97-
}
9893
});
9994
return this.goNext(response);
10095
}

src/lang/locale/en.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ export default {
265265
"settings_inline_options_position_title": "Select position of new inline fields",
266266
"settings_inline_options_position_desc": "New inline fields will be created in the selected position on your notes",
267267
"settings_metatata_title": "Metadata toggle group",
268+
"settings_metatata_file_toggle_title": "File name",
269+
"settings_metatata_file_toggle_desc": "Enable/disable File Name Column",
268270
"settings_metatata_create_toggle_title": "Created date",
269271
"settings_metatata_create_toggle_desc": "Enable/disable Created Metadata Column",
270272
"settings_metatata_modified_toggle_title": "Modified date",

src/lang/locale/es.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ export default {
254254
"settings_inline_options_position_title": "Posición de los campos inline",
255255
"settings_inline_options_position_desc": "Selecciona la posición de los nuevos campos inline dentro de la nota",
256256
"settings_metatata_title": "Meta información",
257+
"settings_metatata_file_toggle_title": "Nombre del archivo",
258+
"settings_metatata_file_toggle_desc": "Habilitar/deshabilitar la columna de nombre del archivo",
257259
"settings_metatata_create_toggle_title": "Fecha de creación",
258260
"settings_metatata_create_toggle_desc": "Habilitar/deshabilitar la columna de fecha de creación",
259261
"settings_metatata_modified_toggle_title": "Fecha de modificación",

src/lang/locale/fr.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,8 @@ export default {
249249
"settings_inline_options_position_title": "Sélectionner la position des nouveaux champs en ligne",
250250
"settings_inline_options_position_desc": "De nouveaux champs en ligne seront créés à l'emplacement sélectionné sur vos notes.",
251251
"settings_metatata_title": "Contrôle des métadonnées",
252+
"settings_metatata_file_toggle_title": "Nom du fichier",
253+
"settings_metatata_file_toggle_desc": "Activer/désactiver la colonne des métadonnées de nom de fichier.",
252254
"settings_metatata_create_toggle_title": "Date de création",
253255
"settings_metatata_create_toggle_desc": "Activer/désactiver la colonne des métadonnées de date de création.",
254256
"settings_metatata_modified_toggle_title": "Date de modification",

src/settings/ColumnsSection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { add_setting_header } from 'settings/SettingsComponents';
22
import { SettingHandlerResponse } from 'settings/handlers/AbstractSettingHandler';
33
import { GroupFolderColumnTextInputHandler } from 'settings/handlers/columns/GroupFolderColumnTextInputHandler';
44
import { RemoveFieldsWhenDeleteToggleHandler } from 'settings/handlers/columns/RemoveFieldsWhenDeleteToggleHandler';
5-
import { MetadataToggleGroupHandler } from 'settings/handlers/columns/MetadataToggleGroupHandler';
5+
import { DefaultMetadataToggleGroupHandler } from 'settings/handlers/columns/DefaultMetadataToggleGroupHandler';
66
import { TemplateColumnsHandler } from 'settings/handlers/columns/TemplateColumnsHandler';
77
import { InlineFieldsOptionsHandler } from 'settings/handlers/columns/InlineFieldsOptionsHandler';
88
import { AbstractChain } from 'patterns/chain/AbstractFactoryChain';
@@ -22,7 +22,7 @@ class ColumnSetttingsSection extends AbstractChain<SettingHandlerResponse> {
2222
new GroupFolderColumnTextInputHandler(),
2323
new RemoveFieldsWhenDeleteToggleHandler(),
2424
new TemplateColumnsHandler(),
25-
new MetadataToggleGroupHandler(),
25+
new DefaultMetadataToggleGroupHandler(),
2626
new InlineFieldsOptionsHandler()
2727
];
2828
}
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import { t } from "lang/helpers";
2+
import { Setting } from "obsidian";
3+
import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
4+
import { add_setting_header } from "settings/SettingsComponents";
5+
6+
export class DefaultMetadataToggleGroupHandler extends AbstractSettingsHandler {
7+
settingTitle: string = t("settings_metatata_title");
8+
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
9+
const { settingsManager, containerEl, local } = settingHandlerResponse;
10+
if (!local) {
11+
const metadata_section = containerEl.createDiv("configuration-section-container-columns-metadata");
12+
// title of the section
13+
add_setting_header(metadata_section, this.settingTitle, 'h4');
14+
/*************************
15+
* METADATA CREATED COLUMN
16+
*************************/
17+
const metadata_created_toggle_promise = async (value: boolean): Promise<void> => {
18+
// switch show created on/off
19+
const update_local_settings = settingsManager.plugin.settings.local_settings;
20+
update_local_settings.show_metadata_created = value;
21+
// update settings
22+
await settingsManager.plugin.updateSettings({
23+
local_settings: update_local_settings
24+
});
25+
26+
}
27+
28+
new Setting(metadata_section)
29+
.setName(t("settings_metatata_create_toggle_title"))
30+
.setDesc(t("settings_metatata_create_toggle_desc"))
31+
.addToggle(toggle =>
32+
toggle.setValue(settingsManager.plugin.settings.local_settings.show_metadata_created)
33+
.onChange(metadata_created_toggle_promise)
34+
)
35+
36+
/*************************
37+
* METADATA MODIFIED COLUMN
38+
*************************/
39+
const metadata_modified_toggle_promise = async (value: boolean): Promise<void> => {
40+
// switch show modified on/off
41+
const update_local_settings = settingsManager.plugin.settings.local_settings;
42+
update_local_settings.show_metadata_modified = value;
43+
// update settings
44+
await settingsManager.plugin.updateSettings({
45+
local_settings: update_local_settings
46+
});
47+
}
48+
49+
new Setting(metadata_section)
50+
.setName(t("settings_metatata_modified_toggle_title"))
51+
.setDesc(t("settings_metatata_modified_toggle_desc"))
52+
.addToggle(toggle =>
53+
toggle.setValue(settingsManager.plugin.settings.local_settings.show_metadata_modified)
54+
.onChange(metadata_modified_toggle_promise)
55+
);
56+
57+
/*************************
58+
* METADATA TASK COLUMN
59+
*************************/
60+
const metadata_tasks_toggle_promise = async (value: boolean): Promise<void> => {
61+
// switch show task on/off
62+
const update_local_settings = settingsManager.plugin.settings.local_settings;
63+
update_local_settings.show_metadata_tasks = value;
64+
// update settings
65+
await settingsManager.plugin.updateSettings({
66+
local_settings: update_local_settings
67+
});
68+
}
69+
70+
new Setting(metadata_section)
71+
.setName(t("settings_metatata_task_toggle_title"))
72+
.setDesc(t("settings_metatata_task_toggle_desc"))
73+
.addToggle(toggle =>
74+
toggle.setValue(settingsManager.plugin.settings.local_settings.show_metadata_tasks)
75+
.onChange(metadata_tasks_toggle_promise)
76+
);
77+
78+
/*************************
79+
* INLINKS COLUMN
80+
*************************/
81+
const metadata_inlinks_toggle_promise = async (value: boolean): Promise<void> => {
82+
// switch show task on/off
83+
const update_local_settings = settingsManager.plugin.settings.local_settings;
84+
update_local_settings.show_metadata_inlinks = value;
85+
// update settings
86+
await settingsManager.plugin.updateSettings({
87+
local_settings: update_local_settings
88+
});
89+
}
90+
91+
new Setting(metadata_section)
92+
.setName(t("settings_metatata_inlinks_toggle_title"))
93+
.setDesc(t("settings_metatata_inlinks_toggle_desc"))
94+
.addToggle(toggle =>
95+
toggle.setValue(settingsManager.plugin.settings.local_settings.show_metadata_inlinks)
96+
.onChange(metadata_inlinks_toggle_promise)
97+
);
98+
99+
/*************************
100+
* OUTLINKS COLUMN
101+
*************************/
102+
const metadata_outlinks_toggle_promise = async (value: boolean): Promise<void> => {
103+
// switch show task on/off
104+
const update_local_settings = settingsManager.plugin.settings.local_settings;
105+
update_local_settings.show_metadata_outlinks = value;
106+
// update settings
107+
await settingsManager.plugin.updateSettings({
108+
local_settings: update_local_settings
109+
});
110+
}
111+
112+
new Setting(metadata_section)
113+
.setName(t("settings_metatata_outlinks_toggle_title"))
114+
.setDesc(t("settings_metatata_outlinks_toggle_desc"))
115+
.addToggle(toggle =>
116+
toggle.setValue(settingsManager.plugin.settings.local_settings.show_metadata_outlinks)
117+
.onChange(metadata_outlinks_toggle_promise)
118+
);
119+
}
120+
return this.goNext(settingHandlerResponse);
121+
}
122+
}

0 commit comments

Comments
 (0)