UI: Fix pageLink without pagination. Minor fixes

This commit is contained in:
Igor Kulikov 2020-07-14 16:14:38 +03:00
parent 2ca2b1b1f2
commit 4f3e29b433
6 changed files with 56 additions and 17 deletions

View File

@ -8997,10 +8997,10 @@
"integrity": "sha512-4O3GWAYJaauMCILm07weko2rHA8a4kjn7+8Lg4s1d7SxwS/3IpkVD/GljbRrIJ1c1W/XGJ3GbuK7RyYZEJChhw==" "integrity": "sha512-4O3GWAYJaauMCILm07weko2rHA8a4kjn7+8Lg4s1d7SxwS/3IpkVD/GljbRrIJ1c1W/XGJ3GbuK7RyYZEJChhw=="
}, },
"ngx-flowchart": { "ngx-flowchart": {
"version": "git://github.com/thingsboard/ngx-flowchart.git#a4157b0eef2eb3646ef920447c7b06b39d54f87f", "version": "git://github.com/thingsboard/ngx-flowchart.git#7a02f4748b5e7821a883c903107af5f20415d026",
"from": "git://github.com/thingsboard/ngx-flowchart.git#master", "from": "git://github.com/thingsboard/ngx-flowchart.git#master",
"requires": { "requires": {
"tslib": "^1.10.0" "tslib": "^1.13.0"
}, },
"dependencies": { "dependencies": {
"tslib": { "tslib": {

View File

@ -337,6 +337,7 @@ export class WidgetSubscription implements IWidgetSubscription {
} }
private initDataSubscription(): Observable<any> { private initDataSubscription(): Observable<any> {
this.notifyDataLoading();
const initDataSubscriptionSubject = new ReplaySubject(1); const initDataSubscriptionSubject = new ReplaySubject(1);
this.loadStDiff().subscribe(() => { this.loadStDiff().subscribe(() => {
if (!this.ctx.aliasController) { if (!this.ctx.aliasController) {
@ -431,6 +432,7 @@ export class WidgetSubscription implements IWidgetSubscription {
}); });
this.configureLoadedData(); this.configureLoadedData();
this.hasResolvedData = this.datasources.length > 0; this.hasResolvedData = this.datasources.length > 0;
this.updateDataTimewindow();
this.notifyDataLoaded(); this.notifyDataLoaded();
this.onDataUpdated(true); this.onDataUpdated(true);
}) })
@ -731,6 +733,7 @@ export class WidgetSubscription implements IWidgetSubscription {
if (this.type === widgetType.alarm) { if (this.type === widgetType.alarm) {
this.updateAlarmDataSubscription(); this.updateAlarmDataSubscription();
} else { } else {
this.notifyDataLoading();
this.dataSubscribe(); this.dataSubscribe();
} }
} }
@ -831,13 +834,21 @@ export class WidgetSubscription implements IWidgetSubscription {
} }
} }
private dataSubscribe() { private updateDataTimewindow() {
if (!this.hasDataPageLink) { if (!this.hasDataPageLink) {
if (this.type === widgetType.timeseries && this.timeWindowConfig) { if (this.type === widgetType.timeseries && this.timeWindowConfig) {
this.updateRealtimeSubscription(); this.updateRealtimeSubscription();
if (this.comparisonEnabled) { if (this.comparisonEnabled) {
this.updateSubscriptionForComparison(); this.updateSubscriptionForComparison();
} }
}
}
}
private dataSubscribe() {
if (!this.hasDataPageLink) {
if (this.type === widgetType.timeseries && this.timeWindowConfig) {
this.updateDataTimewindow();
if (this.subscriptionTimewindow.fixedWindow) { if (this.subscriptionTimewindow.fixedWindow) {
this.onDataUpdated(); this.onDataUpdated();
} }
@ -1025,6 +1036,11 @@ export class WidgetSubscription implements IWidgetSubscription {
} }
} }
private notifyDataLoading() {
this.loadingData = true;
this.callbacks.dataLoading(this);
}
private notifyDataLoaded() { private notifyDataLoaded() {
this.loadingData = false; this.loadingData = false;
this.callbacks.dataLoading(this); this.callbacks.dataLoading(this);
@ -1268,6 +1284,7 @@ export class WidgetSubscription implements IWidgetSubscription {
if (this.caulculateLegendData) { if (this.caulculateLegendData) {
this.updateLegend(index, data.data, detectChanges); this.updateLegend(index, data.data, detectChanges);
} }
this.notifyDataLoaded();
this.onDataUpdated(detectChanges); this.onDataUpdated(detectChanges);
} }
} }

View File

@ -330,7 +330,7 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
this.defaultPageSize = pageSize; this.defaultPageSize = pageSize;
} }
this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3]; this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3];
this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : Number.POSITIVE_INFINITY; this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : 1024;
this.pageLink.searchPropagatedAlarms = isDefined(this.widgetConfig.searchPropagatedAlarms) this.pageLink.searchPropagatedAlarms = isDefined(this.widgetConfig.searchPropagatedAlarms)
? this.widgetConfig.searchPropagatedAlarms : true; ? this.widgetConfig.searchPropagatedAlarms : true;
@ -535,10 +535,15 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
} else { } else {
this.pageLink.page = 0; this.pageLink.page = 0;
} }
const key = findEntityKeyByColumnDef(this.sort.active, this.columns);
if (key) {
this.pageLink.sortOrder = { this.pageLink.sortOrder = {
key: findEntityKeyByColumnDef(this.sort.active, this.columns), key,
direction: Direction[this.sort.direction.toUpperCase()] direction: Direction[this.sort.direction.toUpperCase()]
}; };
} else {
this.pageLink.sortOrder = null;
}
const sortOrderLabel = fromEntityColumnDef(this.sort.active, this.columns); const sortOrderLabel = fromEntityColumnDef(this.sort.active, this.columns);
const keyFilters: KeyFilter[] = null; // TODO: const keyFilters: KeyFilter[] = null; // TODO:
this.alarmsDatasource.loadAlarms(this.pageLink, sortOrderLabel, keyFilters); this.alarmsDatasource.loadAlarms(this.pageLink, sortOrderLabel, keyFilters);

