mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	chore(react/collections/table): add datatree props
This commit is contained in:
		
							parent
							
								
									b62d1a303c
								
							
						
					
					
						commit
						0526445d3c
					
				@ -1,11 +1,11 @@
 | 
				
			|||||||
import { useCallback, useContext, useEffect, useRef, useState } from "preact/hooks";
 | 
					import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "preact/hooks";
 | 
				
			||||||
import { ViewModeProps } from "../interface";
 | 
					import { ViewModeProps } from "../interface";
 | 
				
			||||||
import { buildColumnDefinitions } from "./columns";
 | 
					import { buildColumnDefinitions } from "./columns";
 | 
				
			||||||
import getAttributeDefinitionInformation, { buildRowDefinitions, TableData } from "./rows";
 | 
					import getAttributeDefinitionInformation, { buildRowDefinitions, TableData } from "./rows";
 | 
				
			||||||
import { useNoteLabelInt, useSpacedUpdate } from "../../react/hooks";
 | 
					import { useNoteLabelInt, useSpacedUpdate } from "../../react/hooks";
 | 
				
			||||||
import { canReorderRows } from "../../view_widgets/table_view/dragging";
 | 
					import { canReorderRows } from "../../view_widgets/table_view/dragging";
 | 
				
			||||||
import Tabulator from "./tabulator";
 | 
					import Tabulator from "./tabulator";
 | 
				
			||||||
import { Tabulator as VanillaTabulator, SortModule, FormatModule, InteractionModule, EditModule, ResizeColumnsModule, FrozenColumnsModule, PersistenceModule, MoveColumnsModule, MoveRowsModule, ColumnDefinition, DataTreeModule} from 'tabulator-tables';
 | 
					import { Tabulator as VanillaTabulator, SortModule, FormatModule, InteractionModule, EditModule, ResizeColumnsModule, FrozenColumnsModule, PersistenceModule, MoveColumnsModule, MoveRowsModule, ColumnDefinition, DataTreeModule, Options} from 'tabulator-tables';
 | 
				
			||||||
import { useContextMenu } from "./context_menu";
 | 
					import { useContextMenu } from "./context_menu";
 | 
				
			||||||
import { ParentComponent } from "../../react/react_utils";
 | 
					import { ParentComponent } from "../../react/react_utils";
 | 
				
			||||||
import FNote from "../../../entities/fnote";
 | 
					import FNote from "../../../entities/fnote";
 | 
				
			||||||
