@c8y/ngx-components 1011.0.23 → 1011.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/bundles/c8y-ngx-components-protocol-lpwan.umd.js +15 -7
  2. package/bundles/c8y-ngx-components-protocol-lpwan.umd.js.map +1 -1
  3. package/bundles/c8y-ngx-components-protocol-lpwan.umd.min.js +2 -2
  4. package/bundles/c8y-ngx-components-protocol-lpwan.umd.min.js.map +1 -1
  5. package/bundles/c8y-ngx-components-repository.umd.js +36 -14
  6. package/bundles/c8y-ngx-components-repository.umd.js.map +1 -1
  7. package/bundles/c8y-ngx-components-repository.umd.min.js +1 -1
  8. package/bundles/c8y-ngx-components-repository.umd.min.js.map +1 -1
  9. package/bundles/c8y-ngx-components-search.umd.js +1 -1
  10. package/bundles/c8y-ngx-components-search.umd.js.map +1 -1
  11. package/bundles/c8y-ngx-components-search.umd.min.js +1 -1
  12. package/bundles/c8y-ngx-components-search.umd.min.js.map +1 -1
  13. package/bundles/c8y-ngx-components.umd.js +1 -1
  14. package/bundles/c8y-ngx-components.umd.js.map +1 -1
  15. package/bundles/c8y-ngx-components.umd.min.js +1 -1
  16. package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
  17. package/c8y-ngx-components.metadata.json +1 -1
  18. package/esm2015/core/select/typeahead.component.js +2 -2
  19. package/esm2015/protocol-lpwan/lpwan-set-device-protocol.component.js +10 -3
  20. package/esm2015/protocol-lpwan/lpwan-set-device-protocol.service.js +6 -5
  21. package/esm2015/repository/configuration-device-tab/device-configuration.component.js +7 -2
  22. package/esm2015/repository/configuration-device-tab/device-configuration.guard.js +4 -2
  23. package/esm2015/repository/firmware-device-tab/firmware-device-tab.component.js +4 -3
  24. package/esm2015/repository/firmware-device-tab/firmware-device-tab.guard.js +4 -5
  25. package/esm2015/repository/software-device-tab/device-software-list.component.js +10 -3
  26. package/esm2015/repository/software-device-tab/installed-software.component.js +10 -2
  27. package/esm2015/repository/software-device-tab/software-device-tab.component.js +2 -2
  28. package/esm2015/repository/software-device-tab/software-device-tab.guard.js +9 -5
  29. package/esm2015/search/search.service.js +2 -2
  30. package/fesm2015/c8y-ngx-components-protocol-lpwan.js +14 -6
  31. package/fesm2015/c8y-ngx-components-protocol-lpwan.js.map +1 -1
  32. package/fesm2015/c8y-ngx-components-repository.js +37 -15
  33. package/fesm2015/c8y-ngx-components-repository.js.map +1 -1
  34. package/fesm2015/c8y-ngx-components-search.js +1 -1
  35. package/fesm2015/c8y-ngx-components-search.js.map +1 -1
  36. package/fesm2015/c8y-ngx-components.js +1 -1
  37. package/fesm2015/c8y-ngx-components.js.map +1 -1
  38. package/locales/locales.pot +6 -3
  39. package/package.json +2 -2
  40. package/protocol-lpwan/c8y-ngx-components-protocol-lpwan.metadata.json +1 -1
  41. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts +3 -1
  42. package/repository/c8y-ngx-components-repository.metadata.json +1 -1
  43. package/repository/configuration-device-tab/device-configuration.guard.d.ts +1 -1
  44. package/repository/firmware-device-tab/firmware-device-tab.component.d.ts +1 -0
  45. package/repository/firmware-device-tab/firmware-device-tab.guard.d.ts +1 -1
  46. package/repository/software-device-tab/device-software-list.component.d.ts +7 -2
  47. package/repository/software-device-tab/installed-software.component.d.ts +4 -0
  48. package/repository/software-device-tab/software-device-tab.guard.d.ts +2 -2
@@ -3131,6 +3131,7 @@
3131
3131
  return rxjs.of([]);
3132
3132
  }
3133
3133
  }), operators.shareReplay(1));
