From b6b83171093627910ce80045557c8370b939b599 Mon Sep 17 00:00:00 2001 From: Artem Dzhereleiko Date: Tue, 19 Sep 2023 15:58:00 +0300 Subject: [PATCH 1/5] UI: Fixed padding bottom for image input --- ui-ngx/src/app/shared/components/image-input.component.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui-ngx/src/app/shared/components/image-input.component.scss b/ui-ngx/src/app/shared/components/image-input.component.scss index b7d05bef8d..ee4f6451c4 100644 --- a/ui-ngx/src/app/shared/components/image-input.component.scss +++ b/ui-ngx/src/app/shared/components/image-input.component.scss @@ -22,7 +22,7 @@ $previewSize: 78px !default; .tb-container { margin-top: 0; - padding: 0; + padding: 0 0 16px; label.tb-title { display: block; padding-bottom: 8px; @@ -121,6 +121,7 @@ $previewSize: 78px !default; .tb-hint{ margin-top: 8px; + padding-bottom: 0; } } From 5a4b2cf40611869552fab97ee45c4a34af58cc98 Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Tue, 19 Sep 2023 16:01:10 +0300 Subject: [PATCH 2/5] UI: Add support import widgets bundles in old format --- .../import-export/import-export.service.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts b/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts index 7ffcaae8e3..ea8479f173 100644 --- a/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts +++ b/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts @@ -398,7 +398,9 @@ export class ImportExportService { const widgetTypesDetails = widgetsBundleItem.widgetTypes; const saveWidgetTypesObservables: Array> = []; for (const widgetTypeDetails of widgetTypesDetails) { - saveWidgetTypesObservables.push(this.widgetService.saveImportedWidgetTypeDetails(widgetTypeDetails)); + saveWidgetTypesObservables.push( + this.widgetService.saveImportedWidgetTypeDetails(this.prepareWidgetTypes(widgetTypeDetails, savedWidgetsBundle)) + ); } widgetTypesObservable = forkJoin(saveWidgetTypesObservables); } else { @@ -432,6 +434,15 @@ export class ImportExportService { ); } + private prepareWidgetTypes(widgetTypes: WidgetTypeDetails & {alias?: string}, widgetsBundle: WidgetsBundle): WidgetTypeDetails { + if (!widgetTypes.fqn) { + widgetTypes.fqn = `${widgetsBundle.alias}.${widgetTypes.alias + ? widgetTypes.alias + : widgetTypes.name.toLowerCase().replace(/\W/g, '_')}`; + } + return widgetTypes; + } + public bulkImportEntities(entitiesData: BulkImportRequest, entityType: EntityType, config?: RequestConfig): Observable { switch (entityType) { case EntityType.DEVICE: From a4778a8fcebe216251203b0d96ffdf4f4dd7259b Mon Sep 17 00:00:00 2001 From: Artem Dzhereleiko Date: Tue, 19 Sep 2023 16:38:43 +0300 Subject: [PATCH 3/5] UI: Fixed entity autocomplete use full id --- .../home/components/wizard/device-wizard-dialog.component.html | 1 + 1 file changed, 1 insertion(+) diff --git a/ui-ngx/src/app/modules/home/components/wizard/device-wizard-dialog.component.html b/ui-ngx/src/app/modules/home/components/wizard/device-wizard-dialog.component.html index fd427923f7..06528041ab 100644 --- a/ui-ngx/src/app/modules/home/components/wizard/device-wizard-dialog.component.html +++ b/ui-ngx/src/app/modules/home/components/wizard/device-wizard-dialog.component.html @@ -75,6 +75,7 @@ From a1393e7e817701c09faaa9c50a112e7cbcee5db8 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 19 Sep 2023 18:04:33 +0300 Subject: [PATCH 4/5] Fix update existing widget type by fqn: check fqn is not empty. --- .../service/entitiy/widgets/type/DefaultWidgetTypeService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/widgets/type/DefaultWidgetTypeService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/widgets/type/DefaultWidgetTypeService.java index 650f92ac20..1d40e9630c 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/widgets/type/DefaultWidgetTypeService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/widgets/type/DefaultWidgetTypeService.java @@ -18,6 +18,7 @@ package org.thingsboard.server.service.entitiy.widgets.type; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.EntityType; +import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.id.TenantId; @@ -42,7 +43,7 @@ public class DefaultWidgetTypeService extends AbstractTbEntityService implements @Override public WidgetTypeDetails save(WidgetTypeDetails widgetTypeDetails, boolean updateExistingByFqn, User user) throws Exception { TenantId tenantId = widgetTypeDetails.getTenantId(); - if (widgetTypeDetails.getId() == null && updateExistingByFqn) { + if (widgetTypeDetails.getId() == null && StringUtils.isNotEmpty(widgetTypeDetails.getFqn()) && updateExistingByFqn) { WidgetType widgetType = widgetTypeService.findWidgetTypeByTenantIdAndFqn(tenantId, widgetTypeDetails.getFqn()); if (widgetType != null) { widgetTypeDetails.setId(widgetType.getId()); From b4f0190454f9433fe6935bb44959ea78e5b5acb6 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 19 Sep 2023 18:06:54 +0300 Subject: [PATCH 5/5] Update import-export.service.ts --- .../import-export/import-export.service.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts b/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts index ea8479f173..e91375e75e 100644 --- a/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts +++ b/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts @@ -399,7 +399,7 @@ export class ImportExportService { const saveWidgetTypesObservables: Array> = []; for (const widgetTypeDetails of widgetTypesDetails) { saveWidgetTypesObservables.push( - this.widgetService.saveImportedWidgetTypeDetails(this.prepareWidgetTypes(widgetTypeDetails, savedWidgetsBundle)) + this.widgetService.saveImportedWidgetTypeDetails(this.prepareWidgetType(widgetTypeDetails, savedWidgetsBundle)) ); } widgetTypesObservable = forkJoin(saveWidgetTypesObservables); @@ -434,13 +434,13 @@ export class ImportExportService { ); } - private prepareWidgetTypes(widgetTypes: WidgetTypeDetails & {alias?: string}, widgetsBundle: WidgetsBundle): WidgetTypeDetails { - if (!widgetTypes.fqn) { - widgetTypes.fqn = `${widgetsBundle.alias}.${widgetTypes.alias - ? widgetTypes.alias - : widgetTypes.name.toLowerCase().replace(/\W/g, '_')}`; + private prepareWidgetType(widgetType: WidgetTypeDetails & {alias?: string}, widgetsBundle: WidgetsBundle): WidgetTypeDetails { + if (!widgetType.fqn) { + widgetType.fqn = `${widgetsBundle.alias}.${widgetType.alias + ? widgetType.alias + : widgetType.name.toLowerCase().replace(/\W/g, '_')}`; } - return widgetTypes; + return widgetType; } public bulkImportEntities(entitiesData: BulkImportRequest, entityType: EntityType, config?: RequestConfig): Observable {