diff --git a/projects/components/src/table/controls/table-controls-api.ts b/projects/components/src/table/controls/table-controls-api.ts index 149fa04e7..406d518c1 100644 --- a/projects/components/src/table/controls/table-controls-api.ts +++ b/projects/components/src/table/controls/table-controls-api.ts @@ -37,6 +37,7 @@ export interface TablePropertyControlOption { export interface TableSelectControl { placeholder: string; + isMultiSelect: boolean; options: TableSelectControlOption[]; } diff --git a/projects/components/src/table/controls/table-controls.component.test.ts b/projects/components/src/table/controls/table-controls.component.test.ts index 643c7ad00..734d78560 100644 --- a/projects/components/src/table/controls/table-controls.component.test.ts +++ b/projects/components/src/table/controls/table-controls.component.test.ts @@ -62,6 +62,7 @@ describe('Table Controls component', () => { selectControls: [ { placeholder: 'test1', + isMultiSelect: true, options: [ { label: 'first1', @@ -88,6 +89,7 @@ describe('Table Controls component', () => { selectControls: [ { placeholder: 'test1', + isMultiSelect: true, options: [ { label: 'first1', diff --git a/projects/components/src/table/controls/table-controls.component.ts b/projects/components/src/table/controls/table-controls.component.ts index ede10a6e3..7c94717b9 100644 --- a/projects/components/src/table/controls/table-controls.component.ts +++ b/projects/components/src/table/controls/table-controls.component.ts @@ -43,21 +43,39 @@ import { > - - - + + + + + + + + + diff --git a/projects/observability/src/pages/apis/endpoints/endpoint-list.dashboard.ts b/projects/observability/src/pages/apis/endpoints/endpoint-list.dashboard.ts index 9c4069b1e..e3e8f9c53 100644 --- a/projects/observability/src/pages/apis/endpoints/endpoint-list.dashboard.ts +++ b/projects/observability/src/pages/apis/endpoints/endpoint-list.dashboard.ts @@ -22,7 +22,7 @@ export const endpointListDashboard: DashboardDefaultConfiguration = { searchAttribute: 'name', 'select-control-options': [ { - type: 'table-widget-select-option', + type: 'table-widget-multi-select-option', 'unique-values': true, placeholder: 'Services', data: { diff --git a/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-multi-select-option.model.ts b/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-multi-select-option.model.ts new file mode 100644 index 000000000..432b68c94 --- /dev/null +++ b/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-multi-select-option.model.ts @@ -0,0 +1,9 @@ +import { Model } from '@hypertrace/hyperdash'; +import { TableWidgetControlSelectOptionModel } from './table-widget-control-select-option.model'; + +@Model({ + type: 'table-widget-multi-select-option' +}) +export class TableWidgetControlMultiSelectOptionModel extends TableWidgetControlSelectOptionModel { + public readonly isMultiselect: boolean = true; +} diff --git a/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-select-option.model.ts b/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-select-option.model.ts index 5022a54dc..5556aaae9 100644 --- a/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-select-option.model.ts +++ b/projects/observability/src/shared/dashboard/widgets/table/table-widget-control-select-option.model.ts @@ -8,6 +8,8 @@ import { TableWidgetControlModel } from './table-widget-control.model'; type: 'table-widget-select-option' }) export class TableWidgetControlSelectOptionModel extends TableWidgetControlModel { + public readonly isMultiselect: boolean = false; + @ModelProperty({ key: 'placeholder', displayName: 'Placeholder', diff --git a/projects/observability/src/shared/dashboard/widgets/table/table-widget-renderer.component.ts b/projects/observability/src/shared/dashboard/widgets/table/table-widget-renderer.component.ts index 43e71d88f..36eb26ef3 100644 --- a/projects/observability/src/shared/dashboard/widgets/table/table-widget-renderer.component.ts +++ b/projects/observability/src/shared/dashboard/widgets/table/table-widget-renderer.component.ts @@ -255,6 +255,7 @@ export class TableWidgetRendererComponent return ( foundPreferences ?? { placeholder: selectControlModel.placeholder, + isMultiSelect: selectControlModel.isMultiselect, options: options.map(option => ({ ...option, applied: this.isFilterApplied(option.metaValue, filters) diff --git a/projects/observability/src/shared/dashboard/widgets/table/table-widget.module.ts b/projects/observability/src/shared/dashboard/widgets/table/table-widget.module.ts index 8059c76a8..9fedf75b8 100644 --- a/projects/observability/src/shared/dashboard/widgets/table/table-widget.module.ts +++ b/projects/observability/src/shared/dashboard/widgets/table/table-widget.module.ts @@ -14,6 +14,7 @@ import { TracingTableCellRendererModule } from '../../../components/table/tracin import { TableWidgetRowInteractionModel } from './selections/table-widget-row-interaction.model'; import { TableWidgetColumnModel } from './table-widget-column.model'; import { TableWidgetControlCheckboxOptionModel } from './table-widget-control-checkbox-option.model'; +import { TableWidgetControlMultiSelectOptionModel } from './table-widget-control-multi-select-option.model'; import { TableWidgetControlSelectOptionModel } from './table-widget-control-select-option.model'; import { TableWidgetRendererComponent } from './table-widget-renderer.component'; import { TableWidgetViewToggleModel } from './table-widget-view-toggle.model'; @@ -30,6 +31,7 @@ import { TableWidgetModel } from './table-widget.model'; TableWidgetRowInteractionModel, TableWidgetControlCheckboxOptionModel, TableWidgetControlSelectOptionModel, + TableWidgetControlMultiSelectOptionModel, WidgetHeaderModel, TableWidgetViewToggleModel, TableWidgetViewModel