3134
+ this.supportsFirmwareOperations$ = this.device$.pipe(operators.map(function (device) { return lodashEs.get(device, 'c8y_SupportedOperations', []).indexOf('c8y_Firmware') > -1; }));
3134
3135
  this.changesOperation$ = new rxjs.BehaviorSubject(null);
3135
3136
  this.changesInProgress$ = this.changesOperation$.pipe(operators.map(function (operation) { return _this.isInProgress(operation); }));
3136
3137
  }
@@ -3315,7 +3316,7 @@
3315
3316
  FirmwareDeviceTabComponent.decorators = [
3316
3317
  { type: core.Component, args: [{
3317
3318
  selector: 'c8y-firmware-device-tab',
3318
- template: "<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card\">\n <div class=\"card-header separator\">\n <h4 class=\"card-title\" translate>Current firmware</h4>\n </div>\n <div class=\"inner-scroll\">\n <fieldset *ngIf=\"changesOperation$ | async\" class=\"card-block bg-gray-white\">\n <c8y-single-operation [operation]=\"changesOperation$ | async\"></c8y-single-operation>\n </fieldset>\n <div class=\"card-block p-t-0 p-b-0\">\n \n <!-- EMPTY STATE -->\n <ng-container *ngIf=\"isEmpty(deviceFirmwareFragment$ | async); else firmwareBlock\">\n <div class=\"c8y-empty-state text-center\">\n <h1 c8yIcon=\"c8y-firmware\" class=\"c8y-icon-duocolor\"></h1>\n <p>\n <strong translate>No firmware installed.</strong> <br />\n <small translate>Click below to install firmware into this device.</small>\n </p>\n </div>\n </ng-container>\n\n <!-- FIRMWARE -->\n <ng-template #firmwareBlock>\n <c8y-list-group class=\"no-border-last\">\n <c8y-li>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-firmware\"></i>\n </c8y-li-icon>\n\n <c8y-li-body *ngIf=\"deviceFirmwareFragment$ | async as deviceFirmwareFragment\">\n <!-- Firmware title -->\n <p class=\"m-b-16 text-medium\">\n {{ deviceFirmwareFragment.name }}\n </p>\n <!-- Firmware description -->\n <div *ngIf=\"repositoryEntry$ | async as repositoryEntry\">\n <p class=\"text-label-small\" translate>\n Description\n </p>\n <p>\n {{ repositoryEntry.description }}\n </p>\n </div>\n\n <!-- BASE/PATCH VERSION -->\n <div class=\"m-b-16\">\n <p class=\"text-label-small\" translate>\n Version\n </p>\n <p *ngIf=\"deviceFirmwareFragment.version; else versionNotSpecified\">\n {{ deviceFirmwareFragment.version }}\n </p>\n <ng-template #versionNotSpecified>\n <p>\n <em class=\"text-muted\"> ({{ 'not specified`version`' | translate }}) </em>\n </p>\n </ng-template>\n </div>\n\n <!-- ADD PATCH -->\n <button\n *ngIf=\"(this.patches$ | async)?.length > 0\"\n (click)=\"addPatch()\"\n class=\"btn btn-xs btn-primary\"\n [disabled]=\"changesInProgress$ | async\"\n title=\"{{ 'Patches available' | translate }}\"\n >\n {{ 'Patches available' | translate }}\n </button>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </ng-template>\n </div>\n </div>\n <div class=\"card-footer separator-top\">\n\n <!-- INSTALL FIRMWARE -->\n <button\n *ngIf=\"isEmpty(deviceFirmwareFragment$ | async)\"\n class=\"btn btn-primary\"\n (click)=\"installFirmware()\"\n title=\"{{ 'Install firmware' | translate }}\"\n >\n {{ 'Install firmware' | translate }}\n </button>\n\n <!-- REPLACE FIRMWARE -->\n <button\n *ngIf=\"!isEmpty(deviceFirmwareFragment$ | async)\"\n class=\"btn btn-primary\"\n (click)=\"installFirmware()\"\n [disabled]=\"changesInProgress$ | async\"\n title=\"{{ 'Replace firmware' | translate }}\"\n >\n {{ 'Replace firmware' | translate }}\n </button>\n </div>\n </div>\n </div>\n</div>\n"
3319
+ template: "<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card\">\n <div class=\"card-header separator\">\n <h4 class=\"card-title\" translate>Current firmware</h4>\n </div>\n <div class=\"inner-scroll\">\n <fieldset *ngIf=\"changesOperation$ | async\" class=\"card-block bg-gray-white\">\n <c8y-single-operation [operation]=\"changesOperation$ | async\"></c8y-single-operation>\n </fieldset>\n <div class=\"card-block p-t-0 p-b-0\">\n <!-- EMPTY STATE -->\n <ng-container *ngIf=\"isEmpty(deviceFirmwareFragment$ | async); else firmwareBlock\">\n <div class=\"c8y-empty-state text-center\">\n <h1 c8yIcon=\"c8y-firmware\" class=\"c8y-icon-duocolor\"></h1>\n <p>\n <strong translate>No firmware installed.</strong> <br />\n <small translate>Click below to install firmware into this device.</small>\n </p>\n </div>\n </ng-container>\n\n <!-- FIRMWARE -->\n <ng-template #firmwareBlock>\n <c8y-list-group class=\"no-border-last\">\n <c8y-li>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-firmware\"></i>\n </c8y-li-icon>\n\n <c8y-li-body *ngIf=\"deviceFirmwareFragment$ | async as deviceFirmwareFragment\">\n <!-- Firmware title -->\n <p class=\"m-b-16 text-medium\">\n {{ deviceFirmwareFragment.name }}\n </p>\n <!-- Firmware description -->\n <div *ngIf=\"repositoryEntry$ | async as repositoryEntry\">\n <p class=\"text-label-small\" translate>Description</p>\n <p>\n {{ repositoryEntry.description }}\n </p>\n </div>\n\n <!-- BASE/PATCH VERSION -->\n <div class=\"m-b-16\">\n <p class=\"text-label-small\" translate>Version</p>\n <p *ngIf=\"deviceFirmwareFragment.version; else versionNotSpecified\">\n {{ deviceFirmwareFragment.version }}\n </p>\n <ng-template #versionNotSpecified>\n <p>\n <em class=\"text-muted\"> ({{ 'not specified`version`' | translate }}) </em>\n </p>\n </ng-template>\n </div>\n\n <!-- ADD PATCH -->\n <button\n *ngIf=\"\n (supportsFirmwareOperations$ | async) && (this.patches$ | async)?.length > 0\n \"\n (click)=\"addPatch()\"\n class=\"btn btn-xs btn-primary\"\n [disabled]=\"changesInProgress$ | async\"\n title=\"{{ 'Patches available' | translate }}\"\n >\n {{ 'Patches available' | translate }}\n </button>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </ng-template>\n </div>\n </div>\n <div *ngIf=\"supportsFirmwareOperations$ | async\" class=\"card-footer separator-top\">\n <!-- INSTALL FIRMWARE -->\n <button\n *ngIf=\"isEmpty(deviceFirmwareFragment$ | async)\"\n class=\"btn btn-primary\"\n (click)=\"installFirmware()\"\n title=\"{{ 'Install firmware' | translate }}\"\n >\n {{ 'Install firmware' | translate }}\n </button>\n\n <!-- REPLACE FIRMWARE -->\n <button\n *ngIf=\"!isEmpty(deviceFirmwareFragment$ | async)\"\n class=\"btn btn-primary\"\n (click)=\"installFirmware()\"\n [disabled]=\"changesInProgress$ | async\"\n title=\"{{ 'Replace firmware' | translate }}\"\n >\n {{ 'Replace firmware' | translate }}\n </button>\n </div>\n </div>\n </div>\n</div>\n"
3319
3320
  },] }
3320
3321
  ];
