@smarterplan/ngx-smarterplan-core 1.2.18 → 1.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  2. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +1 -1
  3. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +1 -1
  4. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  5. package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  6. package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  7. package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  8. package/esm2020/lib/services/baseVisibility.service.mjs +1 -1
  9. package/esm2020/lib/services/filter.service.mjs +1 -1
  10. package/esm2020/lib/services/matterport-import.service.mjs +1 -1
  11. package/esm2020/lib/services/matterport.service.mjs +8 -4
  12. package/esm2020/lib/services/models/equipment.service.mjs +1 -1
  13. package/esm2020/lib/services/models/feature.service.mjs +1 -1
  14. package/esm2020/lib/services/models/measurement.service.mjs +1 -1
  15. package/esm2020/lib/services/models/object3D.service.mjs +1 -1
  16. package/esm2020/lib/services/models/poi.service.mjs +1 -1
  17. package/esm2020/lib/services/models/ticket.service.mjs +1 -1
  18. package/esm2020/lib/services/models/zone.service.mjs +1 -1
  19. package/esm2020/lib/services/navigator.service.mjs +22 -21
  20. package/esm2020/lib/services/tag.service.mjs +18 -18
  21. package/esm2020/lib/services/zoneChange.service.mjs +1 -1
  22. package/esm2020/public-api.mjs +1 -1
  23. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +50 -45
  24. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  25. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +47 -42
  26. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  27. package/lib/components/csv-export/csv-export.component.d.ts.map +1 -0
  28. package/lib/components/loader/loader.component.d.ts.map +1 -0
  29. package/lib/components/menu-bar/avatar/avatar.component.d.ts.map +1 -0
  30. package/lib/components/menu-bar/menu-bar.component.d.ts.map +1 -0
  31. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts.map +1 -0
  32. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts.map +1 -0
  33. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts.map +1 -0
  34. package/lib/components/search-bar/search-bar.component.d.ts.map +1 -0
  35. package/lib/components/support-modal/support-modal.component.d.ts.map +1 -0
  36. package/lib/config.d.ts.map +1 -0
  37. package/lib/helpers.service.d.ts.map +1 -0
  38. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts.map +1 -0
  39. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts.map +1 -0
  40. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts.map +1 -0
  41. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts.map +1 -0
  42. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts.map +1 -0
  43. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts.map +1 -0
  44. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts.map +1 -0
  45. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts.map +1 -0
  46. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts.map +1 -0
  47. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts.map +1 -0
  48. package/lib/mattertagData.d.ts.map +1 -0
  49. package/lib/ngx-smarterplan-core.module.d.ts.map +1 -0
  50. package/lib/ngx-smarterplan-core.service.d.ts.map +1 -0
  51. package/lib/pipes/duration-to-string.pipe.d.ts.map +1 -0
  52. package/lib/pipes/format-date-number-to-digits.pipe.d.ts.map +1 -0
  53. package/lib/pipes/hashtag-from-id.pipe.d.ts.map +1 -0
  54. package/lib/pipes/safe-url.pipe.d.ts.map +1 -0
  55. package/lib/pipes/time-date-to-local-string.pipe.d.ts.map +1 -0
  56. package/lib/pipes/username-from-id.pipe.d.ts.map +1 -0
  57. package/lib/services/amplify-cache.service.d.ts.map +1 -0
  58. package/lib/services/base-tab.service.d.ts.map +1 -0
  59. package/lib/services/baseVisibility.service.d.ts.map +1 -0
  60. package/lib/services/content.service.d.ts.map +1 -0
  61. package/lib/services/filter.service.d.ts.map +1 -0
  62. package/lib/services/intervention.service.d.ts.map +1 -0
  63. package/lib/services/locale.service.d.ts.map +1 -0
  64. package/lib/services/matterport-import.service.d.ts.map +1 -0
  65. package/lib/services/matterport.service.d.ts.map +1 -0
  66. package/lib/services/models/affectation.service.d.ts.map +1 -0
  67. package/lib/services/models/base-object.service.d.ts.map +1 -0
  68. package/lib/services/models/capture.service.d.ts.map +1 -0
  69. package/lib/services/models/comment.service.d.ts.map +1 -0
  70. package/lib/services/models/domain.service.d.ts.map +1 -0
  71. package/lib/services/models/equipment.service.d.ts.map +1 -0
  72. package/lib/services/models/event.service.d.ts.map +1 -0
  73. package/lib/services/models/feature.service.d.ts.map +1 -0
  74. package/lib/services/models/hashtag.service.d.ts.map +1 -0
  75. package/lib/services/models/layer.service.d.ts.map +1 -0
  76. package/lib/services/models/measurement.service.d.ts.map +1 -0
  77. package/lib/services/models/mission.service.d.ts.map +1 -0
  78. package/lib/services/models/navigation.service.d.ts.map +1 -0
  79. package/lib/services/models/node.service.d.ts.map +1 -0
  80. package/lib/services/models/object3D.service.d.ts.map +1 -0
  81. package/lib/services/models/operation.service.d.ts.map +1 -0
  82. package/lib/services/models/organisation.service.d.ts.map +1 -0
  83. package/lib/services/models/plan.service.d.ts.map +1 -0
  84. package/lib/services/models/poi.service.d.ts.map +1 -0
  85. package/lib/services/models/profile.service.d.ts.map +1 -0
  86. package/lib/services/models/property.service.d.ts.map +1 -0
  87. package/lib/services/models/space.service.d.ts.map +1 -0
  88. package/lib/services/models/template.service.d.ts.map +1 -0
  89. package/lib/services/models/ticket.service.d.ts.map +1 -0
  90. package/lib/services/models/visit.service.d.ts.map +1 -0
  91. package/lib/services/models/zone.service.d.ts.map +1 -0
  92. package/lib/services/navigator.service.d.ts.map +1 -0
  93. package/lib/services/s3.service.d.ts.map +1 -0
  94. package/lib/services/search.service.d.ts.map +1 -0
  95. package/lib/services/support.service.d.ts.map +1 -0
  96. package/lib/services/tag.service.d.ts.map +1 -0
  97. package/lib/services/user.service.d.ts.map +1 -0
  98. package/lib/services/validators.service.d.ts.map +1 -0
  99. package/lib/services/viewer.service.d.ts.map +1 -0
  100. package/lib/services/zone-drawer.service.d.ts.map +1 -0
  101. package/lib/services/zoneChange.service.d.ts.map +1 -0
  102. package/lib/types.service.d.ts.map +1 -0
  103. package/lib/validators/email.directive.d.ts.map +1 -0
  104. package/lib/validators/no-empty.directive.d.ts.map +1 -0
  105. package/lib/validators/number.directive.d.ts.map +1 -0
  106. package/lib/validators/text.directive.d.ts.map +1 -0
  107. package/package.json +1 -1
  108. package/public-api.d.ts.map +1 -0
  109. package/smarterplan-ngx-smarterplan-core.d.ts.map +1 -0