View File

@ -240,7 +240,7 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni
this.defaultPageSize = pageSize; this.defaultPageSize = pageSize;
} }
this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3]; this.pageSizeOptions = [this.defaultPageSize, this.defaultPageSize * 2, this.defaultPageSize * 3];
this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : Number.POSITIVE_INFINITY; this.pageLink.pageSize = this.displayPagination ? this.defaultPageSize : 1024;
const cssString = constructTableCssString(this.widgetConfig); const cssString = constructTableCssString(this.widgetConfig);
const cssParser = new cssjs(); const cssParser = new cssjs();
@ -460,10 +460,15 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni
} else { } else {
this.pageLink.page = 0; this.pageLink.page = 0;
} }
const key = findEntityKeyByColumnDef(this.sort.active, this.columns);
if (key) {
this.pageLink.sortOrder = { this.pageLink.sortOrder = {
key: findEntityKeyByColumnDef(this.sort.active, this.columns), key,
direction: Direction[this.sort.direction.toUpperCase()] direction: Direction[this.sort.direction.toUpperCase()]
}; };
} else {
this.pageLink.sortOrder = null;
}
const sortOrderLabel = fromEntityColumnDef(this.sort.active, this.columns); const sortOrderLabel = fromEntityColumnDef(this.sort.active, this.columns);
const keyFilters: KeyFilter[] = null; // TODO: const keyFilters: KeyFilter[] = null; // TODO:
this.entityDatasource.loadEntities(this.pageLink, sortOrderLabel, keyFilters); this.entityDatasource.loadEntities(this.pageLink, sortOrderLabel, keyFilters);

View File

@ -159,7 +159,7 @@ function parseTemplate(template: string, data: { $datasource?: Datasource, [key:
} }
template = createLabelFromDatasource(data.$datasource, template); template = createLabelFromDatasource(data.$datasource, template);
let match = varsRegex.exec(template); let match = /\${([^}]*)}/g.exec(template);
while (match !== null) { while (match !== null) {
const variable = match[0]; const variable = match[0];
let label = match[1]; let label = match[1];
@ -186,7 +186,7 @@ function parseTemplate(template: string, data: { $datasource?: Datasource, [key:
textValue = value; textValue = value;
} }
template = template.split(variable).join(textValue); template = template.split(variable).join(textValue);
match = varsRegex.exec(template); match = /\${([^}]*)}/g.exec(template);
} }
let actionTags: string; let actionTags: string;

View File

@ -96,7 +96,10 @@ export function entityDataSortOrderFromString(strSortOrder: string, columns: Ent
if (!property && !property.length) { if (!property && !property.length) {
return null; return null;
} }
const column = findColumnByLabel(property, columns); let column = findColumnByLabel(property, columns);
if (!column) {
column = findColumnByName(property, columns);
}
if (column && column.entityKey) { if (column && column.entityKey) {
return {key: column.entityKey, direction}; return {key: column.entityKey, direction};
} }
@ -113,13 +116,22 @@ export function findColumnByEntityKey(key: EntityKey, columns: EntityColumn[]):
} }
export function findEntityKeyByColumnDef(def: string, columns: EntityColumn[]): EntityKey { export function findEntityKeyByColumnDef(def: string, columns: EntityColumn[]): EntityKey {
return findColumnByDef(def, columns).entityKey; if (def) {
const column = findColumnByDef(def, columns);
return column ? column.entityKey : null;
} else {
return null;
}
} }
export function findColumn(searchProperty: string, searchValue: string, columns: EntityColumn[]): EntityColumn { export function findColumn(searchProperty: string, searchValue: string, columns: EntityColumn[]): EntityColumn {
return columns.find(theColumn => theColumn[searchProperty] === searchValue); return columns.find(theColumn => theColumn[searchProperty] === searchValue);
} }
export function findColumnByName(name: string, columns: EntityColumn[]): EntityColumn {
return findColumn('name', name, columns);
}
export function findColumnByLabel(label: string, columns: EntityColumn[]): EntityColumn { export function findColumnByLabel(label: string, columns: EntityColumn[]): EntityColumn {
let column: EntityColumn; let column: EntityColumn;
const alarmColumns = columns.filter(c => c.type === DataKeyType.alarm); const alarmColumns = columns.filter(c => c.type === DataKeyType.alarm);