@smarterplan/ngx-smarterplan-locations 0.2.55 → 0.2.57
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/esm2020/lib/components/carousel/carousel.component.mjs +3 -3
- package/esm2020/lib/components/chevron/chevron.component.mjs +3 -3
- package/esm2020/lib/components/detail-location/detail-location.component.mjs +3 -3
- package/esm2020/lib/components/form-location/form-location.component.mjs +4 -4
- package/esm2020/lib/components/images/images.component.mjs +3 -3
- package/esm2020/lib/components/locations/locations.component.mjs +4 -4
- package/esm2020/lib/components/locations/map/map-popup/map-popup.component.mjs +3 -3
- package/esm2020/lib/components/locations/map/map.component.mjs +3 -3
- package/esm2020/lib/components/plan-legend/plan-legend.component.mjs +3 -3
- package/esm2020/lib/components/plans/calibration/calibration.component.mjs +3 -3
- package/esm2020/lib/components/plans/edit-plan/edit-plan.component.mjs +3 -3
- package/esm2020/lib/components/plans/plans.component.mjs +3 -3
- package/esm2020/lib/components/tab-navigation/tab-navigation.component.mjs +3 -3
- package/esm2020/lib/components/visits/visits.component.mjs +4 -4
- package/esm2020/lib/components/zones/add-audio-zone/add-audio-zone.component.mjs +3 -3
- package/esm2020/lib/components/zones/add-zone/add-zone.component.mjs +3 -3
- package/esm2020/lib/components/zones/add-zone/selection/selection.component.mjs +4 -4
- package/esm2020/lib/components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component.mjs +3 -3
- package/esm2020/lib/components/zones/zones.component.mjs +3 -3
- package/esm2020/lib/ngx-smarterplan-location-routing.module.mjs +4 -4
- package/esm2020/lib/ngx-smarterplan-locations.module.mjs +4 -4
- package/esm2020/lib/ngx-smarterplan-locations.service.mjs +3 -3
- package/esm2020/lib/pipes/count-audio-sweeps.pipe.mjs +3 -3
- package/esm2020/lib/radio-button/radio-button.component.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +79 -79
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +79 -79
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/package.json +11 -10
|
@@ -15,9 +15,9 @@ export class CarouselComponent {
|
|
|
15
15
|
this.currentScan.emit(imageIndex);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
CarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
19
|
-
CarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
18
|
+
CarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
CarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CarouselComponent, selector: "lib-carousel", inputs: { images: "images" }, outputs: { currentScan: "currentScan" }, ngImport: i0, template: "<ngb-carousel [interval]=\"5000\" *ngIf=\"images && images.length > 1\" (slide)=\"onSlide($event)\">\r\n <ng-template *ngFor=\"let image of images; let i = index\" ngbSlide [id]=\"'slideId_' + i\">\r\n <div class=\"picsum-img-wrapper\">\r\n <img [src]=\"image.path\" alt=\"Scan\" class=\"d-block w-100\">\r\n </div>\r\n <div class=\"carousel-caption\">\r\n <h3>{{image.title}}</h3>\r\n <p>{{image.description}}</p>\r\n </div>\r\n </ng-template>\r\n</ngb-carousel>\r\n\r\n<img *ngIf=\"images.length === 1\" [src]=\"images[0].path\" alt=\"Scan\" class=\"d-block w-100\">\r\n", styles: [""], components: [{ type: i1.NgbCarousel, selector: "ngb-carousel", inputs: ["animation", "activeId", "interval", "wrap", "keyboard", "pauseOnHover", "pauseOnFocus", "showNavigationArrows", "showNavigationIndicators"], outputs: ["slide", "slid"], exportAs: ["ngbCarousel"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgbSlide, selector: "ng-template[ngbSlide]", inputs: ["id"], outputs: ["slid"] }] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
21
21
|
type: Component,
|
|
22
22
|
args: [{ selector: 'lib-carousel', template: "<ngb-carousel [interval]=\"5000\" *ngIf=\"images && images.length > 1\" (slide)=\"onSlide($event)\">\r\n <ng-template *ngFor=\"let image of images; let i = index\" ngbSlide [id]=\"'slideId_' + i\">\r\n <div class=\"picsum-img-wrapper\">\r\n <img [src]=\"image.path\" alt=\"Scan\" class=\"d-block w-100\">\r\n </div>\r\n <div class=\"carousel-caption\">\r\n <h3>{{image.title}}</h3>\r\n <p>{{image.description}}</p>\r\n </div>\r\n </ng-template>\r\n</ngb-carousel>\r\n\r\n<img *ngIf=\"images.length === 1\" [src]=\"images[0].path\" alt=\"Scan\" class=\"d-block w-100\">\r\n", styles: [""] }]
|
|
23
23
|
}], ctorParameters: function () { return []; }, propDecorators: { images: [{
|
|
@@ -7,9 +7,9 @@ export class ChevronComponent {
|
|
|
7
7
|
ngOnInit() {
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
ChevronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
11
|
-
ChevronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
10
|
+
ChevronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChevronComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
ChevronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ChevronComponent, selector: "lib-chevron", inputs: { conditionShowing: "conditionShowing" }, ngImport: i0, template: "<div style=\"height: 30px; width: 30px;\">\r\n <span class=\"icon-container\" >\r\n <div [class]=\"conditionShowing ? 'icon-img-up' : 'icon-img-down'\"></div>\r\n </span>\r\n</div>\r\n", styles: [".icon-container{height:30px;width:30px}.icon-img-down{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-right.svg?width=28) no-repeat center center/contain}.icon-img-up{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-down.svg?width=28) no-repeat center center/contain}\n"] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChevronComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
14
14
|
args: [{ selector: 'lib-chevron', template: "<div style=\"height: 30px; width: 30px;\">\r\n <span class=\"icon-container\" >\r\n <div [class]=\"conditionShowing ? 'icon-img-up' : 'icon-img-down'\"></div>\r\n </span>\r\n</div>\r\n", styles: [".icon-container{height:30px;width:30px}.icon-img-down{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-right.svg?width=28) no-repeat center center/contain}.icon-img-up{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-down.svg?width=28) no-repeat center center/contain}\n"] }]
|
|
15
15
|
}], ctorParameters: function () { return []; }, propDecorators: { conditionShowing: [{
|
|
@@ -159,9 +159,9 @@ export class DetailLocationComponent {
|
|
|
159
159
|
: await this.spaceService.canArchiveSpace(this.id);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
DetailLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
163
|
-
DetailLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
162
|
+
DetailLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailLocationComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SpaceService }, { token: i1.Router }, { token: i2.BaseUserService }, { token: i3.TranslateService }, { token: i2.NavigatorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
+
DetailLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DetailLocationComponent, selector: "lib-detail-location", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"reset()\"></lib-tab-navigation>\r\n </div>\r\n <button class=\"btn btn-outline-primary rounded-pill me-3\" (click)=\"onReturn()\">{{'Back to locations' |\r\n translate}}</button>\r\n <div class=\"row\" *ngIf=\"!isEditing && space\">\r\n <div class=\"col-md-5\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate}}: {{space.name}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate}}: {{space.addresses}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Construction year' | translate}}:\r\n {{space.constructionYear ?\r\n space.constructionYear : \"No data\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Latitude' | translate}}:\r\n {{space.latitude ?\r\n space.latitude : \"No data\" | translate}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Longitude' | translate}}: {{space.longitude ?\r\n space.longitude : \"No data\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate}}: {{space.level | translate\r\n }} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Energy Class' | translate}}:\r\n {{space.classEnergyConsumption ?\r\n space.classEnergyConsumption : \"No data\" | translate}}\r\n <button *ngIf=\"space.status !== 'DPE_TO_VALIDATE'\"\r\n class=\"btn btn-outline-primary rounded-pill no-lowercase ms-5\" (click)=\"onGetDpeData()\">\r\n {{'Get data from API DPE' | translate}}</button>\r\n <a class=\"bg-transparent ms-5\" *ngIf=\"space.status === 'DPE_TO_VALIDATE'\"\r\n (click)=\"onDpeValidate()\" style=\"cursor: pointer;\">\r\n <span class=\"iconify\" data-icon=\"mdi:alert-circle-check\" style=\"color: #f19c80;\" data-width=\"25\"\r\n data-height=\"25\"></span>\r\n {{'DPE data found. Click to validate' | translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Greenhouse gas emission Class' | translate}}:\r\n {{space.classGes ? space.classGes : \"No data\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Shareable Guest Link' | translate}}:\r\n <div style=\"display: inline;\" *ngIf=\"guestLink\">\r\n <a id=\"linkHref\" target=\"_blank\">{{'Try the link' | translate }}</a>\r\n <div ngxClipboard [cbContent]=\"guestLink\" [style.cursor]=\"'pointer'\"\r\n style=\"margin-left: 5px; max-width: 20px; display: inline;\" ngbTooltip=\"Copied!\"\r\n triggers=\"click:blur\">\r\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\r\n data-height=\"20\"></span>\r\n </div>\r\n </div>\r\n <p *ngIf=\"!guestLink\" style=\"display: inline;\">{{'No link' | translate }}</p>\r\n <p *ngIf=\"!guestLink\"><small>({{'Generate link from a VISITOR mission'|translate}})</small>\r\n </p>\r\n </li>\r\n\r\n </ul>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"gettingData\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex\">\r\n <button class=\"btn btn-outline-primary rounded-pill me-3\" (click)=\"onEdit()\" data-testid=\"location-edit-btn\">{{'Edit' |\r\n translate}}</button>\r\n <div class=\"tooltip-wrapper\" ngbTooltip=\"{{!canArchive ? ('Contact SmarterPlan' | translate) : ('Archive location and related data' | translate)}}\">\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onArchive()\" [disabled]=\"!canArchive\">\r\n {{'Archive' | translate}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col-md-7\" *ngIf=\"isValidatingDpe\">\r\n <h6>{{'Most relevant results for' | translate}} : \r\n <b>diagnostics de performance \u00E9nerg\u00E9tique (DPE) des b\u00E2timents tertiaires</b></h6>\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">{{'Apply to location' | translate}}</th>\r\n <th scope=\"col\">{{'Address' | translate}}</th>\r\n <th scope=\"col\">{{'Activity sector' | translate}}</th>\r\n <th scope=\"col\">{{'Construction year' | translate}}</th>\r\n <th scope=\"col\">{{'Energy Class' | translate}}</th>\r\n <th scope=\"col\">{{'Greenhouse gas emission Class' | translate}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let result of parsedMetadata; index as i\">\r\n <th scope=\"row\">{{ i + 1 }}</th>\r\n <td><input class=\"checkbox-apply\" type=\"checkbox\" [(ngModel)]=\"result.selected\"\r\n (change)=\"onSelectChange(result)\"></td>\r\n <td>{{result.geo_adresse}}</td>\r\n <td>{{result.secteur_activite}}</td>\r\n <td>{{ result.annee_construction }}</td>\r\n <td>{{ result.classe_consommation_energie }}</td>\r\n <td>{{ result.classe_estimation_ges }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onSaveResult()\"\r\n [disabled]=\"!selectedDpeResult\">{{'Save selected' |\r\n translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onErase()\">\r\n {{'No match (erase data)' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onCancel()\">\r\n {{'Cancel' | translate}}</button>\r\n </div>\r\n </div>\r\n <lib-form-location *ngIf=\"isEditing\" [location]=\"space\" (onChange)=\"onFormChange($event)\"></lib-form-location>\r\n</div>\r\n", styles: [""], components: [{ type: i4.TabNavigationComponent, selector: "lib-tab-navigation", inputs: ["menuItems"], outputs: ["onGoBack"] }, { type: i5.FormLocationComponent, selector: "lib-form-location", inputs: ["location"], outputs: ["onChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ClipboardDirective, selector: "[ngxClipboard]", inputs: ["ngxClipboard", "container", "cbContent", "cbSuccessMsg"], outputs: ["cbOnSuccess", "cbOnError"] }, { type: i8.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailLocationComponent, decorators: [{
|
|
165
165
|
type: Component,
|
|
166
166
|
args: [{ selector: 'lib-detail-location', template: "<div class=\"container-fluid\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"reset()\"></lib-tab-navigation>\r\n </div>\r\n <button class=\"btn btn-outline-primary rounded-pill me-3\" (click)=\"onReturn()\">{{'Back to locations' |\r\n translate}}</button>\r\n <div class=\"row\" *ngIf=\"!isEditing && space\">\r\n <div class=\"col-md-5\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate}}: {{space.name}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate}}: {{space.addresses}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Construction year' | translate}}:\r\n {{space.constructionYear ?\r\n space.constructionYear : \"No data\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Latitude' | translate}}:\r\n {{space.latitude ?\r\n space.latitude : \"No data\" | translate}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Longitude' | translate}}: {{space.longitude ?\r\n space.longitude : \"No data\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate}}: {{space.level | translate\r\n }} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Energy Class' | translate}}:\r\n {{space.classEnergyConsumption ?\r\n space.classEnergyConsumption : \"No data\" | translate}}\r\n <button *ngIf=\"space.status !== 'DPE_TO_VALIDATE'\"\r\n class=\"btn btn-outline-primary rounded-pill no-lowercase ms-5\" (click)=\"onGetDpeData()\">\r\n {{'Get data from API DPE' | translate}}</button>\r\n <a class=\"bg-transparent ms-5\" *ngIf=\"space.status === 'DPE_TO_VALIDATE'\"\r\n (click)=\"onDpeValidate()\" style=\"cursor: pointer;\">\r\n <span class=\"iconify\" data-icon=\"mdi:alert-circle-check\" style=\"color: #f19c80;\" data-width=\"25\"\r\n data-height=\"25\"></span>\r\n {{'DPE data found. Click to validate' | translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Greenhouse gas emission Class' | translate}}:\r\n {{space.classGes ? space.classGes : \"No data\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Shareable Guest Link' | translate}}:\r\n <div style=\"display: inline;\" *ngIf=\"guestLink\">\r\n <a id=\"linkHref\" target=\"_blank\">{{'Try the link' | translate }}</a>\r\n <div ngxClipboard [cbContent]=\"guestLink\" [style.cursor]=\"'pointer'\"\r\n style=\"margin-left: 5px; max-width: 20px; display: inline;\" ngbTooltip=\"Copied!\"\r\n triggers=\"click:blur\">\r\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\r\n data-height=\"20\"></span>\r\n </div>\r\n </div>\r\n <p *ngIf=\"!guestLink\" style=\"display: inline;\">{{'No link' | translate }}</p>\r\n <p *ngIf=\"!guestLink\"><small>({{'Generate link from a VISITOR mission'|translate}})</small>\r\n </p>\r\n </li>\r\n\r\n </ul>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"gettingData\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex\">\r\n <button class=\"btn btn-outline-primary rounded-pill me-3\" (click)=\"onEdit()\" data-testid=\"location-edit-btn\">{{'Edit' |\r\n translate}}</button>\r\n <div class=\"tooltip-wrapper\" ngbTooltip=\"{{!canArchive ? ('Contact SmarterPlan' | translate) : ('Archive location and related data' | translate)}}\">\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onArchive()\" [disabled]=\"!canArchive\">\r\n {{'Archive' | translate}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col-md-7\" *ngIf=\"isValidatingDpe\">\r\n <h6>{{'Most relevant results for' | translate}} : \r\n <b>diagnostics de performance \u00E9nerg\u00E9tique (DPE) des b\u00E2timents tertiaires</b></h6>\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">{{'Apply to location' | translate}}</th>\r\n <th scope=\"col\">{{'Address' | translate}}</th>\r\n <th scope=\"col\">{{'Activity sector' | translate}}</th>\r\n <th scope=\"col\">{{'Construction year' | translate}}</th>\r\n <th scope=\"col\">{{'Energy Class' | translate}}</th>\r\n <th scope=\"col\">{{'Greenhouse gas emission Class' | translate}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let result of parsedMetadata; index as i\">\r\n <th scope=\"row\">{{ i + 1 }}</th>\r\n <td><input class=\"checkbox-apply\" type=\"checkbox\" [(ngModel)]=\"result.selected\"\r\n (change)=\"onSelectChange(result)\"></td>\r\n <td>{{result.geo_adresse}}</td>\r\n <td>{{result.secteur_activite}}</td>\r\n <td>{{ result.annee_construction }}</td>\r\n <td>{{ result.classe_consommation_energie }}</td>\r\n <td>{{ result.classe_estimation_ges }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onSaveResult()\"\r\n [disabled]=\"!selectedDpeResult\">{{'Save selected' |\r\n translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onErase()\">\r\n {{'No match (erase data)' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onCancel()\">\r\n {{'Cancel' | translate}}</button>\r\n </div>\r\n </div>\r\n <lib-form-location *ngIf=\"isEditing\" [location]=\"space\" (onChange)=\"onFormChange($event)\"></lib-form-location>\r\n</div>\r\n", styles: [""] }]
|
|
167
167
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SpaceService }, { type: i1.Router }, { type: i2.BaseUserService }, { type: i3.TranslateService }, { type: i2.NavigatorService }]; } });
|
|
@@ -215,11 +215,11 @@ export class FormLocationComponent {
|
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
FormLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
219
|
-
FormLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: FormLocationComponent, selector: "lib-form-location", inputs: { location: "location" }, outputs: { onChange: "onChange" }, viewQueries: [{ propertyName: "imageInputContainer", first: true, predicate: ["imageInputContainer"], descendants: true }, { propertyName: "imageInput", first: true, predicate: ["imageInput"], descendants: true }, { propertyName: "imageBasePreview", first: true, predicate: ["imageBasePreview"], descendants: true }], ngImport: i0, template: "<div class=\"col-md-6 form-new-loc\" *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" data-testid=\"new-location-name\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['name'])|| isFormError(form.controls['name'])}\"\r\n required formControlName=\"name\">\r\n\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-name-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['name']) \r\n || isFormError(form.controls['name'])\">\r\n {{validatorsService.getError(form.controls['name']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"addresses\" data-testid=\"new-location-address\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['addresses']) || isFormError(form.controls['addresses'])}\">\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"\" [translate]=\"validatorsService.getError(form.controls['addresses'])\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['addresses'])\"></span>\r\n\r\n <ngb-alert data-testid=\"new-location-address-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['addresses']) \">\r\n\r\n {{validatorsService.getError(form.controls['addresses']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Construction year' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"constructionYear\"\r\n data-testid=\"new-location-constructionYear\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-constructionYear-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])\">\r\n {{validatorsService.getError(form.controls['constructionYear']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Latitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"latitude\" data-testid=\"new-location-latitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['latitude'])|| isFormError(form.controls['latitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-latitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['latitude']) || isFormError(form.controls['latitude'])\">\r\n {{validatorsService.getError(form.controls['latitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Longitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"longitude\" data-testid=\"new-location-longitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['longitude'])|| isFormError(form.controls['longitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-longitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['longitude']) || isFormError(form.controls['longitude'])\">\r\n {{validatorsService.getError(form.controls['longitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Access level' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <select class=\"d-inline-block custom-select rounded-pill\" formControlName=\"level\">\r\n <option *ngFor=\"let level of levels\" [value]=\"level\">{{level | translate}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Energy Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classEnergyConsumption\"\r\n data-testid=\"new-location-classEnergyConsumption\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classEnergyConsumption-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])\">\r\n {{validatorsService.getError(form.controls['classEnergyConsumption']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Greenhouse gas emission Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classGes\" data-testid=\"new-location-classGes\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classGes'])|| isFormError(form.controls['classGes'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classGes-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classGes']) || isFormError(form.controls['classGes'])\">\r\n {{validatorsService.getError(form.controls['classGes']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Cover picture' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <img #imageBasePreview *ngIf=\"currentImage\" class=\"image-preview\" [src]=\"currentImage\">\r\n <label #imageInputContainer for=\"image\"\r\n class=\"btn btn-label-file btn-outline-primary rounded-pill imageInputContainer\">\r\n <input #imageInput type=\"file\" id=\"image\" (change)=\"handleImageInput($event.target)\" />\r\n {{ imageInputText | translate}}</label>\r\n <button *ngIf=\"currentImage && !imageToUpload\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"imageToBeDeleted=true;clearImageFile()\">{{'Delete picture' | translate }}</button>\r\n <div class=\"image-name\" *ngIf=\"imageToUpload\">\r\n <p>{{ imageToUpload.name}}</p>\r\n <div (click)=\"clearImageFile()\" [style.cursor]=\"'pointer'\">\r\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\" *ngIf=\"!location\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Create mission for this space' | translate}}</label>\r\n <div class=\"col-sm-3\">\r\n <input type=\"checkbox\" [(ngModel)]=\"addMissionForNewSpace\" [ngModelOptions]=\"{standalone: true}\">\r\n </div>\r\n </div>\r\n\r\n <button data-testid=\"new-location-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\" type=\"submit\"\r\n class=\"btn btn-outline-primary rounded-pill me-3\">{{'Save' | translate}}</button>\r\n\r\n <button data-testid=\"new-location-close-btn\" type=\"button\" (click)=\"onCancel()\"\r\n class=\"btn btn-outline-primary rounded-pill\">{{'Cancel' |\r\n translate}}</button>\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"new-location-form-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n\r\n </ngb-alert>\r\n </div>\r\n </form>\r\n</div>", styles: ["input[type=file]{display:none}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}.image-preview{object-fit:cover;max-height:400px;max-width:400px;display:flex;margin-bottom:15px}.imageInputContainer{width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content}.image-name{display:flex}.col-form-label{margin-bottom:1rem;width:230px}.form-new-loc{background-color:#d3d3d3;margin-bottom:15px;padding:10px;width:80%;border-radius:10px}.col-sm-9 select{width:100%;height:31.25px;padding-left:10px}.btn-outline-primary{width:200px;margin-bottom:1rem;margin-right:1rem}.is-invalid,.btn-outline-primary.is-invalid{border-color:red!important}\n"], components: [{ type: i3.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i5.TranslatePipe } });
|
|
220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
218
|
+
FormLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FormLocationComponent, deps: [{ token: i1.SpaceService }, { token: i1.PropertyService }, { token: i1.BaseUserService }, { token: i2.FormBuilder }, { token: i1.MissionService }, { token: i1.LayerService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
+
FormLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FormLocationComponent, selector: "lib-form-location", inputs: { location: "location" }, outputs: { onChange: "onChange" }, viewQueries: [{ propertyName: "imageInputContainer", first: true, predicate: ["imageInputContainer"], descendants: true }, { propertyName: "imageInput", first: true, predicate: ["imageInput"], descendants: true }, { propertyName: "imageBasePreview", first: true, predicate: ["imageBasePreview"], descendants: true }], ngImport: i0, template: "<div class=\"col-md-6 form-new-loc\" *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" data-testid=\"new-location-name\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['name'])|| isFormError(form.controls['name'])}\"\r\n required formControlName=\"name\">\r\n\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-name-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['name']) \r\n || isFormError(form.controls['name'])\">\r\n {{validatorsService.getError(form.controls['name']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"addresses\" data-testid=\"new-location-address\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['addresses']) || isFormError(form.controls['addresses'])}\">\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"\" [translate]=\"validatorsService.getError(form.controls['addresses'])\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['addresses'])\"></span>\r\n\r\n <ngb-alert data-testid=\"new-location-address-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['addresses']) \">\r\n\r\n {{validatorsService.getError(form.controls['addresses']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Construction year' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"constructionYear\"\r\n data-testid=\"new-location-constructionYear\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-constructionYear-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])\">\r\n {{validatorsService.getError(form.controls['constructionYear']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Latitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"latitude\" data-testid=\"new-location-latitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['latitude'])|| isFormError(form.controls['latitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-latitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['latitude']) || isFormError(form.controls['latitude'])\">\r\n {{validatorsService.getError(form.controls['latitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Longitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"longitude\" data-testid=\"new-location-longitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['longitude'])|| isFormError(form.controls['longitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-longitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['longitude']) || isFormError(form.controls['longitude'])\">\r\n {{validatorsService.getError(form.controls['longitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Access level' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <select class=\"d-inline-block custom-select rounded-pill\" formControlName=\"level\">\r\n <option *ngFor=\"let level of levels\" [value]=\"level\">{{level | translate}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Energy Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classEnergyConsumption\"\r\n data-testid=\"new-location-classEnergyConsumption\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classEnergyConsumption-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])\">\r\n {{validatorsService.getError(form.controls['classEnergyConsumption']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Greenhouse gas emission Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classGes\" data-testid=\"new-location-classGes\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classGes'])|| isFormError(form.controls['classGes'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classGes-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classGes']) || isFormError(form.controls['classGes'])\">\r\n {{validatorsService.getError(form.controls['classGes']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Cover picture' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <img #imageBasePreview *ngIf=\"currentImage\" class=\"image-preview\" [src]=\"currentImage\">\r\n <label #imageInputContainer for=\"image\"\r\n class=\"btn btn-label-file btn-outline-primary rounded-pill imageInputContainer\">\r\n <input #imageInput type=\"file\" id=\"image\" (change)=\"handleImageInput($event.target)\" />\r\n {{ imageInputText | translate}}</label>\r\n <button *ngIf=\"currentImage && !imageToUpload\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"imageToBeDeleted=true;clearImageFile()\">{{'Delete picture' | translate }}</button>\r\n <div class=\"image-name\" *ngIf=\"imageToUpload\">\r\n <p>{{ imageToUpload.name}}</p>\r\n <div (click)=\"clearImageFile()\" [style.cursor]=\"'pointer'\">\r\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\" *ngIf=\"!location\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Create mission for this space' | translate}}</label>\r\n <div class=\"col-sm-3\">\r\n <input type=\"checkbox\" [(ngModel)]=\"addMissionForNewSpace\" [ngModelOptions]=\"{standalone: true}\">\r\n </div>\r\n </div>\r\n\r\n <button data-testid=\"new-location-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\" type=\"submit\"\r\n class=\"btn btn-outline-primary rounded-pill me-3\">{{'Save' | translate}}</button>\r\n\r\n <button data-testid=\"new-location-close-btn\" type=\"button\" (click)=\"onCancel()\"\r\n class=\"btn btn-outline-primary rounded-pill\">{{'Cancel' |\r\n translate}}</button>\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"new-location-form-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n\r\n </ngb-alert>\r\n </div>\r\n </form>\r\n</div>", styles: ["input[type=file]{display:none}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}.image-preview{object-fit:cover;max-height:400px;max-width:400px;display:flex;margin-bottom:15px}.imageInputContainer{width:fit-content;height:fit-content}.image-name{display:flex}.col-form-label{margin-bottom:1rem;width:230px}.form-new-loc{background-color:#d3d3d3;margin-bottom:15px;padding:10px;width:80%;border-radius:10px}.col-sm-9 select{width:100%;height:31.25px;padding-left:10px}.btn-outline-primary{width:200px;margin-bottom:1rem;margin-right:1rem}.is-invalid,.btn-outline-primary.is-invalid{border-color:red!important}\n"], components: [{ type: i3.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i5.TranslatePipe } });
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FormLocationComponent, decorators: [{
|
|
221
221
|
type: Component,
|
|
222
|
-
args: [{ selector: 'lib-form-location', template: "<div class=\"col-md-6 form-new-loc\" *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" data-testid=\"new-location-name\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['name'])|| isFormError(form.controls['name'])}\"\r\n required formControlName=\"name\">\r\n\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-name-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['name']) \r\n || isFormError(form.controls['name'])\">\r\n {{validatorsService.getError(form.controls['name']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"addresses\" data-testid=\"new-location-address\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['addresses']) || isFormError(form.controls['addresses'])}\">\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"\" [translate]=\"validatorsService.getError(form.controls['addresses'])\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['addresses'])\"></span>\r\n\r\n <ngb-alert data-testid=\"new-location-address-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['addresses']) \">\r\n\r\n {{validatorsService.getError(form.controls['addresses']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Construction year' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"constructionYear\"\r\n data-testid=\"new-location-constructionYear\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-constructionYear-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])\">\r\n {{validatorsService.getError(form.controls['constructionYear']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Latitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"latitude\" data-testid=\"new-location-latitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['latitude'])|| isFormError(form.controls['latitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-latitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['latitude']) || isFormError(form.controls['latitude'])\">\r\n {{validatorsService.getError(form.controls['latitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Longitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"longitude\" data-testid=\"new-location-longitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['longitude'])|| isFormError(form.controls['longitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-longitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['longitude']) || isFormError(form.controls['longitude'])\">\r\n {{validatorsService.getError(form.controls['longitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Access level' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <select class=\"d-inline-block custom-select rounded-pill\" formControlName=\"level\">\r\n <option *ngFor=\"let level of levels\" [value]=\"level\">{{level | translate}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Energy Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classEnergyConsumption\"\r\n data-testid=\"new-location-classEnergyConsumption\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classEnergyConsumption-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])\">\r\n {{validatorsService.getError(form.controls['classEnergyConsumption']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Greenhouse gas emission Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classGes\" data-testid=\"new-location-classGes\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classGes'])|| isFormError(form.controls['classGes'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classGes-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classGes']) || isFormError(form.controls['classGes'])\">\r\n {{validatorsService.getError(form.controls['classGes']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Cover picture' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <img #imageBasePreview *ngIf=\"currentImage\" class=\"image-preview\" [src]=\"currentImage\">\r\n <label #imageInputContainer for=\"image\"\r\n class=\"btn btn-label-file btn-outline-primary rounded-pill imageInputContainer\">\r\n <input #imageInput type=\"file\" id=\"image\" (change)=\"handleImageInput($event.target)\" />\r\n {{ imageInputText | translate}}</label>\r\n <button *ngIf=\"currentImage && !imageToUpload\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"imageToBeDeleted=true;clearImageFile()\">{{'Delete picture' | translate }}</button>\r\n <div class=\"image-name\" *ngIf=\"imageToUpload\">\r\n <p>{{ imageToUpload.name}}</p>\r\n <div (click)=\"clearImageFile()\" [style.cursor]=\"'pointer'\">\r\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\" *ngIf=\"!location\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Create mission for this space' | translate}}</label>\r\n <div class=\"col-sm-3\">\r\n <input type=\"checkbox\" [(ngModel)]=\"addMissionForNewSpace\" [ngModelOptions]=\"{standalone: true}\">\r\n </div>\r\n </div>\r\n\r\n <button data-testid=\"new-location-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\" type=\"submit\"\r\n class=\"btn btn-outline-primary rounded-pill me-3\">{{'Save' | translate}}</button>\r\n\r\n <button data-testid=\"new-location-close-btn\" type=\"button\" (click)=\"onCancel()\"\r\n class=\"btn btn-outline-primary rounded-pill\">{{'Cancel' |\r\n translate}}</button>\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"new-location-form-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n\r\n </ngb-alert>\r\n </div>\r\n </form>\r\n</div>", styles: ["input[type=file]{display:none}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}.image-preview{object-fit:cover;max-height:400px;max-width:400px;display:flex;margin-bottom:15px}.imageInputContainer{width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content}.image-name{display:flex}.col-form-label{margin-bottom:1rem;width:230px}.form-new-loc{background-color:#d3d3d3;margin-bottom:15px;padding:10px;width:80%;border-radius:10px}.col-sm-9 select{width:100%;height:31.25px;padding-left:10px}.btn-outline-primary{width:200px;margin-bottom:1rem;margin-right:1rem}.is-invalid,.btn-outline-primary.is-invalid{border-color:red!important}\n"] }]
|
|
222
|
+
args: [{ selector: 'lib-form-location', template: "<div class=\"col-md-6 form-new-loc\" *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" data-testid=\"new-location-name\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['name'])|| isFormError(form.controls['name'])}\"\r\n required formControlName=\"name\">\r\n\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-name-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['name']) \r\n || isFormError(form.controls['name'])\">\r\n {{validatorsService.getError(form.controls['name']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"addresses\" data-testid=\"new-location-address\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['addresses']) || isFormError(form.controls['addresses'])}\">\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"\" [translate]=\"validatorsService.getError(form.controls['addresses'])\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['addresses'])\"></span>\r\n\r\n <ngb-alert data-testid=\"new-location-address-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['addresses']) \">\r\n\r\n {{validatorsService.getError(form.controls['addresses']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Construction year' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"constructionYear\"\r\n data-testid=\"new-location-constructionYear\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-constructionYear-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['constructionYear']) || isFormError(form.controls['constructionYear'])\">\r\n {{validatorsService.getError(form.controls['constructionYear']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Latitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"latitude\" data-testid=\"new-location-latitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['latitude'])|| isFormError(form.controls['latitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-latitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['latitude']) || isFormError(form.controls['latitude'])\">\r\n {{validatorsService.getError(form.controls['latitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Longitude' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"longitude\" data-testid=\"new-location-longitude\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['longitude'])|| isFormError(form.controls['longitude'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-longitude-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['longitude']) || isFormError(form.controls['longitude'])\">\r\n {{validatorsService.getError(form.controls['longitude']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Access level' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <select class=\"d-inline-block custom-select rounded-pill\" formControlName=\"level\">\r\n <option *ngFor=\"let level of levels\" [value]=\"level\">{{level | translate}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Energy Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classEnergyConsumption\"\r\n data-testid=\"new-location-classEnergyConsumption\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classEnergyConsumption-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classEnergyConsumption']) || isFormError(form.controls['classEnergyConsumption'])\">\r\n {{validatorsService.getError(form.controls['classEnergyConsumption']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Greenhouse gas emission Class' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"classGes\" data-testid=\"new-location-classGes\" (ngModelChange)=\"onFormChange()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['classGes'])|| isFormError(form.controls['classGes'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-location-classGes-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"validatorsService.isControlError(form.controls['classGes']) || isFormError(form.controls['classGes'])\">\r\n {{validatorsService.getError(form.controls['classGes']) | translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3 row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Cover picture' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <img #imageBasePreview *ngIf=\"currentImage\" class=\"image-preview\" [src]=\"currentImage\">\r\n <label #imageInputContainer for=\"image\"\r\n class=\"btn btn-label-file btn-outline-primary rounded-pill imageInputContainer\">\r\n <input #imageInput type=\"file\" id=\"image\" (change)=\"handleImageInput($event.target)\" />\r\n {{ imageInputText | translate}}</label>\r\n <button *ngIf=\"currentImage && !imageToUpload\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"imageToBeDeleted=true;clearImageFile()\">{{'Delete picture' | translate }}</button>\r\n <div class=\"image-name\" *ngIf=\"imageToUpload\">\r\n <p>{{ imageToUpload.name}}</p>\r\n <div (click)=\"clearImageFile()\" [style.cursor]=\"'pointer'\">\r\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mb-3 row\" *ngIf=\"!location\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Create mission for this space' | translate}}</label>\r\n <div class=\"col-sm-3\">\r\n <input type=\"checkbox\" [(ngModel)]=\"addMissionForNewSpace\" [ngModelOptions]=\"{standalone: true}\">\r\n </div>\r\n </div>\r\n\r\n <button data-testid=\"new-location-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\" type=\"submit\"\r\n class=\"btn btn-outline-primary rounded-pill me-3\">{{'Save' | translate}}</button>\r\n\r\n <button data-testid=\"new-location-close-btn\" type=\"button\" (click)=\"onCancel()\"\r\n class=\"btn btn-outline-primary rounded-pill\">{{'Cancel' |\r\n translate}}</button>\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"new-location-form-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n\r\n </ngb-alert>\r\n </div>\r\n </form>\r\n</div>", styles: ["input[type=file]{display:none}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}.image-preview{object-fit:cover;max-height:400px;max-width:400px;display:flex;margin-bottom:15px}.imageInputContainer{width:fit-content;height:fit-content}.image-name{display:flex}.col-form-label{margin-bottom:1rem;width:230px}.form-new-loc{background-color:#d3d3d3;margin-bottom:15px;padding:10px;width:80%;border-radius:10px}.col-sm-9 select{width:100%;height:31.25px;padding-left:10px}.btn-outline-primary{width:200px;margin-bottom:1rem;margin-right:1rem}.is-invalid,.btn-outline-primary.is-invalid{border-color:red!important}\n"] }]
|
|
223
223
|
}], ctorParameters: function () { return [{ type: i1.SpaceService }, { type: i1.PropertyService }, { type: i1.BaseUserService }, { type: i2.FormBuilder }, { type: i1.MissionService }, { type: i1.LayerService }, { type: i1.ValidatorsService }]; }, propDecorators: { imageInputContainer: [{
|
|
224
224
|
type: ViewChild,
|
|
225
225
|
args: ["imageInputContainer"]
|
|
@@ -98,9 +98,9 @@ export class ImagesComponent {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
ImagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
102
|
-
ImagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
101
|
+
ImagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ImagesComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SpaceService }, { token: i2.VisitService }, { token: i2.NodeService }, { token: i2.NavigatorService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
ImagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ImagesComponent, selector: "lib-images", ngImport: i0, template: "<div class=\"container-fluid dashboard-tab col-sm-10 mb-3\" *ngIf=\"currentSpace\" >\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">{{'Loading' | translate}}...</span>\r\n </div>\r\n </div>\r\n <div ngbDropdown class=\"d-inline-block\" *ngIf=\"currentSpace.visits && currentSpace.visits.length > 0\">\r\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownBasic1\" *ngIf=\"!currentVisit\"\r\n ngbDropdownToggle>{{'Choose 3D visit' | translate}}</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <button ngbDropdownItem *ngFor=\"let visit of currentSpace.visits\" (click)=\"setVisit(visit)\"> {{ visit.name }}\r\n </button>\r\n </div>\r\n </div>\r\n <h3 *ngIf=\"currentVisit\">{{ currentVisit.name }}</h3>\r\n <div class=\"mt-3\" *ngIf=\"currentVisit && currentImages.length == 0 && !loading\">\r\n <h4>{{'No imported images' | translate }}</h4>\r\n <p>{{'For import: go Virtual Visits => Import Images' | translate}}</p>\r\n </div>\r\n <button *ngIf=\"currentVisit && currentImages.length > 0 && !loading\"\r\n class=\"btn btn-outline-primary rounded-pill no-lowercase mb-2\" (click)=\"onInventoryClick()\">\r\n {{'Run AI inventory on this image' | translate}}</button>\r\n <lib-carousel [images]=\"currentImages\" *ngIf=\"currentImages\" (currentScan)=\"setCurrentScan($event)\"></lib-carousel>\r\n </div>", styles: [""], components: [{ type: i3.TabNavigationComponent, selector: "lib-tab-navigation", inputs: ["menuItems"], outputs: ["onGoBack"] }, { type: i4.CarouselComponent, selector: "lib-carousel", inputs: ["images"], outputs: ["currentScan"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i6.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i6.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }], pipes: { "translate": i7.TranslatePipe } });
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ImagesComponent, decorators: [{
|
|
104
104
|
type: Component,
|
|
105
105
|
args: [{ selector: 'lib-images', template: "<div class=\"container-fluid dashboard-tab col-sm-10 mb-3\" *ngIf=\"currentSpace\" >\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">{{'Loading' | translate}}...</span>\r\n </div>\r\n </div>\r\n <div ngbDropdown class=\"d-inline-block\" *ngIf=\"currentSpace.visits && currentSpace.visits.length > 0\">\r\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownBasic1\" *ngIf=\"!currentVisit\"\r\n ngbDropdownToggle>{{'Choose 3D visit' | translate}}</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <button ngbDropdownItem *ngFor=\"let visit of currentSpace.visits\" (click)=\"setVisit(visit)\"> {{ visit.name }}\r\n </button>\r\n </div>\r\n </div>\r\n <h3 *ngIf=\"currentVisit\">{{ currentVisit.name }}</h3>\r\n <div class=\"mt-3\" *ngIf=\"currentVisit && currentImages.length == 0 && !loading\">\r\n <h4>{{'No imported images' | translate }}</h4>\r\n <p>{{'For import: go Virtual Visits => Import Images' | translate}}</p>\r\n </div>\r\n <button *ngIf=\"currentVisit && currentImages.length > 0 && !loading\"\r\n class=\"btn btn-outline-primary rounded-pill no-lowercase mb-2\" (click)=\"onInventoryClick()\">\r\n {{'Run AI inventory on this image' | translate}}</button>\r\n <lib-carousel [images]=\"currentImages\" *ngIf=\"currentImages\" (currentScan)=\"setCurrentScan($event)\"></lib-carousel>\r\n </div>", styles: [""] }]
|
|
106
106
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SpaceService }, { type: i2.VisitService }, { type: i2.NodeService }, { type: i2.NavigatorService }, { type: i1.Router }]; } });
|
|
@@ -136,10 +136,10 @@ export class LocationsComponent {
|
|
|
136
136
|
this.router.navigate(["dashboard/localisation", spaceID]);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
LocationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
140
|
-
LocationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
139
|
+
LocationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: LocationsComponent, deps: [{ token: i1.SpaceService }, { token: i2.Router }, { token: i1.BaseUserService }, { token: i1.ViewerService }, { token: i1.NavigationService }, { token: i1.NavigatorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
+
LocationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: LocationsComponent, selector: "lib-locations", ngImport: i0, template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation (onGoBack)=\"onFormChange(null)\" [menuItems]='menuItems'></lib-tab-navigation>\r\n <span class=\"ml-3 refreshIcon\" (click)=\"refresh()\" *ngIf=\"!(isAdding)\" ngbTooltip=\"Refresh list\">\r\n <span class=\"iconify refreshIcon\" data-icon=\"ion:refresh-circle\" data-width=\"35\" data-rotate=\"90deg\"></span>\r\n </span>\r\n </div> \r\n <lib-search-bar *ngIf=\"!isAdding && !isMuseumUser\" [searchable]=\"locations\" [objectType]=\"getSearchType()\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\"></lib-search-bar>\r\n \r\n <div class=\"col-md-8\">\r\n <div class=\"sp-row\" *ngIf=\"!isAdding && isManager\">\r\n <button data-testid=\"new-location-btn\" class=\"btn btn-outline-primary rounded-pill add-location\" (click)=\"onAddLocation()\">\r\n {{'Add location' | translate}}</button>\r\n <!-- <div class=\"outer_circle\">\r\n <button id='btn-icon' (click)=\"onAddLocation()\"></button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"row\" *ngIf=\"isAdding\">\r\n <div class=\"col-md-6\">\r\n <h4>{{'New location' | translate}}</h4>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!isAdding\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-12 col-lg-6\" *ngIf=\"filteredLocations\">\r\n <ul data-testid=\"location-list-container\" class=\"list-group list-group-flush\">\r\n <li class=\"d-flex justify-content-between list-group-item\"\r\n *ngFor=\"let loc of filteredLocations; index as index\">\r\n <div class=\"d-flex\">\r\n <div class=\"col-md-5 img-main-container\">\r\n <div id=\"img_container\">\r\n <img class=\"location-img\" *ngIf=\"loc.annexes; else elseBlock\" [src]=\"loc.annexes\">\r\n <ng-template #elseBlock><img class=\"location-img\"\r\n src=\"./../../../../assets/images/visuel-off-big.jpg\" />\r\n </ng-template>\r\n <button [ngClass]=\"['open-btn-'+getStringNoSpace(loc.name)]\" *ngIf=\"isManagerForSpace(loc.id)\" class=\"btn-details\" (click)=\"onDetailViewClick(loc.id)\">\r\n {{'View details' | translate}}</button>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-7 location-info\">\r\n <p>{{loc.name}}</p>\r\n <p>{{loc.addresses}}</p>\r\n <p [ngClass]=\"['view-btn-'+getStringNoSpace(loc.name)]\" *ngFor=\"let visit of loc.visits\" (click)=\"onVisitClick(loc, visit)\" class=\"visit-name\"\r\n [style.cursor]=\"'pointer'\" ngbTooltip=\"Visit\">{{ visit.name ? visit.name : loc.name}}</p>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"col-sm-12 col-md-12 col-lg-6\">\r\n <lib-map [spaces]=\"filteredLocations\"></lib-map>\r\n </div>\r\n </div>\r\n </section>\r\n <lib-form-location *ngIf=\"isAdding\" (onChange)=\"onFormChange($event)\"></lib-form-location>\r\n</div>\r\n", styles: [".searchbar{margin-bottom:10px}input[type=file]{display:none}.form-control{border-radius:var(--form-control-border-radius)}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}section .list-group{margin-top:15px}section .list-group-item{padding:5px 0}section .location-info{font-size:1.1em}section .location-img{width:100%;object-fit:cover;object-position:center bottom;height:165px}#img_container{position:relative;display:inline-block;text-align:center;width:250px}.img-main-container{max-width:250px;width:250px!important;margin-right:10px}.visit-name{color:var(--smarterplan-primary);font-weight:600}.btn-details{background-color:var(--smarterplan-primary-transparent);position:absolute;color:#fff;bottom:0;right:0;width:100%;height:30%;border:none;font-size:1em;text-transform:lowercase}#btn-icon{width:30px;height:30px;background:url(../../../../assets/icons/plus.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../assets/icons/plus-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../assets/icons/plus.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px;margin-left:5px}.refreshIcon{color:var(--smarterplan-primary);cursor:pointer}.refreshIcon svg{vertical-align:middle!important}.add-location{width:fit-content}.sp-row{display:flex;flex-direction:row}\n"], components: [{ type: i3.TabNavigationComponent, selector: "lib-tab-navigation", inputs: ["menuItems"], outputs: ["onGoBack"] }, { type: i1.SearchBarComponent, selector: "lib-search-bar", inputs: ["searchable", "objectType"], outputs: ["searchEvent"] }, { type: i4.MapComponent, selector: "lib-map", inputs: ["spaces"] }, { type: i5.FormLocationComponent, selector: "lib-form-location", inputs: ["location"], outputs: ["onChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i8.TranslatePipe } });
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: LocationsComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'lib-locations', template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation (onGoBack)=\"onFormChange(null)\" [menuItems]='menuItems'></lib-tab-navigation>\r\n <span class=\"ml-3 refreshIcon\" (click)=\"refresh()\" *ngIf=\"!(isAdding)\" ngbTooltip=\"Refresh list\">\r\n <span class=\"iconify refreshIcon\" data-icon=\"ion:refresh-circle\" data-width=\"35\" data-rotate=\"90deg\"></span>\r\n </span>\r\n </div> \r\n <lib-search-bar *ngIf=\"!isAdding && !isMuseumUser\" [searchable]=\"locations\" [objectType]=\"getSearchType()\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\"></lib-search-bar>\r\n \r\n <div class=\"col-md-8\">\r\n <div class=\"sp-row\" *ngIf=\"!isAdding && isManager\">\r\n <button data-testid=\"new-location-btn\" class=\"btn btn-outline-primary rounded-pill add-location\" (click)=\"onAddLocation()\">\r\n {{'Add location' | translate}}</button>\r\n <!-- <div class=\"outer_circle\">\r\n <button id='btn-icon' (click)=\"onAddLocation()\"></button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"row\" *ngIf=\"isAdding\">\r\n <div class=\"col-md-6\">\r\n <h4>{{'New location' | translate}}</h4>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!isAdding\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-12 col-lg-6\" *ngIf=\"filteredLocations\">\r\n <ul data-testid=\"location-list-container\" class=\"list-group list-group-flush\">\r\n <li class=\"d-flex justify-content-between list-group-item\"\r\n *ngFor=\"let loc of filteredLocations; index as index\">\r\n <div class=\"d-flex\">\r\n <div class=\"col-md-5 img-main-container\">\r\n <div id=\"img_container\">\r\n <img class=\"location-img\" *ngIf=\"loc.annexes; else elseBlock\" [src]=\"loc.annexes\">\r\n <ng-template #elseBlock><img class=\"location-img\"\r\n src=\"./../../../../assets/images/visuel-off-big.jpg\" />\r\n </ng-template>\r\n <button [ngClass]=\"['open-btn-'+getStringNoSpace(loc.name)]\" *ngIf=\"isManagerForSpace(loc.id)\" class=\"btn-details\" (click)=\"onDetailViewClick(loc.id)\">\r\n {{'View details' | translate}}</button>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-7 location-info\">\r\n <p>{{loc.name}}</p>\r\n <p>{{loc.addresses}}</p>\r\n <p [ngClass]=\"['view-btn-'+getStringNoSpace(loc.name)]\" *ngFor=\"let visit of loc.visits\" (click)=\"onVisitClick(loc, visit)\" class=\"visit-name\"\r\n [style.cursor]=\"'pointer'\" ngbTooltip=\"Visit\">{{ visit.name ? visit.name : loc.name}}</p>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"col-sm-12 col-md-12 col-lg-6\">\r\n <lib-map [spaces]=\"filteredLocations\"></lib-map>\r\n </div>\r\n </div>\r\n </section>\r\n <lib-form-location *ngIf=\"isAdding\" (onChange)=\"onFormChange($event)\"></lib-form-location>\r\n</div>\r\n", styles: [".searchbar{margin-bottom:10px}input[type=file]{display:none}.form-control{border-radius:var(--form-control-border-radius)}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}section .list-group{margin-top:15px}section .list-group-item{padding:5px 0}section .location-info{font-size:1.1em}section .location-img{width:100%;object-fit:cover;object-position:center bottom;height:165px}#img_container{position:relative;display:inline-block;text-align:center;width:250px}.img-main-container{max-width:250px;width:250px!important;margin-right:10px}.visit-name{color:var(--smarterplan-primary);font-weight:600}.btn-details{background-color:var(--smarterplan-primary-transparent);position:absolute;color:#fff;bottom:
|
|
143
|
+
args: [{ selector: 'lib-locations', template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation (onGoBack)=\"onFormChange(null)\" [menuItems]='menuItems'></lib-tab-navigation>\r\n <span class=\"ml-3 refreshIcon\" (click)=\"refresh()\" *ngIf=\"!(isAdding)\" ngbTooltip=\"Refresh list\">\r\n <span class=\"iconify refreshIcon\" data-icon=\"ion:refresh-circle\" data-width=\"35\" data-rotate=\"90deg\"></span>\r\n </span>\r\n </div> \r\n <lib-search-bar *ngIf=\"!isAdding && !isMuseumUser\" [searchable]=\"locations\" [objectType]=\"getSearchType()\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\"></lib-search-bar>\r\n \r\n <div class=\"col-md-8\">\r\n <div class=\"sp-row\" *ngIf=\"!isAdding && isManager\">\r\n <button data-testid=\"new-location-btn\" class=\"btn btn-outline-primary rounded-pill add-location\" (click)=\"onAddLocation()\">\r\n {{'Add location' | translate}}</button>\r\n <!-- <div class=\"outer_circle\">\r\n <button id='btn-icon' (click)=\"onAddLocation()\"></button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"row\" *ngIf=\"isAdding\">\r\n <div class=\"col-md-6\">\r\n <h4>{{'New location' | translate}}</h4>\r\n </div>\r\n </div>\r\n <section *ngIf=\"!isAdding\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-12 col-lg-6\" *ngIf=\"filteredLocations\">\r\n <ul data-testid=\"location-list-container\" class=\"list-group list-group-flush\">\r\n <li class=\"d-flex justify-content-between list-group-item\"\r\n *ngFor=\"let loc of filteredLocations; index as index\">\r\n <div class=\"d-flex\">\r\n <div class=\"col-md-5 img-main-container\">\r\n <div id=\"img_container\">\r\n <img class=\"location-img\" *ngIf=\"loc.annexes; else elseBlock\" [src]=\"loc.annexes\">\r\n <ng-template #elseBlock><img class=\"location-img\"\r\n src=\"./../../../../assets/images/visuel-off-big.jpg\" />\r\n </ng-template>\r\n <button [ngClass]=\"['open-btn-'+getStringNoSpace(loc.name)]\" *ngIf=\"isManagerForSpace(loc.id)\" class=\"btn-details\" (click)=\"onDetailViewClick(loc.id)\">\r\n {{'View details' | translate}}</button>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-md-7 location-info\">\r\n <p>{{loc.name}}</p>\r\n <p>{{loc.addresses}}</p>\r\n <p [ngClass]=\"['view-btn-'+getStringNoSpace(loc.name)]\" *ngFor=\"let visit of loc.visits\" (click)=\"onVisitClick(loc, visit)\" class=\"visit-name\"\r\n [style.cursor]=\"'pointer'\" ngbTooltip=\"Visit\">{{ visit.name ? visit.name : loc.name}}</p>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"col-sm-12 col-md-12 col-lg-6\">\r\n <lib-map [spaces]=\"filteredLocations\"></lib-map>\r\n </div>\r\n </div>\r\n </section>\r\n <lib-form-location *ngIf=\"isAdding\" (onChange)=\"onFormChange($event)\"></lib-form-location>\r\n</div>\r\n", styles: [".searchbar{margin-bottom:10px}input[type=file]{display:none}.form-control{border-radius:var(--form-control-border-radius)}.custom-select{border-color:var(--smarterplan-primary);width:auto}.form-new-loc{background-color:#d3d3d3;padding-top:10px;padding-bottom:10px;margin-bottom:15px}.btn-outline-primary{background-color:#fff}h4{color:var(--smarterplan-primary)}section .list-group{margin-top:15px}section .list-group-item{padding:5px 0}section .location-info{font-size:1.1em}section .location-img{width:100%;object-fit:cover;object-position:center bottom;height:165px}#img_container{position:relative;display:inline-block;text-align:center;width:250px}.img-main-container{max-width:250px;width:250px!important;margin-right:10px}.visit-name{color:var(--smarterplan-primary);font-weight:600}.btn-details{background-color:var(--smarterplan-primary-transparent);position:absolute;color:#fff;bottom:0;right:0;width:100%;height:30%;border:none;font-size:1em;text-transform:lowercase}#btn-icon{width:30px;height:30px;background:url(../../../../assets/icons/plus.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../assets/icons/plus-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../assets/icons/plus.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px;margin-left:5px}.refreshIcon{color:var(--smarterplan-primary);cursor:pointer}.refreshIcon svg{vertical-align:middle!important}.add-location{width:fit-content}.sp-row{display:flex;flex-direction:row}\n"] }]
|
|
144
144
|
}], ctorParameters: function () { return [{ type: i1.SpaceService }, { type: i2.Router }, { type: i1.BaseUserService }, { type: i1.ViewerService }, { type: i1.NavigationService }, { type: i1.NavigatorService }]; } });
|
|
145
145
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL2xvY2F0aW9ucy9sb2NhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYXRpb25zL2xvY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxXQUFXLEVBQTRGLFdBQVcsRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQVExTSxNQUFNLE9BQU8sa0JBQWtCO0lBMkIzQixZQUNZLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxXQUE0QixFQUM1QixhQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBTGxDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBekI5QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLHNCQUFpQixHQUFZLEVBQUUsQ0FBQztRQUVoQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLGNBQVMsR0FBWSxFQUFFLENBQUM7UUFFeEIsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQU0zQixrR0FBa0c7UUFDbEcseUJBQW9CLEdBQVksRUFBRSxDQUFD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LENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFlO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7UUFDaEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OytHQTVLUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixxRENYL0IsK3lHQStEQTsyRkRwRGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExldmVsU3RhdHVzLCBTcGFjZSwgU3BhY2VTZXJ2aWNlLCBCYXNlVXNlclNlcnZpY2UsIFZpZXdlclNlcnZpY2UsIE5hdmlnYXRpb25TZXJ2aWNlLCBOYXZpZ2F0b3JTZXJ2aWNlLCBlbnVtVG9BcnJheSwgVmlzaXQsIE1lbnVJdGVtLCBTZWFyY2hPYmplY3RUeXBlIH0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWxvY2F0aW9ucycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9jYXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2xvY2F0aW9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIGNyZWF0ZUZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgICBsZXZlbHM6IEFycmF5PExldmVsU3RhdHVzPjtcclxuXHJcbiAgICBpbWFnZVRvVXBsb2FkOiBGaWxlO1xyXG5cclxuICAgIGlzQWRkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgZmlsdGVyZWRMb2NhdGlvbnM6IFNwYWNlW10gPSBbXTtcclxuXHJcbiAgICBpc01hbmFnZXIgPSBmYWxzZTtcclxuXHJcbiAgICBpc011c2V1bVVzZXIgPSB0cnVlO1xyXG5cclxuICAgIGxvY2F0aW9uczogU3BhY2VbXSA9IFtdO1xyXG5cclxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIHVzZXJTdWJjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGxvY2F0aW9uSURTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKiogTGFzdCBmaWx0ZXJlZCBMb2NhdGlvbnMsIHVzZWQgd2hlbiB3ZSBnbyBiYWNrIG9uIGFsbCBsb2NhdGlvbnMgZnJvbSB0aGUgc2VhcmNoIGJhciBsb2NhdGlvbiAqL1xyXG4gICAgbGFzdEZpbHRyZWRMb2NhdGlvbnM6IFNwYWNlW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmxldmVscyA9IGVudW1Ub0FycmF5KExldmVsU3RhdHVzKTtcclxuICAgICAgICB0aGlzLnVzZXJTdWJjcmlwdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmxvY2F0aW9uSURTdWJzY3JpcHRpb24gPVxyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubG9jYXRpb25JRENoYW5nZS5zdWJzY3JpYmUoKGlkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGVkTG9jYXRpb24oaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cE1lbnVJdGVtcygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy51c2VyU2VydmljZS5jdSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0TGlzdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJSaWdodHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR1cE1lbnVJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBmaW5kU3BhY2VCeUlkKGlkOiBzdHJpbmcpOiBTcGFjZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zLmZpbmQoKGxvYykgPT4gbG9jLmlkID09PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgd2hlbiB3ZSBjaGFuZ2UgdGhlIHNlbGVjdGVkIGxvY2F0aW9uIGluIGZpbHRlciAoc2VhcmNoIGJhcilcclxuICAgICAqIEBwYXJhbSBpZCBmb3IgYSBsb2NhdGlvbiwgaWYgbnVsbCBkaXNwbGF5IGFsbCBsYXN0IGZpbHRyZWQgbG9jYXRpb25cclxuICAgICAqL1xyXG4gICAgY2hhbmdlU2VsZWN0ZWRMb2NhdGlvbihpZD86IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHNwYWNlID0gaWQgPyB0aGlzLmZpbmRTcGFjZUJ5SWQoaWQpIDogbnVsbDtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gc3BhY2UgPyBbc3BhY2VdIDogdGhpcy5sYXN0RmlsdHJlZExvY2F0aW9uczsgLy8gTmV3IHNlbGVjdGVkIHNwYWNlIG9yIGxhc3QgZmlsdGVyZWQgbG9jYXRpb25cclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlVXNlclJpZ2h0cygpO1xyXG4gICAgICAgIHRoaXMucmVzZXRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMudXNlclN1YmNyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbklEU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBNZW51SXRlbXMoKSB7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBbeyBsYWJlbDogXCJBbGwgTG9jYXRpb25zXCIsIHVybDogXCIvbG9jYWxpc2F0aW9uXCIgfV07XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBZGRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7IGxhYmVsOiBcIk5ld1wiIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZExvY2F0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRMb2MgPSB0aGlzLmZpbHRlcmVkTG9jYXRpb25zWzBdO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHsgbGFiZWw6IHNlbGVjdGVkTG9jLm5hbWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVVzZXJSaWdodHMoKSB7XHJcbiAgICAgICAgdGhpcy5pc01hbmFnZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc01hbmFnZXJSb2xlSW5BbnlNaXNzaW9uKCk7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNYW5hZ2VyRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5pc01hbmFnZXIoc3BhY2VJRCkgfHxcclxuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5pc0d1aWRlKHNwYWNlSUQpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXNldExpc3QoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRMb2NhdGlvbnNGb3JDdXJyZW50VXNlcigpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucztcclxuICAgICAgICB0aGlzLmxhc3RGaWx0cmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnM7XHJcbiAgICAgICAgdGhpcy5pc0FkZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0ZWRMb2NhdGlvbihcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJMb2NhdGlvbklELFxyXG4gICAgICAgICk7IC8vIFNldCBmb3IgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgbG9jYXRpb25cclxuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZGRMb2NhdGlvbigpIHtcclxuICAgICAgICB0aGlzLmlzQWRkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlSW1hZ2VJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcclxuICAgICAgICB0aGlzLmltYWdlVG9VcGxvYWQgPSBmaWxlcy5pdGVtKDApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmxvY2F0aW9uSURDaGFuZ2UubmV4dChcclxuICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICApOyAvKiogUmVtb3ZlIHNlbGVjdGVkIGxvY2F0aW9uICovXHJcbiAgICAgICAgdGhpcy5pc0FkZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0TGlzdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25WaXNpdENsaWNrKGxvYzogU3BhY2UsIHZpc2l0OiBWaXNpdCkge1xyXG4gICAgICAgIGlmICghdGhpcy51c2VyU2VydmljZS51c2VySGFzQWNjZXNzVG9BbGxab25lc0luU3BhY2UobG9jLmlkKSkge1xyXG4gICAgICAgICAgICAvLyBnZXQgYWxsb3dlZCBzd2VlcCBmb3IgdGhlIHVzZXJcclxuICAgICAgICAgICAgY29uc3QgYWxsb3dlZFN3ZWVwcyA9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldEFsbG93ZWRTd2VlcHNJRHNGb3JVc2VySW5TcGFjZShcclxuICAgICAgICAgICAgICAgICAgICBsb2MuaWQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdFN3ZWVwID0gYWxsb3dlZFN3ZWVwc1swXTtcclxuICAgICAgICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnNldFN3ZWVwVG9Nb3ZlKGZpcnN0U3dlZXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy51c2VyU2VydmljZS5pc0d1aWRlKGxvYy5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibXVzZXVtXCIsIGxvYy5pZF0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInZpc2l0XCIsIGxvYy5pZF0sIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IG1vZGVsM0Q6IHZpc2l0Lm1vZGVsM2QgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5UmVzdWx0c1NlYXJjaEJhcihyZXN1bHRzOiBTcGFjZVtdKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZExvY2F0aW9ucyA9IHJlc3VsdHMgfHwgdGhpcy5sb2NhdGlvbnM7XHJcbiAgICAgICAgdGhpcy5sYXN0RmlsdHJlZExvY2F0aW9ucyA9IHRoaXMuZmlsdGVyZWRMb2NhdGlvbnM7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmxvY2F0aW9uSURDaGFuZ2UubmV4dChudWxsKTsgLy8gV2hlbiB3ZSBzZWFyY2ggd2l0aCBrZXl3b3JkLCB3ZSB3b3VsZCBsaWtlIHRvIHNlYXJjaCBvbiBhbGwgbG9jYXRpb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VhcmNoVHlwZSgpOiBTZWFyY2hPYmplY3RUeXBlIHtcclxuICAgICAgICByZXR1cm4gU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHJpbmdOb1NwYWNlKGRhdGEpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkYXRhLnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EZXRhaWxWaWV3Q2xpY2soc3BhY2VJRDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmxvY2F0aW9uSURDaGFuZ2UubmV4dChzcGFjZUlEKTsgLy8gU2VuZCB1cGRhdGUgZm9yIHRoZSBsb2NhdGlvbiBmaWx0ZXIgYmFyXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLCBzcGFjZUlEXSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtdGFiXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWRhc2hib2FyZC10YWJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm0tM1wiPlxyXG4gICAgICAgIDxsaWItdGFiLW5hdmlnYXRpb24gKG9uR29CYWNrKT1cIm9uRm9ybUNoYW5nZShudWxsKVwiIFttZW51SXRlbXNdPSdtZW51SXRlbXMnPjwvbGliLXRhYi1uYXZpZ2F0aW9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMyByZWZyZXNoSWNvblwiIChjbGljayk9XCJyZWZyZXNoKClcIiAqbmdJZj1cIiEoaXNBZGRpbmcpXCIgbmdiVG9vbHRpcD1cIlJlZnJlc2ggbGlzdFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uaWZ5IHJlZnJlc2hJY29uXCIgZGF0YS1pY29uPVwiaW9uOnJlZnJlc2gtY2lyY2xlXCIgZGF0YS13aWR0aD1cIjM1XCIgZGF0YS1yb3RhdGU9XCI5MGRlZ1wiPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PiAgXHJcbiAgICAgIDxsaWItc2VhcmNoLWJhciAqbmdJZj1cIiFpc0FkZGluZyAmJiAhaXNNdXNldW1Vc2VyXCIgW3NlYXJjaGFibGVdPVwibG9jYXRpb25zXCIgW29iamVjdFR5cGVdPVwiZ2V0U2VhcmNoVHlwZSgpXCJcclxuICAgICAgICAoc2VhcmNoRXZlbnQpPVwiYXBwbHlSZXN1bHRzU2VhcmNoQmFyKCRldmVudClcIj48L2xpYi1zZWFyY2gtYmFyPlxyXG4gICAgICBcclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwLXJvd1wiICpuZ0lmPVwiIWlzQWRkaW5nICYmIGlzTWFuYWdlclwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBkYXRhLXRlc3RpZD1cIm5ldy1sb2NhdGlvbi1idG5cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBhZGQtbG9jYXRpb25cIiAoY2xpY2spPVwib25BZGRMb2NhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIHt7J0FkZCBsb2NhdGlvbicgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwib3V0ZXJfY2lyY2xlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gaWQ9J2J0bi1pY29uJyAoY2xpY2spPVwib25BZGRMb2NhdGlvbigpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJpc0FkZGluZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICA8aDQ+e3snTmV3IGxvY2F0aW9uJyB8IHRyYW5zbGF0ZX19PC9oND5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzQWRkaW5nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctNlwiICpuZ0lmPVwiZmlsdGVyZWRMb2NhdGlvbnNcIj5cclxuICAgICAgICAgIDx1bCBkYXRhLXRlc3RpZD1cImxvY2F0aW9uLWxpc3QtY29udGFpbmVyXCIgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxpc3QtZ3JvdXAtaXRlbVwiXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvYyBvZiBmaWx0ZXJlZExvY2F0aW9uczsgaW5kZXggYXMgaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgaW1nLW1haW4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJpbWdfY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImxvY2F0aW9uLWltZ1wiICpuZ0lmPVwibG9jLmFubmV4ZXM7IGVsc2UgZWxzZUJsb2NrXCIgW3NyY109XCJsb2MuYW5uZXhlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPjxpbWcgY2xhc3M9XCJsb2NhdGlvbi1pbWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvdmlzdWVsLW9mZi1iaWcuanBnXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gW25nQ2xhc3NdPVwiWydvcGVuLWJ0bi0nK2dldFN0cmluZ05vU3BhY2UobG9jLm5hbWUpXVwiICpuZ0lmPVwiaXNNYW5hZ2VyRm9yU3BhY2UobG9jLmlkKVwiIGNsYXNzPVwiYnRuLWRldGFpbHNcIiAoY2xpY2spPVwib25EZXRhaWxWaWV3Q2xpY2sobG9jLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3snVmlldyBkZXRhaWxzJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTcgbG9jYXRpb24taW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cD57e2xvYy5uYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxwPnt7bG9jLmFkZHJlc3Nlc319PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8cCBbbmdDbGFzc109XCJbJ3ZpZXctYnRuLScrZ2V0U3RyaW5nTm9TcGFjZShsb2MubmFtZSldXCIgKm5nRm9yPVwibGV0IHZpc2l0IG9mIGxvYy52aXNpdHNcIiAoY2xpY2spPVwib25WaXNpdENsaWNrKGxvYywgdmlzaXQpXCIgY2xhc3M9XCJ2aXNpdC1uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiIG5nYlRvb2x0aXA9XCJWaXNpdFwiPnt7IHZpc2l0Lm5hbWUgPyB2aXNpdC5uYW1lIDogbG9jLm5hbWV9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gIFxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctNlwiPlxyXG4gICAgICAgICAgPGxpYi1tYXAgW3NwYWNlc109XCJmaWx0ZXJlZExvY2F0aW9uc1wiPjwvbGliLW1hcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8bGliLWZvcm0tbG9jYXRpb24gKm5nSWY9XCJpc0FkZGluZ1wiIChvbkNoYW5nZSk9XCJvbkZvcm1DaGFuZ2UoJGV2ZW50KVwiPjwvbGliLWZvcm0tbG9jYXRpb24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -57,9 +57,9 @@ export class MapPopupComponent {
|
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
MapPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
61
|
-
MapPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
60
|
+
MapPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MapPopupComponent, deps: [{ token: i1.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
+
MapPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MapPopupComponent, selector: "lib-map-popup", ngImport: i0, template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [".map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MapPopupComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
64
|
args: [{ selector: 'lib-map-popup', template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [".map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"] }]
|
|
65
65
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i0.NgZone }]; } });
|
|
@@ -80,9 +80,9 @@ export class MapComponent {
|
|
|
80
80
|
return comp.location.nativeElement;
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
MapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
84
|
-
MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
83
|
+
MapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MapComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
+
MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MapComponent, selector: "lib-map", inputs: { spaces: "spaces" }, usesOnChanges: true, ngImport: i0, template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($event)\" id=\"map\" leaflet\r\n style=\"height: 500px; margin-top: 30px; z-index: 195\"></div>\r\n", styles: [""], directives: [{ type: i1.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { type: i1.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }] });
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MapComponent, decorators: [{
|
|
86
86
|
type: Component,
|
|
87
87
|
args: [{ selector: 'lib-map', template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($event)\" id=\"map\" leaflet\r\n style=\"height: 500px; margin-top: 30px; z-index: 195\"></div>\r\n", styles: [""] }]
|
|
88
88
|
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }]; }, propDecorators: { spaces: [{
|
|
@@ -36,9 +36,9 @@ export class PlanLegendComponent {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
PlanLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
40
|
-
PlanLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
39
|
+
PlanLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PlanLegendComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
PlanLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: PlanLegendComponent, selector: "lib-plan-legend", inputs: { isAudioZone: "isAudioZone" }, ngImport: i0, template: "<div class=\"mt-3 ms-3\" class=\"legendContainer\">\r\n <h5>{{\"legend.title\" | translate}}</h5>\r\n <div class=\"legendBox\">\r\n <div class=\"legendRow\" *ngFor=\"let elemnt of buttonsToRender\">\r\n <button class=\"legendIcon\" [ngStyle] = \"{'background-image': elemnt.url}\"></button>\r\n <span>{{elemnt.text}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".legendContainer{padding:1rem;border:solid var(--smarterplan-primary) 2px;border-radius:6px;width:100%;margin-bottom:.5rem;background:#FFF}.legendContainer .legendBox{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.legendContainer .legendBox .legendRow{display:flex;flex-direction:row;align-items:center}.legendContainer .legendBox .legendRow .legendIcon{width:2.5rem;height:2.5rem;background-repeat:no-repeat;background-size:cover;border:none;background-color:transparent;margin-right:.5rem;cursor:auto}.legendContainer .legendBox .legendRow span{margin-right:1rem;cursor:auto}.legendContainer .legendBox .legendRow h5{cursor:auto}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "translate": i1.TranslatePipe } });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PlanLegendComponent, decorators: [{
|
|
42
42
|
type: Component,
|
|
43
43
|
args: [{ selector: 'lib-plan-legend', template: "<div class=\"mt-3 ms-3\" class=\"legendContainer\">\r\n <h5>{{\"legend.title\" | translate}}</h5>\r\n <div class=\"legendBox\">\r\n <div class=\"legendRow\" *ngFor=\"let elemnt of buttonsToRender\">\r\n <button class=\"legendIcon\" [ngStyle] = \"{'background-image': elemnt.url}\"></button>\r\n <span>{{elemnt.text}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".legendContainer{padding:1rem;border:solid var(--smarterplan-primary) 2px;border-radius:6px;width:100%;margin-bottom:.5rem;background:#FFF}.legendContainer .legendBox{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.legendContainer .legendBox .legendRow{display:flex;flex-direction:row;align-items:center}.legendContainer .legendBox .legendRow .legendIcon{width:2.5rem;height:2.5rem;background-repeat:no-repeat;background-size:cover;border:none;background-color:transparent;margin-right:.5rem;cursor:auto}.legendContainer .legendBox .legendRow span{margin-right:1rem;cursor:auto}.legendContainer .legendBox .legendRow h5{cursor:auto}\n"] }]
|
|
44
44
|
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { isAudioZone: [{
|