Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mofojed/enterprise sync #7

Merged
merged 7 commits into from
Apr 30, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/code-studio/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"@deephaven/icons": "^0.1.0",
"@deephaven/jsapi-shim": "^0.1.0",
"@deephaven/log": "^0.1.0",
"@deephaven/react-hooks": "^0.1.0",
"@deephaven/utils": "^0.1.0",
"@fortawesome/fontawesome-svg-core": "^1.2.32",
"@fortawesome/react-fontawesome": "^0.1.12",
Expand Down
17 changes: 17 additions & 0 deletions packages/code-studio/public/__mocks__/dh-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -962,6 +962,22 @@ TotalsTableConfig.FIRST = 'First';
TotalsTableConfig.LAST = 'Last';
TotalsTableConfig.SKIP = 'Skip';

class InputTable extends DeephavenObject {
constructor({ keyColumns = [] } = {}) {
super();

this.keyColumns = keyColumns;
}

addRows() {
return Promise.resolve();
}

deleteTable() {
return Promise.resolve();
}
}

class RollupTableConfig {}

class Client extends DeephavenObject {
Expand Down Expand Up @@ -1727,6 +1743,7 @@ const dh = {
RollupTableConfig: RollupTableConfig,
Table: Table,
TotalsTable: TotalsTable,
InputTable: InputTable,
TotalsTableConfig: TotalsTableConfig,
TableViewportSubscription,
TableSubscription,
Expand Down
50 changes: 35 additions & 15 deletions packages/code-studio/src/dashboard/panels/IrisGridPanel.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { connect } from 'react-redux';
import debounce from 'lodash.debounce';
import Log from '@deephaven/log';
import { PromiseUtils } from '@deephaven/utils';
import { ContextMenuRoot } from '@deephaven/components';
import { IrisGridUtils, IrisGrid } from '../../iris-grid';
import { ChartUtils, ChartModelFactory } from '../../chart';
import {
Expand Down Expand Up @@ -40,7 +41,7 @@ const log = Log.module('IrisGridPanel');

const DEBOUNCE_PANEL_STATE_UPDATE = 500;

const PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel };
const PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };

export class IrisGridPanel extends PureComponent {
constructor(props) {
Expand Down Expand Up @@ -116,6 +117,7 @@ export class IrisGridPanel extends PureComponent {
pluginFilters: [],
pluginFetchColumns: [],
modelQueue: [],
pendingDataMap: new Map(),

// eslint-disable-next-line react/no-unused-state
panelState, // Dehydrated panel state that can load this panel
Expand Down Expand Up @@ -234,7 +236,8 @@ export class IrisGridPanel extends PureComponent {
userColumnWidths,
userRowHeights,
aggregationSettings,
advancedSettings
advancedSettings,
pendingDataMap
) =>
IrisGridUtils.dehydrateIrisGridState(table, {
advancedFilters,
Expand All @@ -256,6 +259,7 @@ export class IrisGridPanel extends PureComponent {
selectedSearchColumns,
sorts,
invertSearchColumns,
pendingDataMap,
})
);

Expand Down Expand Up @@ -299,20 +303,31 @@ export class IrisGridPanel extends PureComponent {
} = irisGridState;

if (customColumns.length > 0) {
modelQueue.push({ customColumns });
modelQueue.push(m => {
// eslint-disable-next-line no-param-reassign
m.customColumns = customColumns;
});
}

if (rollupConfig != null && rollupConfig.columns.length > 0) {
const rollupModelConfig = IrisGridUtils.getModelRollupConfig(
model.originalColumns,
rollupConfig,
aggregationSettings
);
modelQueue.push({ rollupConfig: rollupModelConfig });
// originalColumns might change by the time this model queue item is applied.
// Instead of pushing a static object, push the function
// that calculates the config based on the updated model state.
modelQueue.push(m => {
// eslint-disable-next-line no-param-reassign
m.rollupConfig = IrisGridUtils.getModelRollupConfig(
m.originalColumns,
rollupConfig,
aggregationSettings
);
});
}

if (selectDistinctColumns.length > 0) {
modelQueue.push({ selectDistinctColumns });
modelQueue.push(m => {
// eslint-disable-next-line no-param-reassign
m.selectDistinctColumns = selectDistinctColumns;
});
}
}

Expand All @@ -328,10 +343,8 @@ export class IrisGridPanel extends PureComponent {
}
const modelChange = modelQueue.shift();
log.debug('initModelQueue', modelChange);
// Model update triggers columnschanged event
Object.keys(modelChange).forEach(key => {
model[key] = modelChange[key];
});
// Apply next model change. Triggers columnschanged event.
modelChange(model);
this.setState({ modelQueue });
}

Expand Down Expand Up @@ -631,6 +644,7 @@ export class IrisGridPanel extends PureComponent {
selectDistinctColumns,
selectedSearchColumns,
invertSearchColumns,
pendingDataMap,
} = IrisGridUtils.hydrateIrisGridState(table, irisGridState);
const { movedColumns, movedRows } = IrisGridUtils.hydrateGridState(
table,
Expand Down Expand Up @@ -660,6 +674,7 @@ export class IrisGridPanel extends PureComponent {
selectDistinctColumns,
selectedSearchColumns,
invertSearchColumns,
pendingDataMap,
});
} catch (error) {
log.error('loadPanelState failed to load panelState', panelState, error);
Expand Down Expand Up @@ -692,6 +707,7 @@ export class IrisGridPanel extends PureComponent {
sorts,
invertSearchColumns,
metrics,
pendingDataMap,
} = irisGridState;
const { userColumnWidths, userRowHeights } = metrics;
const { movedColumns, movedRows } = gridState;
Expand Down Expand Up @@ -723,7 +739,8 @@ export class IrisGridPanel extends PureComponent {
userColumnWidths,
userRowHeights,
aggregationSettings,
advancedSettings
advancedSettings,
pendingDataMap
),
this.getDehydratedGridState(table, movedColumns, movedRows)
);
Expand Down Expand Up @@ -790,6 +807,7 @@ export class IrisGridPanel extends PureComponent {
Plugin,
pluginFilters,
pluginFetchColumns,
pendingDataMap,
} = this.state;
const errorMessage = error ? `Unable to open table. ${error}` : null;
const { table: name, querySerial } = metadata;
Expand Down Expand Up @@ -862,6 +880,7 @@ export class IrisGridPanel extends PureComponent {
onContextMenu={this.handleContextMenu}
onAdvancedSettingsChange={this.handleAdvancedSettingsChange}
customFilters={pluginFilters}
pendingDataMap={pendingDataMap}
ref={this.irisGrid}
>
{childrenContent}
Expand Down Expand Up @@ -892,6 +911,7 @@ IrisGridPanel.propTypes = {
rollupConfig: PropTypes.shape({
columns: PropTypes.arrayOf(PropTypes.string).isRequired,
}),
pendingDataMap: PropTypes.arrayOf(PropTypes.array),
}),
irisGridPanelState: PropTypes.shape({}),
}),
Expand Down
Loading