@@ -2556,7 +2556,8 @@ class MatterportService {
2556
2556
  };
2557
2557
  this.config = config;
2558
2558
  // TODO: only for dev!
2559
- if (document.location.href.indexOf('dev') !== -1 || document.location.href.indexOf('localhost') !== -1) {
2559
+ if (!!this.getCursorPositionButton &&
2560
+ (document.location.href.indexOf('dev') !== -1 || document.location.href.indexOf('localhost') !== -1)) {
2560
2561
  this.intervalCursorPointerPosition = setInterval(() => {
2561
2562
  if (!this.poseMatterport) {
2562
2563
  return;
@@ -2694,7 +2695,8 @@ class MatterportService {
2694
2695
  // (we are about to validate, but it exists in sdk already)
2695
2696
  this.enable_following_tag(this.mattertagToFollow);
2696
2697
  }
2697
- if (document.URL.indexOf('https://dev.smarterplan.io') !== -1 || document.location.href.indexOf('localhost') !== -1) {
2698
+ if (!!this.getCursorPositionButton && !!this.getCursorPositionButton.style &&
2699
+ (document.URL.indexOf('https://dev.smarterplan.io') !== -1 || document.location.href.indexOf('localhost') !== -1)) {
2698
2700
  this.getCursorPositionButton.style.display = 'none';
2699
2701
  this.cursorPositionButtonDisplayed = false;
2700
2702
  }
@@ -2808,6 +2810,7 @@ class MatterportService {
2808
2810
  // renderer.shadowMap.bias = 0.0001;
2809
2811
  // renderer.shadowMap.type = three.PCFSoftShadowMap;
2810
2812
  // });
2813
+ // TODO: wait for MP ticket resolution before decomment these!
2811
2814
  // Wait until Showcase is actually playing....
2812
2815
  // this.sdk.Tag.data.subscribe({
2813
2816
  // onAdded: async function (index, item, collection) {
@@ -3706,7 +3709,8 @@ class MatterportService {
3706
3709
  this.getCursorPositionButton.removeEventListener('auxclick', this.pointerMiddleClickHandler);
3707
3710
  }
3708
3711
  // TODO: only for dev!
3709
- if (document.location.href.indexOf('dev') !== -1 || document.location.href.indexOf('localhost') !== -1) {
3712
+ if (!!this.getCursorPositionButton &&
3713
+ (document.location.href.indexOf('dev') !== -1 || document.location.href.indexOf('localhost') !== -1)) {
3710
3714
  clearInterval(this.intervalCursorPointerPosition);
3711
3715
  }
3712
3716
  }
@@ -6289,29 +6293,30 @@ class NavigatorService {
6289
6293
  this.currentAudioZones = audioZones;
6290
6294
  // filter out audio zone (not to show to user it's name)
6291
6295
  zonesForSweep = zonesForSweep.filter((zone) => !zone.audio);
6292
- if (zonesForSweep && zonesForSweep.length > 0) {
6293
- this.zonesSortedForCurrentSweep = zonesForSweep.sort((a, b) => {
6294
- if (a.sweepIDs.length === b.sweepIDs.length) {
6295
- // if the same amount of sweeps: floor == the whole space
6296
- if (a.layer && b.layer) {
6297
- // put type BUILDING at the end
6298
- return a.layer.name !== 'BUILDING'
6299
- ? -1
6300
- : b.layer.name !== 'BUILDING'
6301
- ? 1
6302
- : 0;
6303
- }
6304
- return a.parent?.sweepIDs ? -1 : b.parent?.sweepIDs ? 1 : 0;
6296
+ // LINE BELOW IS COMMENTED SINCE CREATES INFINITE SPINNER FOR ZONES WITHOUT AUDIO...
6297
+ // if (zonesForSweep && zonesForSweep.length > 0) {
6298
+ this.zonesSortedForCurrentSweep = zonesForSweep.sort((a, b) => {
6299
+ if (a.sweepIDs.length === b.sweepIDs.length) {
6300
+ // if the same amount of sweeps: floor == the whole space
6301
+ if (a.layer && b.layer) {
6302
+ // put type BUILDING at the end
6303
+ return a.layer.name !== 'BUILDING'
6304
+ ? -1
6305
+ : b.layer.name !== 'BUILDING'
6306
+ ? 1
6307
+ : 0;
6305
6308
  }
6306
- return a.sweepIDs.length - b.sweepIDs.length;
6307
- });
6308
- this.zoneChangeService.zonesForUserChange.next(this.zonesSortedForCurrentSweep);
6309
- if (this.zonesSortedForCurrentSweep.length > 0 &&
6310
- this.currentZone !== this.zonesSortedForCurrentSweep[0]) {
6311
- [this.currentZone] = this.zonesSortedForCurrentSweep;
6312
- this.zoneChangeService.zoneChange.next(this.currentZone);
6309
+ return a.parent?.sweepIDs ? -1 : b.parent?.sweepIDs ? 1 : 0;
6313
6310
  }
6311
+ return a.sweepIDs.length - b.sweepIDs.length;
6312
+ });
6313
+ this.zoneChangeService.zonesForUserChange.next(this.zonesSortedForCurrentSweep);
6314
+ if (this.zonesSortedForCurrentSweep.length > 0 &&
6315
+ this.currentZone !== this.zonesSortedForCurrentSweep[0]) {
6316
+ [this.currentZone] = this.zonesSortedForCurrentSweep;
6317
+ this.zoneChangeService.zoneChange.next(this.currentZone);
6314
6318
  }
6319
+ // }
6315
6320
  }
6316
6321
  }
6317
6322
  NavigatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, deps: [{ token: MatterportService }, { token: ViewerService }, { token: ZoneService }, { token: BaseUserService }, { token: ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -11114,10 +11119,10 @@ class MenuBarComponent {
11114
11119
  }
11115
11120
  }
11116
11121
  MenuBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MenuBarComponent, deps: [{ token: i1$1.Router }, { token: LocaleService }, { token: BaseUserService }, { token: NavigatorService }, { token: SupportService }, { token: BaseVisibilityService }], target: i0.ɵɵFactoryTarget.Component });
11117
- MenuBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: MenuBarComponent, selector: "lib-menu-bar", ngImport: i0, template: "<div id=\"menu-bar\">\n <div *ngIf=\"!isVisitor\">\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\n <div class=\"navbar-brand\" [routerLink]=\"['/dashboard']\">\n <img alt=\"\" src=\"../assets/images/logos/logo-rvb-straight.png\">\n </div>\n <!-- <button class=\"navbar-toggler\" data-bs-target=\".navbar-collapse\" data-bs-toggle=\"collapse\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button> -->\n <div class=\"collapse navbar-collapse\">\n <form class=\"form-inline ms-3\">\n <input class=\"form-control search-button\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onSubmit()\">{{'Search' |\n translate}}</button>\n <lib-range-date-picker cacheName=\"mainDate\"></lib-range-date-picker>\n <div class=\"change-position-button\">\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\n <label class=\"btn btn-outline-primary\" (click)=\"onChangePositionClick()\"\n for=\"btn-check-outlined\">{{\"Change position\" | translate}}</label>\n </div>\n </form>\n <div class=\"ms-auto nav-item dropdown\">\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\n <lib-avatar></lib-avatar>\n </div>\n <div class=\"dropdown-menu dropdown-menu-right\">\n <p *ngIf=\"user && mission\" class=\"p-2\">\n <span class=\"username\">{{ user.displayName }}</span><br />\n <span class=\"user-role\">{{ mission.role }}</span><br />\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\n translate}}</span>\n </p>\n <div class=\"dropdown-divider\"></div>\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\n {{'Users management' | translate}}</a>\n <a class=\"dropdown-item\" routerLink=\"/profile\">\n {{'Profile' | translate}}</a>\n <div class=\"dropdown-divider\"></div>\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\n translate}}</button>\n </div>\n </div>\n </div>\n </div>\n </nav>\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\n </div>\n <div *ngIf=\"isVisitor && isVisible\">\n <div class=\"visitor-div\">\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\n </div>\n <div class=\"avatar-container-menu\">\n <div class=\"profile_pic dropdown-toggle\" data-bs-toggle=\"dropdown\">\n <lib-avatar></lib-avatar>\n </div>\n <div class=\"dropdown-menu dropdown-menu-right\">\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\n translate}}</button>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid #969696}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{background-color:#fff;color:var(--smarterplan-primary);padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button{width:auto}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}\n"], components: [{ type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: ["cacheName"] }, { type: AvatarComponent, selector: "lib-avatar", inputs: ["size", "userID"] }, { type: NavigationBarComponent, selector: "lib-navigation-bar" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.NgbNavbar, selector: ".navbar" }, { type: i1$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "translate": i1.TranslatePipe } });
11122
+ MenuBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: MenuBarComponent, selector: "lib-menu-bar", ngImport: i0, template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"\" src=\"../assets/images/logos/logo-rvb-straight.png\">\r\n </div>\r\n <!-- <button class=\"navbar-toggler\" data-bs-target=\".navbar-collapse\" data-bs-toggle=\"collapse\" type=\"button\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button> -->\r\n <div class=\"collapse navbar-collapse\">\r\n <form class=\"form-inline ms-3\">\r\n <input class=\"form-control search-button\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n <lib-range-date-picker cacheName=\"mainDate\"></lib-range-date-picker>\r\n <div class=\"change-position-button\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"btn btn-outline-primary\" (click)=\"onChangePositionClick()\"\r\n for=\"btn-check-outlined\">{{\"Change position\" | translate}}</label>\r\n </div>\r\n </form>\r\n <div class=\"ms-auto nav-item dropdown\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid #969696}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{background-color:#fff;color:var(--smarterplan-primary);padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button{width:auto}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}\n"], components: [{ type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: ["cacheName"] }, { type: AvatarComponent, selector: "lib-avatar", inputs: ["size", "userID"] }, { type: NavigationBarComponent, selector: "lib-navigation-bar" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.NgbNavbar, selector: ".navbar" }, { type: i1$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "translate": i1.TranslatePipe } });
11118
11123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MenuBarComponent, decorators: [{
11119
11124
  type: Component,
11120
- args: [{ selector: 'lib-menu-bar', template: "<div id=\"menu-bar\">\n <div *ngIf=\"!isVisitor\">\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\n <div class=\"navbar-brand\" [routerLink]=\"['/dashboard']\">\n <img alt=\"\" src=\"../assets/images/logos/logo-rvb-straight.png\">\n </div>\n <!-- <button class=\"navbar-toggler\" data-bs-target=\".navbar-collapse\" data-bs-toggle=\"collapse\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button> -->\n <div class=\"collapse navbar-collapse\">\n <form class=\"form-inline ms-3\">\n <input class=\"form-control search-button\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onSubmit()\">{{'Search' |\n translate}}</button>\n <lib-range-date-picker cacheName=\"mainDate\"></lib-range-date-picker>\n <div class=\"change-position-button\">\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\n <label class=\"btn btn-outline-primary\" (click)=\"onChangePositionClick()\"\n for=\"btn-check-outlined\">{{\"Change position\" | translate}}</label>\n </div>\n </form>\n <div class=\"ms-auto nav-item dropdown\">\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\n <lib-avatar></lib-avatar>\n </div>\n <div class=\"dropdown-menu dropdown-menu-right\">\n <p *ngIf=\"user && mission\" class=\"p-2\">\n <span class=\"username\">{{ user.displayName }}</span><br />\n <span class=\"user-role\">{{ mission.role }}</span><br />\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\n translate}}</span>\n </p>\n <div class=\"dropdown-divider\"></div>\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\n {{'Users management' | translate}}</a>\n <a class=\"dropdown-item\" routerLink=\"/profile\">\n {{'Profile' | translate}}</a>\n <div class=\"dropdown-divider\"></div>\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\n translate}}</button>\n </div>\n </div>\n </div>\n </div>\n </nav>\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\n </div>\n <div *ngIf=\"isVisitor && isVisible\">\n <div class=\"visitor-div\">\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\n </div>\n <div class=\"avatar-container-menu\">\n <div class=\"profile_pic dropdown-toggle\" data-bs-toggle=\"dropdown\">\n <lib-avatar></lib-avatar>\n </div>\n <div class=\"dropdown-menu dropdown-menu-right\">\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\n translate}}</button>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid #969696}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{background-color:#fff;color:var(--smarterplan-primary);padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button{width:auto}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}\n"] }]
11125
+ args: [{ selector: 'lib-menu-bar', template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"\" src=\"../assets/images/logos/logo-rvb-straight.png\">\r\n </div>\r\n <!-- <button class=\"navbar-toggler\" data-bs-target=\".navbar-collapse\" data-bs-toggle=\"collapse\" type=\"button\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button> -->\r\n <div class=\"collapse navbar-collapse\">\r\n <form class=\"form-inline ms-3\">\r\n <input class=\"form-control search-button\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n <lib-range-date-picker cacheName=\"mainDate\"></lib-range-date-picker>\r\n <div class=\"change-position-button\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"btn btn-outline-primary\" (click)=\"onChangePositionClick()\"\r\n for=\"btn-check-outlined\">{{\"Change position\" | translate}}</label>\r\n </div>\r\n </form>\r\n <div class=\"ms-auto nav-item dropdown\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid #969696}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{background-color:#fff;color:var(--smarterplan-primary);padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button{width:auto}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}\n"] }]
11121
11126
  }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: LocaleService }, { type: BaseUserService }, { type: NavigatorService }, { type: SupportService }, { type: BaseVisibilityService }]; } });
