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