@provoly/dashboard 1.2.2 → 1.2.4

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 (35) hide show
  1. package/components/data-format/data-format.module.d.ts +7 -0
  2. package/components/data-format/data-format.pipe.d.ts +8 -0
  3. package/components/data-format/index.d.ts +5 -0
  4. package/components/data-format/public-api.d.ts +2 -0
  5. package/esm2022/components/data-format/data-format.module.mjs +16 -0
  6. package/esm2022/components/data-format/data-format.pipe.mjs +32 -0
  7. package/esm2022/components/data-format/provoly-dashboard-components-data-format.mjs +5 -0
  8. package/esm2022/components/data-format/public-api.mjs +3 -0
  9. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +2 -2
  10. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +4 -3
  11. package/esm2022/widgets/widget-analytic/widget-analytic.module.mjs +8 -4
  12. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +21 -11
  13. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  14. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +7 -12
  15. package/fesm2022/provoly-dashboard-components-data-format.mjs +52 -0
  16. package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -0
  17. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +10 -5
  18. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  19. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +22 -12
  20. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  21. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +13 -17
  22. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  23. package/fesm2022/provoly-dashboard.mjs +1 -1
  24. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  25. package/package.json +13 -7
  26. package/styles/base/_utils.scss +4 -0
  27. package/styles/components/_o-widget.scss +1 -1
  28. package/styles-theme/components-theme/_o-widget.theme.scss +4 -1
  29. package/styles-theme/main-theme.scss +0 -1
  30. package/widgets/widget-analytic/component/widget-analytic.component.d.ts +1 -1
  31. package/widgets/widget-analytic/widget-analytic.module.d.ts +2 -1
  32. package/widgets/widget-map/component/widget-map.component.d.ts +4 -2
  33. package/widgets/widget-map/style/_m-layer-legend.scss +41 -56
  34. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +1 -3
  35. package/styles-theme/components-theme/_m-layer-legend.theme.scss +0 -24
@@ -2,10 +2,10 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class PryWidgetMapCssComponent {
4
4
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetMapCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css", ngImport: i0, template: '', isInline: true, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map__general-settings{margin:0 -10px}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.5rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.5rem;padding:0;border:none;background:#fff}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:#fff}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:#fff}.ol-zoom>button{padding:0;border:none;background:#fff}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.a-tooltip[data-tooltip].--absolute{position:absolute}.a-tooltip[data-tooltip].--nopos{position:unset}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-map-layer-action{display:flex;gap:.375rem;z-index:2;right:.5rem}.m-map-layer-action button{border-radius:8px}.m-map-layer-action.ol-control{border:none;background-color:transparent}.m-map-layer-action .-hidden{display:none}.m-map-layer-action__toggle{order:2;width:1.875rem;height:1.875rem}.m-map-layer-action__title{display:flex;flex-direction:row;align-items:center}.m-map-layer-action__title:hover{cursor:pointer;background-color:#fafafa!important}.m-map-layer-action__container{border-radius:.5rem;padding:.5rem .625rem}.m-map-layer-action__container--layers{max-width:13.75rem}.m-map-layer-action__container .a-h4{font-size:16px}.m-map-layer-action__container .a-h5{font-size:14px;margin:0}.m-map-layer-action__container button.m-map-layer-action__toggle{border-radius:50%}.m-map-layer-action__container button.m-map-layer-action__toggle:hover{outline:none}.m-map-layer-action__image{background:#fff;overflow:scroll}.m-map-layer-action__error{font-style:italic;color:#c74646}.m-layer-legend__title{align-items:flex-start;gap:.3125rem}.m-layer-legend__dropdown-icon{margin-top:.125rem}.m-layer-switcher{max-height:31.875rem}.m-layer-switcher__group-title{font-weight:700;margin-bottom:.3125rem}.m-layer-switcher__content{max-height:26.25rem;overflow-y:auto}.m-layer-switcher__title{align-items:flex-start;word-break:break-word}.m-layer-switcher--radios{display:flex;flex-direction:column;gap:.3125rem}.m-layer-switcher--radios input{margin-top:.1875rem}.m-map-slide-legend{pointer-events:none;position:absolute;z-index:1;background-color:#fff;border-radius:.5rem;padding:.3125rem}.m-map-slide-legend.-left{left:4.0625rem}.m-map-slide-legend.-right{right:2.9375rem}.m-map-slide-legend__title{font-weight:700}\n"], encapsulation: i0.ViewEncapsulation.None }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css", ngImport: i0, template: '', isInline: true, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map__general-settings{margin:0 -10px}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.5rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.5rem;padding:0;border:none;background:#fff}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:#fff}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:#fff}.ol-zoom>button{padding:0;border:none;background:#fff}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.a-tooltip[data-tooltip].--absolute{position:absolute}.a-tooltip[data-tooltip].--nopos{position:unset}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-map-action{z-index:2;right:.5rem;color:#263340;background-color:transparent;border:none}.m-map-action__button,.m-map-action button{border-radius:8px}.m-map-action__button:hover,.m-map-action button:hover{outline:none}.m-map-pop-in{z-index:2;display:block;position:absolute;right:3.625rem;background-color:#fff;padding:.5rem .625rem;border-radius:.5rem}.m-map-pop-in.-hidden,.m-map-pop-in .-hidden{display:none}.m-map-pop-in__title{display:flex;flex-direction:row;align-items:flex-start;word-break:break-word;gap:.3125rem}.m-map-pop-in__title:hover{cursor:pointer;background-color:#fafafa!important}.m-map-pop-in__dropdown-icon{margin-top:.125rem}.m-map-pop-in__image{background:#fff;overflow:scroll}.m-map-pop-in__error{font-style:italic;color:#c74646}.m-map-pop-in .a-h4{font-size:16px}.m-map-pop-in .a-h5{font-size:14px;margin:0}.m-map-pop-in__group-title{font-weight:700;margin-bottom:.3125rem}.m-map-pop-in__content{overflow-y:auto}.m-map-pop-in__radios{display:flex;flex-direction:column;gap:.3125rem}.m-map-pop-in__radios input{accent-color:#113B6E;margin-top:.1875rem}.m-map-pop-in.-max-width-220{max-width:13.75rem}.m-map-slide-legend{pointer-events:none;position:absolute;z-index:1;background-color:#fff;border-radius:.5rem;padding:.3125rem}.m-map-slide-legend.-left{left:4.0625rem}.m-map-slide-legend.-right{right:2.9375rem}.m-map-slide-legend__title{font-weight:700}\n"], encapsulation: i0.ViewEncapsulation.None }); }
6
6
  }
