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

Commit 6bca508

Browse files
committed
working
1 parent 8a23831 commit 6bca508

File tree

6 files changed

+56
-12
lines changed

6 files changed

+56
-12
lines changed

src/Settings.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ interface GlobalSettings {
1717
export interface LocalSettings {
1818
enable_show_state: boolean;
1919
group_folder_column: string;
20+
remove_field_when_delete_column: boolean;
2021
}
2122
export interface DatabaseSettings {
2223
global_settings: GlobalSettings;
@@ -30,6 +31,7 @@ export const DEFAULT_SETTINGS: DatabaseSettings = {
3031
},
3132
local_settings: {
3233
enable_show_state: false,
34+
remove_field_when_delete_column: false,
3335
group_folder_column: ''
3436
}
3537
};

src/components/reducers/DatabaseDispatch.tsx

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -323,17 +323,19 @@ export function databaseReducer(state: TableDataType, action: ActionType) {
323323
);
324324
// Update configuration on disk
325325
state.view.diskConfig.removeColumn(action.columnId);
326-
Promise.all(
327-
state.data.map(async (row: RowDataType) => {
328-
updateRowFile(
329-
row.note.getFile(),
330-
action.key,
331-
undefined, // delete does not need this field
332-
state,
333-
UpdateRowOptions.REMOVE_COLUMN
334-
);
335-
})
336-
);
326+
if (state.view.diskConfig.yaml.config.remove_field_when_delete_column) {
327+
Promise.all(
328+
state.data.map(async (row: RowDataType) => {
329+
updateRowFile(
330+
row.note.getFile(),
331+
action.key,
332+
undefined, // delete does not need this field
333+
state,
334+
UpdateRowOptions.REMOVE_COLUMN
335+
);
336+
})
337+
);
338+
}
337339
// Update state
338340
return update(state, {
339341
skipReset: { $set: true },

src/parsers/DatabaseYamlToStringParser.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const DatabaseYamlToStringParser = (databaseConfig: DatabaseYaml): string[] => {
2424
databaseConfigString.push(`config:`);
2525
databaseConfigString.push(`${yamlIndent.repeat(1)}enable_show_state: ${databaseConfig.config.enable_show_state}`);
2626
databaseConfigString.push(`${yamlIndent.repeat(1)}group_folder_column: ${databaseConfig.config.group_folder_column}`);
27+
databaseConfigString.push(`${yamlIndent.repeat(1)}remove_field_when_delete_column: ${databaseConfig.config.remove_field_when_delete_column}`);
2728

2829
// Database filters
2930
if (databaseConfig.filters) {

src/parsers/handlers/ConfigHandler.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ export class ConfigHandler extends AbstractYamlHandler {
1818
this.addError(`There was not group_folder_column key in yaml. Default will be loaded`);
1919
this.localYaml.config.group_folder_column = '';
2020
}
21+
// if remove_field_when_delete_column is not defined, load default
22+
if (handlerResponse.yaml.config.remove_field_when_delete_column === undefined) {
23+
this.addError(`There was not remove_field_when_delete_column key in yaml. Default will be loaded`);
24+
this.localYaml.config.remove_field_when_delete_column = false;
25+
}
26+
2127
}
2228
return this.goNext(handlerResponse);
2329
}

src/settings/ColumnsSection.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { add_setting_header } from 'settings/SettingsComponents';
22
import { SettingHandler, SettingHandlerResponse } from 'settings/handlers/AbstractSettingHandler';
33
import { GroupFolderColumnDropDownHandler } from 'settings/handlers/columns/GroupFolderColumnDropDownHandler';
4+
import { RemoveFieldsWhenDeleteToggleHandler } from 'settings/handlers/columns/RemoveFieldsWhenDeleteToggleHandler';
45

56
/**
67
* developer settings section
@@ -25,6 +26,7 @@ export function columns_settings_section(settingHandlerResponse: SettingHandlerR
2526
*/
2627
function getHandlers(): SettingHandler[] {
2728
return [
28-
new GroupFolderColumnDropDownHandler()
29+
new GroupFolderColumnDropDownHandler(),
30+
new RemoveFieldsWhenDeleteToggleHandler()
2931
];
3032
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { add_toggle } from "settings/SettingsComponents";
2+
import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
3+
export class RemoveFieldsWhenDeleteToggleHandler extends AbstractSettingsHandler {
4+
settingTitle: string = 'Remove fields';
5+
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
6+
const { settingsManager, containerEl, local, view } = settingHandlerResponse;
7+
const remove_fields_toggle_promise = async (value: boolean): Promise<void> => {
8+
// Check context to define correct promise
9+
if (local) {
10+
// Persist value
11+
view.diskConfig.updateConfig('remove_field_when_delete_column', value);
12+
} else {
13+
// switch remove fields on/off
14+
const update_local_settings = settingsManager.plugin.settings.local_settings;
15+
update_local_settings.remove_field_when_delete_column = value;
16+
// update settings
17+
await settingsManager.plugin.updateSettings({
18+
local_settings: update_local_settings
19+
});
20+
}
21+
}
22+
add_toggle(
23+
containerEl,
24+
this.settingTitle,
25+
"Enable/disable remove fields when delete a column",
26+
local ? view.diskConfig.yaml.config.remove_field_when_delete_column : settingsManager.plugin.settings.local_settings.remove_field_when_delete_column,
27+
remove_fields_toggle_promise
28+
);
29+
return this.goNext(settingHandlerResponse);
30+
}
31+
}

0 commit comments

Comments
 (0)