3321
3322
  FirmwareDeviceTabComponent.ctorParameters = function () { return [
@@ -3333,9 +3334,8 @@
3333
3334
  FirmwareDeviceTabGuard.prototype.canActivate = function (route) {
3334
3335
  var contextData = lodashEs.get(route, 'data.contextData') || lodashEs.get(route, 'parent.data.contextData');
3335
3336
  var supportedOperations = lodashEs.get(contextData, SUPPORTED_OPERATIONS_FRAGMENT);
3336
- return !!supportedOperations
3337
- ? lodashEs.indexOf(supportedOperations, FIRMWARE_FRAGMENT) >= 0
3338
- : false;
3337
+ return ((!!supportedOperations ? lodashEs.indexOf(supportedOperations, FIRMWARE_FRAGMENT) >= 0 : false) ||
3338
+ lodashEs.has(contextData, 'c8y_Firmware'));
3339
3339
  };
3340
3340
  return FirmwareDeviceTabGuard;
3341
3341
  }());
@@ -3471,7 +3471,7 @@
3471
3471
  SoftwareDeviceTabComponent.decorators = [
3472
3472
  { type: core.Component, args: [{
3473
3473
  selector: 'c8y-software-device-tab',
3474
- template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"loadDevice()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card d-grid grid__col--8-4--md m-b-0\">\n <c8y-installed-software\n class=\"card--fullpage bg-white\"\n [deviceTypeQuery]=\"deviceTypeQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"card--fullpage bg-gray-white\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n ></c8y-device-software-changes>\n</div>\n"
3474
+ template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"loadDevice()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card d-grid grid__col--8-4--md m-b-0\">\n <c8y-installed-software\n class=\"card--fullpage bg-white\"\n [device]=\"device$ | async\"\n [deviceTypeQuery]=\"deviceTypeQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"card--fullpage bg-gray-white\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n ></c8y-device-software-changes>\n</div>\n"
3475
3475
  },] }
3476
3476
  ];