11122
11127
 
11123
11128
  class NgxSmarterplanCoreModule {
@@ -11223,7 +11228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
11223
11228
  class BaseTagService {
11224
11229
  constructor() { }
11225
11230
  async getHtmlToInject(tagType, object) {
11226
- throw new Error(`getHtmlToInject is not implemented in the base class.
11231
+ throw new Error(`getHtmlToInject is not implemented in the base class.
11227
11232
  Please override this method in your extended class.`);
11228
11233
  }
11229
11234
  getUrlForSeeDetails(object, tagType) {
@@ -11248,27 +11253,27 @@ class BaseTagService {
11248
11253
  }
11249
11254
  }
11250
11255
  async prepareEquipmentHtml(equip) {
11251
- throw new Error(`prepareEquipmentHtml is not implemented in the base class.
11256
+ throw new Error(`prepareEquipmentHtml is not implemented in the base class.
11252
11257
  Please override this method in your extended class.`);
11253
11258
  }
11254
11259
  async prepareTicketHtml(ticket) {
11255
- throw new Error(`prepareTicketHtml is not implemented in the base class.
11260
+ throw new Error(`prepareTicketHtml is not implemented in the base class.
11256
11261
  Please override this method in your extended class.`);
11257
11262
  }
11258
11263
  async prepareFeatureHtml(feature) {
11259
- throw new Error(`prepareFeatureHtml is not implemented in the base class.
11264
+ throw new Error(`prepareFeatureHtml is not implemented in the base class.
11260
11265
  Please override this method in your extended class.`);
11261
11266
  }
11262
11267
  async prepareMeasurementHtml(measure) {
11263
- throw new Error(`prepareMeasurementHtml is not implemented in the base class.
11268
+ throw new Error(`prepareMeasurementHtml is not implemented in the base class.
11264
11269
  Please override this method in your extended class.`);
11265
11270
  }
11266
11271
  async prepareDeskHtml(feature) {
11267
- throw new Error(`prepareDeskHtml is not implemented in the base class.
11272
+ throw new Error(`prepareDeskHtml is not implemented in the base class.
11268
11273
  Please override this method in your extended class.`);
11269
11274
  }
11270
11275
  async prepareIndicatorHtml(feature) {
11271
- throw new Error(`prepareDeskHtml is not implemented in the base class.
11276
+ throw new Error(`prepareDeskHtml is not implemented in the base class.
11272
11277
  Please override this method in your extended class.`);
11273
11278
  }
11274
11279
  async getSignedTagIconSource(tagIconSrc) {
@@ -11277,43 +11282,43 @@ class BaseTagService {
11277
11282
  getIconTagImageForFeature(feature, poi) {
11278
11283
  // const tagIcon = JSON.parse(poi.tagIcon);
11279
11284
  // return tagIcon.src;
11280
- throw new Error(`getIconTagImageForFeature is not implemented in the base class.
11285
+ throw new Error(`getIconTagImageForFeature is not implemented in the base class.
11281
11286
  Please override this method in your extended class.`);
11282
11287
  }
11283
11288
  getScriptForTag(object, tagType) {
11284
- throw new Error(`getScriptForTag is not implemented in the base class.
11289
+ throw new Error(`getScriptForTag is not implemented in the base class.
11285
11290
  Please override this method in your extended class.`);
11286
11291
  }
11287
11292
  getAnnexeForCommentTypeInFeature(feature, commentType) {
11288
- throw new Error(`getAnnexeForCommentTypeInFeature is not implemented in the base class.
11293
+ throw new Error(`getAnnexeForCommentTypeInFeature is not implemented in the base class.
11289
11294
  Please override this method in your extended class.`);
11290
11295
  }
11291
11296
  getBillboardMediaToEmbed(object) {
11292
- throw new Error(`getBillboardMediaToEmbed is not implemented in the base class.
11297
+ throw new Error(`getBillboardMediaToEmbed is not implemented in the base class.
11293
11298
  Please override this method in your extended class.`);
11294
11299
  }
11295
11300
  onActionDetailClick(url) {
11296
- throw new Error(`onActionDetailClick is not implemented in the base class.
11301
+ throw new Error(`onActionDetailClick is not implemented in the base class.
11297
11302
  Please override this method in your extended class.`);
11298
11303
  }
11299
11304
  onActionAudioClick(audioCommentID) {
11300
- throw new Error(`onActionDetailClick is not implemented in the base class.
11305
+ throw new Error(`onActionDetailClick is not implemented in the base class.
11301
11306
  Please override this method in your extended class.`);
11302
11307
  }
11303
11308
  onActionVideoClick(url) {
11304
- throw new Error(`onActionVideoClick is not implemented in the base class.
11309
+ throw new Error(`onActionVideoClick is not implemented in the base class.
11305
11310
  Please override this method in your extended class.`);
11306
11311
  }
11307
11312
  onActionImageClick(imageCommentID) {
11308
- throw new Error(`onActionImageClick is not implemented in the base class.
11313
+ throw new Error(`onActionImageClick is not implemented in the base class.
11309
11314
  Please override this method in your extended class.`);
11310
11315
  }
11311
11316
  onActionDocClick(url) {
11312
- throw new Error(`onActionDocClick is not implemented in the base class.
11317
+ throw new Error(`onActionDocClick is not implemented in the base class.
11313
11318
  Please override this method in your extended class.`);
11314
11319
  }
11315
11320
  onActionYoutubeClick(url) {
11316
- throw new Error(`onActionYoutubeClick is not implemented in the base class.
11321
+ throw new Error(`onActionYoutubeClick is not implemented in the base class.
11317
11322
  Please override this method in your extended class.`);
11318
11323
  }
11319
11324
  }