PROD-5643: Pagination settings improvements
This commit is contained in:
parent
6ff0d7247b
commit
7c14eaaaac
@ -31,6 +31,7 @@ import {
|
|||||||
isNotEmptyTbFunction,
|
isNotEmptyTbFunction,
|
||||||
TbFunction
|
TbFunction
|
||||||
} from '@shared/models/js-function.models';
|
} from '@shared/models/js-function.models';
|
||||||
|
import { UntypedFormGroup } from '@angular/forms';
|
||||||
|
|
||||||
const varsRegex = /\${([^}]*)}/g;
|
const varsRegex = /\${([^}]*)}/g;
|
||||||
|
|
||||||
@ -926,3 +927,15 @@ export const unwrapModule = (module: any) : any => {
|
|||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function buildPageStepSizeValues(formGroup: UntypedFormGroup, pageSteps: Array<number>): void {
|
||||||
|
const pageStepCount = formGroup.get('pageStepCount')?.value;
|
||||||
|
const pageStepSize = formGroup.get('pageStepSize')?.value;
|
||||||
|
pageSteps.length = 0;
|
||||||
|
if (isDefinedAndNotNull(pageStepCount) && pageStepCount > 0 && pageStepCount <= 100 &&
|
||||||
|
isDefinedAndNotNull(pageStepSize) && pageStepSize > 0) {
|
||||||
|
for (let i = 1; i <= pageStepCount; i++) {
|
||||||
|
pageSteps.push(pageStepSize * i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -185,7 +185,7 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
|
|||||||
public enableStickyHeader = true;
|
public enableStickyHeader = true;
|
||||||
public enableStickyAction = false;
|
public enableStickyAction = false;
|
||||||
public showCellActionsMenu = true;
|
public showCellActionsMenu = true;
|
||||||
public pageSizeOptions;
|
public pageSizeOptions = [];
|
||||||
public pageLink: AlarmDataPageLink;
|
public pageLink: AlarmDataPageLink;
|
||||||
public sortOrderProperty: string;
|
public sortOrderProperty: string;
|
||||||
public textSearchMode = false;
|
public textSearchMode = false;
|
||||||
@ -213,7 +213,7 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
|
|||||||
private allowClear = true;
|
private allowClear = true;
|
||||||
public allowAssign = true;
|
public allowAssign = true;
|
||||||
|
|
||||||
private defaultPageSize = 10;
|
private defaultPageSize;
|
||||||
private defaultSortOrder = '-' + alarmFields.createdTime.value;
|
private defaultSortOrder = '-' + alarmFields.createdTime.value;
|
||||||
|
|
||||||
private contentsInfo: {[key: string]: CellContentInfo} = {};
|
private contentsInfo: {[key: string]: CellContentInfo} = {};
|
||||||
@ -392,10 +392,26 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
|
|||||||
this.rowStylesInfo = getRowStyleInfo(this.ctx, this.settings, 'alarm, ctx');
|
this.rowStylesInfo = getRowStyleInfo(this.ctx, this.settings, 'alarm, ctx');
|
||||||
|
|
||||||
const pageSize = this.settings.defaultPageSize;
|
const pageSize = this.settings.defaultPageSize;
|
||||||
|
let pageStepSize = this.settings.pageStepSize;
|
||||||
|
let pageStepCount = this.settings.pageStepCount;
|
||||||
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
||||||
this.defaultPageSize = pageSize;
|
this.defaultPageSize = pageSize;
|
||||||
}
|
}
|
||||||
this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3];
|
if (isDefinedAndNotNull(pageStepSize) && isDefinedAndNotNull(pageStepCount)) {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = pageStepSize;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = 10;
|
||||||
|
}
|
||||||
|
pageStepSize = this.defaultPageSize;
|
||||||
|
pageStepCount = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i <= pageStepCount; i++) {
|
||||||
|
this.pageSizeOptions.push(pageStepSize * i);
|
||||||
|
}
|
||||||
this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : 1024;
|
this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : 1024;
|
||||||
|
|
||||||
const alarmFilter = this.entityService.resolveAlarmFilter(this.widgetConfig.alarmFilterConfig, false);
|
const alarmFilter = this.entityService.resolveAlarmFilter(this.widgetConfig.alarmFilterConfig, false);
|
||||||
|
|||||||
@ -42,7 +42,7 @@ import {
|
|||||||
import { IWidgetSubscription } from '@core/api/widget-api.models';
|
import { IWidgetSubscription } from '@core/api/widget-api.models';
|
||||||
import { UtilsService } from '@core/services/utils.service';
|
import { UtilsService } from '@core/services/utils.service';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { deepClone, hashCode, isDefined, isNumber, isObject, isUndefined } from '@core/utils';
|
import { deepClone, hashCode, isDefined, isDefinedAndNotNull, isNumber, isObject, isUndefined } from '@core/utils';
|
||||||
import cssjs from '@core/css/css';
|
import cssjs from '@core/css/css';
|
||||||
import { CollectionViewer, DataSource } from '@angular/cdk/collections';
|
import { CollectionViewer, DataSource } from '@angular/cdk/collections';
|
||||||
import { DataKeyType } from '@shared/models/telemetry/telemetry.models';
|
import { DataKeyType } from '@shared/models/telemetry/telemetry.models';
|
||||||
@ -139,7 +139,7 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni
|
|||||||
public enableStickyHeader = true;
|
public enableStickyHeader = true;
|
||||||
public enableStickyAction = true;
|
public enableStickyAction = true;
|
||||||
public showCellActionsMenu = true;
|
public showCellActionsMenu = true;
|
||||||
public pageSizeOptions;
|
public pageSizeOptions = [];
|
||||||
public pageLink: EntityDataPageLink;
|
public pageLink: EntityDataPageLink;
|
||||||
public sortOrderProperty: string;
|
public sortOrderProperty: string;
|
||||||
public textSearchMode = false;
|
public textSearchMode = false;
|
||||||
@ -161,7 +161,7 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni
|
|||||||
private widgetResize$: ResizeObserver;
|
private widgetResize$: ResizeObserver;
|
||||||
private destroy$ = new Subject<void>();
|
private destroy$ = new Subject<void>();
|
||||||
|
|
||||||
private defaultPageSize = 10;
|
private defaultPageSize;
|
||||||
private defaultSortOrder = 'entityName';
|
private defaultSortOrder = 'entityName';
|
||||||
|
|
||||||
private contentsInfo: {[key: string]: CellContentInfo} = {};
|
private contentsInfo: {[key: string]: CellContentInfo} = {};
|
||||||
@ -311,10 +311,26 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni
|
|||||||
this.rowStylesInfo = getRowStyleInfo(this.ctx, this.settings, 'entity, ctx');
|
this.rowStylesInfo = getRowStyleInfo(this.ctx, this.settings, 'entity, ctx');
|
||||||
|
|
||||||
const pageSize = this.settings.defaultPageSize;
|
const pageSize = this.settings.defaultPageSize;
|
||||||
|
let pageStepSize = this.settings.pageStepSize;
|
||||||
|
let pageStepCount = this.settings.pageStepCount;
|
||||||
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
||||||
this.defaultPageSize = pageSize;
|
this.defaultPageSize = pageSize;
|
||||||
}
|
}
|
||||||
this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3];
|
if (isDefinedAndNotNull(pageStepSize) && isDefinedAndNotNull(pageStepCount)) {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = pageStepSize;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = 10;
|
||||||
|
}
|
||||||
|
pageStepSize = this.defaultPageSize;
|
||||||
|
pageStepCount = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i <= pageStepCount; i++) {
|
||||||
|
this.pageSizeOptions.push(pageStepSize * i);
|
||||||
|
}
|
||||||
this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : 1024;
|
this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : 1024;
|
||||||
|
|
||||||
this.noDataDisplayMessageText =
|
this.noDataDisplayMessageText =
|
||||||
|
|||||||
@ -43,7 +43,7 @@ import {
|
|||||||
import cssjs from '@core/css/css';
|
import cssjs from '@core/css/css';
|
||||||
import { UtilsService } from '@core/services/utils.service';
|
import { UtilsService } from '@core/services/utils.service';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { hashCode, isDefined, isNumber, parseHttpErrorMessage } from '@core/utils';
|
import { hashCode, isDefined, isDefinedAndNotNull, isNumber, parseHttpErrorMessage } from '@core/utils';
|
||||||
import { CollectionViewer, DataSource } from '@angular/cdk/collections';
|
import { CollectionViewer, DataSource } from '@angular/cdk/collections';
|
||||||
import { emptyPageData, PageData } from '@shared/models/page/page-data';
|
import { emptyPageData, PageData } from '@shared/models/page/page-data';
|
||||||
import {
|
import {
|
||||||
@ -114,7 +114,7 @@ export class PersistentTableComponent extends PageComponent implements OnInit, O
|
|||||||
private subscription: IWidgetSubscription;
|
private subscription: IWidgetSubscription;
|
||||||
private enableFilterAction = true;
|
private enableFilterAction = true;
|
||||||
private allowSendRequest = true;
|
private allowSendRequest = true;
|
||||||
private defaultPageSize = 10;
|
private defaultPageSize;
|
||||||
private defaultSortOrder = '-createdTime';
|
private defaultSortOrder = '-createdTime';
|
||||||
private rpcStatusFilter: RpcStatus;
|
private rpcStatusFilter: RpcStatus;
|
||||||
private displayDetails = true;
|
private displayDetails = true;
|
||||||
@ -130,7 +130,7 @@ export class PersistentTableComponent extends PageComponent implements OnInit, O
|
|||||||
public enableStickyHeader = true;
|
public enableStickyHeader = true;
|
||||||
public enableStickyAction = true;
|
public enableStickyAction = true;
|
||||||
public pageLink: PageLink;
|
public pageLink: PageLink;
|
||||||
public pageSizeOptions;
|
public pageSizeOptions = [];
|
||||||
public actionCellButtonAction: PersistentTableWidgetActionDescriptor[] = [];
|
public actionCellButtonAction: PersistentTableWidgetActionDescriptor[] = [];
|
||||||
public displayedColumns: string[];
|
public displayedColumns: string[];
|
||||||
public hidePageSize = false;
|
public hidePageSize = false;
|
||||||
@ -207,10 +207,27 @@ export class PersistentTableComponent extends PageComponent implements OnInit, O
|
|||||||
this.displayedColumns = [...this.displayTableColumns];
|
this.displayedColumns = [...this.displayTableColumns];
|
||||||
|
|
||||||
const pageSize = this.settings.defaultPageSize;
|
const pageSize = this.settings.defaultPageSize;
|
||||||
|
let pageStepSize = this.settings.pageStepSize;
|
||||||
|
let pageStepCount = this.settings.pageStepCount;
|
||||||
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
||||||
this.defaultPageSize = pageSize;
|
this.defaultPageSize = pageSize;
|
||||||
}
|
}
|
||||||
this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3];
|
if (isDefinedAndNotNull(pageStepSize) && isDefinedAndNotNull(pageStepCount)) {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = pageStepSize;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = 10;
|
||||||
|
}
|
||||||
|
pageStepSize = this.defaultPageSize;
|
||||||
|
pageStepCount = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i <= pageStepCount; i++) {
|
||||||
|
this.pageSizeOptions.push(pageStepSize * i);
|
||||||
|
}
|
||||||
|
|
||||||
if (this.settings.defaultSortOrder && this.settings.defaultSortOrder.length) {
|
if (this.settings.defaultSortOrder && this.settings.defaultSortOrder.length) {
|
||||||
this.defaultSortOrder = this.settings.defaultSortOrder;
|
this.defaultSortOrder = this.settings.defaultSortOrder;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -95,11 +95,29 @@
|
|||||||
{{ 'widgets.table.display-pagination' | translate }}
|
{{ 'widgets.table.display-pagination' | translate }}
|
||||||
</mat-slide-toggle>
|
</mat-slide-toggle>
|
||||||
<div class="tb-form-row space-between column-xs">
|
<div class="tb-form-row space-between column-xs">
|
||||||
<div translate>widgets.table.default-page-size</div>
|
<div translate>widgets.table.page-step-size</div>
|
||||||
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
||||||
<input matInput formControlName="defaultPageSize" type="number" min="1" step="1" placeholder="{{ 'widget-config.set' | translate }}">
|
<input matInput formControlName="pageStepSize" type="number" min="1" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()"
|
||||||
|
placeholder="{{ 'widget-config.set' | translate }}">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tb-form-row space-between column-xs">
|
||||||
|
<div translate>widgets.table.page-step-count</div>
|
||||||
|
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
||||||
|
<input matInput formControlName="pageStepCount" type="number" min="1" max="100" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()"
|
||||||
|
placeholder="{{ 'widget-config.set' | translate }}">
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<mat-form-field class="flex-1" subscriptSizing="dynamic">
|
||||||
|
<mat-label translate>widgets.table.default-page-size</mat-label>
|
||||||
|
<mat-select formControlName="defaultPageSize">
|
||||||
|
<mat-option *ngFor="let size of pageStepSizeValues" [value]="size">
|
||||||
|
{{ size }}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="tb-form-panel tb-slide-toggle">
|
<div class="tb-form-panel tb-slide-toggle">
|
||||||
<div class="tb-form-panel-title" translate>widgets.table.rows</div>
|
<div class="tb-form-panel-title" translate>widgets.table.rows</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import { WidgetSettings, WidgetSettingsComponent } from '@shared/models/widget.m
|
|||||||
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from '@core/core.state';
|
import { AppState } from '@core/core.state';
|
||||||
|
import { buildPageStepSizeValues, isDefinedAndNotNull } from '@core/utils';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tb-alarms-table-widget-settings',
|
selector: 'tb-alarms-table-widget-settings',
|
||||||
@ -28,6 +29,7 @@ import { AppState } from '@core/core.state';
|
|||||||
export class AlarmsTableWidgetSettingsComponent extends WidgetSettingsComponent {
|
export class AlarmsTableWidgetSettingsComponent extends WidgetSettingsComponent {
|
||||||
|
|
||||||
alarmsTableWidgetSettingsForm: UntypedFormGroup;
|
alarmsTableWidgetSettingsForm: UntypedFormGroup;
|
||||||
|
pageStepSizeValues = [];
|
||||||
|
|
||||||
constructor(protected store: Store<AppState>,
|
constructor(protected store: Store<AppState>,
|
||||||
private fb: UntypedFormBuilder) {
|
private fb: UntypedFormBuilder) {
|
||||||
@ -56,6 +58,8 @@ export class AlarmsTableWidgetSettingsComponent extends WidgetSettingsComponent
|
|||||||
displayActivity: true,
|
displayActivity: true,
|
||||||
displayPagination: true,
|
displayPagination: true,
|
||||||
defaultPageSize: 10,
|
defaultPageSize: 10,
|
||||||
|
pageStepSize: null,
|
||||||
|
pageStepCount: 3,
|
||||||
defaultSortOrder: '-createdTime',
|
defaultSortOrder: '-createdTime',
|
||||||
useRowStyleFunction: false,
|
useRowStyleFunction: false,
|
||||||
rowStyleFunction: ''
|
rowStyleFunction: ''
|
||||||
@ -80,10 +84,20 @@ export class AlarmsTableWidgetSettingsComponent extends WidgetSettingsComponent
|
|||||||
displayActivity: [settings.displayActivity, []],
|
displayActivity: [settings.displayActivity, []],
|
||||||
displayPagination: [settings.displayPagination, []],
|
displayPagination: [settings.displayPagination, []],
|
||||||
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
||||||
|
pageStepCount: [isDefinedAndNotNull(settings.pageStepCount) ? settings.pageStepCount : 3,
|
||||||
|
[Validators.min(1), Validators.max(100), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
|
pageStepSize: [isDefinedAndNotNull(settings.pageStepSize) ? settings.pageStepSize : settings.defaultPageSize,
|
||||||
|
[Validators.min(1), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
defaultSortOrder: [settings.defaultSortOrder, []],
|
defaultSortOrder: [settings.defaultSortOrder, []],
|
||||||
useRowStyleFunction: [settings.useRowStyleFunction, []],
|
useRowStyleFunction: [settings.useRowStyleFunction, []],
|
||||||
rowStyleFunction: [settings.rowStyleFunction, [Validators.required]]
|
rowStyleFunction: [settings.rowStyleFunction, [Validators.required]]
|
||||||
});
|
});
|
||||||
|
buildPageStepSizeValues(this.alarmsTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
public onPaginationSettingsChange(): void {
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').reset();
|
||||||
|
buildPageStepSizeValues(this.alarmsTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected validatorTriggers(): string[] {
|
protected validatorTriggers(): string[] {
|
||||||
@ -100,11 +114,17 @@ export class AlarmsTableWidgetSettingsComponent extends WidgetSettingsComponent
|
|||||||
}
|
}
|
||||||
if (displayPagination) {
|
if (displayPagination) {
|
||||||
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').enable();
|
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').enable();
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('pageStepCount').enable();
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('pageStepSize').enable();
|
||||||
} else {
|
} else {
|
||||||
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').disable();
|
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').disable();
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('pageStepCount').disable();
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('pageStepSize').disable();
|
||||||
}
|
}
|
||||||
this.alarmsTableWidgetSettingsForm.get('rowStyleFunction').updateValueAndValidity({emitEvent});
|
this.alarmsTableWidgetSettingsForm.get('rowStyleFunction').updateValueAndValidity({emitEvent});
|
||||||
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
this.alarmsTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('pageStepCount').updateValueAndValidity({emitEvent});
|
||||||
|
this.alarmsTableWidgetSettingsForm.get('pageStepSize').updateValueAndValidity({emitEvent});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,11 +62,29 @@
|
|||||||
{{ 'widgets.table.display-pagination' | translate }}
|
{{ 'widgets.table.display-pagination' | translate }}
|
||||||
</mat-slide-toggle>
|
</mat-slide-toggle>
|
||||||
<div class="tb-form-row space-between column-xs">
|
<div class="tb-form-row space-between column-xs">
|
||||||
<div translate>widgets.table.default-page-size</div>
|
<div translate>widgets.table.page-step-size</div>
|
||||||
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
||||||
<input matInput formControlName="defaultPageSize" type="number" min="1" step="1" placeholder="{{ 'widget-config.set' | translate }}">
|
<input matInput formControlName="pageStepSize" type="number" min="1" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()"
|
||||||
|
placeholder="{{ 'widget-config.set' | translate }}">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tb-form-row space-between column-xs">
|
||||||
|
<div translate>widgets.table.page-step-count</div>
|
||||||
|
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
||||||
|
<input matInput formControlName="pageStepCount" type="number" min="1" max="100" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()"
|
||||||
|
placeholder="{{ 'widget-config.set' | translate }}">
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<mat-form-field class="flex-1" subscriptSizing="dynamic">
|
||||||
|
<mat-label translate>widgets.table.default-page-size</mat-label>
|
||||||
|
<mat-select formControlName="defaultPageSize">
|
||||||
|
<mat-option *ngFor="let size of pageStepSizeValues" [value]="size">
|
||||||
|
{{ size }}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="tb-form-panel">
|
<div class="tb-form-panel">
|
||||||
<div class="tb-form-panel-title" translate>widgets.table.table-tabs</div>
|
<div class="tb-form-panel-title" translate>widgets.table.table-tabs</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import { WidgetSettings, WidgetSettingsComponent } from '@shared/models/widget.m
|
|||||||
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from '@core/core.state';
|
import { AppState } from '@core/core.state';
|
||||||
|
import { buildPageStepSizeValues, isDefinedAndNotNull } from '@core/utils';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tb-timeseries-table-widget-settings',
|
selector: 'tb-timeseries-table-widget-settings',
|
||||||
@ -28,6 +29,7 @@ import { AppState } from '@core/core.state';
|
|||||||
export class TimeseriesTableWidgetSettingsComponent extends WidgetSettingsComponent {
|
export class TimeseriesTableWidgetSettingsComponent extends WidgetSettingsComponent {
|
||||||
|
|
||||||
timeseriesTableWidgetSettingsForm: UntypedFormGroup;
|
timeseriesTableWidgetSettingsForm: UntypedFormGroup;
|
||||||
|
pageStepSizeValues = [];
|
||||||
|
|
||||||
constructor(protected store: Store<AppState>,
|
constructor(protected store: Store<AppState>,
|
||||||
private fb: UntypedFormBuilder) {
|
private fb: UntypedFormBuilder) {
|
||||||
@ -51,6 +53,8 @@ export class TimeseriesTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
displayPagination: true,
|
displayPagination: true,
|
||||||
useEntityLabel: false,
|
useEntityLabel: false,
|
||||||
defaultPageSize: 10,
|
defaultPageSize: 10,
|
||||||
|
pageStepSize: null,
|
||||||
|
pageStepCount: 3,
|
||||||
hideEmptyLines: false,
|
hideEmptyLines: false,
|
||||||
disableStickyHeader: false,
|
disableStickyHeader: false,
|
||||||
useRowStyleFunction: false,
|
useRowStyleFunction: false,
|
||||||
@ -77,11 +81,21 @@ export class TimeseriesTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
displayPagination: [settings.displayPagination, []],
|
displayPagination: [settings.displayPagination, []],
|
||||||
useEntityLabel: [settings.useEntityLabel, []],
|
useEntityLabel: [settings.useEntityLabel, []],
|
||||||
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
||||||
|
pageStepCount: [isDefinedAndNotNull(settings.pageStepCount) ? settings.pageStepCount : 3,
|
||||||
|
[Validators.min(1), Validators.max(100), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
|
pageStepSize: [isDefinedAndNotNull(settings.pageStepSize) ? settings.pageStepSize : settings.defaultPageSize,
|
||||||
|
[Validators.min(1), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
hideEmptyLines: [settings.hideEmptyLines, []],
|
hideEmptyLines: [settings.hideEmptyLines, []],
|
||||||
disableStickyHeader: [settings.disableStickyHeader, []],
|
disableStickyHeader: [settings.disableStickyHeader, []],
|
||||||
useRowStyleFunction: [settings.useRowStyleFunction, []],
|
useRowStyleFunction: [settings.useRowStyleFunction, []],
|
||||||
rowStyleFunction: [settings.rowStyleFunction, [Validators.required]]
|
rowStyleFunction: [settings.rowStyleFunction, [Validators.required]]
|
||||||
});
|
});
|
||||||
|
buildPageStepSizeValues(this.timeseriesTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
public onPaginationSettingsChange(): void {
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').reset();
|
||||||
|
buildPageStepSizeValues(this.timeseriesTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected validatorTriggers(): string[] {
|
protected validatorTriggers(): string[] {
|
||||||
@ -98,11 +112,17 @@ export class TimeseriesTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
}
|
}
|
||||||
if (displayPagination) {
|
if (displayPagination) {
|
||||||
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').enable();
|
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').enable();
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('pageStepCount').enable();
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('pageStepSize').enable();
|
||||||
} else {
|
} else {
|
||||||
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').disable();
|
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').disable();
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('pageStepCount').disable();
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('pageStepSize').disable();
|
||||||
}
|
}
|
||||||
this.timeseriesTableWidgetSettingsForm.get('rowStyleFunction').updateValueAndValidity({emitEvent});
|
this.timeseriesTableWidgetSettingsForm.get('rowStyleFunction').updateValueAndValidity({emitEvent});
|
||||||
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
this.timeseriesTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('pageStepCount').updateValueAndValidity({emitEvent});
|
||||||
|
this.timeseriesTableWidgetSettingsForm.get('pageStepSize').updateValueAndValidity({emitEvent});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,23 @@
|
|||||||
</mat-slide-toggle>
|
</mat-slide-toggle>
|
||||||
<mat-form-field class="mat-block flex-1">
|
<mat-form-field class="mat-block flex-1">
|
||||||
<mat-label translate>widgets.table.default-page-size</mat-label>
|
<mat-label translate>widgets.table.default-page-size</mat-label>
|
||||||
<input matInput type="number" min="1" step="1" formControlName="defaultPageSize">
|
<mat-select formControlName="defaultPageSize">
|
||||||
|
<mat-option *ngFor="let size of pageStepSizeValues" [value]="size">
|
||||||
|
{{ size }}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
</section>
|
||||||
|
<section class="flex flex-col gap-2 gt-xs:flex-row gt-xs:items-center gt-xs:justify-start">
|
||||||
|
<mat-form-field class="mat-block flex-1">
|
||||||
|
<mat-label translate>widgets.table.page-step-size</mat-label>
|
||||||
|
<input matInput formControlName="pageStepSize" type="number" min="1" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()">
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field class="mat-block flex-1">
|
||||||
|
<mat-label translate>widgets.table.page-step-count</mat-label>
|
||||||
|
<input matInput formControlName="pageStepCount" type="number" min="1" max="100" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</section>
|
</section>
|
||||||
<mat-form-field class="mat-block flex-1">
|
<mat-form-field class="mat-block flex-1">
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import { MatChipInputEvent, MatChipGrid } from '@angular/material/chips';
|
|||||||
import { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
import { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
||||||
import { map, mergeMap, share, startWith } from 'rxjs/operators';
|
import { map, mergeMap, share, startWith } from 'rxjs/operators';
|
||||||
import { COMMA, ENTER, SEMICOLON } from '@angular/cdk/keycodes';
|
import { COMMA, ENTER, SEMICOLON } from '@angular/cdk/keycodes';
|
||||||
|
import { buildPageStepSizeValues, isDefinedAndNotNull } from '@core/utils';
|
||||||
|
|
||||||
interface DisplayColumn {
|
interface DisplayColumn {
|
||||||
name: string;
|
name: string;
|
||||||
@ -57,6 +58,8 @@ export class PersistentTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
|
|
||||||
persistentTableWidgetSettingsForm: UntypedFormGroup;
|
persistentTableWidgetSettingsForm: UntypedFormGroup;
|
||||||
|
|
||||||
|
pageStepSizeValues = [];
|
||||||
|
|
||||||
filteredDisplayColumns: Observable<Array<DisplayColumn>>;
|
filteredDisplayColumns: Observable<Array<DisplayColumn>>;
|
||||||
|
|
||||||
columnSearchText = '';
|
columnSearchText = '';
|
||||||
@ -94,6 +97,8 @@ export class PersistentTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
|
|
||||||
displayPagination: true,
|
displayPagination: true,
|
||||||
defaultPageSize: 10,
|
defaultPageSize: 10,
|
||||||
|
pageStepSize: null,
|
||||||
|
pageStepCount: 3,
|
||||||
|
|
||||||
defaultSortOrder: '-createdTime',
|
defaultSortOrder: '-createdTime',
|
||||||
displayColumns: ['rpcId', 'messageType', 'status', 'method', 'createdTime', 'expirationTime']
|
displayColumns: ['rpcId', 'messageType', 'status', 'method', 'createdTime', 'expirationTime']
|
||||||
@ -110,9 +115,19 @@ export class PersistentTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
displayDetails: [settings.displayDetails, []],
|
displayDetails: [settings.displayDetails, []],
|
||||||
displayPagination: [settings.displayPagination, []],
|
displayPagination: [settings.displayPagination, []],
|
||||||
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
||||||
|
pageStepCount: [isDefinedAndNotNull(settings.pageStepCount) ? settings.pageStepCount : 3,
|
||||||
|
[Validators.min(1), Validators.max(100), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
|
pageStepSize: [isDefinedAndNotNull(settings.pageStepSize) ? settings.pageStepSize : settings.defaultPageSize,
|
||||||
|
[Validators.min(1), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
defaultSortOrder: [settings.defaultSortOrder, []],
|
defaultSortOrder: [settings.defaultSortOrder, []],
|
||||||
displayColumns: [settings.displayColumns, [Validators.required]]
|
displayColumns: [settings.displayColumns, [Validators.required]]
|
||||||
});
|
});
|
||||||
|
buildPageStepSizeValues(this.persistentTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
public onPaginationSettingsChange(): void {
|
||||||
|
this.persistentTableWidgetSettingsForm.get('defaultPageSize').reset();
|
||||||
|
buildPageStepSizeValues(this.persistentTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
public validateSettings(): boolean {
|
public validateSettings(): boolean {
|
||||||
@ -129,10 +144,16 @@ export class PersistentTableWidgetSettingsComponent extends WidgetSettingsCompon
|
|||||||
const displayPagination: boolean = this.persistentTableWidgetSettingsForm.get('displayPagination').value;
|
const displayPagination: boolean = this.persistentTableWidgetSettingsForm.get('displayPagination').value;
|
||||||
if (displayPagination) {
|
if (displayPagination) {
|
||||||
this.persistentTableWidgetSettingsForm.get('defaultPageSize').enable();
|
this.persistentTableWidgetSettingsForm.get('defaultPageSize').enable();
|
||||||
|
this.persistentTableWidgetSettingsForm.get('pageStepCount').enable();
|
||||||
|
this.persistentTableWidgetSettingsForm.get('pageStepSize').enable();
|
||||||
} else {
|
} else {
|
||||||
this.persistentTableWidgetSettingsForm.get('defaultPageSize').disable();
|
this.persistentTableWidgetSettingsForm.get('defaultPageSize').disable();
|
||||||
|
this.persistentTableWidgetSettingsForm.get('pageStepCount').disable();
|
||||||
|
this.persistentTableWidgetSettingsForm.get('pageStepSize').disable();
|
||||||
}
|
}
|
||||||
this.persistentTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
this.persistentTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
||||||
|
this.persistentTableWidgetSettingsForm.get('pageStepCount').updateValueAndValidity({emitEvent});
|
||||||
|
this.persistentTableWidgetSettingsForm.get('pageStepSize').updateValueAndValidity({emitEvent});
|
||||||
}
|
}
|
||||||
|
|
||||||
private fetchColumns(searchText?: string): Observable<Array<DisplayColumn>> {
|
private fetchColumns(searchText?: string): Observable<Array<DisplayColumn>> {
|
||||||
|
|||||||
@ -92,11 +92,29 @@
|
|||||||
{{ 'widgets.table.display-pagination' | translate }}
|
{{ 'widgets.table.display-pagination' | translate }}
|
||||||
</mat-slide-toggle>
|
</mat-slide-toggle>
|
||||||
<div class="tb-form-row space-between column-xs">
|
<div class="tb-form-row space-between column-xs">
|
||||||
<div translate>widgets.table.default-page-size</div>
|
<div translate>widgets.table.page-step-size</div>
|
||||||
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
||||||
<input matInput formControlName="defaultPageSize" type="number" min="1" step="1" placeholder="{{ 'widget-config.set' | translate }}">
|
<input matInput formControlName="pageStepSize" type="number" min="1" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()"
|
||||||
|
placeholder="{{ 'widget-config.set' | translate }}">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tb-form-row space-between column-xs">
|
||||||
|
<div translate>widgets.table.page-step-count</div>
|
||||||
|
<mat-form-field appearance="outline" class="number" subscriptSizing="dynamic">
|
||||||
|
<input matInput formControlName="pageStepCount" type="number" min="1" max="100" step="1" required
|
||||||
|
(change)="onPaginationSettingsChange()"
|
||||||
|
placeholder="{{ 'widget-config.set' | translate }}">
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<mat-form-field class="flex-1" subscriptSizing="dynamic">
|
||||||
|
<mat-label translate>widgets.table.default-page-size</mat-label>
|
||||||
|
<mat-select formControlName="defaultPageSize">
|
||||||
|
<mat-option *ngFor="let size of pageStepSizeValues" [value]="size">
|
||||||
|
{{ size }}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="tb-form-panel tb-slide-toggle">
|
<div class="tb-form-panel tb-slide-toggle">
|
||||||
<div class="tb-form-panel-title" translate>widgets.table.rows</div>
|
<div class="tb-form-panel-title" translate>widgets.table.rows</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import { WidgetSettings, WidgetSettingsComponent } from '@shared/models/widget.m
|
|||||||
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from '@core/core.state';
|
import { AppState } from '@core/core.state';
|
||||||
|
import { buildPageStepSizeValues, isDefinedAndNotNull } from '@core/utils';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tb-entities-table-widget-settings',
|
selector: 'tb-entities-table-widget-settings',
|
||||||
@ -28,6 +29,7 @@ import { AppState } from '@core/core.state';
|
|||||||
export class EntitiesTableWidgetSettingsComponent extends WidgetSettingsComponent {
|
export class EntitiesTableWidgetSettingsComponent extends WidgetSettingsComponent {
|
||||||
|
|
||||||
entitiesTableWidgetSettingsForm: UntypedFormGroup;
|
entitiesTableWidgetSettingsForm: UntypedFormGroup;
|
||||||
|
pageStepSizeValues = [];
|
||||||
|
|
||||||
constructor(protected store: Store<AppState>,
|
constructor(protected store: Store<AppState>,
|
||||||
private fb: UntypedFormBuilder) {
|
private fb: UntypedFormBuilder) {
|
||||||
@ -54,6 +56,8 @@ export class EntitiesTableWidgetSettingsComponent extends WidgetSettingsComponen
|
|||||||
displayEntityType: true,
|
displayEntityType: true,
|
||||||
displayPagination: true,
|
displayPagination: true,
|
||||||
defaultPageSize: 10,
|
defaultPageSize: 10,
|
||||||
|
pageStepSize: null,
|
||||||
|
pageStepCount: 3,
|
||||||
defaultSortOrder: 'entityName',
|
defaultSortOrder: 'entityName',
|
||||||
useRowStyleFunction: false,
|
useRowStyleFunction: false,
|
||||||
rowStyleFunction: ''
|
rowStyleFunction: ''
|
||||||
@ -76,10 +80,20 @@ export class EntitiesTableWidgetSettingsComponent extends WidgetSettingsComponen
|
|||||||
displayEntityType: [settings.displayEntityType, []],
|
displayEntityType: [settings.displayEntityType, []],
|
||||||
displayPagination: [settings.displayPagination, []],
|
displayPagination: [settings.displayPagination, []],
|
||||||
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
defaultPageSize: [settings.defaultPageSize, [Validators.min(1)]],
|
||||||
|
pageStepCount: [isDefinedAndNotNull(settings.pageStepCount) ? settings.pageStepCount : 3,
|
||||||
|
[Validators.min(1), Validators.max(100), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
|
pageStepSize: [isDefinedAndNotNull(settings.pageStepSize) ? settings.pageStepSize : settings.defaultPageSize,
|
||||||
|
[Validators.min(1), Validators.required, Validators.pattern(/^\d*$/)]],
|
||||||
defaultSortOrder: [settings.defaultSortOrder, []],
|
defaultSortOrder: [settings.defaultSortOrder, []],
|
||||||
useRowStyleFunction: [settings.useRowStyleFunction, []],
|
useRowStyleFunction: [settings.useRowStyleFunction, []],
|
||||||
rowStyleFunction: [settings.rowStyleFunction, [Validators.required]]
|
rowStyleFunction: [settings.rowStyleFunction, [Validators.required]]
|
||||||
});
|
});
|
||||||
|
buildPageStepSizeValues(this.entitiesTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
public onPaginationSettingsChange(): void {
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').reset();
|
||||||
|
buildPageStepSizeValues(this.entitiesTableWidgetSettingsForm, this.pageStepSizeValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected validatorTriggers(): string[] {
|
protected validatorTriggers(): string[] {
|
||||||
@ -98,8 +112,12 @@ export class EntitiesTableWidgetSettingsComponent extends WidgetSettingsComponen
|
|||||||
}
|
}
|
||||||
if (displayPagination) {
|
if (displayPagination) {
|
||||||
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').enable();
|
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').enable();
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('pageStepCount').enable();
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('pageStepSize').enable();
|
||||||
} else {
|
} else {
|
||||||
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').disable();
|
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').disable();
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('pageStepCount').disable();
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('pageStepSize').disable();
|
||||||
}
|
}
|
||||||
if (displayEntityName) {
|
if (displayEntityName) {
|
||||||
this.entitiesTableWidgetSettingsForm.get('entityNameColumnTitle').enable();
|
this.entitiesTableWidgetSettingsForm.get('entityNameColumnTitle').enable();
|
||||||
@ -113,6 +131,8 @@ export class EntitiesTableWidgetSettingsComponent extends WidgetSettingsComponen
|
|||||||
}
|
}
|
||||||
this.entitiesTableWidgetSettingsForm.get('rowStyleFunction').updateValueAndValidity({emitEvent});
|
this.entitiesTableWidgetSettingsForm.get('rowStyleFunction').updateValueAndValidity({emitEvent});
|
||||||
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
this.entitiesTableWidgetSettingsForm.get('defaultPageSize').updateValueAndValidity({emitEvent});
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('pageStepCount').updateValueAndValidity({emitEvent});
|
||||||
|
this.entitiesTableWidgetSettingsForm.get('pageStepSize').updateValueAndValidity({emitEvent});
|
||||||
this.entitiesTableWidgetSettingsForm.get('entityNameColumnTitle').updateValueAndValidity({emitEvent});
|
this.entitiesTableWidgetSettingsForm.get('entityNameColumnTitle').updateValueAndValidity({emitEvent});
|
||||||
this.entitiesTableWidgetSettingsForm.get('entityLabelColumnTitle').updateValueAndValidity({emitEvent});
|
this.entitiesTableWidgetSettingsForm.get('entityLabelColumnTitle').updateValueAndValidity({emitEvent});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,6 +47,8 @@ export interface TableWidgetSettings {
|
|||||||
enableStickyHeader: boolean;
|
enableStickyHeader: boolean;
|
||||||
displayPagination: boolean;
|
displayPagination: boolean;
|
||||||
defaultPageSize: number;
|
defaultPageSize: number;
|
||||||
|
pageStepSize: number;
|
||||||
|
pageStepCount: number;
|
||||||
useRowStyleFunction: boolean;
|
useRowStyleFunction: boolean;
|
||||||
rowStyleFunction?: TbFunction;
|
rowStyleFunction?: TbFunction;
|
||||||
reserveSpaceForHiddenAction?: boolean;
|
reserveSpaceForHiddenAction?: boolean;
|
||||||
|
|||||||
@ -173,7 +173,7 @@ export class TimeseriesTableWidgetComponent extends PageComponent implements OnI
|
|||||||
public enableStickyHeader = true;
|
public enableStickyHeader = true;
|
||||||
public enableStickyAction = true;
|
public enableStickyAction = true;
|
||||||
public showCellActionsMenu = true;
|
public showCellActionsMenu = true;
|
||||||
public pageSizeOptions;
|
public pageSizeOptions = [];
|
||||||
public textSearchMode = false;
|
public textSearchMode = false;
|
||||||
public hidePageSize = false;
|
public hidePageSize = false;
|
||||||
public sources: TimeseriesTableSource[];
|
public sources: TimeseriesTableSource[];
|
||||||
@ -192,7 +192,7 @@ export class TimeseriesTableWidgetComponent extends PageComponent implements OnI
|
|||||||
private latestData: Array<DatasourceData>;
|
private latestData: Array<DatasourceData>;
|
||||||
private datasources: Array<Datasource>;
|
private datasources: Array<Datasource>;
|
||||||
|
|
||||||
private defaultPageSize = 10;
|
private defaultPageSize;
|
||||||
private defaultSortOrder = '-0';
|
private defaultSortOrder = '-0';
|
||||||
private hideEmptyLines = false;
|
private hideEmptyLines = false;
|
||||||
public showTimestamp = true;
|
public showTimestamp = true;
|
||||||
@ -352,10 +352,26 @@ export class TimeseriesTableWidgetComponent extends PageComponent implements OnI
|
|||||||
this.rowStylesInfo = getRowStyleInfo(this.ctx, this.settings, 'rowData, ctx');
|
this.rowStylesInfo = getRowStyleInfo(this.ctx, this.settings, 'rowData, ctx');
|
||||||
|
|
||||||
const pageSize = this.settings.defaultPageSize;
|
const pageSize = this.settings.defaultPageSize;
|
||||||
|
let pageStepSize = this.settings.pageStepSize;
|
||||||
|
let pageStepCount = this.settings.pageStepCount;
|
||||||
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
if (isDefined(pageSize) && isNumber(pageSize) && pageSize > 0) {
|
||||||
this.defaultPageSize = pageSize;
|
this.defaultPageSize = pageSize;
|
||||||
}
|
}
|
||||||
this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3];
|
if (isDefinedAndNotNull(pageStepSize) && isDefinedAndNotNull(pageStepCount)) {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = pageStepSize;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!this.defaultPageSize) {
|
||||||
|
this.defaultPageSize = 10;
|
||||||
|
}
|
||||||
|
pageStepSize = this.defaultPageSize;
|
||||||
|
pageStepCount = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i <= pageStepCount; i++) {
|
||||||
|
this.pageSizeOptions.push(pageStepSize * i);
|
||||||
|
}
|
||||||
|
|
||||||
this.noDataDisplayMessageText =
|
this.noDataDisplayMessageText =
|
||||||
noDataMessage(this.widgetConfig.noDataDisplayMessage, 'widget.no-data-found', this.utils, this.translate);
|
noDataMessage(this.widgetConfig.noDataDisplayMessage, 'widget.no-data-found', this.utils, this.translate);
|
||||||
|
|||||||
@ -8111,6 +8111,8 @@
|
|||||||
"display-timestamp": "Timestamp",
|
"display-timestamp": "Timestamp",
|
||||||
"display-pagination": "Display pagination",
|
"display-pagination": "Display pagination",
|
||||||
"default-page-size": "Default page size",
|
"default-page-size": "Default page size",
|
||||||
|
"page-step-count": "Number of steps",
|
||||||
|
"page-step-size": "Page size increment",
|
||||||
"use-entity-label-tab-name": "Use entity label in tab name",
|
"use-entity-label-tab-name": "Use entity label in tab name",
|
||||||
"hide-empty-lines": "Hide empty lines",
|
"hide-empty-lines": "Hide empty lines",
|
||||||
"row-style": "Row style",
|
"row-style": "Row style",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user