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

Commit 4615646

Browse files
committed
Merge branch '58-fr-pre-populate-selectlookup-fields'
2 parents a471d29 + bf995af commit 4615646

38 files changed

+790
-273
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"@types/node": "17.0.31",
2929
"@types/react": "17.0.43",
3030
"@types/react-dom": "17.0.14",
31+
"@types/react-color": "3.0.6",
3132
"@types/react-table": "7.7.11",
3233
"@types/react-window": "1.8.5",
3334
"@types/react-datepicker": "4.4.1",
@@ -60,7 +61,8 @@
6061
"react-dom": "17.0.2",
6162
"react-csv": "2.2.2",
6263
"react-popper": "2.3.0",
63-
"react-table": "7.7.0",
64+
"react-table": "7.8.0",
65+
"react-color": "2.19.3",
6466
"react-window": "1.8.7",
6567
"react-datepicker": "4.8.0",
6668
"regenerator-runtime": "0.13.9",

src/Settings.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,29 @@ import { LOGGER } from "services/Logger";
66
import { developer_settings_section } from "settings/DeveloperSection";
77
import { columns_settings_section } from "settings/ColumnsSection";
88
import { folder_settings_section } from "settings/FolderSection";
9-
import { StyleClasses } from "helpers/Constants";
9+
import { DEFAULT_COLUMN_CONFIG, StyleClasses } from "helpers/Constants";
1010
import { SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
1111
import { media_settings_section } from "settings/MediaSection";
1212

13-
interface GlobalSettings {
14-
enable_debug_mode: boolean;
15-
logger_level_info: string;
16-
}
17-
1813
export interface MediaSettings {
1914
enable_media_view: boolean;
2015
width: number;
2116
height: number;
2217
}
18+
/**
19+
* Options that affects the behavior of the plugin and defines default values with some fields
20+
*/
21+
interface GlobalSettings {
22+
enable_debug_mode: boolean;
23+
logger_level_info: string;
24+
media_settings: MediaSettings;
25+
}
2326
export interface LocalSettings {
2427
enable_show_state: boolean;
2528
group_folder_column: string;
2629
remove_field_when_delete_column: boolean;
2730
show_metadata_created: boolean;
2831
show_metadata_modified: boolean;
29-
media_settings: MediaSettings;
3032
}
3133

3234
export interface DatabaseSettings {
@@ -37,19 +39,19 @@ export interface DatabaseSettings {
3739
export const DEFAULT_SETTINGS: DatabaseSettings = {
3840
global_settings: {
3941
enable_debug_mode: false,
40-
logger_level_info: 'error'
42+
logger_level_info: 'error',
43+
media_settings: {
44+
enable_media_view: DEFAULT_COLUMN_CONFIG.enable_media_view,
45+
width: DEFAULT_COLUMN_CONFIG.media_height,
46+
height: DEFAULT_COLUMN_CONFIG.media_height
47+
}
4148
},
4249
local_settings: {
4350
enable_show_state: false,
4451
remove_field_when_delete_column: false,
4552
group_folder_column: '',
4653
show_metadata_created: false,
4754
show_metadata_modified: false,
48-
media_settings: {
49-
enable_media_view: true,
50-
width: 100,
51-
height: 100
52-
}
5355
}
5456
};
5557

@@ -101,7 +103,7 @@ export class SettingsManager {
101103

102104
const settingBody = containerEl.createDiv();
103105
settingBody.addClass(StyleClasses.SETTINGS_MODAL_BODY);
104-
containerEl.setAttribute("id", StyleClasses.SETTINGS_MODAL_BODY);
106+
settingBody.setAttribute("id", StyleClasses.SETTINGS_MODAL_BODY);
105107
const settingHandlerResponse: SettingHandlerResponse = {
106108
settingsManager: this,
107109
containerEl: settingBody,

src/cdm/DatabaseModel.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,13 @@ import { RowType } from "cdm/RowTypeModel"
22
import { Literal } from "obsidian-dataview/lib/data-model/value";
33
import { Cell } from "react-table";
44
import { LocalSettings } from "Settings"
5-
import { TableColumn, TableDataType } from "cdm/FolderModel";
5+
import { BaseColumn, TableColumn, TableDataType } from "cdm/FolderModel";
6+
import { RowSelectOption } from "cdm/RowSelectModel";
67

78
/** database column */
8-
export interface DatabaseColumn {
9+
export interface DatabaseColumn extends BaseColumn {
910
input: string;
10-
accessor: string;
11-
label: string;
12-
key: string;
13-
position?: number;
14-
isMetadata?: boolean;
15-
skipPersist?: boolean;
16-
csvCandidate?: boolean;
17-
isInline?: boolean;
11+
options?: RowSelectOption[];
1812
[key: string]: RowType;
1913
}
2014

@@ -52,4 +46,4 @@ export type CalendarProps = {
5246
intialState: TableDataType;
5347
column: TableColumn;
5448
cellProperties: Cell;
55-
};
49+
};

src/cdm/FolderModel.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import { DatabaseView } from "DatabaseView";
22
import { Dispatch } from "react";
33
import StateManager from "StateManager";
4-
import { RowType } from "cdm/RowTypeModel";
54
import { RowSelectOption } from "cdm/RowSelectModel";
65
import NoteInfo from "services/NoteInfo";
76
import { TFile } from "obsidian";
8-
import { DatabaseColumn } from "cdm/DatabaseModel";
97
import { Column } from "react-table";
108
import { Literal } from "obsidian-dataview/lib/data-model/value";
119

@@ -35,23 +33,33 @@ export type Models = {
3533
[key: string]: FolderModel
3634
}
3735

38-
export interface TableColumn {
39-
id: string;
36+
export interface ConfigColumn {
37+
enable_media_view: boolean;
38+
media_width: number;
39+
media_height: number;
40+
isInline: boolean;
41+
[key: string]: Literal;
42+
}
43+
44+
export interface BaseColumn {
45+
csvCandidate?: boolean;
46+
accessor: string;
4047
label: string;
4148
key: string;
42-
position: number;
43-
accessor: any;
49+
position?: number;
50+
isMetadata?: boolean;
51+
skipPersist?: boolean;
52+
config: ConfigColumn;
53+
}
54+
export interface TableColumn extends BaseColumn {
55+
id: string;
4456
minWidth?: number;
4557
width?: number;
4658
dataType: string;
4759
options?: RowSelectOption[];
4860
Cell?: any;
4961
getHeaderProps?: any;
5062
getResizerProps?: any;
51-
isMetadata?: boolean;
52-
skipPersist?: boolean;
53-
isInline?: boolean;
54-
csvCandidate: boolean;
5563
}
5664

5765
export type RowDataType = {

src/cdm/HeaderModel.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { DatabaseHeaderProps } from "cdm/FolderModel";
2+
3+
export type HeaderMenuProps = {
4+
headerProps: DatabaseHeaderProps;
5+
setSortBy: any;
6+
propertyIcon: any;
7+
expanded: boolean;
8+
setExpanded: (expanded: boolean) => void;
9+
created: boolean;
10+
referenceElement: any;
11+
labelState: string;
12+
setLabelState: (label: string) => void;
13+
};

src/cdm/ModalSettingsModel.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { TableColumn } from "cdm/FolderModel";
2+
import { ColumnSettingsManager } from "components/modals/ColumnModal";
3+
import { DatabaseView } from "DatabaseView";
4+
5+
export type ColumnHandlerResponse = {
6+
containerEl: HTMLElement,
7+
view: DatabaseView,
8+
column: TableColumn,
9+
columnSettingsManager: ColumnSettingsManager
10+
}

src/cdm/RowSelectModel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ActionType } from "react-table";
22
import NoteInfo from "services/NoteInfo";
3-
import { TableDataType } from "cdm/FolderModel";
3+
import { TableColumn, TableDataType } from "cdm/FolderModel";
44

55
export type RowSelectOption = {
66
backgroundColor: string,
@@ -9,7 +9,7 @@ export type RowSelectOption = {
99
export type PopperProps = {
1010
dispatch: (action: ActionType) => void;
1111
row: any;
12-
column: any;
12+
column: TableColumn;
1313
columns: any;
1414
note: NoteInfo;
1515
state: TableDataType;

src/cdm/RowTypeModel.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Link } from "obsidian-dataview";
22
import { RowSelectOption } from "cdm/RowSelectModel";
33
import NoteInfo from "services/NoteInfo";
4+
import { ConfigColumn } from "cdm/FolderModel";
45

5-
export type RowType = number | string | boolean | Date | Link | RowSelectOption[] | NoteInfo;
6+
export type RowType = number | string | boolean | Date | Link | RowSelectOption[] | NoteInfo | ConfigColumn;

src/cdm/StyleModel.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
1+
import { DatabaseView } from "DatabaseView";
2+
import { ColorResult } from "react-color";
3+
import { RowSelectOption } from "./RowSelectModel";
4+
15
export type ColumnWidthState = {
26
widthRecord: Record<string, number>
37
}
48

59
export type HeaderContextType = {
610
columnWidthState: ColumnWidthState,
711
setColumnWidthState: (a: ColumnWidthState) => void
8-
}
12+
}
13+
14+
export type ColorPickerProps = {
15+
view: DatabaseView;
16+
options: RowSelectOption[];
17+
option: RowSelectOption;
18+
columnKey: string;
19+
};

src/components/Cell.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export default function DefaultCell(cellProperties: Cell) {
5858
//TODO - this is a hack. find why is layout effect called twice
5959
containerCellRef.current.innerHTML = "";
6060
renderMarkdown(
61-
(cellProperties as any).initialState.view,
61+
cellProperties,
6262
contextValue.value,
6363
containerCellRef.current
6464
);
@@ -170,7 +170,7 @@ export default function DefaultCell(cellProperties: Cell) {
170170
<PopperSelectPortal
171171
dispatch={dataDispatch}
172172
row={cellProperties.row}
173-
column={cellProperties.column}
173+
column={cellProperties.column as unknown as TableColumn}
174174
columns={columns}
175175
note={note}
176176
state={(cellProperties as any).initialState}

0 commit comments

Comments
 (0)