@c8y/ngx-components 1006.6.36 → 1006.6.40
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.
- package/bundles/c8y-ngx-components-connectivity.umd.js +1 -1
- package/bundles/c8y-ngx-components-connectivity.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-connectivity.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-connectivity.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-context-dashboard.umd.js +1 -1
- package/bundles/c8y-ngx-components-context-dashboard.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-context-dashboard.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-context-dashboard.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.js +1 -1
- package/bundles/c8y-ngx-components-repository.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.js +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.js +400 -131
- package/bundles/c8y-ngx-components.umd.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.min.js +2 -2
- package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
- package/c8y-ngx-components.d.ts +90 -87
- package/c8y-ngx-components.metadata.json +1 -1
- package/connectivity/c8y-ngx-components-connectivity.metadata.json +1 -1
- package/context-dashboard/c8y-ngx-components-context-dashboard.metadata.json +1 -1
- package/core/authentication/new-password.component.d.ts +8 -6
- package/core/docs/guide-docs.component.d.ts +25 -3
- package/core/forms/validation-pattern.d.ts +1 -0
- package/core/i18n/force-html-translate.directive.d.ts +32 -0
- package/core/login/change-password.component.d.ts +1 -1
- package/core/login/login.service.d.ts +15 -2
- package/core/login/password-strength-validator.directive.d.ts +9 -0
- package/core/login/strength-validator-service.d.ts +7 -0
- package/core/user/user-edit.component.d.ts +4 -2
- package/esm2015/c8y-ngx-components.js +90 -87
- package/esm2015/connectivity/impact/impact-provider-settings.component.js +2 -2
- package/esm2015/context-dashboard/legacy-welcome/legacy-welcome.component.js +2 -2
- package/esm2015/core/authentication/new-password.component.js +15 -20
- package/esm2015/core/dashboard/widgets-dashboard.component.js +2 -2
- package/esm2015/core/docs/guide-docs.component.js +69 -4
- package/esm2015/core/forms/validation-pattern.js +2 -1
- package/esm2015/core/i18n/force-html-translate.directive.js +99 -0
- package/esm2015/core/i18n/i18n.module.js +5 -3
- package/esm2015/core/i18n/pattern-messages.data.js +2 -2
- package/esm2015/core/login/change-password.component.js +5 -5
- package/esm2015/core/login/credentials.component.js +2 -2
- package/esm2015/core/login/login.module.js +4 -2
- package/esm2015/core/login/login.service.js +40 -6
- package/esm2015/core/login/password-strength-validator.directive.js +32 -0
- package/esm2015/core/login/strength-validator-service.js +28 -0
- package/esm2015/core/user/user-edit.component.js +10 -5
- package/esm2015/repository/configuration/configuration-list.component.js +2 -2
- package/esm2015/sensor-phone/sensor-phone-modal.component.js +2 -2
- package/esm5/c8y-ngx-components.js +90 -87
- package/esm5/connectivity/impact/impact-provider-settings.component.js +2 -2
- package/esm5/context-dashboard/legacy-welcome/legacy-welcome.component.js +2 -2
- package/esm5/core/authentication/new-password.component.js +21 -25
- package/esm5/core/dashboard/widgets-dashboard.component.js +2 -2
- package/esm5/core/docs/guide-docs.component.js +72 -4
- package/esm5/core/forms/validation-pattern.js +2 -1
- package/esm5/core/i18n/force-html-translate.directive.js +105 -0
- package/esm5/core/i18n/i18n.module.js +5 -3
- package/esm5/core/i18n/pattern-messages.data.js +2 -2
- package/esm5/core/login/change-password.component.js +5 -5
- package/esm5/core/login/credentials.component.js +2 -2
- package/esm5/core/login/login.module.js +4 -2
- package/esm5/core/login/login.service.js +43 -6
- package/esm5/core/login/password-strength-validator.directive.js +38 -0
- package/esm5/core/login/strength-validator-service.js +29 -0
- package/esm5/core/user/user-edit.component.js +19 -9
- package/esm5/repository/configuration/configuration-list.component.js +2 -2
- package/esm5/sensor-phone/sensor-phone-modal.component.js +2 -2
- package/fesm2015/c8y-ngx-components-connectivity.js +1 -1
- package/fesm2015/c8y-ngx-components-connectivity.js.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.js +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.js.map +1 -1
- package/fesm2015/c8y-ngx-components-repository.js +1 -1
- package/fesm2015/c8y-ngx-components-repository.js.map +1 -1
- package/fesm2015/c8y-ngx-components-sensor-phone.js +1 -1
- package/fesm2015/c8y-ngx-components-sensor-phone.js.map +1 -1
- package/fesm2015/c8y-ngx-components.js +281 -40
- package/fesm2015/c8y-ngx-components.js.map +1 -1
- package/fesm5/c8y-ngx-components-connectivity.js +1 -1
- package/fesm5/c8y-ngx-components-connectivity.js.map +1 -1
- package/fesm5/c8y-ngx-components-context-dashboard.js +1 -1
- package/fesm5/c8y-ngx-components-context-dashboard.js.map +1 -1
- package/fesm5/c8y-ngx-components-repository.js +1 -1
- package/fesm5/c8y-ngx-components-repository.js.map +1 -1
- package/fesm5/c8y-ngx-components-sensor-phone.js +1 -1
- package/fesm5/c8y-ngx-components-sensor-phone.js.map +1 -1
- package/fesm5/c8y-ngx-components.js +315 -49
- package/fesm5/c8y-ngx-components.js.map +1 -1
- package/locales/de.po +71 -60
- package/locales/es.po +120 -85
- package/locales/fr.po +107 -72
- package/locales/ja_JP.po +89 -78
- package/locales/ko.po +92 -57
- package/locales/locales.pot +9 -9
- package/locales/nl.po +95 -60
- package/locales/pl.po +88 -53
- package/locales/pt_BR.po +174 -138
- package/locales/ru.po +120 -85
- package/locales/zh_CN.po +87 -52
- package/package.json +2 -2
- package/repository/c8y-ngx-components-repository.metadata.json +1 -1
- package/sensor-phone/c8y-ngx-components-sensor-phone.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"ConnectivityModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImpactProviderSettingsComponent"},{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"ImpactProviderSettingsComponent"}],"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":11,"character":12},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CommonModule","line":11,"character":24},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"FormsModule","line":11,"character":38},{"__symbolic":"reference","module":"ngx-bootstrap/popover","name":"PopoverModule","line":11,"character":51},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":11,"character":66}],"entryComponents":[{"__symbolic":"reference","name":"ImpactProviderSettingsComponent"}],"providers":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ImpactProviderSettingsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"c8y-impact-provider-settings","template":"<div class=\"row\">\n <div class=\"col-xs-12 col-md-8 col-lg-6\">\n <form class=\"card\" [formGroup]=\"formGroup\" novalidate>\n <div class=\"card-header separator\">\n <h4 class=\"card-title\" translate>Credentials</h4>\n </div>\n <div class=\"card-block\" *ngIf=\"isEdit\">\n <c8y-form-group>\n <label for=\"baseUrl\" translate>\n Base URL\n </label>\n <input\n id=\"baseUrl\"\n name=\"baseUrl\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. https://impact.example.com' | translate }}\"\n autocomplete=\"off\"\n formControlName=\"baseUrl\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>\n User\n </label>\n <input\n id=\"user\"\n name=\"user\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. joe`LOCALIZE`' | translate }}\"\n required\n autocomplete=\"off\"\n formControlName=\"user\"\n />\n <c8y-messages>\n <c8y-message *ngIf=\"formGroup?.controls?.user?.errors?.required\" translate>\n This field is required.\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>\n Password\n </label>\n <input\n id=\"password\"\n name=\"password\"\n type=\"password\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my_password' | translate }}\"\n required\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n <c8y-messages>\n <c8y-message *ngIf=\"formGroup?.controls?.password?.errors?.required\" translate>\n This field is required.\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"groupName\" translate>\n IMPACT group name prefix\n </label>\n <input\n id=\"groupName\"\n name=\"groupName\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Europe.Nokia`LOCALIZE`' | translate }}\"\n formControlName=\"groupName\"\n />\n </c8y-form-group>\n </div>\n <div class=\"card-block bg-gray-white\">\n <div class=\"d-flex\">\n <c8y-status-display\n [status]=\"connectionStatus?.status\"\n [baseUrl]=\"connectionStatus?.options?.baseUrl\"\n ></c8y-status-display>\n\n <div class=\"d-flex flex-item-middle flex-item-right\">\n <label class=\"c8y-switch\">\n <input type=\"checkbox\" formControlName=\"initializeDevices\" />\n <span></span> {{ 'Refresh devices' | translate }}\n </label>\n <a\n container=\"body\"\n class=\"btn-clean m-l-4 flex-item-middle\"\n popover=\"{{ 'Refresh device resources as part of connecting' | translate }}\"\n placement=\"right\"\n outsideClick=\"false\"\n >\n <i c8yIcon=\"question-circle-o text-primary\"></i>\n </a>\n </div>\n </div>\n </div>\n <div class=\"card-block\" *ngIf=\"credentialsExist && !isEdit\">\n <p translate>\n Credentials already provided.<br />\n Click \"Replace credentials\" below to overwrite them.\n </p>\n </div>\n <div class=\"card-footer\">\n <button\n title=\"{{ 'Replace credentials' | translate }}\"\n type=\"submit\"\n class=\"btn btn-default\"\n translate\n *ngIf=\"!isEdit\"\n (click)=\"replaceCredentials()\"\n >\n Replace credentials\n </button>\n <button\n title=\"{{ 'Delete credentials' | translate }}\"\n type=\"button\"\n class=\"btn btn-danger\"\n translate\n *ngIf=\"credentialsExist && isEdit\"\n (click)=\"deleteCredentials()\"\n >\n Delete credentials\n </button>\n <button\n title=\"{{ 'Save credentials & connect' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n translate\n *ngIf=\"isEdit\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"saveCredentials()\"\n >\n Save credentials & connect\n </button>\n </div>\n </form>\n </div>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":24,"character":25},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ModalService","line":25,"character":19},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":26,"character":19}]}],"ngOnInit":[{"__symbolic":"method"}],"replaceCredentials":[{"__symbolic":"method"}],"saveCredentials":[{"__symbolic":"method"}],"deleteCredentials":[{"__symbolic":"method"}],"initForm":[{"__symbolic":"method"}],"resetForm":[{"__symbolic":"method"}],"safelyUpdateCredentials":[{"__symbolic":"method"}],"safelyDeleteCredentials":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"FetchClient","line":9,"character":30}]}],"getOptions":[{"__symbolic":"method"}],"updateOptions":[{"__symbolic":"method"}],"deleteOptions":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"c8y-status-display","template":"<div class=\"d-flex\">\n <div class=\"dot dot-64 p-16\"\n [ngClass]=\"{\n 'dot-success': icon === 'success',\n 'dot-danger': icon === 'failed',\n 'dot-info': icon === 'connecting',\n 'dot-default': icon === 'no-connection' || icon === 'unknown'\n }\"\n >\n <!-- unknown-->\n <svg viewBox=\"0 0 17 23\" *ngIf=\"icon === 'unknown'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard\" transform=\"translate(-24.000000, -20.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M34.4437635,36.1999921 C34.8390765,36.1999921 35.1312643,35.7531166 35.1312643,35.3749911 C35.1312643,34.8765531 35.7672026,33.6906141 36.7812663,33.1062384 C38.4140808,32.1952999 40.6312709,30.9406109 40.6312709,27.674982 C40.6312709,23.7390398 36.506266,20.7999738 32.8281366,20.7999738 C29.3218824,20.7999738 26.7093793,22.2952881 24.8531271,25.3718542 C24.6640644,25.6812296 24.7328144,26.059355 25.0250023,26.2827928 L27.8437557,28.4312329 C27.9812558,28.5171705 28.118756,28.568733 28.2734437,28.568733 C28.4625064,28.568733 28.6687566,28.4656079 28.8062568,28.2937327 C29.8203205,27.0218562 30.232821,26.6093557 30.6453215,26.3171679 C31.0234469,26.059355 31.7281353,25.8187298 32.5015737,25.8187298 C33.8937629,25.8187298 35.1484519,26.6781058 35.1484519,27.6406069 C35.1484519,28.7406082 34.5984512,29.3077964 33.2750121,29.9093596 C31.7625103,30.5968605 29.7000079,32.3843626 29.7000079,34.4640526 L29.7000079,35.237491 C29.7000079,35.6156164 29.9406332,36.1999921 30.3187586,36.1999921 L34.4437635,36.1999921 Z M34.5125136,42.7999934 C34.8906391,42.7999934 35.2000079,42.4906246 35.2000079,42.1124992 L35.2000079,37.9874943 C35.2000079,37.6093688 34.8906391,37.2999934 34.5125136,37.2999934 L30.3875087,37.2999934 C30.0093832,37.2999934 29.7000079,37.6093688 29.7000079,37.9874943 L29.7000079,42.1124992 C29.7000079,42.4906246 30.0093832,42.7999934 30.3875087,42.7999934 L34.5125136,42.7999934 Z\" id=\"\"></path>\n </g>\n </g>\n </svg>\n <!-- no connection -->\n <svg viewBox=\"0 0 32 32\" *ngIf=\"icon === 'no-connection'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy\" transform=\"translate(-16.000000, -16.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M36.090359,41.560381 L32.5058901,45.1435604 C28.9330257,48.7177143 23.134696,48.7177143 19.5592528,45.1435604 C15.9850989,41.5681172 15.9863883,35.7710769 19.5592528,32.1969231 L23.1424323,28.6137436 L25.8772015,31.3485128 L22.294022,34.9316923 C20.2335971,36.9921172 20.2335971,40.3470769 22.294022,42.4062125 C24.3570257,44.4692161 27.710696,44.4692161 29.7711209,42.4062125 L33.3543004,38.8256117 L36.090359,41.560381 L36.090359,41.560381 Z M32.1964396,19.5597363 L28.6132601,23.1429158 L31.3480293,25.877685 L34.9324982,22.2945055 C36.9929231,20.2340806 40.3465934,20.2340806 42.4044396,22.2957949 C44.470022,24.3562198 44.470022,27.7098901 42.4095971,29.770315 L38.8264176,33.3534945 L41.5611868,36.0882637 L45.1443663,32.5063736 C48.7172308,28.9309304 48.7172308,23.1338901 45.1443663,19.5597363 C41.5676337,15.9855824 35.7705934,15.9855824 32.1964396,19.5597363 Z M24.5310916,18.5346813 L26.3877949,18.2716484 L26.9525421,22.2467985 L25.0984176,22.5111209 L24.5310916,18.5346813 L24.5310916,18.5346813 Z M18.2711649,26.386989 L18.5367766,24.5289963 L22.5132161,25.0963223 L22.2476044,26.9530256 L18.2711649,26.386989 Z M24.4511502,23.1364689 L23.1256704,24.4645275 L20.2825934,21.6240293 L21.6093627,20.2972601 L24.4511502,23.1364689 L24.4511502,23.1364689 Z M40.1699487,46.1647473 L38.3119561,46.4277802 L37.7472088,42.45263 L39.6026227,42.1883077 L40.1699487,46.1647473 L40.1699487,46.1647473 Z M46.4311649,38.3124396 L46.1642638,40.1704322 L42.1878242,39.6043956 L42.4547253,37.7464029 L46.4311649,38.3124396 Z M40.2511795,41.5616703 L41.57537,40.2349011 L44.4184469,43.0766886 L43.0916777,44.4034579 L40.2511795,41.5616703 Z\" id=\"Shape-Copy-2\"></path>\n </g>\n </g>\n </svg>\n <!-- Connecting -->\n <svg viewBox=\"0 0 29 32\" class=\"fa-spin\" *ngIf=\"icon === 'connecting'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy-2\" transform=\"translate(-17.000000, -16.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M39.7170667,23.98025 L41.3802667,22.0206 C42.31325,22.9163667 43.1179,23.9391833 43.7788167,25.0608167 L41.4996167,26.2556 C40.9991167,25.424 40.4049333,24.6565667 39.7170667,23.98025 Z M44.6502,26.7766333 L42.3568833,27.9791167 C42.6841333,28.8094333 42.9151333,29.68595 43.0409,30.5958333 L45.6345167,30.5958333 C45.4843667,29.2573167 45.1494167,27.9752667 44.6502,26.7766333 L44.6502,26.7766333 Z M25.6440333,22.3363 C27.3868,21.2711333 29.4273,20.65 31.6166667,20.65 C34.0793833,20.65 36.3585833,21.4302667 38.2348167,22.7495333 L39.9005833,20.7873167 C37.5726167,19.0946 34.7159167,18.0833333 31.6166667,18.0833333 C28.8818833,18.0833333 26.3473,18.8841333 24.18745,20.23035 L21.8132833,16.8 L19.05155,25.7833333 L28.0271833,25.7833333 L25.6440333,22.3363 L25.6440333,22.3363 Z M43.1512667,32.5208333 C43.1166167,33.7554 42.8869,34.9399167 42.4916333,36.05 L45.1879167,36.05 C45.5074667,34.9232333 45.7025333,33.7425667 45.7333333,32.5208333 L43.1512667,32.5208333 Z M23.5162667,40.41975 L21.85435,42.3794 C20.9213667,41.4836333 20.1154333,40.4608167 19.4558,39.3391833 L21.7337167,38.1444 C22.2342167,38.976 22.8284,39.7434333 23.5162667,40.41975 L23.5162667,40.41975 Z M18.5831333,37.6233667 L20.87645,36.4208833 C20.5504833,35.5905667 20.3194833,34.71405 20.1924333,33.8041667 L17.5975333,33.8041667 C17.75025,35.1426833 18.0839167,36.4247333 18.5831333,37.6233667 Z M37.5893,42.0637 C35.8478167,43.1288667 33.8073167,43.75 31.6166667,43.75 C29.1552333,43.75 26.87475,42.9697333 24.9998,41.6504667 L23.33275,43.6126833 C25.6607167,45.3054 28.5187,46.3166667 31.6166667,46.3166667 C34.35145,46.3166667 36.8873167,45.5158667 39.0458833,44.16965 L41.42005,47.6 L44.1817833,38.6166667 L35.20615,38.6166667 L37.5893,42.0637 L37.5893,42.0637 Z M20.0820667,31.8791667 C20.1167167,30.6446 20.3477167,29.4600833 20.7404167,28.35 L18.0454167,28.35 C17.7258667,29.4767667 17.5295167,30.6574333 17.5,31.8791667 L20.0820667,31.8791667 Z\" id=\"Shape\" transform=\"translate(31.616667, 32.200000) scale(-1, 1) translate(-31.616667, -32.200000) \"></path>\n </g>\n </g>\n </svg>\n <!-- Failed -->\n <svg viewBox=\"0 0 28 27\" *ngIf=\"icon === 'failed'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy-3\" transform=\"translate(-18.000000, -18.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M32.1000157,45.0000026 C39.3875244,45.0000026 45.3000315,39.0874956 45.3000315,31.7999869 C45.3000315,24.5124782 39.3875244,18.5999712 32.1000157,18.5999712 C24.812507,18.5999712 18.9,24.5124782 18.9,31.7999869 C18.9,39.0874956 24.812507,45.0000026 32.1000157,45.0000026 Z M33.6812676,34.5499902 L30.5015763,34.5499902 C30.1750134,34.5499902 29.9172006,34.3609274 29.9172006,34.1203022 L29.6250128,23.4468519 C29.6250128,23.3265393 29.6765753,23.2062266 29.796888,23.1374766 C29.9000131,23.051539 30.0547008,22.9999764 30.2093885,22.9999764 L33.990643,22.9999764 C34.1453307,22.9999764 34.3000184,23.051539 34.4031435,23.1374766 C34.5234561,23.2062266 34.5750187,23.3265393 34.5750187,23.4468519 L34.2656433,34.1203022 C34.2484558,34.3609274 33.990643,34.5499902 33.6812676,34.5499902 Z M33.7672052,40.5999974 L30.4672013,40.5999974 C30.1578259,40.5999974 29.9000131,40.3421846 29.9000131,40.0328092 L29.9000131,36.7671803 C29.9000131,36.4578049 30.1578259,36.1999921 30.4672013,36.1999921 L33.7672052,36.1999921 C34.0593931,36.1999921 34.3000184,36.4578049 34.3000184,36.7671803 L34.3000184,40.0328092 C34.3000184,40.3421846 34.0593931,40.5999974 33.7672052,40.5999974 Z\" id=\"\"></path>\n </g>\n </g>\n </svg>\n <!-- Success -->\n <svg viewBox=\"0 0 31 31\" *ngIf=\"icon === 'success'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy-4\" transform=\"translate(-17.000000, -17.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M24.9403042,28.1887417 C25.5036875,27.6253583 26.1286708,27.1607917 26.7934375,26.7937583 C30.4984208,24.751975 35.2493208,25.837675 37.6311875,29.448975 L34.7488208,32.3300583 C33.9223542,30.4448417 31.8703042,29.371975 29.8285208,29.8288417 C29.0598042,30.0008083 28.3295875,30.384525 27.7328375,30.981275 L22.2093708,36.5073083 C20.5320542,38.184625 20.5320542,40.9129917 22.2093708,42.5903083 C23.8866875,44.267625 26.6150542,44.267625 28.2923708,42.5903083 L29.9953542,40.887325 C31.5443375,41.5020417 33.2049708,41.7471583 34.8450708,41.6252417 L31.0861875,45.384125 C27.8637375,48.606575 22.6392875,48.606575 19.4168375,45.384125 C16.1943875,42.161675 16.1943875,36.937225 19.4168375,33.714775 L24.9403042,28.1887417 Z M33.7131708,19.415875 L29.9542875,23.1747583 C31.5931042,23.0515583 33.2550208,23.2979583 34.8040042,23.9113917 L36.5057042,22.2096917 C38.1830208,20.532375 40.9113875,20.532375 42.5887042,22.2096917 C44.2660208,23.8870083 44.2660208,26.615375 42.5887042,28.2926917 L37.0639542,33.8174417 C35.3815042,35.4998917 32.6492875,35.485775 30.9809542,33.8174417 C30.5921042,33.4285917 30.2571542,32.944775 30.0479708,32.4686583 L27.1656042,35.3497417 C27.4684708,35.809175 27.7828875,36.205725 28.1871375,36.609975 C29.2292042,37.6520417 30.5561708,38.4284583 32.0833375,38.796775 C34.0622375,39.2728917 36.1823042,39.0098083 38.0033542,38.0049583 C38.6681208,37.637925 39.2931042,37.1733583 39.8564875,36.609975 L45.3799542,31.085225 C48.6036875,27.862775 48.6036875,22.638325 45.3812375,19.415875 C42.1587875,16.1947083 36.9356208,16.1947083 33.7131708,19.415875 Z\" id=\"Shape-Copy\"></path>\n </g>\n </g>\n </svg>\n </div>\n <div class=\"flex-item-middle m-l-16\">\n <p class=\"text-label-small\" translate>Connection status</p>\n <h4 class=\"m-t-4 m-b-8\" [ngClass]=\"{ 'text-muted': icon === 'unknown' }\">{{ statusName | translate }}</h4>\n <p><strong>{{ baseUrl }}</strong></p>\n </div>\n</div>\n"}]}],"members":{"baseUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"status":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}]}}},"origins":{"ConnectivityModule":"./connectivity.module","ImpactProviderSettingsComponent":"./impact/impact-provider-settings.component","ɵa":"./impact/impact-connectivity.service","ɵb":"./impact/status-display.component"},"importAs":"@c8y/ngx-components/connectivity"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"ConnectivityModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImpactProviderSettingsComponent"},{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"ImpactProviderSettingsComponent"}],"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":11,"character":12},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CommonModule","line":11,"character":24},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"FormsModule","line":11,"character":38},{"__symbolic":"reference","module":"ngx-bootstrap/popover","name":"PopoverModule","line":11,"character":51},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":11,"character":66}],"entryComponents":[{"__symbolic":"reference","name":"ImpactProviderSettingsComponent"}],"providers":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ImpactProviderSettingsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"c8y-impact-provider-settings","template":"<div class=\"row\">\n <div class=\"col-xs-12 col-md-8 col-lg-6\">\n <form class=\"card\" [formGroup]=\"formGroup\" novalidate>\n <div class=\"card-header separator\">\n <h4 class=\"card-title\" translate>Credentials</h4>\n </div>\n <div class=\"card-block\" *ngIf=\"isEdit\">\n <c8y-form-group>\n <label for=\"baseUrl\" translate>\n Base URL\n </label>\n <input\n id=\"baseUrl\"\n name=\"baseUrl\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. https://impact.example.com' | translate }}\"\n autocomplete=\"off\"\n formControlName=\"baseUrl\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>\n User\n </label>\n <input\n id=\"user\"\n name=\"user\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. joe`LOCALIZE`' | translate }}\"\n required\n autocomplete=\"off\"\n formControlName=\"user\"\n />\n <c8y-messages>\n <c8y-message *ngIf=\"formGroup?.controls?.user?.errors?.required\" translate>\n This field is required.\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>\n Password\n </label>\n <input\n id=\"password\"\n name=\"password\"\n type=\"password\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my_password' | translate }}\"\n required\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n <c8y-messages>\n <c8y-message *ngIf=\"formGroup?.controls?.password?.errors?.required\" translate>\n This field is required.\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"groupName\" translate>\n IMPACT group name prefix\n </label>\n <input\n id=\"groupName\"\n name=\"groupName\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Europe.Nokia`LOCALIZE`' | translate }}\"\n formControlName=\"groupName\"\n />\n </c8y-form-group>\n </div>\n <div class=\"card-block bg-gray-white\">\n <div class=\"d-flex\">\n <c8y-status-display\n [status]=\"connectionStatus?.status\"\n [baseUrl]=\"connectionStatus?.options?.baseUrl\"\n ></c8y-status-display>\n\n <div class=\"d-flex flex-item-middle flex-item-right\">\n <label class=\"c8y-switch\">\n <input type=\"checkbox\" formControlName=\"initializeDevices\" />\n <span></span> {{ 'Refresh devices' | translate }}\n </label>\n <a\n container=\"body\"\n class=\"btn-clean m-l-4 flex-item-middle\"\n popover=\"{{ 'Refresh device resources as part of connecting' | translate }}\"\n placement=\"right\"\n outsideClick=\"false\"\n >\n <i c8yIcon=\"question-circle-o text-primary\"></i>\n </a>\n </div>\n </div>\n </div>\n <div class=\"card-block\" *ngIf=\"credentialsExist && !isEdit\">\n <p forceHtmlTranslate>\n Credentials already provided.<br />\n Click \"Replace credentials\" below to overwrite them.\n </p>\n </div>\n <div class=\"card-footer\">\n <button\n title=\"{{ 'Replace credentials' | translate }}\"\n type=\"submit\"\n class=\"btn btn-default\"\n translate\n *ngIf=\"!isEdit\"\n (click)=\"replaceCredentials()\"\n >\n Replace credentials\n </button>\n <button\n title=\"{{ 'Delete credentials' | translate }}\"\n type=\"button\"\n class=\"btn btn-danger\"\n translate\n *ngIf=\"credentialsExist && isEdit\"\n (click)=\"deleteCredentials()\"\n >\n Delete credentials\n </button>\n <button\n title=\"{{ 'Save credentials & connect' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n translate\n *ngIf=\"isEdit\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"saveCredentials()\"\n >\n Save credentials & connect\n </button>\n </div>\n </form>\n </div>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":24,"character":25},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ModalService","line":25,"character":19},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":26,"character":19}]}],"ngOnInit":[{"__symbolic":"method"}],"replaceCredentials":[{"__symbolic":"method"}],"saveCredentials":[{"__symbolic":"method"}],"deleteCredentials":[{"__symbolic":"method"}],"initForm":[{"__symbolic":"method"}],"resetForm":[{"__symbolic":"method"}],"safelyUpdateCredentials":[{"__symbolic":"method"}],"safelyDeleteCredentials":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"FetchClient","line":9,"character":30}]}],"getOptions":[{"__symbolic":"method"}],"updateOptions":[{"__symbolic":"method"}],"deleteOptions":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"c8y-status-display","template":"<div class=\"d-flex\">\n <div class=\"dot dot-64 p-16\"\n [ngClass]=\"{\n 'dot-success': icon === 'success',\n 'dot-danger': icon === 'failed',\n 'dot-info': icon === 'connecting',\n 'dot-default': icon === 'no-connection' || icon === 'unknown'\n }\"\n >\n <!-- unknown-->\n <svg viewBox=\"0 0 17 23\" *ngIf=\"icon === 'unknown'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard\" transform=\"translate(-24.000000, -20.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M34.4437635,36.1999921 C34.8390765,36.1999921 35.1312643,35.7531166 35.1312643,35.3749911 C35.1312643,34.8765531 35.7672026,33.6906141 36.7812663,33.1062384 C38.4140808,32.1952999 40.6312709,30.9406109 40.6312709,27.674982 C40.6312709,23.7390398 36.506266,20.7999738 32.8281366,20.7999738 C29.3218824,20.7999738 26.7093793,22.2952881 24.8531271,25.3718542 C24.6640644,25.6812296 24.7328144,26.059355 25.0250023,26.2827928 L27.8437557,28.4312329 C27.9812558,28.5171705 28.118756,28.568733 28.2734437,28.568733 C28.4625064,28.568733 28.6687566,28.4656079 28.8062568,28.2937327 C29.8203205,27.0218562 30.232821,26.6093557 30.6453215,26.3171679 C31.0234469,26.059355 31.7281353,25.8187298 32.5015737,25.8187298 C33.8937629,25.8187298 35.1484519,26.6781058 35.1484519,27.6406069 C35.1484519,28.7406082 34.5984512,29.3077964 33.2750121,29.9093596 C31.7625103,30.5968605 29.7000079,32.3843626 29.7000079,34.4640526 L29.7000079,35.237491 C29.7000079,35.6156164 29.9406332,36.1999921 30.3187586,36.1999921 L34.4437635,36.1999921 Z M34.5125136,42.7999934 C34.8906391,42.7999934 35.2000079,42.4906246 35.2000079,42.1124992 L35.2000079,37.9874943 C35.2000079,37.6093688 34.8906391,37.2999934 34.5125136,37.2999934 L30.3875087,37.2999934 C30.0093832,37.2999934 29.7000079,37.6093688 29.7000079,37.9874943 L29.7000079,42.1124992 C29.7000079,42.4906246 30.0093832,42.7999934 30.3875087,42.7999934 L34.5125136,42.7999934 Z\" id=\"\"></path>\n </g>\n </g>\n </svg>\n <!-- no connection -->\n <svg viewBox=\"0 0 32 32\" *ngIf=\"icon === 'no-connection'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy\" transform=\"translate(-16.000000, -16.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M36.090359,41.560381 L32.5058901,45.1435604 C28.9330257,48.7177143 23.134696,48.7177143 19.5592528,45.1435604 C15.9850989,41.5681172 15.9863883,35.7710769 19.5592528,32.1969231 L23.1424323,28.6137436 L25.8772015,31.3485128 L22.294022,34.9316923 C20.2335971,36.9921172 20.2335971,40.3470769 22.294022,42.4062125 C24.3570257,44.4692161 27.710696,44.4692161 29.7711209,42.4062125 L33.3543004,38.8256117 L36.090359,41.560381 L36.090359,41.560381 Z M32.1964396,19.5597363 L28.6132601,23.1429158 L31.3480293,25.877685 L34.9324982,22.2945055 C36.9929231,20.2340806 40.3465934,20.2340806 42.4044396,22.2957949 C44.470022,24.3562198 44.470022,27.7098901 42.4095971,29.770315 L38.8264176,33.3534945 L41.5611868,36.0882637 L45.1443663,32.5063736 C48.7172308,28.9309304 48.7172308,23.1338901 45.1443663,19.5597363 C41.5676337,15.9855824 35.7705934,15.9855824 32.1964396,19.5597363 Z M24.5310916,18.5346813 L26.3877949,18.2716484 L26.9525421,22.2467985 L25.0984176,22.5111209 L24.5310916,18.5346813 L24.5310916,18.5346813 Z M18.2711649,26.386989 L18.5367766,24.5289963 L22.5132161,25.0963223 L22.2476044,26.9530256 L18.2711649,26.386989 Z M24.4511502,23.1364689 L23.1256704,24.4645275 L20.2825934,21.6240293 L21.6093627,20.2972601 L24.4511502,23.1364689 L24.4511502,23.1364689 Z M40.1699487,46.1647473 L38.3119561,46.4277802 L37.7472088,42.45263 L39.6026227,42.1883077 L40.1699487,46.1647473 L40.1699487,46.1647473 Z M46.4311649,38.3124396 L46.1642638,40.1704322 L42.1878242,39.6043956 L42.4547253,37.7464029 L46.4311649,38.3124396 Z M40.2511795,41.5616703 L41.57537,40.2349011 L44.4184469,43.0766886 L43.0916777,44.4034579 L40.2511795,41.5616703 Z\" id=\"Shape-Copy-2\"></path>\n </g>\n </g>\n </svg>\n <!-- Connecting -->\n <svg viewBox=\"0 0 29 32\" class=\"fa-spin\" *ngIf=\"icon === 'connecting'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy-2\" transform=\"translate(-17.000000, -16.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M39.7170667,23.98025 L41.3802667,22.0206 C42.31325,22.9163667 43.1179,23.9391833 43.7788167,25.0608167 L41.4996167,26.2556 C40.9991167,25.424 40.4049333,24.6565667 39.7170667,23.98025 Z M44.6502,26.7766333 L42.3568833,27.9791167 C42.6841333,28.8094333 42.9151333,29.68595 43.0409,30.5958333 L45.6345167,30.5958333 C45.4843667,29.2573167 45.1494167,27.9752667 44.6502,26.7766333 L44.6502,26.7766333 Z M25.6440333,22.3363 C27.3868,21.2711333 29.4273,20.65 31.6166667,20.65 C34.0793833,20.65 36.3585833,21.4302667 38.2348167,22.7495333 L39.9005833,20.7873167 C37.5726167,19.0946 34.7159167,18.0833333 31.6166667,18.0833333 C28.8818833,18.0833333 26.3473,18.8841333 24.18745,20.23035 L21.8132833,16.8 L19.05155,25.7833333 L28.0271833,25.7833333 L25.6440333,22.3363 L25.6440333,22.3363 Z M43.1512667,32.5208333 C43.1166167,33.7554 42.8869,34.9399167 42.4916333,36.05 L45.1879167,36.05 C45.5074667,34.9232333 45.7025333,33.7425667 45.7333333,32.5208333 L43.1512667,32.5208333 Z M23.5162667,40.41975 L21.85435,42.3794 C20.9213667,41.4836333 20.1154333,40.4608167 19.4558,39.3391833 L21.7337167,38.1444 C22.2342167,38.976 22.8284,39.7434333 23.5162667,40.41975 L23.5162667,40.41975 Z M18.5831333,37.6233667 L20.87645,36.4208833 C20.5504833,35.5905667 20.3194833,34.71405 20.1924333,33.8041667 L17.5975333,33.8041667 C17.75025,35.1426833 18.0839167,36.4247333 18.5831333,37.6233667 Z M37.5893,42.0637 C35.8478167,43.1288667 33.8073167,43.75 31.6166667,43.75 C29.1552333,43.75 26.87475,42.9697333 24.9998,41.6504667 L23.33275,43.6126833 C25.6607167,45.3054 28.5187,46.3166667 31.6166667,46.3166667 C34.35145,46.3166667 36.8873167,45.5158667 39.0458833,44.16965 L41.42005,47.6 L44.1817833,38.6166667 L35.20615,38.6166667 L37.5893,42.0637 L37.5893,42.0637 Z M20.0820667,31.8791667 C20.1167167,30.6446 20.3477167,29.4600833 20.7404167,28.35 L18.0454167,28.35 C17.7258667,29.4767667 17.5295167,30.6574333 17.5,31.8791667 L20.0820667,31.8791667 Z\" id=\"Shape\" transform=\"translate(31.616667, 32.200000) scale(-1, 1) translate(-31.616667, -32.200000) \"></path>\n </g>\n </g>\n </svg>\n <!-- Failed -->\n <svg viewBox=\"0 0 28 27\" *ngIf=\"icon === 'failed'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy-3\" transform=\"translate(-18.000000, -18.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M32.1000157,45.0000026 C39.3875244,45.0000026 45.3000315,39.0874956 45.3000315,31.7999869 C45.3000315,24.5124782 39.3875244,18.5999712 32.1000157,18.5999712 C24.812507,18.5999712 18.9,24.5124782 18.9,31.7999869 C18.9,39.0874956 24.812507,45.0000026 32.1000157,45.0000026 Z M33.6812676,34.5499902 L30.5015763,34.5499902 C30.1750134,34.5499902 29.9172006,34.3609274 29.9172006,34.1203022 L29.6250128,23.4468519 C29.6250128,23.3265393 29.6765753,23.2062266 29.796888,23.1374766 C29.9000131,23.051539 30.0547008,22.9999764 30.2093885,22.9999764 L33.990643,22.9999764 C34.1453307,22.9999764 34.3000184,23.051539 34.4031435,23.1374766 C34.5234561,23.2062266 34.5750187,23.3265393 34.5750187,23.4468519 L34.2656433,34.1203022 C34.2484558,34.3609274 33.990643,34.5499902 33.6812676,34.5499902 Z M33.7672052,40.5999974 L30.4672013,40.5999974 C30.1578259,40.5999974 29.9000131,40.3421846 29.9000131,40.0328092 L29.9000131,36.7671803 C29.9000131,36.4578049 30.1578259,36.1999921 30.4672013,36.1999921 L33.7672052,36.1999921 C34.0593931,36.1999921 34.3000184,36.4578049 34.3000184,36.7671803 L34.3000184,40.0328092 C34.3000184,40.3421846 34.0593931,40.5999974 33.7672052,40.5999974 Z\" id=\"\"></path>\n </g>\n </g>\n </svg>\n <!-- Success -->\n <svg viewBox=\"0 0 31 31\" *ngIf=\"icon === 'success'\">\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard-Copy-4\" transform=\"translate(-17.000000, -17.000000)\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M24.9403042,28.1887417 C25.5036875,27.6253583 26.1286708,27.1607917 26.7934375,26.7937583 C30.4984208,24.751975 35.2493208,25.837675 37.6311875,29.448975 L34.7488208,32.3300583 C33.9223542,30.4448417 31.8703042,29.371975 29.8285208,29.8288417 C29.0598042,30.0008083 28.3295875,30.384525 27.7328375,30.981275 L22.2093708,36.5073083 C20.5320542,38.184625 20.5320542,40.9129917 22.2093708,42.5903083 C23.8866875,44.267625 26.6150542,44.267625 28.2923708,42.5903083 L29.9953542,40.887325 C31.5443375,41.5020417 33.2049708,41.7471583 34.8450708,41.6252417 L31.0861875,45.384125 C27.8637375,48.606575 22.6392875,48.606575 19.4168375,45.384125 C16.1943875,42.161675 16.1943875,36.937225 19.4168375,33.714775 L24.9403042,28.1887417 Z M33.7131708,19.415875 L29.9542875,23.1747583 C31.5931042,23.0515583 33.2550208,23.2979583 34.8040042,23.9113917 L36.5057042,22.2096917 C38.1830208,20.532375 40.9113875,20.532375 42.5887042,22.2096917 C44.2660208,23.8870083 44.2660208,26.615375 42.5887042,28.2926917 L37.0639542,33.8174417 C35.3815042,35.4998917 32.6492875,35.485775 30.9809542,33.8174417 C30.5921042,33.4285917 30.2571542,32.944775 30.0479708,32.4686583 L27.1656042,35.3497417 C27.4684708,35.809175 27.7828875,36.205725 28.1871375,36.609975 C29.2292042,37.6520417 30.5561708,38.4284583 32.0833375,38.796775 C34.0622375,39.2728917 36.1823042,39.0098083 38.0033542,38.0049583 C38.6681208,37.637925 39.2931042,37.1733583 39.8564875,36.609975 L45.3799542,31.085225 C48.6036875,27.862775 48.6036875,22.638325 45.3812375,19.415875 C42.1587875,16.1947083 36.9356208,16.1947083 33.7131708,19.415875 Z\" id=\"Shape-Copy\"></path>\n </g>\n </g>\n </svg>\n </div>\n <div class=\"flex-item-middle m-l-16\">\n <p class=\"text-label-small\" translate>Connection status</p>\n <h4 class=\"m-t-4 m-b-8\" [ngClass]=\"{ 'text-muted': icon === 'unknown' }\">{{ statusName | translate }}</h4>\n <p><strong>{{ baseUrl }}</strong></p>\n </div>\n</div>\n"}]}],"members":{"baseUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"status":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}]}}},"origins":{"ConnectivityModule":"./connectivity.module","ImpactProviderSettingsComponent":"./impact/impact-provider-settings.component","ɵa":"./impact/impact-connectivity.service","ɵb":"./impact/status-display.component"},"importAs":"@c8y/ngx-components/connectivity"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"ContextDashboardModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":42,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"}],"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":50,"character":12},{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":50,"character":24},{"__symbolic":"reference","module":"ngx-bootstrap/popover","name":"PopoverModule","line":50,"character":39},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/dropdown","name":"BsDropdownModule","line":50,"character":54},"member":"forRoot"}}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"}],"entryComponents":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵf"}]}]}],"members":{},"statics":{"config":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"ContextDashboardModule"},"providers":[{"provide":{"__symbolic":"reference","name":"CONTEXT_DASHBOARD_CONFIG"},"useValue":{}},{"__symbolic":"reference","name":"ContextDashboardService"},{"__symbolic":"reference","name":"DeviceDashboardGuard"},{"__symbolic":"reference","name":"GroupDashboardGuard"},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_ONCE_ROUTE","line":67,"character":19},"useValue":{"__symbolic":"select","expression":{},"member":"routes"},"multi":true},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_ACTION","line":72,"character":19},"useClass":{"__symbolic":"reference","name":"ɵg"},"multi":true}]}}}},"ContextDashboardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"InventoryService","line":52,"character":23},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"TabsService","line":53,"character":18},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ModalService","line":54,"character":19},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":55,"character":30},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":56,"character":20},{"__symbolic":"reference","module":"@c8y/client","name":"UserService","line":57,"character":18},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AppStateService","line":58,"character":22},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"Permissions","line":59,"character":25}]}],"create":[{"__symbolic":"method"}],"detail":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"activateDashboards":[{"__symbolic":"method"}],"getNamedDashboardOrCreate":[{"__symbolic":"method"}],"refreshTabs":[{"__symbolic":"method"}],"navigateToDashboard":[{"__symbolic":"method"}],"canEditDashboard":[{"__symbolic":"method"}],"isNamed":[{"__symbolic":"method"}],"isDeviceType":[{"__symbolic":"method"}],"getStyling":[{"__symbolic":"method"}],"mapWidgets":[{"__symbolic":"method"}],"getDashboard$":[{"__symbolic":"method"}],"getTabs$":[{"__symbolic":"method"}],"getContextDashboards$":[{"__symbolic":"method"}],"setBaseContextRoute":[{"__symbolic":"method"}],"removeDashboardMoProperty":[{"__symbolic":"method"}],"cacheDashboard":[{"__symbolic":"method"}],"createDashboardTab":[{"__symbolic":"method"}],"clean":[{"__symbolic":"method"}],"getNamedDashboard":[{"__symbolic":"method"}],"getContextDashboards":[{"__symbolic":"method"}],"getDashboardTypeFromViewContext":[{"__symbolic":"method"}],"createFragmentKey":[{"__symbolic":"method"}],"shouldSetGlobal":[{"__symbolic":"method"}]}},"DeviceDashboardGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ContextDashboardService"}]}],"canActivate":[{"__symbolic":"method"}]}},"GroupDashboardGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ContextDashboardService"}]}],"canActivate":[{"__symbolic":"method"}]}},"CONTEXT_DASHBOARD_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":44},"arguments":["ContextDashboardConfig"]},"ContextDashboardConfig":{"__symbolic":"interface"},"ContextWidgetConfig":{"__symbolic":"interface"},"ContextDashboardManagedObject":{"__symbolic":"interface"},"ContextDashboard":{"__symbolic":"interface"},"ContextDashboardType":{"Device":"device","DeviceType":"type","Group":"group","Named":"name"},"WIDGET_HEADER_CLASSES":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":92,"character":11},"arguments":["Regular`style`"]},"class":"panel-title-regular","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":94,"character":17},"arguments":["The widget has no border between header and content."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":97,"character":11},"arguments":["Border`style`"]},"class":"panel-title-border","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":99,"character":17},"arguments":["The widget has a small separation border between header and content."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":102,"character":11},"arguments":["Overlay`style`"]},"class":"panel-title-overlay","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":104,"character":17},"arguments":["The widget content overlays the header."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":107,"character":11},"arguments":["Hidden`style`"]},"class":"panel-title-hidden","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":109,"character":17},"arguments":["The widget header is not shown."]}}],"WIDGET_CONTENT_CLASSES":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":115,"character":11},"arguments":["Light`style`"]},"class":"panel-content-light","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":117,"character":17},"arguments":["The widget is styled with a light background and has low contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":120,"character":11},"arguments":["Dark`style`"]},"class":"panel-content-dark","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":122,"character":17},"arguments":["The widget is styled with a dark background and has high contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":125,"character":11},"arguments":["Transparent`style`"]},"class":"panel-content-transparent","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":127,"character":17},"arguments":["The widget is styled with a transparent background and therefore is border-less."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":132,"character":11},"arguments":["Branded`style`"]},"class":"panel-content-branded","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":134,"character":17},"arguments":["The widget is styled with the main brand color."]}}],"DASHBOARD_THEME_CLASSES":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":140,"character":11},"arguments":["Light`theme`"]},"class":"dashboard-theme-light","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":142,"character":17},"arguments":["The dashboard is styled with a light background and has low contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":145,"character":11},"arguments":["Dark`theme`"]},"class":"dashboard-theme-dark","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":147,"character":17},"arguments":["The dashboard is styled with a dark background and has high contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":150,"character":11},"arguments":["Transparent`theme`"]},"class":"dashboard-theme-transparent","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":152,"character":17},"arguments":["The dashboard is styled with a transparent background and therefore is border-less."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":157,"character":11},"arguments":["Branded`theme`"]},"class":"dashboard-theme-branded","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":159,"character":17},"arguments":["The dashboard is styled with the main brand color."]}}],"CockpitDashboardModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":30,"character":1},"arguments":[{"entryComponents":[{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"}],"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"DocsModule","line":33,"character":4},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":34,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ContextDashboardModule"},"member":"config"},"arguments":[{"routes":[{"path":"dashboard/:dashboardId","component":{"__symbolic":"reference","name":"ɵb"},"canActivate":[{"__symbolic":"reference","name":"DeviceDashboardGuard"}],"context":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ViewContext","line":41,"character":19},"member":"Device"}},{"path":"dashboard/:dashboardId","component":{"__symbolic":"reference","name":"ɵb"},"canActivate":[{"__symbolic":"reference","name":"GroupDashboardGuard"}],"context":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ViewContext","line":47,"character":19},"member":"Group"}},{"path":"","component":{"__symbolic":"reference","name":"ɵh"}}]}]},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"QuickLinkModule","line":55,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":56,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"}],"providers":[{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_NAVIGATOR_NODES","line":61,"character":15},"useValue":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":62,"character":26},"arguments":["Home"]},"icon":"home","priority":10000,"path":"/"}],"multi":true},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_COMPONENTS","line":66,"character":15},"multi":true,"useValue":[{"id":"cockpit.welcome.widget","label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":71,"character":17},"arguments":["Welcome to Cockpit"]},"description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":72,"character":23},"arguments":["Displays a welcome message for Cockpit"]},"component":{"__symbolic":"reference","name":"ɵi"},"previewImage":"","data":{"settings":{"noNewWidgets":false,"widgetDefaults":{"_width":12,"_height":6},"ng1":{"options":{"noDeviceTarget":true,"groupsSelectable":false}}}}}]},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_COMPONENTS","line":94,"character":15},"multi":true,"useValue":[{"id":"Cockpit Welcome","label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":99,"character":17},"arguments":["Welcome to Cockpit"]},"description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":100,"character":23},"arguments":["Displays a welcome message for Cockpit"]},"component":{"__symbolic":"reference","name":"ɵj"},"data":{"settings":{"noNewWidgets":true,"ng1":{"options":{"noDeviceTarget":true,"groupsSelectable":false}}}}}]}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"c8y-appearance-settings","viewProviders":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"ControlContainer","line":7,"character":30},"useExisting":{"__symbolic":"reference","module":"@angular/forms","name":"NgForm","line":7,"character":61}}],"template":"<h6 class=\"legend form-block\"><span translate>Layout</span></h6>\n<div class=\"row \">\n <div class=\"col-sm-6 m-b-32\">\n <label translate>Theme</label>\n <ul class=\"list-group\" style=\"box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);\">\n <li\n class=\"list-group-item flex-row\"\n style=\"align-items: center; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.05);\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div class=\"list-item-checkbox\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n name=\"content\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n </label>\n </div>\n <label [for]=\"'groupradiocontentclass' + i\">\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small *ngIf=\"themeClassItem.class === defaultThemeClass\" class=\"text-muted\" translate\n >Dashboard default</small\n >\n </label>\n <button class=\"btn btn-clean flex-item-top\"\n popover=\"{{ themeClassItem.description | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"focus\">\n <i \n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n </li>\n </ul>\n </div>\n <div class=\"col-sm-6\">\n <label translate>Widget header style</label>\n <ul class=\"list-group\" style=\"box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);\">\n <li\n class=\"list-group-item flex-row\"\n style=\"align-items: center; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.05);\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div class=\"list-item-checkbox\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n name=\"header\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n </label>\n </div>\n <label [for]=\"'groupradioheaderclass' + i\">\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small *ngIf=\"headerClassItem.class === defaultHeaderClass\" class=\"text-muted\" translate\n >Dashboard default</small\n >\n </label>\n <button class=\"btn btn-clean flex-item-top\"\n popover=\"{{ headerClassItem.description | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"focus\">\n <i \n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n </li>\n </ul>\n </div>\n</div>\n"}]}],"members":{"themeClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"headerClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"defaultThemeClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"defaultHeaderClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"themeClassChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"headerClassChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"possibleStylingTheme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"possibleStylingHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"themeClassClick":[{"__symbolic":"method"}],"headerClassClick":[{"__symbolic":"method"}],"resetToDefault":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"c8y-context-dashboard","host":{"style":"\n display: block;\n ","class":"dashboard c8y-grid-dashboard"},"template":"<c8y-action-bar-item [placement]=\"'more'\" *ngIf=\"defaultWidgets.length > 0\">\n <button (click)=\"restore()\" [disabled]=\"dashboard?.isFrozen || disabled\">\n <i c8yIcon=\"undo\"></i> <span translate>Restore dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [settings]=\"{\n isLoading: isLoading,\n isFrozen: dashboard?.isFrozen,\n isDisabled: disabled,\n canDelete: canDelete,\n translateWidgetTitle: dashboard?.translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard.name : undefined,\n widgetMargin: dashboard?.widgetMargin\n }\"\n (onFreeze)=\"toggleFreeze($event)\"\n (onChangeDashboard)=\"updateDashboardChildren($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"editDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n>\n</c8y-widgets-dashboard>\n"}]}],"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"childrenClasses":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"setTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"defaultWidgets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"canDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":60,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":75,"character":5},"arguments":[{"__symbolic":"reference","name":"CONTEXT_DASHBOARD_CONFIG"}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":70,"character":19},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":71,"character":20},{"__symbolic":"reference","name":"ContextDashboardService"},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":73,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":74,"character":22},{"__symbolic":"reference","name":"ContextDashboardConfig"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":77,"character":21}]}],"ngOnInit":[{"__symbolic":"method"}],"applyDeviceTarget":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"updateDashboardChildren":[{"__symbolic":"method"}],"deleteDashboard":[{"__symbolic":"method"}],"editDashboard":[{"__symbolic":"method"}],"editWidget":[{"__symbolic":"method"}],"addWidget":[{"__symbolic":"method"}],"updateWidget":[{"__symbolic":"method"}],"deleteWidget":[{"__symbolic":"method"}],"addDashboardClassToBody":[{"__symbolic":"method"}],"removeDashboardClassFromBody":[{"__symbolic":"method"}],"toggleFreeze":[{"__symbolic":"method"}],"toggleIsFrozenFlag":[{"__symbolic":"method"}],"loadContextDashboard":[{"__symbolic":"method"}],"loadNamedDashboard":[{"__symbolic":"method"}],"onLoad":[{"__symbolic":"method"}],"mergeWidgetClasses":[{"__symbolic":"method"}],"componentToWidget":[{"__symbolic":"method"}],"mapLegacy":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":5},"arguments":[{"__symbolic":"reference","name":"CONTEXT_DASHBOARD_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"DynamicComponentService","line":11,"character":37},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":12,"character":30},{"__symbolic":"reference","name":"ContextDashboardConfig"}]}],"getWidgetDefinition":[{"__symbolic":"method"}],"getWidgetDefinitions":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"c8y-widget-config","template":"<div class=\"modal-header separator\">\n <h3 *ngIf=\"!current\" translate>Add widget</h3>\n <h3 *ngIf=\"current\" translate>Edit widget</h3>\n</div>\n<form #configForm=\"ngForm\" name=\"form\">\n <div class=\"c8y-modal-tabs\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button type=\"button\" class=\"btn\" (click)=\"changeMode('select'); (false)\">\n <i c8yIcon=\"th-large\"></i> <span class=\"txt\" translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i> <span class=\"txt\" translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i> <span class=\"txt\" translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll\">\n <div\n *ngIf=\"mode === 'select'\"\n class=\"bg-white p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2;\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Search…' | translate }}\"\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button class=\"btn btn-clean\" (click)=\"resetSearch()\">\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-gray-lighter\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select\" style=\"margin-bottom:-24px;\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n *ngFor=\"let cmp of searchResult || components\"\n title=\"{{ cmp.description | translate }}\"\n >\n <div class=\"card p-8\" [class.active]=\"selected === cmp\" (click)=\"select(cmp)\">\n <div\n class=\"text-center p-8 m-b-8 flex-col flex-center\"\n style=\"min-height: 170px; background-color: var(--body-background-color, #f2f3f4);\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <h1><i c8yIcon=\"file-image-o\"></i></h1>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </div>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <h1 class=\"c8y-icon c8y-icon-device c8y-icon-duocolor\"></h1>\n <h3 translate>No widgets found.</h3>\n <div>\n <p translate>Rephrase your search term.</p>\n <div>\n <button class=\"btn btn-primary\" (click)=\"resetSearch()\" translate>\n Reset search\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body\" *ngIf=\"mode === 'config'\" style=\"min-height: calc(100vh - 290px);\">\n <h4 style=\"text-align: left;\">\n <strong>\n {{ selected.label | translate }}\n </strong>\n </h4>\n <p class=\"m-b-24\">\n {{ selected.description | translate }}\n </p>\n <div class=\"row\">\n <!-- change to col-sm-6 when preview is available -->\n <div class=\"col-sm-12\">\n <div class=\"legend form-block\" translate>Configuration</div>\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n id=\"widgetTitle\"\n [(ngModel)]=\"selected.data.title\"\n type=\"text\"\n name=\"title\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n\n <!-- This is an upgraded component for the device selector and still needs to be migrated -->\n <c8y-dynamic-component\n componentId=\"device.selector.legacy\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n *ngIf=\"!isUpgrade\"\n ></c8y-dynamic-component>\n\n <c8y-dynamic-component\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n ></c8y-dynamic-component>\n </div>\n <!-- markup for the preview \n \n <div class=\"col-sm-6 sticky-header-top-0\" >\n <div class=\"legend form-block\">\n Preview\n </div>\n <div class=\"bg-gray-lighter p-16\">\n <div class=\"card card-dashboard\" style=\"margin-bottom:0;\">\n <div class=\"card-header-actions\">\n <div class=\"card-title text-uppercase\">{{ selected.data.title }}</div>\n <div class=\"header-actions\">\n <div class=\"optionsBtn dropdow\" class=\"btnIcon dropdown-toggle c8y-dropdown\">\n <i c8yIcon=\"cog\"></i>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <div class=\"card-block\" style=\"min-height: 240px;\">\n include here the widget\n </div>\n </div>\n </div>\n </div>\n </div>\n --></div>\n </div>\n\n <div *ngIf=\"mode === 'style'\" class=\"modal-body p-t-0\" style=\"min-height: calc(100vh - 290px);\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n >\n </c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"close()\" translate>\n Cancel\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n translate\n [disabled]=\"contextDashboardService.formDisabled || configForm.invalid\"\n >\n Save\n </button>\n </div>\n</form>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":57,"character":19},{"__symbolic":"reference","name":"ContextDashboardService"}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"resetSearch":[{"__symbolic":"method"}],"changeMode":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getStyle":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"isDashboardDefaultStyle":[{"__symbolic":"method"}],"setDefaultStyle":[{"__symbolic":"method"}],"composeWidgetConfig":[{"__symbolic":"method"}],"applyTargetIfDeviceDashboard":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"c8y-widget-preview","template":"<div class=\"legend form-block\" translate>Preview</div>\n<label *ngIf=\"tab\" translate>Tab and layout</label>\n<label *ngIf=\"!tab\" translate>Layout</label>\n<div class=\"dashboard-preview-slot\" [ngClass]=\"previewClasses\">\n <div\n class=\"page-tabs page-tabs-horizontal navigator-open\"\n style=\" position: absolute; left: 0; margin: 0 15px; overflow: hidden;\"\n *ngIf=\"tab\"\n >\n <div class=\"tabContainer hidden-xs\">\n <ul class=\"nav nav-tabs nav-tabsc8y\">\n <li class=\"active\" style=\"left: 16px;\">\n <a routerlinkactive=\"\" title=\"{{ tab.name }}\">\n <i class=\"text-primary\" [c8yIcon]=\"tab.icon\"></i>\n <span class=\"txt\">{{ tab.name }}</span></a\n >\n </li>\n </ul>\n </div>\n <div class=\"visible-xs mobile-tabs\"></div>\n </div>\n <div [ngClass]=\"{ 'm-t-64': !!tab }\">\n <div class=\"card card-dashboard\" style=\"height: 360px;\">\n <div class=\"card-header-actions\" style=\"z-index: 8;\">\n <div class=\"card-title\">\n <span translate>Widget title</span>\n </div>\n <div class=\"header-actions\">\n <div class=\"optionsBtn dropdown\">\n <a href=\"\" (click)=\"(false)\" class=\"dropdown-toggle c8y-dropdown\">\n <i c8yIcon=\"cog\"></i>\n </a>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll p-t-16\">\n <p translate>Widget example content.</p>\n </div>\n </div>\n </div>\n</div>\n"}]}],"members":{"previewClasses":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":7,"character":3}}]}],"tab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"c8y-dashboard-detail","template":"<div class=\"modal-header\">\n <h3 *ngIf=\"!current\" translate>\n Add dashboard\n </h3>\n <h3 *ngIf=\"current\" translate>Edit dashboard</h3>\n</div>\n\n<div class=\"modal-body\">\n <form #dashboardDetailForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard\">\n <h6 class=\"legend form-block\"><span translate>Tab</span></h6>\n <div class=\"input-group\">\n <c8y-form-group>\n <label class=\"m-r-8\" translate>Icon</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n class=\"btn-default btn btn-gray\"\n dropdownToggle\n >\n <i c8yIcon=\"{{dashboard.icon}}\"></i>\n <span class=\"caret\"></span> \n </button> \n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4\"\n style=\"max-height: 250px;margin-left: 0;\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a style=\"cursor: pointer\" title=\"{{icon}}\" [ngClass]=\"{'active': dashboard.icon === icon}\">\n <i class=\"icon\" [c8yIcon]=\"icon\" ></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" translate>Menu label</span>\n <button class=\"btn btn-clean\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n >\n <i\n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n </label>\n <input\n title=\"{{ 'Menu label' | translate }}\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboard.name\"\n placeholder=\"{{ 'e.g. My dashboard' | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label>\n <span translate class=\"m-r-4\">Position in navigation</span>\n <button class=\"btn btn-clean\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n >\n <i \n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n \n </label>\n <input\n title=\"{{ 'Position in navigation' | translate }}\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n \n </div>\n\n <div style=\"position: relative;\">\n <div class=\"col-sm-12\">\n <div class=\"form-group m-b-24\" *ngIf=\"!current && deviceType\">\n <label class=\"c8y-checkbox\">\n <input type=\"checkbox\" name=\"deviceType\" [(ngModel)]=\"dashboard.deviceType\" />\n <span></span>\n {{ 'Apply dashboard to all devices of type ' | translate\n }}<i>{{ dashboard.deviceTypeValue }}</i>\n </label>\n </div>\n\n <div\n class=\"alert alert-info m-b-24\"\n *ngIf=\"dashboard.deviceType && dashboard.deviceTypeValue\"\n >\n <i c8y-icon=\"info\"></i>\n {{ 'This dashboard is shared between all devices of the type ' | translate }}\n <i>{{ dashboard.deviceTypeValue }}</i>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n >\n </c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label>{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n title=\"{{ 'Widget margin' | translate }}\"\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <label translate>Widget titles</label>\n <c8y-form-group>\n <label\n title=\"{{ 'Translate widget titles if possible' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n /><span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n</div>\n\n<div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"close()\" translate>\n Cancel\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n translate\n >\n Save\n </button>\n</div>\n"}]}],"members":{"dashboardDetailForm":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":17,"character":3},"arguments":["dashboardDetailForm",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":44,"character":5},"arguments":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ICON_LIST","line":44,"character":12}]}],null],"parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":43,"character":19},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","name":"ContextDashboardService"}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getDashboardPreviewStyle":[{"__symbolic":"method"}],"selectIcon":[{"__symbolic":"method"}],"updateFiltered":[{"__symbolic":"method"}],"setDashboardStyle":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":11,"character":20},{"__symbolic":"reference","name":"ContextDashboardService"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":13,"character":21},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"Permissions","line":14,"character":25}]}],"get":[{"__symbolic":"method"}],"addDashboard":[{"__symbolic":"method"}],"isEnabled":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"c8y-cockpit-dashboard","template":"<c8y-title>\n {{'Home'|translate}}\n</c8y-title>\n\n<c8y-context-dashboard name=\"home-cockpit1\" [defaultWidgets]=\"DEFAULT_HOME_WIDGETS\" [canDelete]=\"false\"></c8y-context-dashboard>\n"}]}],"members":{}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"c8y-welcome-to-cockpit","template":"<div class=\"welcome-widget welcome-cockpit\">\r\n <div class=\"flex-row\">\r\n <div class=\"col-xs-12 col-md-5 flex-item-v-stretch p-24\">\r\n <h2 class=\"text-light\">{{ 'Welcome to Cockpit' | translate }}</h2>\r\n <p class=\"text-16 text-light p-t-16 p-b-24\">{{ welcomeMessage | translate }}</p>\r\n <div class=\"card-group interact-grid tight-grid\">\r\n <div *ngFor=\"let link of quickLinks\" class=\"col-sm-4 col-xs-6\">\r\n <c8y-quick-link\r\n (click)=\"link.click ? link.click() : false\"\r\n [icon]=\"link.icon\"\r\n [label]=\"link.label\"\r\n class=\"card\"\r\n >\r\n </c8y-quick-link>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-sm-6 welcome-illustration flex-item-v-stretch\"></div> -->\r\n </div>\r\n</div>\r\n"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"TenantService","line":25,"character":27},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"DocsService","line":26,"character":18},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":27,"character":20},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"NavigatorService","line":28,"character":23},{"__symbolic":"reference","module":"@c8y/client","name":"ApplicationService","line":29,"character":32}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setMessage":[{"__symbolic":"method"}],"createQuicklinkAddGroup":[{"__symbolic":"method"}],"createConnectSmartphoneQuickLink":[{"__symbolic":"method"}],"createQuickLinkReports":[{"__symbolic":"method"}],"createQuicklinkDataPointLibrary":[{"__symbolic":"method"}],"createQuicklinkSmartRules":[{"__symbolic":"method"}],"createQuicklinkRegisterDevice":[{"__symbolic":"method"}],"createQuicklinkUserGuide":[{"__symbolic":"method"}],"findNavigatorNode":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"c8y-legacy-welcome-widget","template":"<div class=\"card-block\">\r\n <p class=\"lead\" c8y-guide-docs>\r\n <span>{{ 'Welcome to Cockpit' | translate }}.</span>\r\n <span title=\"{{ 'Browse the manual' | translate }}\" class=\"cockpit-welcome-manual\" translate\r\n >Browse the manual <a c8y-guide-href=\"users-guide/cockpit/\">here</a>.</span\r\n >\r\n </p>\r\n <p class=\"m-t-16\">\r\n <em>{{ 'New default dashboard available.' | translate }} </em>\r\n </p>\r\n <button class=\"btn btn-primary btn-sm m-t-16\" (click)=\"restore(); (false)\" translate>\r\n Get new dashboard\r\n </button>\r\n</div>\r\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":8,"character":15}}]],"parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"restore":[{"__symbolic":"method"}]}}},"origins":{"ContextDashboardModule":"./context-dashboard.module","ContextDashboardService":"./context-dashboard.service","DeviceDashboardGuard":"./device-dashboard.guard","GroupDashboardGuard":"./group-dashboard.guard","CONTEXT_DASHBOARD_CONFIG":"./context-dashboard.model","ContextDashboardConfig":"./context-dashboard.model","ContextWidgetConfig":"./context-dashboard.model","ContextDashboardManagedObject":"./context-dashboard.model","ContextDashboard":"./context-dashboard.model","ContextDashboardType":"./context-dashboard.model","WIDGET_HEADER_CLASSES":"./context-dashboard.model","WIDGET_CONTENT_CLASSES":"./context-dashboard.model","DASHBOARD_THEME_CLASSES":"./context-dashboard.model","CockpitDashboardModule":"./cockpit-dashboard.module","ɵa":"./appearance-settings.component","ɵb":"./context-dashboard.component","ɵc":"./widget.service","ɵd":"./widget-config.component","ɵe":"./widget-preview.component","ɵf":"./dashboard-detail.component","ɵg":"./dashboard-actions.factory","ɵh":"./cockpit-dashboard.component","ɵi":"./welcome/welcome.component","ɵj":"./legacy-welcome/legacy-welcome.component"},"importAs":"@c8y/ngx-components/context-dashboard"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"ContextDashboardModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":42,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"}],"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":50,"character":12},{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":50,"character":24},{"__symbolic":"reference","module":"ngx-bootstrap/popover","name":"PopoverModule","line":50,"character":39},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/dropdown","name":"BsDropdownModule","line":50,"character":54},"member":"forRoot"}}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"}],"entryComponents":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵf"}]}]}],"members":{},"statics":{"config":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"ContextDashboardModule"},"providers":[{"provide":{"__symbolic":"reference","name":"CONTEXT_DASHBOARD_CONFIG"},"useValue":{}},{"__symbolic":"reference","name":"ContextDashboardService"},{"__symbolic":"reference","name":"DeviceDashboardGuard"},{"__symbolic":"reference","name":"GroupDashboardGuard"},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_ONCE_ROUTE","line":67,"character":19},"useValue":{"__symbolic":"select","expression":{},"member":"routes"},"multi":true},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_ACTION","line":72,"character":19},"useClass":{"__symbolic":"reference","name":"ɵg"},"multi":true}]}}}},"ContextDashboardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"InventoryService","line":52,"character":23},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"TabsService","line":53,"character":18},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ModalService","line":54,"character":19},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":55,"character":30},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":56,"character":20},{"__symbolic":"reference","module":"@c8y/client","name":"UserService","line":57,"character":18},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AppStateService","line":58,"character":22},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"Permissions","line":59,"character":25}]}],"create":[{"__symbolic":"method"}],"detail":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"activateDashboards":[{"__symbolic":"method"}],"getNamedDashboardOrCreate":[{"__symbolic":"method"}],"refreshTabs":[{"__symbolic":"method"}],"navigateToDashboard":[{"__symbolic":"method"}],"canEditDashboard":[{"__symbolic":"method"}],"isNamed":[{"__symbolic":"method"}],"isDeviceType":[{"__symbolic":"method"}],"getStyling":[{"__symbolic":"method"}],"mapWidgets":[{"__symbolic":"method"}],"getDashboard$":[{"__symbolic":"method"}],"getTabs$":[{"__symbolic":"method"}],"getContextDashboards$":[{"__symbolic":"method"}],"setBaseContextRoute":[{"__symbolic":"method"}],"removeDashboardMoProperty":[{"__symbolic":"method"}],"cacheDashboard":[{"__symbolic":"method"}],"createDashboardTab":[{"__symbolic":"method"}],"clean":[{"__symbolic":"method"}],"getNamedDashboard":[{"__symbolic":"method"}],"getContextDashboards":[{"__symbolic":"method"}],"getDashboardTypeFromViewContext":[{"__symbolic":"method"}],"createFragmentKey":[{"__symbolic":"method"}],"shouldSetGlobal":[{"__symbolic":"method"}]}},"DeviceDashboardGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ContextDashboardService"}]}],"canActivate":[{"__symbolic":"method"}]}},"GroupDashboardGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ContextDashboardService"}]}],"canActivate":[{"__symbolic":"method"}]}},"CONTEXT_DASHBOARD_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":44},"arguments":["ContextDashboardConfig"]},"ContextDashboardConfig":{"__symbolic":"interface"},"ContextWidgetConfig":{"__symbolic":"interface"},"ContextDashboardManagedObject":{"__symbolic":"interface"},"ContextDashboard":{"__symbolic":"interface"},"ContextDashboardType":{"Device":"device","DeviceType":"type","Group":"group","Named":"name"},"WIDGET_HEADER_CLASSES":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":92,"character":11},"arguments":["Regular`style`"]},"class":"panel-title-regular","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":94,"character":17},"arguments":["The widget has no border between header and content."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":97,"character":11},"arguments":["Border`style`"]},"class":"panel-title-border","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":99,"character":17},"arguments":["The widget has a small separation border between header and content."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":102,"character":11},"arguments":["Overlay`style`"]},"class":"panel-title-overlay","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":104,"character":17},"arguments":["The widget content overlays the header."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":107,"character":11},"arguments":["Hidden`style`"]},"class":"panel-title-hidden","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":109,"character":17},"arguments":["The widget header is not shown."]}}],"WIDGET_CONTENT_CLASSES":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":115,"character":11},"arguments":["Light`style`"]},"class":"panel-content-light","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":117,"character":17},"arguments":["The widget is styled with a light background and has low contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":120,"character":11},"arguments":["Dark`style`"]},"class":"panel-content-dark","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":122,"character":17},"arguments":["The widget is styled with a dark background and has high contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":125,"character":11},"arguments":["Transparent`style`"]},"class":"panel-content-transparent","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":127,"character":17},"arguments":["The widget is styled with a transparent background and therefore is border-less."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":132,"character":11},"arguments":["Branded`style`"]},"class":"panel-content-branded","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":134,"character":17},"arguments":["The widget is styled with the main brand color."]}}],"DASHBOARD_THEME_CLASSES":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":140,"character":11},"arguments":["Light`theme`"]},"class":"dashboard-theme-light","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":142,"character":17},"arguments":["The dashboard is styled with a light background and has low contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":145,"character":11},"arguments":["Dark`theme`"]},"class":"dashboard-theme-dark","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":147,"character":17},"arguments":["The dashboard is styled with a dark background and has high contrast."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":150,"character":11},"arguments":["Transparent`theme`"]},"class":"dashboard-theme-transparent","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":152,"character":17},"arguments":["The dashboard is styled with a transparent background and therefore is border-less."]}},{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":157,"character":11},"arguments":["Branded`theme`"]},"class":"dashboard-theme-branded","description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":159,"character":17},"arguments":["The dashboard is styled with the main brand color."]}}],"CockpitDashboardModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":30,"character":1},"arguments":[{"entryComponents":[{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"}],"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"DocsModule","line":33,"character":4},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":34,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ContextDashboardModule"},"member":"config"},"arguments":[{"routes":[{"path":"dashboard/:dashboardId","component":{"__symbolic":"reference","name":"ɵb"},"canActivate":[{"__symbolic":"reference","name":"DeviceDashboardGuard"}],"context":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ViewContext","line":41,"character":19},"member":"Device"}},{"path":"dashboard/:dashboardId","component":{"__symbolic":"reference","name":"ɵb"},"canActivate":[{"__symbolic":"reference","name":"GroupDashboardGuard"}],"context":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ViewContext","line":47,"character":19},"member":"Group"}},{"path":"","component":{"__symbolic":"reference","name":"ɵh"}}]}]},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"QuickLinkModule","line":55,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":56,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"}],"providers":[{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_NAVIGATOR_NODES","line":61,"character":15},"useValue":[{"label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":62,"character":26},"arguments":["Home"]},"icon":"home","priority":10000,"path":"/"}],"multi":true},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_COMPONENTS","line":66,"character":15},"multi":true,"useValue":[{"id":"cockpit.welcome.widget","label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":71,"character":17},"arguments":["Welcome to Cockpit"]},"description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":72,"character":23},"arguments":["Displays a welcome message for Cockpit"]},"component":{"__symbolic":"reference","name":"ɵi"},"previewImage":"","data":{"settings":{"noNewWidgets":false,"widgetDefaults":{"_width":12,"_height":6},"ng1":{"options":{"noDeviceTarget":true,"groupsSelectable":false}}}}}]},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_COMPONENTS","line":94,"character":15},"multi":true,"useValue":[{"id":"Cockpit Welcome","label":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":99,"character":17},"arguments":["Welcome to Cockpit"]},"description":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"gettext","line":100,"character":23},"arguments":["Displays a welcome message for Cockpit"]},"component":{"__symbolic":"reference","name":"ɵj"},"data":{"settings":{"noNewWidgets":true,"ng1":{"options":{"noDeviceTarget":true,"groupsSelectable":false}}}}}]}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"c8y-appearance-settings","viewProviders":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"ControlContainer","line":7,"character":30},"useExisting":{"__symbolic":"reference","module":"@angular/forms","name":"NgForm","line":7,"character":61}}],"template":"<h6 class=\"legend form-block\"><span translate>Layout</span></h6>\n<div class=\"row \">\n <div class=\"col-sm-6 m-b-32\">\n <label translate>Theme</label>\n <ul class=\"list-group\" style=\"box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);\">\n <li\n class=\"list-group-item flex-row\"\n style=\"align-items: center; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.05);\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div class=\"list-item-checkbox\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n name=\"content\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n </label>\n </div>\n <label [for]=\"'groupradiocontentclass' + i\">\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small *ngIf=\"themeClassItem.class === defaultThemeClass\" class=\"text-muted\" translate\n >Dashboard default</small\n >\n </label>\n <button class=\"btn btn-clean flex-item-top\"\n popover=\"{{ themeClassItem.description | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"focus\">\n <i \n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n </li>\n </ul>\n </div>\n <div class=\"col-sm-6\">\n <label translate>Widget header style</label>\n <ul class=\"list-group\" style=\"box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);\">\n <li\n class=\"list-group-item flex-row\"\n style=\"align-items: center; box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.05);\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div class=\"list-item-checkbox\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n name=\"header\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n </label>\n </div>\n <label [for]=\"'groupradioheaderclass' + i\">\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small *ngIf=\"headerClassItem.class === defaultHeaderClass\" class=\"text-muted\" translate\n >Dashboard default</small\n >\n </label>\n <button class=\"btn btn-clean flex-item-top\"\n popover=\"{{ headerClassItem.description | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"focus\">\n <i \n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n </li>\n </ul>\n </div>\n</div>\n"}]}],"members":{"themeClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"headerClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"defaultThemeClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"defaultHeaderClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"themeClassChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"headerClassChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"possibleStylingTheme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"possibleStylingHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"themeClassClick":[{"__symbolic":"method"}],"headerClassClick":[{"__symbolic":"method"}],"resetToDefault":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"c8y-context-dashboard","host":{"style":"\n display: block;\n ","class":"dashboard c8y-grid-dashboard"},"template":"<c8y-action-bar-item [placement]=\"'more'\" *ngIf=\"defaultWidgets.length > 0\">\n <button (click)=\"restore()\" [disabled]=\"dashboard?.isFrozen || disabled\">\n <i c8yIcon=\"undo\"></i> <span translate>Restore dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [settings]=\"{\n isLoading: isLoading,\n isFrozen: dashboard?.isFrozen,\n isDisabled: disabled,\n canDelete: canDelete,\n translateWidgetTitle: dashboard?.translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard.name : undefined,\n widgetMargin: dashboard?.widgetMargin\n }\"\n (onFreeze)=\"toggleFreeze($event)\"\n (onChangeDashboard)=\"updateDashboardChildren($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"editDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n>\n</c8y-widgets-dashboard>\n"}]}],"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"childrenClasses":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"setTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"defaultWidgets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"canDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":60,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":75,"character":5},"arguments":[{"__symbolic":"reference","name":"CONTEXT_DASHBOARD_CONFIG"}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":70,"character":19},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":71,"character":20},{"__symbolic":"reference","name":"ContextDashboardService"},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":73,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":74,"character":22},{"__symbolic":"reference","name":"ContextDashboardConfig"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":77,"character":21}]}],"ngOnInit":[{"__symbolic":"method"}],"applyDeviceTarget":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"updateDashboardChildren":[{"__symbolic":"method"}],"deleteDashboard":[{"__symbolic":"method"}],"editDashboard":[{"__symbolic":"method"}],"editWidget":[{"__symbolic":"method"}],"addWidget":[{"__symbolic":"method"}],"updateWidget":[{"__symbolic":"method"}],"deleteWidget":[{"__symbolic":"method"}],"addDashboardClassToBody":[{"__symbolic":"method"}],"removeDashboardClassFromBody":[{"__symbolic":"method"}],"toggleFreeze":[{"__symbolic":"method"}],"toggleIsFrozenFlag":[{"__symbolic":"method"}],"loadContextDashboard":[{"__symbolic":"method"}],"loadNamedDashboard":[{"__symbolic":"method"}],"onLoad":[{"__symbolic":"method"}],"mergeWidgetClasses":[{"__symbolic":"method"}],"componentToWidget":[{"__symbolic":"method"}],"mapLegacy":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":5},"arguments":[{"__symbolic":"reference","name":"CONTEXT_DASHBOARD_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"DynamicComponentService","line":11,"character":37},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":12,"character":30},{"__symbolic":"reference","name":"ContextDashboardConfig"}]}],"getWidgetDefinition":[{"__symbolic":"method"}],"getWidgetDefinitions":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"c8y-widget-config","template":"<div class=\"modal-header separator\">\n <h3 *ngIf=\"!current\" translate>Add widget</h3>\n <h3 *ngIf=\"current\" translate>Edit widget</h3>\n</div>\n<form #configForm=\"ngForm\" name=\"form\">\n <div class=\"c8y-modal-tabs\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button type=\"button\" class=\"btn\" (click)=\"changeMode('select'); (false)\">\n <i c8yIcon=\"th-large\"></i> <span class=\"txt\" translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i> <span class=\"txt\" translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i> <span class=\"txt\" translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll\">\n <div\n *ngIf=\"mode === 'select'\"\n class=\"bg-white p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2;\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Search…' | translate }}\"\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button class=\"btn btn-clean\" (click)=\"resetSearch()\">\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-gray-lighter\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select\" style=\"margin-bottom:-24px;\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n *ngFor=\"let cmp of searchResult || components\"\n title=\"{{ cmp.description | translate }}\"\n >\n <div class=\"card p-8\" [class.active]=\"selected === cmp\" (click)=\"select(cmp)\">\n <div\n class=\"text-center p-8 m-b-8 flex-col flex-center\"\n style=\"min-height: 170px; background-color: var(--body-background-color, #f2f3f4);\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <h1><i c8yIcon=\"file-image-o\"></i></h1>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </div>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <h1 class=\"c8y-icon c8y-icon-device c8y-icon-duocolor\"></h1>\n <h3 translate>No widgets found.</h3>\n <div>\n <p translate>Rephrase your search term.</p>\n <div>\n <button class=\"btn btn-primary\" (click)=\"resetSearch()\" translate>\n Reset search\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body\" *ngIf=\"mode === 'config'\" style=\"min-height: calc(100vh - 290px);\">\n <h4 style=\"text-align: left;\">\n <strong>\n {{ selected.label | translate }}\n </strong>\n </h4>\n <p class=\"m-b-24\">\n {{ selected.description | translate }}\n </p>\n <div class=\"row\">\n <!-- change to col-sm-6 when preview is available -->\n <div class=\"col-sm-12\">\n <div class=\"legend form-block\" translate>Configuration</div>\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n id=\"widgetTitle\"\n [(ngModel)]=\"selected.data.title\"\n type=\"text\"\n name=\"title\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n\n <!-- This is an upgraded component for the device selector and still needs to be migrated -->\n <c8y-dynamic-component\n componentId=\"device.selector.legacy\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n *ngIf=\"!isUpgrade\"\n ></c8y-dynamic-component>\n\n <c8y-dynamic-component\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n ></c8y-dynamic-component>\n </div>\n <!-- markup for the preview \n \n <div class=\"col-sm-6 sticky-header-top-0\" >\n <div class=\"legend form-block\">\n Preview\n </div>\n <div class=\"bg-gray-lighter p-16\">\n <div class=\"card card-dashboard\" style=\"margin-bottom:0;\">\n <div class=\"card-header-actions\">\n <div class=\"card-title text-uppercase\">{{ selected.data.title }}</div>\n <div class=\"header-actions\">\n <div class=\"optionsBtn dropdow\" class=\"btnIcon dropdown-toggle c8y-dropdown\">\n <i c8yIcon=\"cog\"></i>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <div class=\"card-block\" style=\"min-height: 240px;\">\n include here the widget\n </div>\n </div>\n </div>\n </div>\n </div>\n --></div>\n </div>\n\n <div *ngIf=\"mode === 'style'\" class=\"modal-body p-t-0\" style=\"min-height: calc(100vh - 290px);\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n >\n </c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"close()\" translate>\n Cancel\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n translate\n [disabled]=\"contextDashboardService.formDisabled || configForm.invalid\"\n >\n Save\n </button>\n </div>\n</form>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":57,"character":19},{"__symbolic":"reference","name":"ContextDashboardService"}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"resetSearch":[{"__symbolic":"method"}],"changeMode":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getStyle":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"isDashboardDefaultStyle":[{"__symbolic":"method"}],"setDefaultStyle":[{"__symbolic":"method"}],"composeWidgetConfig":[{"__symbolic":"method"}],"applyTargetIfDeviceDashboard":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"c8y-widget-preview","template":"<div class=\"legend form-block\" translate>Preview</div>\n<label *ngIf=\"tab\" translate>Tab and layout</label>\n<label *ngIf=\"!tab\" translate>Layout</label>\n<div class=\"dashboard-preview-slot\" [ngClass]=\"previewClasses\">\n <div\n class=\"page-tabs page-tabs-horizontal navigator-open\"\n style=\" position: absolute; left: 0; margin: 0 15px; overflow: hidden;\"\n *ngIf=\"tab\"\n >\n <div class=\"tabContainer hidden-xs\">\n <ul class=\"nav nav-tabs nav-tabsc8y\">\n <li class=\"active\" style=\"left: 16px;\">\n <a routerlinkactive=\"\" title=\"{{ tab.name }}\">\n <i class=\"text-primary\" [c8yIcon]=\"tab.icon\"></i>\n <span class=\"txt\">{{ tab.name }}</span></a\n >\n </li>\n </ul>\n </div>\n <div class=\"visible-xs mobile-tabs\"></div>\n </div>\n <div [ngClass]=\"{ 'm-t-64': !!tab }\">\n <div class=\"card card-dashboard\" style=\"height: 360px;\">\n <div class=\"card-header-actions\" style=\"z-index: 8;\">\n <div class=\"card-title\">\n <span translate>Widget title</span>\n </div>\n <div class=\"header-actions\">\n <div class=\"optionsBtn dropdown\">\n <a href=\"\" (click)=\"(false)\" class=\"dropdown-toggle c8y-dropdown\">\n <i c8yIcon=\"cog\"></i>\n </a>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll p-t-16\">\n <p translate>Widget example content.</p>\n </div>\n </div>\n </div>\n</div>\n"}]}],"members":{"previewClasses":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":7,"character":3}}]}],"tab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"c8y-dashboard-detail","template":"<div class=\"modal-header\">\n <h3 *ngIf=\"!current\" translate>\n Add dashboard\n </h3>\n <h3 *ngIf=\"current\" translate>Edit dashboard</h3>\n</div>\n\n<div class=\"modal-body\">\n <form #dashboardDetailForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard\">\n <h6 class=\"legend form-block\"><span translate>Tab</span></h6>\n <div class=\"input-group\">\n <c8y-form-group>\n <label class=\"m-r-8\" translate>Icon</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n class=\"btn-default btn btn-gray\"\n dropdownToggle\n >\n <i c8yIcon=\"{{dashboard.icon}}\"></i>\n <span class=\"caret\"></span> \n </button> \n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4\"\n style=\"max-height: 250px;margin-left: 0;\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a style=\"cursor: pointer\" title=\"{{icon}}\" [ngClass]=\"{'active': dashboard.icon === icon}\">\n <i class=\"icon\" [c8yIcon]=\"icon\" ></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" translate>Menu label</span>\n <button class=\"btn btn-clean\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n >\n <i\n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n </label>\n <input\n title=\"{{ 'Menu label' | translate }}\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboard.name\"\n placeholder=\"{{ 'e.g. My dashboard' | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label>\n <span translate class=\"m-r-4\">Position in navigation</span>\n <button class=\"btn btn-clean\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n >\n <i \n [c8yIcon]=\"'question-circle-o'\"\n class=\"text-primary\"\n ></i>\n </button>\n \n </label>\n <input\n title=\"{{ 'Position in navigation' | translate }}\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n \n </div>\n\n <div style=\"position: relative;\">\n <div class=\"col-sm-12\">\n <div class=\"form-group m-b-24\" *ngIf=\"!current && deviceType\">\n <label class=\"c8y-checkbox\">\n <input type=\"checkbox\" name=\"deviceType\" [(ngModel)]=\"dashboard.deviceType\" />\n <span></span>\n {{ 'Apply dashboard to all devices of type ' | translate\n }}<i>{{ dashboard.deviceTypeValue }}</i>\n </label>\n </div>\n\n <div\n class=\"alert alert-info m-b-24\"\n *ngIf=\"dashboard.deviceType && dashboard.deviceTypeValue\"\n >\n <i c8y-icon=\"info\"></i>\n {{ 'This dashboard is shared between all devices of the type ' | translate }}\n <i>{{ dashboard.deviceTypeValue }}</i>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n >\n </c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label>{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n title=\"{{ 'Widget margin' | translate }}\"\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <label translate>Widget titles</label>\n <c8y-form-group>\n <label\n title=\"{{ 'Translate widget titles if possible' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n /><span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n</div>\n\n<div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"close()\" translate>\n Cancel\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n translate\n >\n Save\n </button>\n</div>\n"}]}],"members":{"dashboardDetailForm":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":17,"character":3},"arguments":["dashboardDetailForm",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":44,"character":5},"arguments":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"ICON_LIST","line":44,"character":12}]}],null],"parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":43,"character":19},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","name":"ContextDashboardService"}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getDashboardPreviewStyle":[{"__symbolic":"method"}],"selectIcon":[{"__symbolic":"method"}],"updateFiltered":[{"__symbolic":"method"}],"setDashboardStyle":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":11,"character":20},{"__symbolic":"reference","name":"ContextDashboardService"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":13,"character":21},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"Permissions","line":14,"character":25}]}],"get":[{"__symbolic":"method"}],"addDashboard":[{"__symbolic":"method"}],"isEnabled":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"c8y-cockpit-dashboard","template":"<c8y-title>\n {{'Home'|translate}}\n</c8y-title>\n\n<c8y-context-dashboard name=\"home-cockpit1\" [defaultWidgets]=\"DEFAULT_HOME_WIDGETS\" [canDelete]=\"false\"></c8y-context-dashboard>\n"}]}],"members":{}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"c8y-welcome-to-cockpit","template":"<div class=\"welcome-widget welcome-cockpit\">\r\n <div class=\"flex-row\">\r\n <div class=\"col-xs-12 col-md-5 flex-item-v-stretch p-24\">\r\n <h2 class=\"text-light\">{{ 'Welcome to Cockpit' | translate }}</h2>\r\n <p class=\"text-16 text-light p-t-16 p-b-24\">{{ welcomeMessage | translate }}</p>\r\n <div class=\"card-group interact-grid tight-grid\">\r\n <div *ngFor=\"let link of quickLinks\" class=\"col-sm-4 col-xs-6\">\r\n <c8y-quick-link\r\n (click)=\"link.click ? link.click() : false\"\r\n [icon]=\"link.icon\"\r\n [label]=\"link.label\"\r\n class=\"card\"\r\n >\r\n </c8y-quick-link>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-sm-6 welcome-illustration flex-item-v-stretch\"></div> -->\r\n </div>\r\n</div>\r\n"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"TenantService","line":25,"character":27},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"DocsService","line":26,"character":18},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":27,"character":20},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"NavigatorService","line":28,"character":23},{"__symbolic":"reference","module":"@c8y/client","name":"ApplicationService","line":29,"character":32}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setMessage":[{"__symbolic":"method"}],"createQuicklinkAddGroup":[{"__symbolic":"method"}],"createConnectSmartphoneQuickLink":[{"__symbolic":"method"}],"createQuickLinkReports":[{"__symbolic":"method"}],"createQuicklinkDataPointLibrary":[{"__symbolic":"method"}],"createQuicklinkSmartRules":[{"__symbolic":"method"}],"createQuicklinkRegisterDevice":[{"__symbolic":"method"}],"createQuicklinkUserGuide":[{"__symbolic":"method"}],"findNavigatorNode":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"c8y-legacy-welcome-widget","template":"<div class=\"card-block\">\n <p class=\"lead\" c8y-guide-docs>\n <span>{{ 'Welcome to Cockpit' | translate }}.</span>\n <span title=\"{{ 'Browse the manual' | translate }}\" class=\"cockpit-welcome-manual\" forceHtmlTranslate ngNonBindable\n >Browse the manual <a c8y-guide-href=\"users-guide/cockpit/\">here</a>.</span\n >\n </p>\n <p class=\"m-t-16\">\n <em>{{ 'New default dashboard available.' | translate }} </em>\n </p>\n <button class=\"btn btn-primary btn-sm m-t-16\" (click)=\"restore(); (false)\" translate>\n Get new dashboard\n </button>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":8,"character":15}}]],"parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"restore":[{"__symbolic":"method"}]}}},"origins":{"ContextDashboardModule":"./context-dashboard.module","ContextDashboardService":"./context-dashboard.service","DeviceDashboardGuard":"./device-dashboard.guard","GroupDashboardGuard":"./group-dashboard.guard","CONTEXT_DASHBOARD_CONFIG":"./context-dashboard.model","ContextDashboardConfig":"./context-dashboard.model","ContextWidgetConfig":"./context-dashboard.model","ContextDashboardManagedObject":"./context-dashboard.model","ContextDashboard":"./context-dashboard.model","ContextDashboardType":"./context-dashboard.model","WIDGET_HEADER_CLASSES":"./context-dashboard.model","WIDGET_CONTENT_CLASSES":"./context-dashboard.model","DASHBOARD_THEME_CLASSES":"./context-dashboard.model","CockpitDashboardModule":"./cockpit-dashboard.module","ɵa":"./appearance-settings.component","ɵb":"./context-dashboard.component","ɵc":"./widget.service","ɵd":"./widget-config.component","ɵe":"./widget-preview.component","ɵf":"./dashboard-detail.component","ɵg":"./dashboard-actions.factory","ɵh":"./cockpit-dashboard.component","ɵi":"./welcome/welcome.component","ɵj":"./legacy-welcome/legacy-welcome.component"},"importAs":"@c8y/ngx-components/context-dashboard"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { NewPassword } from './password.model';
|
|
3
|
-
import {
|
|
3
|
+
import { LoginService } from '../login/login.service';
|
|
4
4
|
export declare class NewPasswordComponent implements OnInit {
|
|
5
|
-
private
|
|
5
|
+
private loginService;
|
|
6
6
|
password: EventEmitter<{} | NewPassword>;
|
|
7
7
|
model: any;
|
|
8
|
-
enforcePasswordStrength: boolean;
|
|
9
8
|
changePassword: boolean;
|
|
10
|
-
|
|
9
|
+
passwordEnforced: boolean;
|
|
10
|
+
minlength: number;
|
|
11
|
+
constructor(loginService: LoginService);
|
|
11
12
|
ngOnInit(): void;
|
|
12
13
|
newPasswordChanged(): void;
|
|
13
|
-
|
|
14
|
+
loadPasswordStrengthSettings(): Promise<void>;
|
|
15
|
+
showPasswordStrength(): boolean;
|
|
14
16
|
toggleChangePassword(): void;
|
|
15
17
|
}
|
|
@@ -1,11 +1,33 @@
|
|
|
1
|
-
import { OnInit, QueryList } from '@angular/core';
|
|
1
|
+
import { OnInit, QueryList, AfterContentInit, ElementRef, Renderer2, OnDestroy } from '@angular/core';
|
|
2
2
|
import { GuideHrefDirective } from './guide-href.directive';
|
|
3
3
|
import { DocsService } from './docs.service';
|
|
4
|
-
export declare class GuideDocsComponent implements OnInit {
|
|
4
|
+
export declare class GuideDocsComponent implements OnInit, AfterContentInit, OnDestroy {
|
|
5
5
|
private docs;
|
|
6
|
+
private el;
|
|
7
|
+
private renderer;
|
|
6
8
|
baseUrl: string;
|
|
7
9
|
links: QueryList<GuideHrefDirective>;
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Provides access to translate directive, so it is possible to adjust anchor html tags, after
|
|
12
|
+
* content is translated.
|
|
13
|
+
*/
|
|
14
|
+
translateDirective: any;
|
|
15
|
+
private destroyed$;
|
|
16
|
+
constructor(docs: DocsService, el: ElementRef, renderer: Renderer2);
|
|
9
17
|
ngOnInit(): void;
|
|
18
|
+
/**
|
|
19
|
+
* After content is initialized we subscribe for translation events, then we are able to modify
|
|
20
|
+
* anchor just as C8yGuideHrefDirective does.
|
|
21
|
+
*/
|
|
22
|
+
ngAfterContentInit(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Find and modify anchor elements
|
|
25
|
+
*/
|
|
26
|
+
replaceAnchorAttributes(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Recursive function, returns array of Anchor elements inside HTMLElement.
|
|
29
|
+
*/
|
|
30
|
+
findGuideAnchors(el: HTMLElement): HTMLElement[];
|
|
10
31
|
ngAfterViewInit(): void;
|
|
32
|
+
ngOnDestroy(): void;
|
|
11
33
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
2
|
+
import { AfterViewChecked, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
4
|
+
/**
|
|
5
|
+
* This is temporary fallback directive that is used to handle HTML blocks translation on maintenance versions
|
|
6
|
+
* in version 10.9.4 and later, this is replaced by default translate directive.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ForceHtmlTranslateDirective implements AfterViewChecked, OnDestroy {
|
|
9
|
+
private translateService;
|
|
10
|
+
private element;
|
|
11
|
+
private _ref;
|
|
12
|
+
currentParams: any;
|
|
13
|
+
onLangChangeSub: Subscription;
|
|
14
|
+
onDefaultLangChangeSub: Subscription;
|
|
15
|
+
onTranslationChangeSub: Subscription;
|
|
16
|
+
/**
|
|
17
|
+
* Used to trigger events when html is replaced by directive.
|
|
18
|
+
*/
|
|
19
|
+
htmlUpdateEvent: EventEmitter<void>;
|
|
20
|
+
translateParams: any;
|
|
21
|
+
constructor(translateService: TranslateService, element: ElementRef, _ref: ChangeDetectorRef);
|
|
22
|
+
ngAfterViewChecked(): void;
|
|
23
|
+
checkNodes(): void;
|
|
24
|
+
ngOnDestroy(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Builds lookup key from innerHTML, removes comments (that might be added by Angular) and trims it.
|
|
27
|
+
*/
|
|
28
|
+
private getLookupKey;
|
|
29
|
+
private isLookupKeyMissing;
|
|
30
|
+
private lookupKeyExist;
|
|
31
|
+
private translateAndUpdateHtmlContent;
|
|
32
|
+
}
|
|
@@ -19,8 +19,8 @@ export declare class ChangePasswordComponent implements OnInit {
|
|
|
19
19
|
email: string;
|
|
20
20
|
newPassword: string;
|
|
21
21
|
newPasswordConfirm: string;
|
|
22
|
+
passwordStrengthEnforced: boolean;
|
|
22
23
|
};
|
|
23
|
-
enforcePasswordStrength: boolean;
|
|
24
24
|
emailReadOnly: boolean;
|
|
25
25
|
private TOKEN_PARAM;
|
|
26
26
|
private EMAIL_PARAM;
|