7
7
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetMapCssComponent, decorators: [{
8
8
  type: Component,
9
- args: [{ selector: 'pry-widget-map-css', template: '', encapsulation: ViewEncapsulation.None, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map__general-settings{margin:0 -10px}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.5rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.5rem;padding:0;border:none;background:#fff}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:#fff}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:#fff}.ol-zoom>button{padding:0;border:none;background:#fff}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.a-tooltip[data-tooltip].--absolute{position:absolute}.a-tooltip[data-tooltip].--nopos{position:unset}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-map-layer-action{display:flex;gap:.375rem;z-index:2;right:.5rem}.m-map-layer-action button{border-radius:8px}.m-map-layer-action.ol-control{border:none;background-color:transparent}.m-map-layer-action .-hidden{display:none}.m-map-layer-action__toggle{order:2;width:1.875rem;height:1.875rem}.m-map-layer-action__title{display:flex;flex-direction:row;align-items:center}.m-map-layer-action__title:hover{cursor:pointer;background-color:#fafafa!important}.m-map-layer-action__container{border-radius:.5rem;padding:.5rem .625rem}.m-map-layer-action__container--layers{max-width:13.75rem}.m-map-layer-action__container .a-h4{font-size:16px}.m-map-layer-action__container .a-h5{font-size:14px;margin:0}.m-map-layer-action__container button.m-map-layer-action__toggle{border-radius:50%}.m-map-layer-action__container button.m-map-layer-action__toggle:hover{outline:none}.m-map-layer-action__image{background:#fff;overflow:scroll}.m-map-layer-action__error{font-style:italic;color:#c74646}.m-layer-legend__title{align-items:flex-start;gap:.3125rem}.m-layer-legend__dropdown-icon{margin-top:.125rem}.m-layer-switcher{max-height:31.875rem}.m-layer-switcher__group-title{font-weight:700;margin-bottom:.3125rem}.m-layer-switcher__content{max-height:26.25rem;overflow-y:auto}.m-layer-switcher__title{align-items:flex-start;word-break:break-word}.m-layer-switcher--radios{display:flex;flex-direction:column;gap:.3125rem}.m-layer-switcher--radios input{margin-top:.1875rem}.m-map-slide-legend{pointer-events:none;position:absolute;z-index:1;background-color:#fff;border-radius:.5rem;padding:.3125rem}.m-map-slide-legend.-left{left:4.0625rem}.m-map-slide-legend.-right{right:2.9375rem}.m-map-slide-legend__title{font-weight:700}\n"] }]
9
+ args: [{ selector: 'pry-widget-map-css', template: '', encapsulation: ViewEncapsulation.None, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map__general-settings{margin:0 -10px}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.5rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.5rem;padding:0;border:none;background:#fff}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:#fff}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:#fff}.ol-zoom>button{padding:0;border:none;background:#fff}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.a-tooltip[data-tooltip].--absolute{position:absolute}.a-tooltip[data-tooltip].--nopos{position:unset}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-map-action{z-index:2;right:.5rem;color:#263340;background-color:transparent;border:none}.m-map-action__button,.m-map-action button{border-radius:8px}.m-map-action__button:hover,.m-map-action button:hover{outline:none}.m-map-pop-in{z-index:2;display:block;position:absolute;right:3.625rem;background-color:#fff;padding:.5rem .625rem;border-radius:.5rem}.m-map-pop-in.-hidden,.m-map-pop-in .-hidden{display:none}.m-map-pop-in__title{display:flex;flex-direction:row;align-items:flex-start;word-break:break-word;gap:.3125rem}.m-map-pop-in__title:hover{cursor:pointer;background-color:#fafafa!important}.m-map-pop-in__dropdown-icon{margin-top:.125rem}.m-map-pop-in__image{background:#fff;overflow:scroll}.m-map-pop-in__error{font-style:italic;color:#c74646}.m-map-pop-in .a-h4{font-size:16px}.m-map-pop-in .a-h5{font-size:14px;margin:0}.m-map-pop-in__group-title{font-weight:700;margin-bottom:.3125rem}.m-map-pop-in__content{overflow-y:auto}.m-map-pop-in__radios{display:flex;flex-direction:column;gap:.3125rem}.m-map-pop-in__radios input{accent-color:#113B6E;margin-top:.1875rem}.m-map-pop-in.-max-width-220{max-width:13.75rem}.m-map-slide-legend{pointer-events:none;position:absolute;z-index:1;background-color:#fff;border-radius:.5rem;padding:.3125rem}.m-map-slide-legend.-left{left:4.0625rem}.m-map-slide-legend.-right{right:2.9375rem}.m-map-slide-legend__title{font-weight:700}\n"] }]
10
10
  }] });
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC9zdHlsZS9jc3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTdELE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDBEQUp6QixFQUFFOzsyRkFJRCx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usb0JBQW9CLFlBQ3BCLEVBQUUsaUJBRUcsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1tYXAtY3NzJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZVVybHM6IFsnLi9fby13aWRnZXQtbWFwLnNjc3MnLCAnLi9fbS1sYXllci1sZWdlbmQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFByeVdpZGdldE1hcENzc0NvbXBvbmVudCB7fVxuIl19
@@ -1,29 +1,24 @@
1
1
  import { Pipe } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@provoly/dashboard";
3
+ import * as i1 from "@provoly/dashboard";
5
4
  export class FormatNumberPipe {
6
- constructor(decimalPipe, i18nService) {
7
- this.decimalPipe = decimalPipe;
5
+ constructor(i18nService) {
8
6
  this.i18nService = i18nService;
9
7
  }
8
+ // @TODO remove/rework this pipe later when field formatting is implemented
10
9
  transform(toDisplay, ...args) {
11
10
  const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };
12
11
  if (typeof toDisplay === 'number') {
13
12
  result.isNumber = true;
14
- result.text =
15
- this.decimalPipe
16
- .transform(toDisplay, '1.0-0')
17
- ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))
18
- ?.replace(/\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;
13
+ result.text = new Intl.NumberFormat().format(toDisplay);
19
14
  }
20
15
  return result;
21
16
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FormatNumberPipe, deps: [{ token: i1.DecimalPipe }, { token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.Pipe }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FormatNumberPipe, deps: [{ token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.Pipe }); }
23
18
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: FormatNumberPipe, name: "formatNumber" }); }
24
19
  }
