diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index db92e426c..6aada156e 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -58,6 +58,7 @@ export abstract class GridDisplay { filterable = false; editable = false; isLoadedCorrectly = true; + supportsReload = false; setColumnVisibility(uniquePath: string[], isVisible: boolean) { const uniqueName = uniquePath.join('.'); diff --git a/packages/datalib/src/TableGridDisplay.ts b/packages/datalib/src/TableGridDisplay.ts index f002ee50a..692c92f30 100644 --- a/packages/datalib/src/TableGridDisplay.ts +++ b/packages/datalib/src/TableGridDisplay.ts @@ -32,6 +32,7 @@ export class TableGridDisplay extends GridDisplay { this.filterable = true; this.sortable = true; this.editable = true; + this.supportsReload = true; this.baseTable = this.table; if (this.table && this.table.columns) { this.changeSetKeyFields = this.table.primaryKey diff --git a/packages/datalib/src/ViewGridDisplay.ts b/packages/datalib/src/ViewGridDisplay.ts index c9a5758c6..26b957fde 100644 --- a/packages/datalib/src/ViewGridDisplay.ts +++ b/packages/datalib/src/ViewGridDisplay.ts @@ -17,6 +17,7 @@ export class ViewGridDisplay extends GridDisplay { this.filterable = true; this.sortable = true; this.editable = false; + this.supportsReload = true; } getDisplayColumns(view: ViewInfo) { diff --git a/packages/web/src/datagrid/DataGridContextMenu.js b/packages/web/src/datagrid/DataGridContextMenu.js index bdd89e6dd..76b76ec6d 100644 --- a/packages/web/src/datagrid/DataGridContextMenu.js +++ b/packages/web/src/datagrid/DataGridContextMenu.js @@ -15,30 +15,42 @@ export default function DataGridContextMenu({ }) { return ( <> - - Reload - - + {!!reload && ( + + Reload + + )} + {!!reload && } Copy - - Revert row changes - - - Delete selected rows - - - Insert new row - + {revertRowChanges && ( + + Revert row changes + + )} + {deleteSelectedRows && ( + + Delete selected rows + + )} + {insertNewRow && ( + + Insert new row + + )} - - Set NULL - + {setNull && ( + + Set NULL + + )} {exportGrid && Export} - - Filter selected value - + {filterSelectedValue && ( + + Filter selected value + + )} {openQuery && Open query} Open selection in free table editor diff --git a/packages/web/src/datagrid/DataGridCore.js b/packages/web/src/datagrid/DataGridCore.js index dd661325a..853cbc02c 100644 --- a/packages/web/src/datagrid/DataGridCore.js +++ b/packages/web/src/datagrid/DataGridCore.js @@ -345,13 +345,13 @@ export default function DataGridCore(props) { event.pageY, display.reload()} - setNull={setNull} + revertRowChanges={grider.containsChanges ? revertRowChanges : null} + deleteSelectedRows={grider.editable ? deleteSelectedRows : null} + insertNewRow={grider.editable ? insertNewRow : null} + reload={display.supportsReload ? () => display.reload() : null} + setNull={grider.editable ? setNull : null} exportGrid={exportGrid} - filterSelectedValue={filterSelectedValue} + filterSelectedValue={display.filterable ? filterSelectedValue : null} openQuery={openQuery} openFreeTable={handleOpenFreeTable} />