42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
import { t } from 'app/core/internationalization';
|
|
import { OptionsPaneCategoryDescriptor } from 'app/features/dashboard/components/PanelEditor/OptionsPaneCategoryDescriptor';
|
|
|
|
import { EditableDashboardElementInfo } from '../types/EditableDashboardElement';
|
|
import { MultiSelectedEditableDashboardElement } from '../types/MultiSelectedEditableDashboardElement';
|
|
|
|
import { RowItem } from './RowItem';
|
|
import { getEditOptions } from './RowItemsEditor';
|
|
|
|
export class RowItems implements MultiSelectedEditableDashboardElement {
|
|
public readonly isMultiSelectedEditableDashboardElement = true;
|
|
public readonly key: string;
|
|
|
|
public constructor(private _rows: RowItem[]) {
|
|
this.key = uuidv4();
|
|
}
|
|
|
|
public getEditableElementInfo(): EditableDashboardElementInfo {
|
|
return { name: t('dashboard.edit-pane.elements.rows', 'Rows'), typeId: 'rows', icon: 'folder' };
|
|
}
|
|
|
|
public useEditPaneOptions(): OptionsPaneCategoryDescriptor[] {
|
|
return getEditOptions(this);
|
|
}
|
|
|
|
public getRows(): RowItem[] {
|
|
return this._rows;
|
|
}
|
|
|
|
public onDelete() {
|
|
this._rows.forEach((row) => row.onDelete());
|
|
}
|
|
|
|
public onHeaderHiddenToggle(value: boolean, indeterminate: boolean) {
|
|
this._rows.forEach((row) => row.onHeaderHiddenToggle(indeterminate ? true : !value));
|
|
}
|
|
|
|
public getNumberOfRowsSelected = () => this._rows.length;
|
|
}
|