25
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: FormatNumberPipe, decorators: [{
26
21
  type: Pipe,
27
22
  args: [{ name: 'formatNumber' }]
28
- }], ctorParameters: () => [{ type: i1.DecimalPipe }, { type: i2.PryI18nService }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LW51bWJlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvZXhwYW5kLXZhbHVlL2Zvcm1hdC1udW1iZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7OztBQUlwRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ1UsV0FBd0IsRUFDeEIsV0FBMkI7UUFEM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO0lBQ2xDLENBQUM7SUFFSixTQUFTLENBQUMsU0FBMEMsRUFBRSxHQUFHLElBQVc7UUFDbEUsTUFBTSxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDM0UsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSTtnQkFDVCxJQUFJLENBQUMsV0FBVztxQkFDYixTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDOUIsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQ2xFLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUMxRixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0FqQlUsZ0JBQWdCOzRHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UsIFZhbHVlVHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5cbkBQaXBlKHsgbmFtZTogJ2Zvcm1hdE51bWJlcicgfSlcbmV4cG9ydCBjbGFzcyBGb3JtYXROdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlXG4gICkge31cblxuICB0cmFuc2Zvcm0odG9EaXNwbGF5PzogVmFsdWVUeXBlIHwgVmFsdWVUeXBlW10gfCBudWxsLCAuLi5hcmdzOiBhbnlbXSk6IGFueSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyBpc051bWJlcjogZmFsc2UsIHRleHQ6IGAkeyF0b0Rpc3BsYXkgPyAnJyA6IHRvRGlzcGxheX1gIH07XG4gICAgaWYgKHR5cGVvZiB0b0Rpc3BsYXkgPT09ICdudW1iZXInKSB7XG4gICAgICByZXN1bHQuaXNOdW1iZXIgPSB0cnVlO1xuICAgICAgcmVzdWx0LnRleHQgPVxuICAgICAgICB0aGlzLmRlY2ltYWxQaXBlXG4gICAgICAgICAgLnRyYW5zZm9ybSh0b0Rpc3BsYXksICcxLjAtMCcpXG4gICAgICAgICAgPy5yZXBsYWNlKC8sL2csIHRoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQHByeS5mb3JtYXQudGhvdXNhbmRzJykpXG4gICAgICAgICAgPy5yZXBsYWNlKC9cXC4vZywgdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAcHJ5LmZvcm1hdC5kZWNpbWFsJykpIHx8IGAke3RvRGlzcGxheX1gO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
23
+ }], ctorParameters: () => [{ type: i1.PryI18nService }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LW51bWJlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvZXhwYW5kLXZhbHVlL2Zvcm1hdC1udW1iZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBSXBELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsV0FBMkI7UUFBM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO0lBQUcsQ0FBQztJQUVuRCwyRUFBMkU7SUFFM0UsU0FBUyxDQUFDLFNBQTBDLEVBQUUsR0FBRyxJQUFXO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQzNFLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDdkIsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBWlUsZ0JBQWdCOzRHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UsIFZhbHVlVHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5cbkBQaXBlKHsgbmFtZTogJ2Zvcm1hdE51bWJlcicgfSlcbmV4cG9ydCBjbGFzcyBGb3JtYXROdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlKSB7fVxuXG4gIC8vIEBUT0RPIHJlbW92ZS9yZXdvcmsgdGhpcyBwaXBlIGxhdGVyIHdoZW4gZmllbGQgZm9ybWF0dGluZyBpcyBpbXBsZW1lbnRlZFxuXG4gIHRyYW5zZm9ybSh0b0Rpc3BsYXk/OiBWYWx1ZVR5cGUgfCBWYWx1ZVR5cGVbXSB8IG51bGwsIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IGlzTnVtYmVyOiBmYWxzZSwgdGV4dDogYCR7IXRvRGlzcGxheSA/ICcnIDogdG9EaXNwbGF5fWAgfTtcbiAgICBpZiAodHlwZW9mIHRvRGlzcGxheSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJlc3VsdC5pc051bWJlciA9IHRydWU7XG4gICAgICByZXN1bHQudGV4dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCh0b0Rpc3BsYXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Pipe, NgModule } from '@angular/core';
3
+
4
+ class DataFormatPipe {
5
+ constructor() { }
6
+ transform(value, toLocale, suffix, ...args) {
7
+ let result = value;
8
+ if (toLocale) {
9
+ result = toLocaleString(value);
10
+ }
11
+ if (suffix) {
12
+ result = result + ' ' + suffix;
13
+ }
14
+ return result;
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
17
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: DataFormatPipe, name: "dataFormat" }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataFormatPipe, decorators: [{
20
+ type: Pipe,
21
+ args: [{ name: 'dataFormat' }]
22
+ }], ctorParameters: () => [] });
23
+ const toLocaleString = (value) => {
24
+ switch (typeof value) {
25
+ case 'number':
26
+ return new Intl.NumberFormat().format(value);
27
+ case 'string':
28
+ return value;
29
+ default:
30
+ return value;
31
+ }
32
+ };
33
+
34
+ class PryDataFormatModule {
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDataFormatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
36
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PryDataFormatModule, declarations: [DataFormatPipe], exports: [DataFormatPipe] }); }
37
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDataFormatModule }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDataFormatModule, decorators: [{
40
+ type: NgModule,
41
+ args: [{
42
+ declarations: [DataFormatPipe],
43
+ exports: [DataFormatPipe]
44
+ }]
45
+ }] });
46
+
47
+ /**
48
+ * Generated bundle index. Do not edit.
49
+ */
50
+
51
+ export { DataFormatPipe, PryDataFormatModule };
52
+ //# sourceMappingURL=provoly-dashboard-components-data-format.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provoly-dashboard-components-data-format.mjs","sources":["../../../../projects/provoly/dashboard/components/data-format/data-format.pipe.ts","../../../../projects/provoly/dashboard/components/data-format/data-format.module.ts","../../../../projects/provoly/dashboard/components/data-format/provoly-dashboard-components-data-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'dataFormat' })\nexport class DataFormatPipe implements PipeTransform {\n constructor() {}\n\n transform(value?: any, toLocale?: boolean, suffix?: string, ...args: any[]): any {\n let result = value;\n if (toLocale) {\n result = toLocaleString(value);\n }\n if (suffix) {\n result = result + ' ' + suffix;\n }\n\n return result;\n }\n}\n\nconst toLocaleString = (value?: string | number) => {\n switch (typeof value) {\n case 'number':\n return new Intl.NumberFormat().format(value);\n case 'string':\n return value;\n default:\n return value;\n }\n};\n","import { NgModule } from '@angular/core';\nimport { DataFormatPipe } from './data-format.pipe';\n\n@NgModule({\n declarations: [DataFormatPipe],\n exports: [DataFormatPipe]\n})\nexport class PryDataFormatModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAGa,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA,GAAgB;IAEhB,SAAS,CAAC,KAAW,EAAE,QAAkB,EAAE,MAAe,EAAE,GAAG,IAAW,EAAA;QACxE,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;SAChC;AAED,QAAA,OAAO,MAAM,CAAC;KACf;8GAbU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;;AAiB5B,MAAM,cAAc,GAAG,CAAC,KAAuB,KAAI;IACjD,QAAQ,OAAO,KAAK;AAClB,QAAA,KAAK,QAAQ;YACX,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,KAAK,CAAC;AACf,QAAA;AACE,YAAA,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;;MCrBY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,CAHf,cAAc,CAAA,EAAA,OAAA,EAAA,CACnB,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEb,mBAAmB,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,cAAc,CAAC;oBAC9B,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA,CAAA;;;ACND;;AAEG;;;;"}
@@ -15,6 +15,8 @@ import * as i6 from '@provoly/dashboard/components/color-picker';
15
15
  import { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';
16
16
  import * as i7 from '@angular/cdk/drag-drop';
17
17
  import { DragDropModule } from '@angular/cdk/drag-drop';
18
+ import * as i9 from '@provoly/dashboard/components/data-format';
19
+ import { PryDataFormatModule } from '@provoly/dashboard/components/data-format';
18
20
  import { OverlayModule } from '@angular/cdk/overlay';
19
21
 
20
22
  class PryWidgetAnalyticCssComponent {
@@ -188,11 +190,11 @@ class WidgetAnalyticComponent extends DataWidgetComponent {
188
190
  });
189
191
  }