@ -24,6 +24,7 @@ export default function TableView({ note, viewConfig, saveConfig }: ViewModeProp
 | 
				
			|||||||
    const [ columnDefs, setColumnDefs ] = useState<ColumnDefinition[]>();
 | 
					    const [ columnDefs, setColumnDefs ] = useState<ColumnDefinition[]>();
 | 
				
			||||||
    const [ rowData, setRowData ] = useState<TableData[]>();
 | 
					    const [ rowData, setRowData ] = useState<TableData[]>();
 | 
				
			||||||
    const [ movableRows, setMovableRows ] = useState<boolean>();
 | 
					    const [ movableRows, setMovableRows ] = useState<boolean>();
 | 
				
			||||||
 | 
					    const [ hasChildren, setHasChildren ] = useState<boolean>();
 | 
				
			||||||
    const tabulatorRef = useRef<VanillaTabulator>(null);
 | 
					    const tabulatorRef = useRef<VanillaTabulator>(null);
 | 
				
			||||||
    const parentComponent = useContext(ParentComponent);
 | 
					    const parentComponent = useContext(ParentComponent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -40,11 +41,24 @@ export default function TableView({ note, viewConfig, saveConfig }: ViewModeProp
 | 
				
			|||||||
            setColumnDefs(columnDefs);
 | 
					            setColumnDefs(columnDefs);
 | 
				
			||||||
            setRowData(rowData);
 | 
					            setRowData(rowData);
 | 
				
			||||||
            setMovableRows(movableRows);
 | 
					            setMovableRows(movableRows);
 | 
				
			||||||
 | 
					            setHasChildren(hasChildren);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }, [ note ]);
 | 
					    }, [ note ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const contextMenuEvents = useContextMenu(note, parentComponent, tabulatorRef);
 | 
					    const contextMenuEvents = useContextMenu(note, parentComponent, tabulatorRef);
 | 
				
			||||||
    const persistenceProps = usePersistence(viewConfig, saveConfig);
 | 
					    const persistenceProps = usePersistence(viewConfig, saveConfig);
 | 
				
			||||||
 | 
					    const dataTreeProps = useMemo<Options>(() => {
 | 
				
			||||||
 | 
					        if (!hasChildren) return {};
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            dataTree: true,
 | 
				
			||||||
 | 
					            dataTreeStartExpanded: true,
 | 
				
			||||||
 | 
					            dataTreeBranchElement: false,
 | 
				
			||||||
 | 
					            dataTreeElementColumn: "title",
 | 
				
			||||||
 | 
					            dataTreeChildIndent: 20,
 | 
				
			||||||
 | 
					            dataTreeExpandElement: `<button class="tree-expand"><span class="bx bx-chevron-right"></span></button>`,
 | 
				
			||||||
 | 
					            dataTreeCollapseElement: `<button class="tree-collapse"><span class="bx bx-chevron-down"></span></button>`
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }, [ hasChildren ]);
 | 
				
			||||||
    console.log("Render with viewconfig", viewConfig);
 | 
					    console.log("Render with viewconfig", viewConfig);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
@ -64,6 +78,7 @@ export default function TableView({ note, viewConfig, saveConfig }: ViewModeProp
 | 
				
			|||||||
                        index="branchId"
 | 
					                        index="branchId"
 | 
				
			||||||
                        movableColumns
 | 
					                        movableColumns
 | 
				
			||||||
                        movableRows={movableRows}
 | 
					                        movableRows={movableRows}
 | 
				
			||||||
 | 
					                        {...dataTreeProps}
 | 
				
			||||||
                    />
 | 
					                    />
 | 
				
			||||||
                    <TableFooter note={note} />
 | 
					                    <TableFooter note={note} />
 | 
				
			||||||
                </>
 | 
					                </>
 | 
				
			||||||
 | 
				
			|||||||
@ -61,19 +61,6 @@ export default class TableView extends ViewMode<StateInfo> {
 | 
				
			|||||||
        const viewStorage = await this.viewStorage.restore();
 | 
					        const viewStorage = await this.viewStorage.restore();
 | 
				
			||||||
        this.persistentData = viewStorage?.tableData || {};
 | 
					        this.persistentData = viewStorage?.tableData || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (hasChildren) {
 | 
					 | 
				
			||||||
            opts = {
 | 
					 | 
				
			||||||
                ...opts,
 | 
					 | 
				
			||||||
                dataTree: hasChildren,
 | 
					 | 
				
			||||||
                dataTreeStartExpanded: true,
 | 
					 | 
				
			||||||
                dataTreeBranchElement: false,
 | 
					 | 
				
			||||||
                dataTreeElementColumn: "title",
 | 
					 | 
				
			||||||
                dataTreeChildIndent: 20,
 | 
					 | 
				
			||||||
                dataTreeExpandElement: `<button class="tree-expand"><span class="bx bx-chevron-right"></span></button>`,
 | 
					 | 
				
			||||||
                dataTreeCollapseElement: `<button class="tree-collapse"><span class="bx bx-chevron-down"></span></button>`
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.api = new Tabulator(el, opts);
 | 
					        this.api = new Tabulator(el, opts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.colEditing = new TableColumnEditing(this.args.$parent, this.args.parentNote, this.api);
 | 
					        this.colEditing = new TableColumnEditing(this.args.$parent, this.args.parentNote, this.api);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user