3477
3477
  SoftwareDeviceTabComponent.ctorParameters = function () { return [
@@ -3485,11 +3485,14 @@
3485
3485
  this.operations = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
3486
3486
  }
3487
3487
  SoftwareDeviceTabGuard.prototype.canActivate = function (route) {
3488
- return this.isAnyOperationSupported(route);
3489
- };
3490
- SoftwareDeviceTabGuard.prototype.isAnyOperationSupported = function (route) {
3491
- var device = route.data.contextData || route.parent.data.contextData;
3492
- var supportedOperations = (device && device.c8y_SupportedOperations) || [];
3488
+ var device = lodashEs.get(route, 'data.contextData') || lodashEs.get(route, 'parent.data.contextData');
3489
+ return (this.isAnyOperationSupported(device) ||
3490
+ lodashEs.has(device, 'c8y_Software') ||
3491
+ lodashEs.has(device, 'c8y_SoftwareList') ||
3492
+ lodashEs.has(device, 'c8y_SupportedSoftwareTypes'));
3493
+ };
3494
+ SoftwareDeviceTabGuard.prototype.isAnyOperationSupported = function (device) {
3495
+ var supportedOperations = (device === null || device === void 0 ? void 0 : device.c8y_SupportedOperations) || [];
3493
3496
  return this.operations.some(function (operation) { return supportedOperations.indexOf(operation) >= 0; });
3494
3497
  };
3495
3498
  return SoftwareDeviceTabGuard;
@@ -3504,7 +3507,13 @@
3504
3507
  this.inventory = inventory;
3505
3508
  this.bsModal = bsModal;
3506
3509
  this.changes = new core.EventEmitter();
3510
+ this.supportsSoftwareOperations = false;
3511
+ this.operationTypes = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
3507
3512
  }