190
192
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticComponent, deps: [{ token: i1.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
191
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: WidgetAnalyticComponent, selector: "pry-widget-analytic", usesInheritance: true, ngImport: i0, template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleFormat($event)\" [ngModel]=\"!!optionsCopy.format\">\n {{ '@pry.widget.analytic.format' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.format) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"format\">{{ '@pry.widget.analytic.suffix' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n id=\"format\"\n [ngModel]=\"optionsCopy.format.suffix\"\n (ngModelChange)=\"changeFormat($event)\"\n />\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary][secondary]\n }}{{ optionsCopy.format?.suffix ? ' ' + optionsCopy.format?.suffix : '' }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] }}{{ optionsCopy.format?.suffix ? ' ' + optionsCopy.format?.suffix : '' }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] }}\n </td>\n }\n </tr>\n }\n </tfoot>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i6.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: WidgetAnalyticComponent, selector: "pry-widget-analytic", usesInheritance: true, ngImport: i0, template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleFormat($event)\" [ngModel]=\"!!optionsCopy.format\">\n {{ '@pry.widget.analytic.format' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.format) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"format\">{{ '@pry.widget.analytic.suffix' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n id=\"format\"\n [ngModel]=\"optionsCopy.format.suffix\"\n (ngModelChange)=\"changeFormat($event)\"\n />\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: true : optionsCopy.format?.suffix }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: true : optionsCopy.format?.suffix }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] }}\n </td>\n }\n </tr>\n }\n </tfoot>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i6.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i9.DataFormatPipe, name: "dataFormat" }] }); }
192
194
  }
193
195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticComponent, decorators: [{
194
196
  type: Component,
195
- args: [{ selector: 'pry-widget-analytic', template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleFormat($event)\" [ngModel]=\"!!optionsCopy.format\">\n {{ '@pry.widget.analytic.format' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.format) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"format\">{{ '@pry.widget.analytic.suffix' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n id=\"format\"\n [ngModel]=\"optionsCopy.format.suffix\"\n (ngModelChange)=\"changeFormat($event)\"\n />\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary][secondary]\n }}{{ optionsCopy.format?.suffix ? ' ' + optionsCopy.format?.suffix : '' }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] }}{{ optionsCopy.format?.suffix ? ' ' + optionsCopy.format?.suffix : '' }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] }}\n </td>\n }\n </tr>\n }\n </tfoot>\n </table>\n </div>\n</div>\n" }]
197
+ args: [{ selector: 'pry-widget-analytic', template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleFormat($event)\" [ngModel]=\"!!optionsCopy.format\">\n {{ '@pry.widget.analytic.format' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.format) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"format\">{{ '@pry.widget.analytic.suffix' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n id=\"format\"\n [ngModel]=\"optionsCopy.format.suffix\"\n (ngModelChange)=\"changeFormat($event)\"\n />\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: true : optionsCopy.format?.suffix }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: true : optionsCopy.format?.suffix }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] }}\n </td>\n }\n </tr>\n }\n </tfoot>\n </table>\n </div>\n</div>\n" }]
196
198
  }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }] });
