@deephaven/iris-grid 0.19.1-beta.0 → 0.19.2-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.js +1 -1
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.js +2 -2
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +2 -2
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +8 -6
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +1 -1
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -2
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +23 -20
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -2
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +34 -26
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +2 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +1 -1
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js +4 -4
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +3 -3
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +1 -1
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +3 -3
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +0 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +0 -6
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +1 -1
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +2 -2
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +10 -10
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +51 -27
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +4 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +8 -6
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +3 -3
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +2 -2
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -2
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,aAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,aAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;IAyDlB,SAAS,IAAI,IAAI;IAQjB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAOrB,MAAM,IAAI,GAAG,CAAC,OAAO;CAkEtB;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -242,7 +242,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
242
242
|
} // Remove the hidden columns from the snapshot
|
|
243
243
|
|
|
244
244
|
|
|
245
|
-
var formatValue = formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => "".concat(value);
|
|
245
|
+
var formatValue = formatValues != null && formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => "".concat(value);
|
|
246
246
|
this.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));
|
|
247
247
|
this.fetchPromise.then(text => {
|
|
248
248
|
this.fetchPromise = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCopyHandler.js","names":["React","Component","classNames","CSSTransition","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","state","error","undefined","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","textData","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","fetchPromise","makeCancelable","textSnapshot","catch","cancel","hideTimer","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs"],"sources":["../src/IrisGridCopyHandler.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n PromiseUtils,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\nimport IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('IrisGridCopyHandler');\n\ntype Values<T> = T[keyof T];\n\ntype ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;\n\nexport type CopyOperation = {\n ranges: GridRange[];\n includeHeaders: boolean;\n formatValues?: boolean;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n error?: string;\n};\n\ninterface IrisGridCopyHandlerProps {\n model: IrisGridModel;\n copyOperation: CopyOperation;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n}\n\ninterface IrisGridCopyHandlerState {\n error?: string;\n copyState: string;\n buttonState: string;\n isShown: boolean;\n rowCount: number;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component<\n IrisGridCopyHandlerProps,\n IrisGridCopyHandlerState\n> {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static defaultProps = {\n copyOperation: null,\n onEntering: (): void => undefined,\n onEntered: (): void => undefined,\n onExiting: (): void => undefined,\n onExited: (): void => undefined,\n };\n\n static getStatusMessageText(copyState: string, rowCount: number): string {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState: ButtonStateType): string {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props: IrisGridCopyHandlerProps) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount(): void {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount(): void {\n this.stopCopy();\n }\n\n textData?: string;\n\n hideTimer?: ReturnType<typeof setTimeout>;\n\n fetchPromise?: CancelablePromise<string>;\n\n startCopy(): void {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: undefined });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy(): void {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick(): void {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick(): void {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick(): void {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout(): void {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text: string): void {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch(): void {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue = formatValues\n ? (value: unknown, column: Column) =>\n model.displayString(value, column.type, column.name)\n : (value: unknown) => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then((text: string) => {\n this.fetchPromise = undefined;\n this.copyText(text);\n })\n .catch((error: unknown) => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = undefined;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch(): void {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n\n startHideTimer(): void {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer(): void {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n\n render(): JSX.Element {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn', 'btn-copy', {\n 'btn-primary': !isFetching,\n 'btn-secondary': isFetching,\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nexport default IrisGridCopyHandler;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridCopyHandler.js","names":["React","Component","classNames","CSSTransition","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","state","error","undefined","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","textData","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","fetchPromise","makeCancelable","textSnapshot","catch","cancel","hideTimer","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs"],"sources":["../src/IrisGridCopyHandler.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n PromiseUtils,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\nimport IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('IrisGridCopyHandler');\n\ntype Values<T> = T[keyof T];\n\ntype ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;\n\nexport type CopyOperation = {\n ranges: GridRange[];\n includeHeaders: boolean;\n formatValues?: boolean;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n error?: string;\n};\n\ninterface IrisGridCopyHandlerProps {\n model: IrisGridModel;\n copyOperation: CopyOperation;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n}\n\ninterface IrisGridCopyHandlerState {\n error?: string;\n copyState: string;\n buttonState: string;\n isShown: boolean;\n rowCount: number;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component<\n IrisGridCopyHandlerProps,\n IrisGridCopyHandlerState\n> {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static defaultProps = {\n copyOperation: null,\n onEntering: (): void => undefined,\n onEntered: (): void => undefined,\n onExiting: (): void => undefined,\n onExited: (): void => undefined,\n };\n\n static getStatusMessageText(copyState: string, rowCount: number): string {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState: ButtonStateType): string {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props: IrisGridCopyHandlerProps) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount(): void {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount(): void {\n this.stopCopy();\n }\n\n textData?: string;\n\n hideTimer?: ReturnType<typeof setTimeout>;\n\n fetchPromise?: CancelablePromise<string>;\n\n startCopy(): void {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: undefined });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy(): void {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick(): void {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick(): void {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick(): void {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout(): void {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text: string): void {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch(): void {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue =\n formatValues != null && formatValues\n ? (value: unknown, column: Column) =>\n model.displayString(value, column.type, column.name)\n : (value: unknown) => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then((text: string) => {\n this.fetchPromise = undefined;\n this.copyText(text);\n })\n .catch((error: unknown) => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = undefined;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch(): void {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n\n startHideTimer(): void {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer(): void {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n\n render(): JSX.Element {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn', 'btn-copy', {\n 'btn-primary': !isFetching,\n 'btn-secondary': isFetching,\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nexport default IrisGridCopyHandler;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,SACEC,kBADF,EAEEC,cAFF,EAGEC,WAHF,QAIO,uBAJP;AAKA,SACEC,SADF,EAEEC,SAFF,QAKO,iBALP;AAMA,SAEEC,oBAFF,EAGEC,YAHF,QAIO,kBAJP;AAKA,OAAOC,GAAP,MAAgB,gBAAhB;OAEOC,a;OACAC,iB;;AAIP,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAJ,CAAW,qBAAX,CAAZ;;AA+BA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAN,SAAkCf,SAAlC,CAGE;EAKA;AACF;AACA;EAoC6B,OAApBgB,oBAAoB,CAACC,SAAD,EAAoBC,QAApB,EAA8C;IACvE,QAAQD,SAAR;MACE,KAAKF,mBAAmB,CAACI,WAApB,CAAgCC,qBAArC;QACE,+CAAwCF,QAAQ,CAACG,cAAT,EAAxC;;MACF,KAAKN,mBAAmB,CAACI,WAApB,CAAgCG,cAArC;QACE,yBAAkBJ,QAAQ,CAACG,cAAT,EAAlB;;MACF,KAAKN,mBAAmB,CAACI,WAApB,CAAgCI,WAArC;QACE,OAAO,sBAAP;;MACF,KAAKR,mBAAmB,CAACI,WAApB,CAAgCK,iBAArC;QACE,0BAAmBN,QAAQ,CAACG,cAAT,EAAnB;;MACF,KAAKN,mBAAmB,CAACI,WAApB,CAAgCM,IAArC;QACE,OAAO,sBAAP;;MACF;QACE,OAAO,EAAP;IAZJ;EAcD;;EAEuB,OAAjBC,iBAAiB,CAACC,WAAD,EAAuC;IAC7D,QAAQA,WAAR;MACE,KAAKZ,mBAAmB,CAACa,aAApB,CAAkCJ,iBAAvC;QACE,OAAO,UAAP;;MACF,KAAKT,mBAAmB,CAACa,aAApB,CAAkCC,aAAvC;QACE,OAAO,eAAP;;MACF,KAAKd,mBAAmB,CAACa,aAApB,CAAkCE,KAAvC;QACE,OAAO,OAAP;;MACF;QACE,OAAO,MAAP;IARJ;EAUD;;EAEDC,WAAW,CAACC,KAAD,EAAkC;IAC3C,MAAMA,KAAN;;IAD2C;;IAAA;;IAAA;;IAG3C,KAAKC,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BC,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKE,eAAL,GAAuB,KAAKA,eAAL,CAAqBF,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKG,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBH,IAAvB,CAA4B,IAA5B,CAAzB;IAEA,KAAKI,KAAL,GAAa;MACXC,KAAK,EAAEC,SADI;MAEXvB,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCsB,IAFhC;MAGXd,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCc,IAHpC;MAIXC,OAAO,EAAE,KAJE;MAKXzB,QAAQ,EAAE;IALC,CAAb;EAOD;;EAED0B,iBAAiB,GAAS;IACxB,IAAM;MAAEC;IAAF,IAAoB,KAAKb,KAA/B;;IACA,IAAIa,aAAa,IAAI,IAArB,EAA2B;MACzB,KAAKC,SAAL;IACD;EACF;;EAEDC,kBAAkB,CAACC,SAAD,EAA4C;IAC5D,IAAM;MAAEH;IAAF,IAAoB,KAAKb,KAA/B;;IACA,IAAIgB,SAAS,CAACH,aAAV,KAA4BA,aAAhC,EAA+C;MAC7C,KAAKC,SAAL;IACD;EACF;;EAEDG,oBAAoB,GAAS;IAC3B,KAAKC,QAAL;EACD;;EAQDJ,SAAS,GAAS;IAChBjC,GAAG,CAACsC,MAAJ,CAAW,WAAX;IAEA,KAAKD,QAAL;IAEA,IAAM;MAAEL;IAAF,IAAoB,KAAKb,KAA/B;;IACA,IAAIa,aAAa,IAAI,IAArB,EAA2B;MACzBhC,GAAG,CAACsC,MAAJ,CAAW,uCAAX;MACA,KAAKC,QAAL,CAAc;QAAET,OAAO,EAAE;MAAX,CAAd;MACA;IACD;;IAED,IAAM;MAAEU,MAAF;MAAUd;IAAV,IAAoBM,aAA1B;;IACA,IAAIN,KAAK,IAAI,IAAb,EAAmB;MACjB1B,GAAG,CAACyC,KAAJ,CAAU,oBAAV,EAAgCf,KAAhC;MACA,KAAKa,QAAL,CAAc;QACZT,OAAO,EAAE,IADG;QAEZ1B,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCM,IAF/B;QAGZc;MAHY,CAAd;MAKA,KAAKgB,cAAL;MACA;IACD;;IAED,IAAMrC,QAAQ,GAAGZ,SAAS,CAACY,QAAV,CAAmBmC,MAAnB,CAAjB;IAEA,KAAKD,QAAL,CAAc;MAAElC,QAAF;MAAYyB,OAAO,EAAE,IAArB;MAA2BJ,KAAK,EAAEC;IAAlC,CAAd;;IAEA,IAAItB,QAAQ,GAAGH,mBAAmB,CAACyC,mBAAnC,EAAwD;MACtD,KAAKJ,QAAL,CAAc;QACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCc,IADnC;QAEZzB,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCC;MAF/B,CAAd;IAID,CALD,MAKO;MACL,KAAKqC,UAAL;IACD;EACF;;EAEDP,QAAQ,GAAS;IACf,KAAKQ,QAAL,GAAgBlB,SAAhB;IACA,KAAKmB,SAAL;IACA,KAAKC,aAAL;EACD;;EAED3B,qBAAqB,GAAS;IAC5BpB,GAAG,CAACsC,MAAJ,CAAW,uBAAX;IAEA,IAAM;MAAElC;IAAF,IAAgB,KAAKqB,KAA3B;;IACA,IAAIrB,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IAAlD,EAAwD;MACtD,KAAK2B,QAAL,CAAc;QAAET,OAAO,EAAE;MAAX,CAAd;IACD;EACF;;EAEDR,iBAAiB,GAAS;IACxBtB,GAAG,CAACsC,MAAJ,CAAW,mBAAX;IAEA,KAAKQ,SAAL;IACA,KAAKP,QAAL,CAAc;MAAET,OAAO,EAAE;IAAX,CAAd;EACD;;EAEDP,eAAe,GAAS;IACtBvB,GAAG,CAACsC,MAAJ,CAAW,iBAAX;;IAEA,IAAI,KAAKO,QAAL,IAAiB,IAArB,EAA2B;MACzB,KAAKG,QAAL,CAAc,KAAKH,QAAnB;IACD,CAFD,MAEO;MACL,KAAKD,UAAL;IACD;EACF;;EAEDpB,iBAAiB,GAAS;IACxBxB,GAAG,CAACsC,MAAJ,CAAW,mBAAX;IAEA,KAAKS,aAAL;IAEA,KAAKR,QAAL,CAAc;MAAET,OAAO,EAAE;IAAX,CAAd;EACD;;EAEDkB,QAAQ,CAACC,IAAD,EAAqB;IAC3BjD,GAAG,CAACsC,MAAJ,CAAW,UAAX,EAAuBW,IAAvB;IAEA,KAAKJ,QAAL,GAAgBI,IAAhB;IAEA3D,kBAAkB,CAAC4D,eAAnB,CAAmCD,IAAnC,EAAyCE,IAAzC,CACE,MAAM;MACJ,KAAKZ,QAAL,CAAc;QAAEnC,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCM;MAA7C,CAAd;MACA,KAAK8B,cAAL;IACD,CAJH,EAKEhB,KAAK,IAAI;MACP1B,GAAG,CAAC0B,KAAJ,CAAU,gBAAV,EAA4BA,KAA5B;MACA,KAAKa,QAAL,CAAc;QACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCC,aADnC;QAEZZ,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCG;MAF/B,CAAd;IAID,CAXH;EAaD;;EAEDmC,UAAU,GAAS;IACjB,KAAKE,SAAL;IAEA,KAAKP,QAAL,CAAc;MACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCJ,iBADnC;MAEZP,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCK;IAF/B,CAAd;IAKA,IAAM;MAAEyC,KAAF;MAASpB;IAAT,IAA2B,KAAKb,KAAtC;IACA,IAAM;MACJqB,MADI;MAEJa,cAFI;MAGJC,gBAHI;MAIJC,YAJI;MAKJC;IALI,IAMFxB,aANJ;IAOAhC,GAAG,CAACyC,KAAJ,CAAU,YAAV,EAAwBD,MAAxB;IAEA,IAAMiB,aAAa,GAAG3D,aAAa,CAAC4D,gBAAd,CAA+BJ,gBAA/B,CAAtB;IACA,IAAIK,WAAW,GAAGjE,SAAS,CAACkE,cAAV,CAAyBpB,MAAzB,EAAiCe,YAAjC,CAAlB;;IACA,IAAIE,aAAa,CAACI,MAAd,GAAuB,CAA3B,EAA8B;MAC5B,IAAMC,cAAc,GAAGL,aAAa,CAACM,GAAd,CAAkBtE,SAAS,CAACuE,UAA5B,CAAvB;MACAL,WAAW,GAAGlE,SAAS,CAACwE,wBAAV,CACZN,WADY,EAEZG,cAFY,CAAd;IAID,CA1BgB,CA4BjB;;;IACA,IAAMI,WAAW,GACfV,YAAY,IAAI,IAAhB,IAAwBA,YAAxB,GACI,CAACW,KAAD,EAAiBC,MAAjB,KACEhB,KAAK,CAACiB,aAAN,CAAoBF,KAApB,EAA2BC,MAAM,CAACE,IAAlC,EAAwCF,MAAM,CAACG,IAA/C,CAFN,GAGKJ,KAAD,cAAuBA,KAAvB,CAJN;IAMA,KAAKK,YAAL,GAAoB5E,YAAY,CAAC6E,cAAb,CAClBrB,KAAK,CAACsB,YAAN,CAAmBf,WAAnB,EAAgCN,cAAhC,EAAgDa,WAAhD,CADkB,CAApB;IAGA,KAAKM,YAAL,CACGrB,IADH,CACSF,IAAD,IAAkB;MACtB,KAAKuB,YAAL,GAAoB7C,SAApB;MACA,KAAKqB,QAAL,CAAcC,IAAd;IACD,CAJH,EAKG0B,KALH,CAKUjD,KAAD,IAAoB;MACzB,IAAIA,KAAK,YAAY/B,oBAArB,EAA2C;QACzCK,GAAG,CAACyC,KAAJ,CAAU,sBAAV;MACD,CAFD,MAEO;QACLzC,GAAG,CAAC0B,KAAJ,CAAU,yBAAV,EAAqCA,KAArC;QACA,KAAK8C,YAAL,GAAoB7C,SAApB;QACA,KAAKY,QAAL,CAAc;UACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCE,KADnC;UAEZb,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCI;QAF/B,CAAd;MAID;IACF,CAhBH;EAiBD;;EAEDoC,SAAS,GAAS;IAChB,IAAI,KAAK0B,YAAT,EAAuB;MACrBxE,GAAG,CAACsC,MAAJ,CAAW,WAAX;MACA,KAAKkC,YAAL,CAAkBI,MAAlB;MACA,KAAKJ,YAAL,GAAoB7C,SAApB;IACD;EACF;;EAEDe,cAAc,GAAS;IACrB,KAAKK,aAAL;IAEA,KAAK8B,SAAL,GAAiBC,UAAU,CACzB,KAAKtD,iBADoB,EAEzBtB,mBAAmB,CAAC6E,YAFK,CAA3B;EAID;;EAEDhC,aAAa,GAAS;IACpB,IAAI,KAAK8B,SAAL,IAAkB,IAAtB,EAA4B;MAC1BG,YAAY,CAAC,KAAKH,SAAN,CAAZ;MACA,KAAKA,SAAL,GAAiBlD,SAAjB;IACD;EACF;;EAEDsD,MAAM,GAAgB;IACpB,IAAM;MAAEC,UAAF;MAAcC,SAAd;MAAyBC,SAAzB;MAAoCC;IAApC,IAAiD,KAAKlE,KAA5D;IACA,IAAM;MAAEL,WAAF;MAAeV,SAAf;MAA0B0B,OAA1B;MAAmCzB,QAAnC;MAA6CqB;IAA7C,IAAuD,KAAKD,KAAlE;IAEA,IAAM6D,SAAS,GACblF,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IAA9C,GACI,MADJ,GAEI,eAHN;IAIA,IAAM2E,cAAc,GAAGrF,mBAAmB,CAACW,iBAApB,CAAsCC,WAAtC,CAAvB;IACA,IAAM0E,iBAAiB,GACrB9D,KADqB,aACrBA,KADqB,cACrBA,KADqB,GACZxB,mBAAmB,CAACC,oBAApB,CAAyCC,SAAzC,EAAoDC,QAApD,CADX;IAEA,IAAMoF,wBAAwB,GAC5BrF,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IADhD;IAEA,IAAM8E,UAAU,GACd5E,WAAW,KAAKZ,mBAAmB,CAACa,aAApB,CAAkCJ,iBADpD;IAEA,IAAMgF,MAAM,GAAGvF,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IAA7D;IAEA,oBACE,oBAAC,iBAAD;MACE,SAAS,EAAE0E,SADb;MAEE,OAAO,EAAExD,OAFX;MAGE,SAAS,EAAE1C,UAAU,CAAC,wBAAD,EAA2B;QAC9C,aAAauG;MADiC,CAA3B,CAHvB;MAME,OAAO,EAAE,KAAKvE,qBANhB;MAOE,UAAU,EAAE8D,UAPd;MAQE,SAAS,EAAEC,SARb;MASE,SAAS,EAAEC,SATb;MAUE,QAAQ,EAAEC;IAVZ,gBAYE;MAAK,SAAS,EAAC;IAAf,gBACE,kCAAOG,iBAAP,CADF,CAZF,eAeE,oBAAC,aAAD;MACE,EAAE,EAAEC,wBADN;MAEE,OAAO,EAAEjG,WAAW,CAACoG,YAFvB;MAGE,UAAU,EAAC,MAHb;MAIE,YAAY,MAJd;MAKE,aAAa;IALf,gBAOE;MAAK,SAAS,EAAC;IAAf,gBACE;MACE,IAAI,EAAC,QADP;MAEE,SAAS,EAAC,sCAFZ;MAGE,OAAO,EAAE,KAAKtE;IAHhB,YADF,eAQE;MACE,IAAI,EAAC,QADP;MAEE,SAAS,EAAElC,UAAU,CAAC,KAAD,EAAQ,UAAR,EAAoB;QACvC,eAAe,CAACsG,UADuB;QAEvC,iBAAiBA,UAFsB;QAGvC,eAAeA;MAHwB,CAApB,CAFvB;MAOE,OAAO,EAAE,KAAKnE,eAPhB;MAQE,QAAQ,EAAEmE;IARZ,GAUGA,UAAU,iBAAI,oBAAC,cAAD,OAVjB,EAWGH,cAXH,CARF,CAPF,CAfF,CADF;EAgDD;;AAtWD;;gBAHIrF,mB,yBAIyB,K;;gBAJzBA,mB,kBAMkB,I;;gBANlBA,mB,iBAWiB;EACnB;EACA0B,IAAI,EAAE,MAFa;EAInB;EACArB,qBAAqB,EAAE,uBALJ;EAOnB;EACAI,iBAAiB,EAAE,mBARA;EAUnB;EACAD,WAAW,EAAE,aAXM;EAanB;EACAD,cAAc,EAAE,gBAdG;EAgBnB;EACAG,IAAI,EAAE;AAjBa,C;;gBAXjBV,mB,mBA+BmB;EACrB2B,IAAI,EAAE,MADe;EAErBlB,iBAAiB,EAAE,mBAFE;EAGrBK,aAAa,EAAE,eAHM;EAIrBC,KAAK,EAAE;AAJc,C;;gBA/BnBf,mB,kBAsCkB;EACpB8B,aAAa,EAAE,IADK;EAEpBkD,UAAU,EAAE,MAAYvD,SAFJ;EAGpBwD,SAAS,EAAE,MAAYxD,SAHH;EAIpByD,SAAS,EAAE,MAAYzD,SAJH;EAKpB0D,QAAQ,EAAE,MAAY1D;AALF,C;;AAsUxB,eAAezB,mBAAf"}
|
|
@@ -40,11 +40,11 @@ class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
40
40
|
|
|
41
41
|
if (isFilterBarShown) {
|
|
42
42
|
gridY += theme.filterBarHeight;
|
|
43
|
-
} else if (quickFilters && quickFilters.size > 0 || advancedFilters && advancedFilters.size > 0) {
|
|
43
|
+
} else if (quickFilters != null && quickFilters.size > 0 || advancedFilters != null && advancedFilters.size > 0) {
|
|
44
44
|
gridY += theme.filterBarCollapsedHeight;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts && sorts.length > 0) {
|
|
47
|
+
if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts != null && sorts.length > 0) {
|
|
48
48
|
gridY += theme.reverseHeaderBarHeight;
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getVisibleColumnWidth","column","state","firstColumn","getFirstColumn","treePaddingX","calculateTreePaddingX","model","hiddenColumns","layoutHints","modelColumn","getModelColumn","columnWidth","hasUserSetWidth","userColumnWidths","has","includes","columns","name","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { VisibleIndex, GridMetricState } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\n}\n\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nclass IrisGridMetricCalculator extends GridMetricCalculator {\n getVisibleColumnWidth(\n column: VisibleIndex,\n state: IrisGridMetricState,\n firstColumn: VisibleIndex = this.getFirstColumn(state),\n treePaddingX = this.calculateTreePaddingX(state)\n ): number {\n const { model } = state;\n const hiddenColumns = model.layoutHints?.hiddenColumns ?? [];\n const modelColumn = this.getModelColumn(column, state);\n\n // Need to make sure super is called so column width is always re-calculated correctly\n const columnWidth = super.getVisibleColumnWidth(\n column,\n state,\n firstColumn,\n treePaddingX\n );\n const hasUserSetWidth = this.userColumnWidths.has(modelColumn);\n if (\n !hasUserSetWidth &&\n hiddenColumns.includes(model.columns[modelColumn]?.name)\n ) {\n return 0;\n }\n return columnWidth;\n }\n\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverseType,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAT,QAAmD,iBAAnD;AAGA,SAASC,UAAT,QAA2B,wBAA3B;;AAiBA;AACA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCF,oBAAvC,CAA4D;EAC1DG,qBAAqB,CACnBC,MADmB,EAEnBC,KAFmB,EAKX;IAAA;;IAAA,IAFRC,WAEQ,uEAFoB,KAAKC,cAAL,CAAoBF,KAApB,CAEpB;IAAA,IADRG,YACQ,uEADO,KAAKC,qBAAL,CAA2BJ,KAA3B,CACP;IACR,IAAM;MAAEK;IAAF,IAAYL,KAAlB;IACA,IAAMM,aAAa,kDAAGD,KAAK,CAACE,WAAT,uDAAG,mBAAmBD,aAAtB,yEAAuC,EAA1D;IACA,IAAME,WAAW,GAAG,KAAKC,cAAL,CAAoBV,MAApB,EAA4BC,KAA5B,CAApB,CAHQ,CAKR;;IACA,IAAMU,WAAW,GAAG,MAAMZ,qBAAN,CAClBC,MADkB,EAElBC,KAFkB,EAGlBC,WAHkB,EAIlBE,YAJkB,CAApB;IAMA,IAAMQ,eAAe,GAAG,KAAKC,gBAAL,CAAsBC,GAAtB,CAA0BL,WAA1B,CAAxB;;IACA,IACE,CAACG,eAAD,IACAL,aAAa,CAACQ,QAAd,0BAAuBT,KAAK,CAACU,OAAN,CAAcP,WAAd,CAAvB,0DAAuB,sBAA4BQ,IAAnD,CAFF,EAGE;MACA,OAAO,CAAP;IACD;;IACD,OAAON,WAAP;EACD;;EAEDO,QAAQ,CAACjB,KAAD,EAAqC;IAC3C,IAAIkB,KAAK,GAAG,MAAMD,QAAN,CAAejB,KAAf,CAAZ;IACA,IAAM;MACJmB,gBADI;MAEJC,KAFI;MAGJC,eAHI;MAIJC,YAJI;MAKJC,KALI;MAMJC;IANI,IAOFxB,KAPJ;;IAQA,IAAImB,gBAAJ,EAAsB;MACpBD,KAAK,IAAIE,KAAK,CAACK,eAAf;IACD,CAFD,MAEO,IACJH,YAAY,
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getVisibleColumnWidth","column","state","firstColumn","getFirstColumn","treePaddingX","calculateTreePaddingX","model","hiddenColumns","layoutHints","modelColumn","getModelColumn","columnWidth","hasUserSetWidth","userColumnWidths","has","includes","columns","name","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { VisibleIndex, GridMetricState } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\n}\n\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nclass IrisGridMetricCalculator extends GridMetricCalculator {\n getVisibleColumnWidth(\n column: VisibleIndex,\n state: IrisGridMetricState,\n firstColumn: VisibleIndex = this.getFirstColumn(state),\n treePaddingX = this.calculateTreePaddingX(state)\n ): number {\n const { model } = state;\n const hiddenColumns = model.layoutHints?.hiddenColumns ?? [];\n const modelColumn = this.getModelColumn(column, state);\n\n // Need to make sure super is called so column width is always re-calculated correctly\n const columnWidth = super.getVisibleColumnWidth(\n column,\n state,\n firstColumn,\n treePaddingX\n );\n const hasUserSetWidth = this.userColumnWidths.has(modelColumn);\n if (\n !hasUserSetWidth &&\n hiddenColumns.includes(model.columns[modelColumn]?.name)\n ) {\n return 0;\n }\n return columnWidth;\n }\n\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverseType,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts != null &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAT,QAAmD,iBAAnD;AAGA,SAASC,UAAT,QAA2B,wBAA3B;;AAiBA;AACA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCF,oBAAvC,CAA4D;EAC1DG,qBAAqB,CACnBC,MADmB,EAEnBC,KAFmB,EAKX;IAAA;;IAAA,IAFRC,WAEQ,uEAFoB,KAAKC,cAAL,CAAoBF,KAApB,CAEpB;IAAA,IADRG,YACQ,uEADO,KAAKC,qBAAL,CAA2BJ,KAA3B,CACP;IACR,IAAM;MAAEK;IAAF,IAAYL,KAAlB;IACA,IAAMM,aAAa,kDAAGD,KAAK,CAACE,WAAT,uDAAG,mBAAmBD,aAAtB,yEAAuC,EAA1D;IACA,IAAME,WAAW,GAAG,KAAKC,cAAL,CAAoBV,MAApB,EAA4BC,KAA5B,CAApB,CAHQ,CAKR;;IACA,IAAMU,WAAW,GAAG,MAAMZ,qBAAN,CAClBC,MADkB,EAElBC,KAFkB,EAGlBC,WAHkB,EAIlBE,YAJkB,CAApB;IAMA,IAAMQ,eAAe,GAAG,KAAKC,gBAAL,CAAsBC,GAAtB,CAA0BL,WAA1B,CAAxB;;IACA,IACE,CAACG,eAAD,IACAL,aAAa,CAACQ,QAAd,0BAAuBT,KAAK,CAACU,OAAN,CAAcP,WAAd,CAAvB,0DAAuB,sBAA4BQ,IAAnD,CAFF,EAGE;MACA,OAAO,CAAP;IACD;;IACD,OAAON,WAAP;EACD;;EAEDO,QAAQ,CAACjB,KAAD,EAAqC;IAC3C,IAAIkB,KAAK,GAAG,MAAMD,QAAN,CAAejB,KAAf,CAAZ;IACA,IAAM;MACJmB,gBADI;MAEJC,KAFI;MAGJC,eAHI;MAIJC,YAJI;MAKJC,KALI;MAMJC;IANI,IAOFxB,KAPJ;;IAQA,IAAImB,gBAAJ,EAAsB;MACpBD,KAAK,IAAIE,KAAK,CAACK,eAAf;IACD,CAFD,MAEO,IACJH,YAAY,IAAI,IAAhB,IAAwBA,YAAY,CAACI,IAAb,GAAoB,CAA7C,IACCL,eAAe,IAAI,IAAnB,IAA2BA,eAAe,CAACK,IAAhB,GAAuB,CAF9C,EAGL;MACAR,KAAK,IAAIE,KAAK,CAACO,wBAAf;IACD;;IACD,IACEH,WAAW,KAAK5B,UAAU,CAACgC,YAAX,CAAwBC,IAAxC,IACAN,KAAK,IAAI,IADT,IAEAA,KAAK,CAACO,MAAN,GAAe,CAHjB,EAIE;MACAZ,KAAK,IAAIE,KAAK,CAACW,sBAAf;IACD;;IAED,OAAOb,KAAP;EACD;;EAEDc,mBAAmB,GAAiB;IAClC,OAAO,KAAKpB,gBAAZ;EACD;;AA3DyD;;AA8D5D,eAAef,wBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,UAAU,EAEV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EAEb,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAc,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAY5C,oBAAY,mBAAmB,GAAG,eAAe,GAAG;IAClD,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,iBAAiB,EAAE,cAAc,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,iBAAiB,CAAC;IACnC,YAAY,EAAE,cAAc,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AACF;;KAEK;AACL,cAAM,gBAAiB,SAAQ,YAAY;IACzC,MAAM,CAAC,aAAa,CAClB,cAAc,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,EACjD,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,GAC1C,OAAO;;IAeV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,SAAS,IAAI,IAAI;IASjB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAcnD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7B,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IAa7C,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAM5C,QAAQ,CACN,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAKP,aAAa,CACX,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAQP,eAAe,CACb,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,GAChB,IAAI;IAsBP,qBAAqB,CACnB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;
|
|
1
|
+
{"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"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"}
|
package/dist/IrisGridRenderer.js
CHANGED
|
@@ -148,7 +148,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
148
148
|
visibleColumnXs
|
|
149
149
|
} = metrics;
|
|
150
150
|
|
|
151
|
-
if (groupedColumns.length === 0 ||
|
|
151
|
+
if (groupedColumns.length === 0 || theme.groupedColumnDividerColor == null) {
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
154
154
|
|
|
@@ -214,7 +214,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
214
214
|
hoverSelectColumn
|
|
215
215
|
} = state;
|
|
216
216
|
|
|
217
|
-
if (hoverSelectColumn == null ||
|
|
217
|
+
if (hoverSelectColumn == null || theme.linkerColumnHoverBackgroundColor == null) {
|
|
218
218
|
return;
|
|
219
219
|
}
|
|
220
220
|
|
|
@@ -267,7 +267,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
267
267
|
context.globalCompositeOperation = 'color';
|
|
268
268
|
context.filter = "blur(".concat(scrimBlurSize, "px)");
|
|
269
269
|
|
|
270
|
-
if (scrimColor) {
|
|
270
|
+
if (scrimColor != null) {
|
|
271
271
|
context.fillStyle = scrimColor;
|
|
272
272
|
} // Clip the path so the top edge is hard edge, bottom edge is soft/blurry
|
|
273
273
|
|
|
@@ -372,6 +372,8 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
372
372
|
}
|
|
373
373
|
|
|
374
374
|
drawColumnHeaderAtIndex(context, state, index, bounds) {
|
|
375
|
+
var _fontWidths$get;
|
|
376
|
+
|
|
375
377
|
super.drawColumnHeaderAtIndex(context, state, index, bounds);
|
|
376
378
|
var {
|
|
377
379
|
metrics,
|
|
@@ -415,7 +417,8 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
415
417
|
return;
|
|
416
418
|
}
|
|
417
419
|
|
|
418
|
-
var fontWidth = fontWidths.get(context.font)
|
|
420
|
+
var fontWidth = (_fontWidths$get = fontWidths.get(context.font)) !== null && _fontWidths$get !== void 0 ? _fontWidths$get : GridRenderer.DEFAULT_FONT_WIDTH;
|
|
421
|
+
assertNotNull(fontWidth);
|
|
419
422
|
var textWidth = text.length * fontWidth;
|
|
420
423
|
var textRight = gridX + columnX + textWidth + headerHorizontalPadding;
|
|
421
424
|
var {
|
|
@@ -445,7 +448,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
445
448
|
|
|
446
449
|
if (isFilterBarShown) {
|
|
447
450
|
this.drawExpandedFilterHeaders(context, state);
|
|
448
|
-
} else if (quickFilters && quickFilters.size > 0 || advancedFilters && advancedFilters.size > 0) {
|
|
451
|
+
} else if (quickFilters != null && quickFilters.size > 0 || advancedFilters != null && advancedFilters.size > 0) {
|
|
449
452
|
this.drawCollapsedFilterHeaders(context, state);
|
|
450
453
|
}
|
|
451
454
|
}
|
|
@@ -480,7 +483,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
480
483
|
context.font = theme.font;
|
|
481
484
|
context.textAlign = 'left';
|
|
482
485
|
|
|
483
|
-
if (quickFilters && quickFilters.size > 0 || advancedFilters && advancedFilters.size > 0) {
|
|
486
|
+
if (quickFilters != null && quickFilters.size > 0 || advancedFilters != null && advancedFilters.size > 0) {
|
|
484
487
|
// fill style if a fiter is set on any column
|
|
485
488
|
context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;
|
|
486
489
|
} else {
|
|
@@ -570,13 +573,13 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
570
573
|
text = TableUtils.getFilterText(quickFilter.filter);
|
|
571
574
|
}
|
|
572
575
|
|
|
573
|
-
if (text) {
|
|
576
|
+
if (text != null) {
|
|
574
577
|
var {
|
|
575
578
|
fontWidths
|
|
576
579
|
} = metrics;
|
|
577
580
|
var fontWidth = fontWidths.get(context.font);
|
|
578
581
|
|
|
579
|
-
if (
|
|
582
|
+
if (fontWidth == null || fontWidth === 0) {
|
|
580
583
|
fontWidth = context.measureText('8').width;
|
|
581
584
|
|
|
582
585
|
if (!fontWidth) {
|
|
@@ -597,7 +600,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
597
600
|
context.save();
|
|
598
601
|
var isFilterValid = IrisGridRenderer.isFilterValid(advancedFilter, quickFilter);
|
|
599
602
|
|
|
600
|
-
if (isFilterValid && filterBarExpandedActiveCellBackgroundColor) {
|
|
603
|
+
if (isFilterValid && filterBarExpandedActiveCellBackgroundColor != null) {
|
|
601
604
|
// draw active filter background inside cell
|
|
602
605
|
context.fillStyle = filterBarExpandedActiveCellBackgroundColor;
|
|
603
606
|
context.fillRect(columnX + 1, // +1 left border
|
|
@@ -605,7 +608,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
605
608
|
columnWidth - 1, // -1 right border
|
|
606
609
|
filterBarHeight - 3 // -3 top, bottom border and bottom casing
|
|
607
610
|
);
|
|
608
|
-
} else if (filterBarErrorColor) {
|
|
611
|
+
} else if (filterBarErrorColor != null) {
|
|
609
612
|
// draw error box inside cell
|
|
610
613
|
context.fillStyle = filterBarErrorColor;
|
|
611
614
|
context.lineWidth = 2;
|
|
@@ -623,7 +626,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
623
626
|
context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);
|
|
624
627
|
}
|
|
625
628
|
|
|
626
|
-
if (text) {
|
|
629
|
+
if (text != null && text !== '') {
|
|
627
630
|
var textX = columnX + filterBarHorizontalPadding;
|
|
628
631
|
var textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border
|
|
629
632
|
|
|
@@ -705,11 +708,11 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
705
708
|
context.save();
|
|
706
709
|
var isFilterValid = IrisGridRenderer.isFilterValid(advancedFilter, quickFilter);
|
|
707
710
|
|
|
708
|
-
if (filterBarActiveBackgroundColor && quickFilter == null && advancedFilter == null) {
|
|
711
|
+
if (filterBarActiveBackgroundColor != null && quickFilter == null && advancedFilter == null) {
|
|
709
712
|
context.fillStyle = filterBarActiveBackgroundColor;
|
|
710
|
-
} else if (filterBarActiveColor && isFilterValid) {
|
|
713
|
+
} else if (filterBarActiveColor != null && isFilterValid) {
|
|
711
714
|
context.fillStyle = filterBarActiveColor;
|
|
712
|
-
} else if (filterBarErrorColor) {
|
|
715
|
+
} else if (filterBarErrorColor != null) {
|
|
713
716
|
context.fillStyle = filterBarErrorColor;
|
|
714
717
|
}
|
|
715
718
|
|
|
@@ -790,9 +793,9 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
790
793
|
}
|
|
791
794
|
|
|
792
795
|
context.fill();
|
|
793
|
-
var mouseRow = mouseX && mouseY && mouseX >= gridX && mouseX <= maxX + rowFooterWidth ? GridUtils.getRowAtY(mouseY, metrics) : null;
|
|
796
|
+
var mouseRow = mouseX != null && mouseY != null && mouseX >= gridX && mouseX <= maxX + rowFooterWidth ? GridUtils.getRowAtY(mouseY, metrics) : null;
|
|
794
797
|
|
|
795
|
-
if (rowHoverBackgroundColor && mouseRow !== null && floatingRows.includes(mouseRow)) {
|
|
798
|
+
if (rowHoverBackgroundColor != null && mouseRow !== null && floatingRows.includes(mouseRow)) {
|
|
796
799
|
context.fillStyle = rowHoverBackgroundColor;
|
|
797
800
|
var y = visibleRowYs.get(mouseRow);
|
|
798
801
|
var rowHeight = visibleRowHeights.get(mouseRow);
|
|
@@ -803,7 +806,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
803
806
|
|
|
804
807
|
context.beginPath();
|
|
805
808
|
|
|
806
|
-
if (floatingGridRowColor) {
|
|
809
|
+
if (floatingGridRowColor != null) {
|
|
807
810
|
context.strokeStyle = floatingGridRowColor;
|
|
808
811
|
}
|
|
809
812
|
|
|
@@ -865,7 +868,7 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
865
868
|
left
|
|
866
869
|
} = this.getCellOverflowButtonPosition(state);
|
|
867
870
|
|
|
868
|
-
if (this.shouldRenderOverflowButton(state) && left) {
|
|
871
|
+
if (this.shouldRenderOverflowButton(state) && left != null) {
|
|
869
872
|
textMetrics.width = left - metrics.gridX - textMetrics.x;
|
|
870
873
|
}
|
|
871
874
|
}
|
|
@@ -986,9 +989,9 @@ class IrisGridRenderer extends GridRenderer {
|
|
|
986
989
|
} = theme;
|
|
987
990
|
context.save();
|
|
988
991
|
|
|
989
|
-
if (overflowButtonHoverColor && buttonLeft != null && buttonWidth != null && buttonTop != null && buttonHeight != null && mouseX >= buttonLeft && mouseX <= buttonLeft + buttonWidth && mouseY >= buttonTop && mouseY <= buttonTop + buttonHeight) {
|
|
992
|
+
if (overflowButtonHoverColor != null && buttonLeft != null && buttonWidth != null && buttonTop != null && buttonHeight != null && mouseX >= buttonLeft && mouseX <= buttonLeft + buttonWidth && mouseY >= buttonTop && mouseY <= buttonTop + buttonHeight) {
|
|
990
993
|
context.fillStyle = overflowButtonHoverColor;
|
|
991
|
-
} else if (overflowButtonColor) {
|
|
994
|
+
} else if (overflowButtonColor != null) {
|
|
992
995
|
context.fillStyle = overflowButtonColor;
|
|
993
996
|
}
|
|
994
997
|
|