3513
+ InstalledSoftwareComponent.prototype.ngOnInit = function () {
3514
+ var supportedOperations = lodashEs.get(this.device, 'c8y_SupportedOperations', []);
3515
+ this.supportsSoftwareOperations = this.operationTypes.some(function (operationType) { return supportedOperations.indexOf(operationType) > -1; });
3516
+ };
3508
3517
  InstalledSoftwareComponent.prototype.installSoftware = function () {
3509
3518
  var _this = this;
3510
3519
  this.displaySoftwareSelectModal({
@@ -3590,7 +3599,7 @@
3590
3599
  InstalledSoftwareComponent.decorators = [
3591
3600
  { type: core.Component, args: [{
3592
3601
  selector: 'c8y-installed-software',
3593
- template: "<div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header large-padding separator sticky-top\">\n <h4 class=\"card-title\" translate>Installed software</h4>\n </div>\n <div class=\"flex-grow\">\n <fieldset *ngIf=\"deviceSoftwareChangesOperation\" class=\"card-block large-padding bg-gray-lighter\">\n <c8y-single-operation [operation]=\"deviceSoftwareChangesOperation\"></c8y-single-operation>\n </fieldset>\n\n <fieldset class=\"d-contents\" [disabled]=\"deviceSoftwareChangesInProgress\">\n <!-- EMPTY STATE -->\n <div class=\"card-block\" *ngIf=\"softwareList.length === 0\">\n <div class=\"c8y-empty-state text-center m-t-16\">\n <h1 class=\"c8y-icon c8y-icon-tools c8y-icon-duocolor\"></h1>\n <p>\n <strong translate>No software installed.</strong> <br />\n <small translate>Click below to install software into this device.</small>\n </p>\n </div>\n </div>\n\n <!-- NOT EMPTY STATE -->\n <ng-container *ngIf=\"softwareList.length > 0\">\n <c8y-device-software-list\n [softwareList]=\"softwareList\"\n [deviceSoftwareChanges]=\"deviceSoftwareChanges\"\n (update)=\"updateSoftware($event)\"\n (remove)=\"removeSoftware($event)\"\n class=\"d-block p-l-16 p-r-16\"\n >\n </c8y-device-software-list>\n </ng-container>\n </fieldset>\n </div>\n<!-- INSTALL SOFTWARE-->\n <div class=\"card-footer large-padding separator sticky-bottom\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Install software' | translate }}\"\n (click)=\"installSoftware()\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install software' | translate }}\n </button>\n </div>\n</div>\n"
3602
+ template: "<div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header large-padding separator sticky-top\">\n <h4 class=\"card-title\" translate>Installed software</h4>\n </div>\n <div class=\"flex-grow\">\n <fieldset *ngIf=\"deviceSoftwareChangesOperation\" class=\"card-block large-padding bg-gray-lighter\">\n <c8y-single-operation [operation]=\"deviceSoftwareChangesOperation\"></c8y-single-operation>\n </fieldset>\n\n <fieldset class=\"d-contents\" [disabled]=\"deviceSoftwareChangesInProgress\">\n <!-- EMPTY STATE -->\n <div class=\"card-block\" *ngIf=\"softwareList.length === 0\">\n <div class=\"c8y-empty-state text-center m-t-16\">\n <h1 class=\"c8y-icon c8y-icon-tools c8y-icon-duocolor\"></h1>\n <p>\n <strong translate>No software installed.</strong> <br />\n <small translate>Click below to install software into this device.</small>\n </p>\n </div>\n </div>\n\n <!-- NOT EMPTY STATE -->\n <ng-container *ngIf=\"softwareList.length > 0\">\n <c8y-device-software-list\n [device]=\"device\"\n [softwareList]=\"softwareList\"\n [deviceSoftwareChanges]=\"deviceSoftwareChanges\"\n (update)=\"updateSoftware($event)\"\n (remove)=\"removeSoftware($event)\"\n class=\"d-block p-l-16 p-r-16\"\n >\n </c8y-device-software-list>\n </ng-container>\n </fieldset>\n </div>\n <!-- INSTALL SOFTWARE-->\n <div *ngIf=\"supportsSoftwareOperations\" class=\"card-footer large-padding separator sticky-bottom\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Install software' | translate }}\"\n (click)=\"installSoftware()\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install software' | translate }}\n </button>\n </div>\n</div>\n"
3594
3603
  },] }
3595
3604
  ];
3596
3605
  InstalledSoftwareComponent.ctorParameters = function () { return [
@@ -3599,6 +3608,7 @@
3599
3608
  { type: modal.BsModalService }
3600
3609
  ]; };
3601
3610
  InstalledSoftwareComponent.propDecorators = {
3611
+ device: [{ type: core.Input }],
3602
3612
  softwareList: [{ type: core.Input }],
3603
3613
  deviceSoftwareChanges: [{ type: core.Input }],
3604
3614
  deviceSoftwareChangesOperation: [{ type: core.Input }],
@@ -3611,7 +3621,13 @@
3611
3621
  function DeviceSoftwareListComponent() {
3612
3622
  this.update = new core.EventEmitter();
3613
3623
  this.remove = new core.EventEmitter();
3624
+ this.supportsSoftwareOperations = false;
3625
+ this.operationTypes = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
3614
3626
  }
3627
+ DeviceSoftwareListComponent.prototype.ngOnInit = function () {
3628
+ var supportedOperations = lodashEs.get(this.device, 'c8y_SupportedOperations', []);
3629
+ this.supportsSoftwareOperations = this.operationTypes.some(function (operationType) { return supportedOperations.indexOf(operationType) > -1; });
3630
+ };
3615
3631
  DeviceSoftwareListComponent.prototype.ngAfterContentInit = function () {
3616
3632
  this.showUpdate = this.update.observers.length > 0;
3617
3633
  this.showRemove = this.remove.observers.length > 0;
@@ -3625,11 +3641,12 @@
3625
3641
  DeviceSoftwareListComponent.decorators = [
3626
3642
  { type: core.Component, args: [{
3627
3643
  selector: 'c8y-device-software-list',
3628
- template: "<c8y-list-group class=\"no-border-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *ngFor=\"let software of softwareList\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-8\">\n <!-- SOFTWARE NAME -->\n <p class=\"text-truncate\">{{ software.name }}</p>\n <!-- SOFTWARE VERSION -->\n <p class=\"text-truncate\">\n <span class=\"text-label-small m-r-4\" translate>\n Version\n </span>\n <span title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n </p>\n </div>\n\n <div *ngIf=\"showUpdate || showRemove\" class=\"col-4 text-right\">\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs showOnHover\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n translate\n >\n Update\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n title=\"{{ 'Remove`software`' | translate }}\"\n class=\"showOnHover btn btn-dot pull-right\"\n (click)=\"remove.emit(software)\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n"
3644
+ template: "<c8y-list-group class=\"no-border-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *ngFor=\"let software of softwareList\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-8\">\n <!-- SOFTWARE NAME -->\n <p class=\"text-truncate\">{{ software.name }}</p>\n <!-- SOFTWARE VERSION -->\n <p class=\"text-truncate\">\n <span class=\"text-label-small m-r-4\" translate>\n Version\n </span>\n <span title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-4 text-right\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs showOnHover\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n translate\n >\n Update\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n title=\"{{ 'Remove`software`' | translate }}\"\n class=\"showOnHover btn btn-dot pull-right\"\n (click)=\"remove.emit(software)\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n"
3629
3645
  },] }
3630
3646
  ];
3631
3647
  DeviceSoftwareListComponent.propDecorators = {
3632
3648
  softwareList: [{ type: core.Input }],
3649
+ device: [{ type: core.Input }],
3633
3650
  deviceSoftwareChanges: [{ type: core.Input }],
3634
3651
  update: [{ type: core.Output }],
3635
3652
  remove: [{ type: core.Output }]
@@ -3918,7 +3935,11 @@
3918
3935
  title: ngxComponents.gettext('No configurations available.'),
3919
3936
  text: ngxComponents.gettext('Add configuration to configuration repository')
3920
3937
  };
3921
- this.showTextBasedConfig = this.deviceConfigurationService.hasAnySupportedOperation(this.device, [exports.DeviceConfigurationOperation.CONFIG, exports.DeviceConfigurationOperation.SEND_CONFIG]);
3938
+ this.showTextBasedConfig =
3939
+ this.deviceConfigurationService.hasAnySupportedOperation(this.device, [
3940
+ exports.DeviceConfigurationOperation.CONFIG,
3941
+ exports.DeviceConfigurationOperation.SEND_CONFIG
3942
+ ]) || lodashEs.has(this.device, 'c8y_Configuration');
3922
3943
  };
3923
3944
  DeviceConfigurationComponent.prototype.onConfigTypeSelected = function (config) {
3924
3945
  return __awaiter(this, void 0, void 0, function () {
@@ -4364,7 +4385,8 @@
4364
4385
  exports.DeviceConfigurationOperation.UPLOAD_CONFIG,
4365
4386
  exports.DeviceConfigurationOperation.CONFIG,
4366
4387
  exports.DeviceConfigurationOperation.SEND_CONFIG
4367
- ]));
4388
+ ]) ||
4389
+ lodashEs.has(contextData, 'c8y_Configuration'));
4368
4390
  };
4369
4391
  return DeviceConfigurationGuard;
4370
4392
  }());