197
199
 
198
200
  const enTranslations = {
@@ -254,7 +256,8 @@ class WidgetAnalyticModule extends BaseWidgetModule {
254
256
  PryI18nModule,
255
257
  AsyncPipe,
256
258
  PryColorPickerModule,
257
- DragDropModule], exports: [WidgetAnalyticComponent] }); }
259
+ DragDropModule,
260
+ PryDataFormatModule], exports: [WidgetAnalyticComponent] }); }
258
261
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticModule, imports: [CommonModule,
259
262
  FormsModule,
260
263
  OverlayModule,
@@ -266,7 +269,8 @@ class WidgetAnalyticModule extends BaseWidgetModule {
266
269
  PryToggleModule,
267
270
  PryI18nModule,
268
271
  PryColorPickerModule,
269
- DragDropModule] }); }
272
+ DragDropModule,
273
+ PryDataFormatModule] }); }
270
274
  }
271
275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticModule, decorators: [{
272
276
  type: NgModule,
@@ -285,7 +289,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
285
289
  PryI18nModule,
286
290
  AsyncPipe,
287
291
  PryColorPickerModule,
288
- DragDropModule
292
+ DragDropModule,
293
+ PryDataFormatModule
289
294
  ],
290
295
  exports: [WidgetAnalyticComponent]
291
296
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-analytic.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-analytic/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.html","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/widget-analytic.module.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/provoly-dashboard-widgets-widget-analytic.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-analytic-css',\n template: '',\n styleUrls: ['./_o-widget-analytic.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetAnalyticCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport {\n AnalyticWidgetOptions,\n Attribute,\n AttributeSimpleValue,\n Class,\n ClassSelectors,\n DataWidgetComponent,\n Item,\n ResultSet,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, startWith } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs/operators';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'pry-widget-analytic',\n templateUrl: './widget-analytic.component.html'\n})\nexport class WidgetAnalyticComponent extends DataWidgetComponent {\n optionsCopy: AnalyticWidgetOptions = { primaryProp: '', secondaryProp: '', verticalProp: '', valueProp: '' };\n options$: Observable<AnalyticWidgetOptions>;\n\n primaryProperty$: Observable<string[]>;\n secondaryProperty$: Observable<string[]>;\n verticalProperty$: Observable<string[]>;\n totalProperty$: Observable<string[]>;\n grandTotalProperty$: Observable<string[]>;\n lines$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } } }[]>;\n totals$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } } }[]>;\n grandTotals$: Observable<{ name: any; value: { [p: string]: any } }[]>;\n colorMap$: Observable<{ [vertical: string]: { [primary: string]: string | undefined } }>;\n height$: Observable<number>;\n classes$: Observable<Class[]>;\n availableProperties$: Observable<Attribute[]>;\n\n change($event: string, prop: 'primaryProp' | 'secondaryProp' | 'valueProp' | 'verticalProp') {\n this.optionsCopy[prop] = $event;\n }\n\n changeColorConfig($event: string | string[], prop: 'prop' | 'colors') {\n switch (prop) {\n case 'prop': {\n this.optionsCopy.colorConfig!.prop = $event as string;\n break;\n }\n case 'colors': {\n this.optionsCopy.colorConfig!.colors = $event as string[];\n break;\n }\n }\n }\n\n changeFormat($event: string, prop = 'suffix') {\n this.optionsCopy.format!.suffix = $event;\n }\n\n constructor(store: Store<any>, el: ElementRef) {\n super(store, el);\n this.options$ = this.manifest$.pipe(map((manifest) => (manifest.options ?? {}) as AnalyticWidgetOptions));\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.height$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(\n map(([size, header]) => size.height - (header ? WIDGET_HEADER_HEIGHT.value : 0))\n );\n this.subscriptions.add(\n this.options$.subscribe((options) => {\n this.optionsCopy = JSON.parse(JSON.stringify(options));\n })\n );\n this.primaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.primaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.primaryProp))\n );\n this.secondaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.secondaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.secondaryProp!, 1))\n );\n this.verticalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.verticalProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 1))\n );\n this.totalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 2))\n );\n this.grandTotalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 3))\n );\n\n this.lines$ = combineLatest([\n this.options$,\n this.primaryProperty$.pipe(startWith([])),\n this.secondaryProperty$.pipe(startWith(undefined)),\n this.verticalProperty$.pipe(startWith([])),\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 1)\n )\n );\n\n this.totals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.secondaryProperty$,\n this.totalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 2)\n )\n );\n\n this.grandTotals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.grandTotalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, undefined, rs, options, 3)\n )\n );\n\n this.colorMap$ = combineLatest([\n this.options$,\n this.resultSet$,\n this.verticalProperty$,\n this.primaryProperty$\n ]).pipe(\n filter(([options]) => !!options.colorConfig),\n map(([options, rs, vertical, primary]) => this.createColorMap(vertical, primary, rs, options))\n );\n\n this.availableProperties$ = combineLatest([this.classes$, this.resultSet$]).pipe(\n map(([classes, rs]) => {\n const presentClassesId = Object.keys(rs.items);\n const presentClasses = presentClassesId\n .map((classId) => classes.find((cl) => cl.id === classId))\n .filter((cl) => !!cl) as Class[];\n return presentClasses.map((cl) => cl.attributes).flat();\n })\n );\n }\n\n private matchAttributeValue(item: Item, prop?: string, comparisonValue?: string) {\n return comparisonValue && prop ? (item.attributes[prop] as AttributeSimpleValue).value == comparisonValue : true;\n }\n\n private createValueMap(\n verticalProps: string[],\n primaryProps: string[],\n secondaryProps: string[] | undefined,\n rs: ResultSet,\n options: AnalyticWidgetOptions,\n level?: number\n ) {\n return verticalProps.map((vertical) => {\n const value = {} as { [key: string]: { [key: string]: any } | any };\n primaryProps.forEach((primary) => {\n (secondaryProps ?? [undefined]).forEach((secondary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.secondaryProp, secondary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical) &&\n this.matchAttributeValue(item, 'level', level + '')\n );\n if (!!matchingItem) {\n if (!!secondary) {\n if (!value[primary]) {\n value[primary] = {};\n }\n value[primary][secondary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue).value;\n } else {\n value[primary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue)?.value;\n }\n }\n });\n });\n return { name: vertical, value };\n });\n }\n\n getPropertyLabelsForLevel(rs: ResultSet, property: string, level?: number) {\n const values = Object.values(rs.items)\n .map((items) =>\n items\n .filter((item) =>\n level && 'level' in item.attributes\n ? [level, '' + level].includes(\n (item.attributes['level'] as AttributeSimpleValue).value as string | number\n )\n : true\n )\n .map((item) => (item.attributes[property] as AttributeSimpleValue).value + '')\n )\n .flat()\n .flat();\n return [...new Set(values)];\n }\n\n createColorMap(verticalProps: string[], primaryProps: string[], rs: ResultSet, options: AnalyticWidgetOptions) {\n return options.colorConfig\n ? Object.fromEntries(\n verticalProps.map((vertical) => [\n vertical,\n Object.fromEntries(\n primaryProps.map((primary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical)\n );\n\n return [\n primary,\n matchingItem && (matchingItem.attributes[options.valueProp] as AttributeSimpleValue).value !== 0\n ? options.colorConfig?.colors[\n ((matchingItem.attributes[options.colorConfig!.prop] as AttributeSimpleValue).value as number) -\n 1\n ]\n : '#FFFFFF'\n ];\n })\n )\n ])\n )\n : {};\n }\n\n toggleColorConfig($event: boolean) {\n if ($event !== !!this.optionsCopy.colorConfig) {\n if (!this.optionsCopy.colorConfig) {\n this.optionsCopy.colorConfig = { prop: '', colors: [] };\n } else {\n this.optionsCopy.colorConfig = undefined;\n }\n }\n }\n\n toggleFormat($event: boolean) {\n if ($event !== !!this.optionsCopy.format) {\n if (!this.optionsCopy.format) {\n this.optionsCopy.format = { suffix: '' };\n } else {\n this.optionsCopy.format = undefined;\n }\n }\n }\n\n modifyColorScheme($event?: string, index?: number) {\n $event && index !== undefined\n ? (this.optionsCopy.colorConfig!.colors[index] = $event)\n : this.optionsCopy.colorConfig!.colors.push('#FFFFFF');\n }\n\n removeColor(index: number) {\n this.optionsCopy.colorConfig!.colors.splice(index, 1);\n }\n\n drop(event: CdkDragDrop<string[]>) {\n this.optionsCopy.colorConfig!.colors.splice(\n event.currentIndex,\n 0,\n this.optionsCopy.colorConfig!.colors.splice(event.previousIndex, 1)[0]\n );\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n}\n","<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleFormat($event)\" [ngModel]=\"!!optionsCopy.format\">\n {{ '@pry.widget.analytic.format' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.format) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"format\">{{ '@pry.widget.analytic.suffix' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n id=\"format\"\n [ngModel]=\"optionsCopy.format.suffix\"\n (ngModelChange)=\"changeFormat($event)\"\n />\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary][secondary]\n }}{{ optionsCopy.format?.suffix ? ' ' + optionsCopy.format?.suffix : '' }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] }}{{ optionsCopy.format?.suffix ? ' ' + optionsCopy.format?.suffix : '' }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] }}\n </td>\n }\n </tr>\n }\n </tfoot>\n </table>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribute that contains the horizontal primary field',\n secondaryProp: 'Attribute that contains the horizontal secondary field',\n verticalProp: 'Attribute that contains the vertical attribute',\n valueProp: 'Attribute that contains the value',\n colorConfig: 'Cell color configuration',\n colorProp: 'Color attribute',\n colors: 'Colors',\n format: 'Value formatting',\n suffix: 'Suffix'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribut horizontal primaire',\n secondaryProp: 'Attribut horizontal secondaire',\n verticalProp: 'Attribut vertical',\n valueProp: 'Attribut contenant la valeur',\n colorConfig: 'Configuration des couleurs de cellules',\n colorProp: 'Attribut de la couleur',\n colors: 'Couleurs',\n format: 'Formattage des valeurs',\n suffix: 'Suffixe'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetAnalyticComponent } from './component/widget-analytic.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetAnalyticCssComponent } from './style/css.component';\nimport { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';\nimport { CdkDrag, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\n\n@NgModule({\n declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule,\n AsyncPipe,\n PryColorPickerModule,\n DragDropModule\n ],\n exports: [WidgetAnalyticComponent]\n})\nexport class WidgetAnalyticModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-vega', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-vega', enTranslations);\n }\n\n override getComponent() {\n return WidgetAnalyticComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i8.PryWidgetAnalyticCssComponent","i1"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-analytic.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-analytic/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/component/widget-analytic.component.html","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/widget-analytic.module.ts","../../../../projects/provoly/dashboard/widgets/widget-analytic/provoly-dashboard-widgets-widget-analytic.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-analytic-css',\n template: '',\n styleUrls: ['./_o-widget-analytic.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetAnalyticCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport {\n AnalyticWidgetOptions,\n Attribute,\n AttributeSimpleValue,\n Class,\n ClassSelectors,\n DataWidgetComponent,\n Item,\n ResultSet,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, startWith } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs/operators';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'pry-widget-analytic',\n templateUrl: './widget-analytic.component.html'\n})\nexport class WidgetAnalyticComponent extends DataWidgetComponent {\n optionsCopy: AnalyticWidgetOptions = { primaryProp: '', secondaryProp: '', verticalProp: '', valueProp: '' };\n options$: Observable<AnalyticWidgetOptions>;\n\n primaryProperty$: Observable<string[]>;\n secondaryProperty$: Observable<string[]>;\n verticalProperty$: Observable<string[]>;\n totalProperty$: Observable<string[]>;\n grandTotalProperty$: Observable<string[]>;\n lines$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } | any } }[]>;\n totals$: Observable<{ name: string; value: { [key: string]: { [key: string]: any } } }[]>;\n grandTotals$: Observable<{ name: any; value: { [p: string]: any } }[]>;\n colorMap$: Observable<{ [vertical: string]: { [primary: string]: string | undefined } }>;\n height$: Observable<number>;\n classes$: Observable<Class[]>;\n availableProperties$: Observable<Attribute[]>;\n\n change($event: string, prop: 'primaryProp' | 'secondaryProp' | 'valueProp' | 'verticalProp') {\n this.optionsCopy[prop] = $event;\n }\n\n changeColorConfig($event: string | string[], prop: 'prop' | 'colors') {\n switch (prop) {\n case 'prop': {\n this.optionsCopy.colorConfig!.prop = $event as string;\n break;\n }\n case 'colors': {\n this.optionsCopy.colorConfig!.colors = $event as string[];\n break;\n }\n }\n }\n\n changeFormat($event: string, prop = 'suffix') {\n this.optionsCopy.format!.suffix = $event;\n }\n\n constructor(store: Store<any>, el: ElementRef) {\n super(store, el);\n this.options$ = this.manifest$.pipe(map((manifest) => (manifest.options ?? {}) as AnalyticWidgetOptions));\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.height$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(\n map(([size, header]) => size.height - (header ? WIDGET_HEADER_HEIGHT.value : 0))\n );\n this.subscriptions.add(\n this.options$.subscribe((options) => {\n this.optionsCopy = JSON.parse(JSON.stringify(options));\n })\n );\n this.primaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.primaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.primaryProp))\n );\n this.secondaryProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.secondaryProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.secondaryProp!, 1))\n );\n this.verticalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n filter(([options]) => !!options.verticalProp),\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 1))\n );\n this.totalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 2))\n );\n this.grandTotalProperty$ = combineLatest([this.options$, this.resultSet$]).pipe(\n map(([options, rs]) => this.getPropertyLabelsForLevel(rs, options.verticalProp, 3))\n );\n\n this.lines$ = combineLatest([\n this.options$,\n this.primaryProperty$.pipe(startWith([])),\n this.secondaryProperty$.pipe(startWith(undefined)),\n this.verticalProperty$.pipe(startWith([])),\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 1)\n )\n );\n\n this.totals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.secondaryProperty$,\n this.totalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, secondaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, 2)\n )\n );\n\n this.grandTotals$ = combineLatest([\n this.options$,\n this.primaryProperty$,\n this.grandTotalProperty$,\n this.resultSet$\n ]).pipe(\n map(([options, primaryProps, verticalProps, rs]) =>\n this.createValueMap(verticalProps, primaryProps, undefined, rs, options, 3)\n )\n );\n\n this.colorMap$ = combineLatest([\n this.options$,\n this.resultSet$,\n this.verticalProperty$,\n this.primaryProperty$\n ]).pipe(\n filter(([options]) => !!options.colorConfig),\n map(([options, rs, vertical, primary]) => this.createColorMap(vertical, primary, rs, options))\n );\n\n this.availableProperties$ = combineLatest([this.classes$, this.resultSet$]).pipe(\n map(([classes, rs]) => {\n const presentClassesId = Object.keys(rs.items);\n const presentClasses = presentClassesId\n .map((classId) => classes.find((cl) => cl.id === classId))\n .filter((cl) => !!cl) as Class[];\n return presentClasses.map((cl) => cl.attributes).flat();\n })\n );\n }\n\n private matchAttributeValue(item: Item, prop?: string, comparisonValue?: string) {\n return comparisonValue && prop ? (item.attributes[prop] as AttributeSimpleValue).value == comparisonValue : true;\n }\n\n private createValueMap(\n verticalProps: string[],\n primaryProps: string[],\n secondaryProps: string[] | undefined,\n rs: ResultSet,\n options: AnalyticWidgetOptions,\n level?: number\n ) {\n return verticalProps.map((vertical) => {\n const value = {} as { [key: string]: { [key: string]: any } | any };\n primaryProps.forEach((primary) => {\n (secondaryProps ?? [undefined]).forEach((secondary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.secondaryProp, secondary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical) &&\n this.matchAttributeValue(item, 'level', level + '')\n );\n if (!!matchingItem) {\n if (!!secondary) {\n if (!value[primary]) {\n value[primary] = {};\n }\n value[primary][secondary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue).value;\n } else {\n value[primary] = (matchingItem!.attributes[options.valueProp] as AttributeSimpleValue)?.value;\n }\n }\n });\n });\n return { name: vertical, value };\n });\n }\n\n getPropertyLabelsForLevel(rs: ResultSet, property: string, level?: number) {\n const values = Object.values(rs.items)\n .map((items) =>\n items\n .filter((item) =>\n level && 'level' in item.attributes\n ? [level, '' + level].includes(\n (item.attributes['level'] as AttributeSimpleValue).value as string | number\n )\n : true\n )\n .map((item) => (item.attributes[property] as AttributeSimpleValue).value + '')\n )\n .flat()\n .flat();\n return [...new Set(values)];\n }\n\n createColorMap(verticalProps: string[], primaryProps: string[], rs: ResultSet, options: AnalyticWidgetOptions) {\n return options.colorConfig\n ? Object.fromEntries(\n verticalProps.map((vertical) => [\n vertical,\n Object.fromEntries(\n primaryProps.map((primary) => {\n const matchingItem = (rs.items[Object.keys(rs.items)[0]] ?? []).find(\n (item) =>\n this.matchAttributeValue(item, options.primaryProp, primary) &&\n this.matchAttributeValue(item, options.verticalProp, vertical)\n );\n\n return [\n primary,\n matchingItem && (matchingItem.attributes[options.valueProp] as AttributeSimpleValue).value !== 0\n ? options.colorConfig?.colors[\n ((matchingItem.attributes[options.colorConfig!.prop] as AttributeSimpleValue).value as number) -\n 1\n ]\n : '#FFFFFF'\n ];\n })\n )\n ])\n )\n : {};\n }\n\n toggleColorConfig($event: boolean) {\n if ($event !== !!this.optionsCopy.colorConfig) {\n if (!this.optionsCopy.colorConfig) {\n this.optionsCopy.colorConfig = { prop: '', colors: [] };\n } else {\n this.optionsCopy.colorConfig = undefined;\n }\n }\n }\n\n toggleFormat($event: boolean) {\n if ($event !== !!this.optionsCopy.format) {\n if (!this.optionsCopy.format) {\n this.optionsCopy.format = { suffix: '' };\n } else {\n this.optionsCopy.format = undefined;\n }\n }\n }\n\n modifyColorScheme($event?: string, index?: number) {\n $event && index !== undefined\n ? (this.optionsCopy.colorConfig!.colors[index] = $event)\n : this.optionsCopy.colorConfig!.colors.push('#FFFFFF');\n }\n\n removeColor(index: number) {\n this.optionsCopy.colorConfig!.colors.splice(index, 1);\n }\n\n drop(event: CdkDragDrop<string[]>) {\n this.optionsCopy.colorConfig!.colors.splice(\n event.currentIndex,\n 0,\n this.optionsCopy.colorConfig!.colors.splice(event.previousIndex, 1)[0]\n );\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n}\n","<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n <pry-widget-header\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleFormat($event)\" [ngModel]=\"!!optionsCopy.format\">\n {{ '@pry.widget.analytic.format' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.format) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"format\">{{ '@pry.widget.analytic.suffix' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n id=\"format\"\n [ngModel]=\"optionsCopy.format.suffix\"\n (ngModelChange)=\"changeFormat($event)\"\n />\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: true : optionsCopy.format?.suffix }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: true : optionsCopy.format?.suffix }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] }}\n </td>\n }\n </tr>\n }\n </tfoot>\n </table>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribute that contains the horizontal primary field',\n secondaryProp: 'Attribute that contains the horizontal secondary field',\n verticalProp: 'Attribute that contains the vertical attribute',\n valueProp: 'Attribute that contains the value',\n colorConfig: 'Cell color configuration',\n colorProp: 'Color attribute',\n colors: 'Colors',\n format: 'Value formatting',\n suffix: 'Suffix'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n analytic: {\n primaryProp: 'Attribut horizontal primaire',\n secondaryProp: 'Attribut horizontal secondaire',\n verticalProp: 'Attribut vertical',\n valueProp: 'Attribut contenant la valeur',\n colorConfig: 'Configuration des couleurs de cellules',\n colorProp: 'Attribut de la couleur',\n colors: 'Couleurs',\n format: 'Formattage des valeurs',\n suffix: 'Suffixe'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetAnalyticComponent } from './component/widget-analytic.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryWidgetAnalyticCssComponent } from './style/css.component';\nimport { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PryDataFormatModule } from '@provoly/dashboard/components/data-format';\n\n@NgModule({\n declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule,\n AsyncPipe,\n PryColorPickerModule,\n DragDropModule,\n PryDataFormatModule\n ],\n exports: [WidgetAnalyticComponent]\n})\nexport class WidgetAnalyticModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-vega', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-vega', enTranslations);\n }\n\n override getComponent() {\n return WidgetAnalyticComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i8.PryWidgetAnalyticCssComponent","i1"],"mappings":"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"}