Browse Source

Merge branch 'fix/3656-unneccesssary-params-mqtt' of github.com:maxunbearable/thingsboard into improvement/gateway-dashboard

pull/11166/head
Vladyslav_Prykhodko 2 years ago
parent
commit
e993451f61
  1. 2
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-service-rpc-connector-templates.component.html
  2. 4
      ui-ngx/src/app/modules/home/components/widget/widget-components.module.ts
  3. 67
      ui-ngx/src/app/shared/pipe/key-value-not-empty.pipe.ts

2
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-service-rpc-connector-templates.component.html

@ -32,7 +32,7 @@
</mat-expansion-panel-header>
<ng-container
*ngFor="let config of template.config | keyvalue : originalOrder"
*ngFor="let config of template.config | keyValueIsNotEmpty"
[ngTemplateOutlet]="RPCTemplateRef"
[ngTemplateOutletContext]="{ $implicit: config, innerValue: false }">
</ng-container>

4
ui-ngx/src/app/modules/home/components/widget/widget-components.module.ts

@ -100,6 +100,7 @@ import { BarChartWidgetComponent } from '@home/components/widget/lib/chart/bar-c
import { PolarAreaWidgetComponent } from '@home/components/widget/lib/chart/polar-area-widget.component';
import { RadarChartWidgetComponent } from '@home/components/widget/lib/chart/radar-chart-widget.component';
import { MobileAppQrcodeWidgetComponent } from '@home/components/widget/lib/mobile-app-qrcode-widget.component';
import { KeyValueIsNotEmptyPipe } from '@shared/pipe/key-value-not-empty.pipe';
import { LabelCardWidgetComponent } from '@home/components/widget/lib/cards/label-card-widget.component';
import { LabelValueCardWidgetComponent } from '@home/components/widget/lib/cards/label-value-card-widget.component';
import {
@ -181,7 +182,8 @@ import {
RpcWidgetsModule,
HomePageWidgetsModule,
SharedHomeComponentsModule,
RestConnectorSecurityComponent
RestConnectorSecurityComponent,
KeyValueIsNotEmptyPipe
],
exports: [
EntitiesTableWidgetComponent,

67
ui-ngx/src/app/shared/pipe/key-value-not-empty.pipe.ts

@ -0,0 +1,67 @@
///
/// Copyright © 2016-2024 The Thingsboard Authors
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
import {
inject,
KeyValueChangeRecord,
KeyValueChanges,
KeyValueDiffer,
KeyValueDiffers,
Pipe,
PipeTransform
} from '@angular/core';
import { KeyValue } from '@angular/common';
import { isDefinedAndNotNull } from '@core/utils';
@Pipe({
name: 'keyValueIsNotEmpty',
pure: false,
standalone: true,
})
export class KeyValueIsNotEmptyPipe implements PipeTransform {
private differs: KeyValueDiffers = inject(KeyValueDiffers);
private differ!: KeyValueDiffer<string, unknown>;
private keyValues: Array<KeyValue<string, unknown>> = [];
// This is a custom implementation of angular keyvalue pipe
// https://github.com/angular/angular/blob/main/packages/common/src/pipes/keyvalue_pipe.ts
transform(
input: Record<string, unknown>,
): Array<KeyValue<string, unknown>> {
if (!input || (!(input instanceof Map) && typeof input !== 'object')) {
return null;
}
this.differ ??= this.differs.find(input).create();
const differChanges: KeyValueChanges<string, unknown> | null = this.differ.diff(input);
if (differChanges) {
this.keyValues = [];
differChanges.forEachItem((r: KeyValueChangeRecord<string, unknown>) => {
if (isDefinedAndNotNull(r.currentValue)) {
this.keyValues.push(this.makeKeyValuePair(r.key, r.currentValue!));
}
});
}
return this.keyValues;
}
private makeKeyValuePair(key: string, value: unknown): KeyValue<string, unknown> {
return {key: key, value: value};
}
}
Loading…
Cancel
Save