ato-water-lib 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, EventEmitter, Directive, ViewChild, Input, Output, NgModule } from '@angular/core';
2
+ import { Injectable, Component, EventEmitter, Directive, ViewChild, Input, Output, HostListener, NgModule } from '@angular/core';
3
3
  import * as go from 'gojs';
4
4
  import go__default from 'gojs';
5
5
  import _ from 'lodash';
@@ -8,6 +8,8 @@ import { Subject, Subscription } from 'rxjs';
8
8
  import * as i1 from '@angular/common';
9
9
  import { DecimalPipe, CommonModule } from '@angular/common';
10
10
  import { v4 } from 'uuid';
11
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
12
+ import { BrowserModule } from '@angular/platform-browser';
11
13
 
12
14
  class AtoWaterLibService {
13
15
  constructor() { }
@@ -1030,6 +1032,7 @@ class AtoGojsEditorModel {
1030
1032
  ENUM_TEMPLATES["TURBINES"] = "Turbines";
1031
1033
  // Plant Basic
1032
1034
  ENUM_TEMPLATES["GROUP_BASIC_COMPONENT"] = "Group Basic Component";
1035
+ ENUM_TEMPLATES["TEXT_LABEL"] = "label";
1033
1036
  })(ENUM_TEMPLATES = AtoGojsEditorModel.ENUM_TEMPLATES || (AtoGojsEditorModel.ENUM_TEMPLATES = {}));
1034
1037
  // System Types
1035
1038
  let ENUM_TYPES;
@@ -1739,6 +1742,9 @@ class AtoGojsEditorModel {
1739
1742
  [ENUM_TEMPLATES.VALUE_LABEL]: {
1740
1743
  name: ENUM_TEMPLATES.VALUE_LABEL,
1741
1744
  },
1745
+ [ENUM_TEMPLATES.TEXT_LABEL]: {
1746
+ name: ENUM_TEMPLATES.TEXT_LABEL,
1747
+ },
1742
1748
  [ENUM_TEMPLATES.DATA_BOX]: {
1743
1749
  name: ENUM_TEMPLATES.DATA_BOX,
1744
1750
  },
@@ -3441,6 +3447,10 @@ class AtoDefaultGojsEditor {
3441
3447
  if (node?.type === AtoGojsEditorModel.ENUM_TEMPLATES.VALUE_LABEL) {
3442
3448
  this.makeValueLabelTemplate();
3443
3449
  }
3450
+ // Label
3451
+ if (node?.type === AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL) {
3452
+ this.makeTextLabelTemplate();
3453
+ }
3444
3454
  // Zone item
3445
3455
  if (node?.type === AtoGojsEditorModel.ENUM_TEMPLATES.ZONE_ENERGY_ITEM) {
3446
3456
  this.makeZoneItemTemplate();
@@ -3921,6 +3931,19 @@ class AtoDefaultGojsEditor {
3921
3931
  }), new go.Binding('visible', 'data', (x) => typeof x?.quantity === 'number')))));
3922
3932
  this.myDiagram.nodeTemplateMap.set(AtoGojsEditorModel.ENUM_TEMPLATES.VALUE_LABEL, node);
3923
3933
  }
3934
+ makeTextLabelTemplate(size = { w: NaN, h: 20 }) {
3935
+ const node = this.$(go.Node, 'Auto', {
3936
+ movable: false,
3937
+ isSelected: false,
3938
+ }, new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), this.$(go.Panel, 'Auto', this.$(go.Panel, 'Horizontal', this.$(go.TextBlock, {
3939
+ margin: new go.Margin(0, 5, 10, 0),
3940
+ textAlign: 'center',
3941
+ font: 'bold 16px Arial',
3942
+ wrap: go.TextBlock.WrapFit,
3943
+ stroke: AtoGojsEditorModel.ENUM_COLORS.CERULEAN,
3944
+ }, new go.Binding('stroke', 'color'), new go.Binding('text', 'name'), new go.Binding('visible', 'visible')))));
3945
+ this.myDiagram.nodeTemplateMap.set(AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL, node);
3946
+ }
3924
3947
  makeTextTemplate(size = { w: AtoGojsEditorModel.GRID_SIZE * 5, h: AtoGojsEditorModel.GRID_SIZE * 2 }) {
3925
3948
  const self = this;
3926
3949
  const contextMenu = this.$(go.Adornment, 'Vertical', this.$('ContextMenuButton', this.$(go.TextBlock, 'Option 1'), {
@@ -5244,7 +5267,9 @@ class AtoDefaultGojsEditor {
5244
5267
  {
5245
5268
  zOrder: 2,
5246
5269
  // padding: new go.Margin(0, 0, 0, 200),
5247
- }, new go.Binding('padding', 'padding'), new go.Binding('selectable', 'selectable'), new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify),
5270
+ }, new go.Binding('padding', 'padding'), new go.Binding('selectable', 'selectable'), new go.Binding('location', 'loc', go.Point.parse).makeTwoWay(go.Point.stringify), new go.Binding('visible', '', (data) => {
5271
+ return typeof data?.visible === 'boolean' ? data?.visible : true;
5272
+ }),
5248
5273
  // Header
5249
5274
  this.$(go.Panel, 'Auto', {
5250
5275
  stretch: go.GraphObject.Fill,
@@ -6459,10 +6484,10 @@ class AtoFlowDiagramLibComponent extends AtoDefaultGojsEditor {
6459
6484
  }
6460
6485
  }
6461
6486
  AtoFlowDiagramLibComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoFlowDiagramLibComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
6462
- AtoFlowDiagramLibComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AtoFlowDiagramLibComponent, selector: "ato-flow-diagram-lib", inputs: { data: "data", isLoading: "isLoading" }, viewQueries: [{ propertyName: "myDiagramDivTemp", first: true, predicate: ["myDiagramDivTemp"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"w-100 h-100 gj-flow-diagram-wrapper\" atoLoading [appLoading]=\"data === null || !!isLoading\" style=\"height: 100%\">\n <div class=\"w-100 h-100 d-flex\">\n <!-- <button\n id=\"actionMenuId\"\n class=\"invisible-btn\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n #menuTrigger=\"matMenuTrigger\"\n ></button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let item of actions\" (click)=\"item?.onClick($event)\">\n <div class=\"d-flex flex-gap-2\">\n <div><i class=\"{{ item?.iconClassName }}\"></i></div>\n <div>{{ item?.name }}</div>\n </div>\n </button>\n </mat-menu> -->\n\n <div #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n <div *ngIf=\"initialOptions?.isReadOnly && !data?.nodeDataArray?.length\" class=\"empty-data\">\n <!-- <nz-empty nzNotFoundImage=\"simple\"></nz-empty> -->\n No Data\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: AtoLoadingDirective, selector: "[atoLoading]", inputs: ["appLoading"] }] });
6487
+ AtoFlowDiagramLibComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AtoFlowDiagramLibComponent, selector: "ato-flow-diagram-lib", inputs: { data: "data", isLoading: "isLoading" }, viewQueries: [{ propertyName: "myDiagramDivTemp", first: true, predicate: ["myDiagramDivTemp"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"w-100 h-100 gj-flow-diagram-wrapper\" atoLoading [appLoading]=\"data === null || !!isLoading\">\n <div class=\"w-100 h-100 d-flex\">\n <!-- <button\n id=\"actionMenuId\"\n class=\"invisible-btn\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n #menuTrigger=\"matMenuTrigger\"\n ></button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let item of actions\" (click)=\"item?.onClick($event)\">\n <div class=\"d-flex flex-gap-2\">\n <div><i class=\"{{ item?.iconClassName }}\"></i></div>\n <div>{{ item?.name }}</div>\n </div>\n </button>\n </mat-menu> -->\n\n <div #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n <div *ngIf=\"initialOptions?.isReadOnly && !data?.nodeDataArray?.length\" class=\"empty-data\">\n <!-- <nz-empty nzNotFoundImage=\"simple\"></nz-empty> -->\n No Data\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: AtoLoadingDirective, selector: "[atoLoading]", inputs: ["appLoading"] }] });
6463
6488
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoFlowDiagramLibComponent, decorators: [{
6464
6489
  type: Component,
6465
- args: [{ selector: 'ato-flow-diagram-lib', template: "<div class=\"w-100 h-100 gj-flow-diagram-wrapper\" atoLoading [appLoading]=\"data === null || !!isLoading\" style=\"height: 100%\">\n <div class=\"w-100 h-100 d-flex\">\n <!-- <button\n id=\"actionMenuId\"\n class=\"invisible-btn\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n #menuTrigger=\"matMenuTrigger\"\n ></button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let item of actions\" (click)=\"item?.onClick($event)\">\n <div class=\"d-flex flex-gap-2\">\n <div><i class=\"{{ item?.iconClassName }}\"></i></div>\n <div>{{ item?.name }}</div>\n </div>\n </button>\n </mat-menu> -->\n\n <div #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n <div *ngIf=\"initialOptions?.isReadOnly && !data?.nodeDataArray?.length\" class=\"empty-data\">\n <!-- <nz-empty nzNotFoundImage=\"simple\"></nz-empty> -->\n No Data\n </div>\n </div>\n</div>\n" }]
6490
+ args: [{ selector: 'ato-flow-diagram-lib', template: "<div class=\"w-100 h-100 gj-flow-diagram-wrapper\" atoLoading [appLoading]=\"data === null || !!isLoading\">\n <div class=\"w-100 h-100 d-flex\">\n <!-- <button\n id=\"actionMenuId\"\n class=\"invisible-btn\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n #menuTrigger=\"matMenuTrigger\"\n ></button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let item of actions\" (click)=\"item?.onClick($event)\">\n <div class=\"d-flex flex-gap-2\">\n <div><i class=\"{{ item?.iconClassName }}\"></i></div>\n <div>{{ item?.name }}</div>\n </div>\n </button>\n </mat-menu> -->\n\n <div #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n <div *ngIf=\"initialOptions?.isReadOnly && !data?.nodeDataArray?.length\" class=\"empty-data\">\n <!-- <nz-empty nzNotFoundImage=\"simple\"></nz-empty> -->\n No Data\n </div>\n </div>\n</div>\n" }]
6466
6491
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { myDiagramDivTemp: [{
6467
6492
  type: ViewChild,
6468
6493
  args: ['myDiagramDivTemp']
@@ -7479,7 +7504,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7479
7504
  [AtoGojsEditorModel.ENUM_TYPES.COOLING_TOWER]: {
7480
7505
  nodeDataArray: [
7481
7506
  {
7482
- key: 92,
7507
+ key: 88,
7483
7508
  type: AtoGojsEditorModel.ENUM_TEMPLATES.EMPTY,
7484
7509
  group: 100,
7485
7510
  loc: '0 0',
@@ -7491,7 +7516,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7491
7516
  color: '#a8438d',
7492
7517
  },
7493
7518
  {
7494
- key: 93,
7519
+ key: 89,
7495
7520
  type: AtoGojsEditorModel.ENUM_TEMPLATES.EMPTY,
7496
7521
  group: 100,
7497
7522
  loc: '1000 700',
@@ -7503,7 +7528,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7503
7528
  color: '#a8438d',
7504
7529
  },
7505
7530
  {
7506
- key: 94,
7531
+ key: 90,
7507
7532
  type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7508
7533
  group: 100,
7509
7534
  loc: '30 160',
@@ -7517,9 +7542,10 @@ const ATO_COMPONENTS_GROUP_DATA = {
7517
7542
  isEditable: true,
7518
7543
  maxSizeValue: 140,
7519
7544
  })),
7545
+ visible: true
7520
7546
  },
7521
7547
  {
7522
- key: 95,
7548
+ key: 91,
7523
7549
  type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7524
7550
  group: 100,
7525
7551
  padding: new go__default.Margin(0, 0, 0, 0),
@@ -7535,7 +7561,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7535
7561
  })),
7536
7562
  },
7537
7563
  {
7538
- key: 96,
7564
+ key: 92,
7539
7565
  type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7540
7566
  group: 100,
7541
7567
  padding: new go__default.Margin(0, 0, 0, 0),
@@ -7551,7 +7577,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7551
7577
  })),
7552
7578
  },
7553
7579
  {
7554
- key: 97,
7580
+ key: 93,
7555
7581
  type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7556
7582
  group: 100,
7557
7583
  padding: new go__default.Margin(0, 0, 0, 0),
@@ -7567,7 +7593,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7567
7593
  })),
7568
7594
  },
7569
7595
  {
7570
- key: 98,
7596
+ key: 94,
7571
7597
  type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7572
7598
  group: 100,
7573
7599
  padding: new go__default.Margin(0, 0, 0, 0),
@@ -7583,7 +7609,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7583
7609
  })),
7584
7610
  },
7585
7611
  {
7586
- key: 99,
7612
+ key: 95,
7587
7613
  type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7588
7614
  group: 100,
7589
7615
  padding: new go__default.Margin(0, 0, 0, 0),
@@ -7599,7 +7625,7 @@ const ATO_COMPONENTS_GROUP_DATA = {
7599
7625
  })),
7600
7626
  },
7601
7627
  {
7602
- key: 91,
7628
+ key: 96,
7603
7629
  type: AtoGojsEditorModel.ENUM_TEMPLATES.IMAGE_TEMPLATE,
7604
7630
  source: AtoGojsEditorModel.IMAGE_COOLING_TOWER_PATH,
7605
7631
  group: 100,
@@ -7607,6 +7633,192 @@ const ATO_COMPONENTS_GROUP_DATA = {
7607
7633
  margin: new go__default.Margin(195, 20, 0, 0),
7608
7634
  selectable: false,
7609
7635
  },
7636
+ // {
7637
+ // key: 97,
7638
+ // type: AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL,
7639
+ // group: 100,
7640
+ // loc: '250 25',
7641
+ // name: 'Evaporation Loss',
7642
+ // color: AtoGojsEditorModel.ENUM_COLORS.FLAMINGO,
7643
+ // visible: false,
7644
+ // },
7645
+ // {
7646
+ // key: 98,
7647
+ // type: AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL,
7648
+ // group: 100,
7649
+ // loc: '110 290',
7650
+ // name: 'Makeup Water',
7651
+ // color: AtoGojsEditorModel.ENUM_COLORS.CERULEAN,
7652
+ // visible: false,
7653
+ // },
7654
+ // {
7655
+ // key: 99,
7656
+ // type: AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL,
7657
+ // group: 100,
7658
+ // loc: '580 435',
7659
+ // name: 'Blowdown Water',
7660
+ // color: AtoGojsEditorModel.ENUM_COLORS.CARROT_ORANGE,
7661
+ // visible: false,
7662
+ // },
7663
+ { key: 100, type: AtoGojsEditorModel.ENUM_TEMPLATES.COOLING_TOWER, isGroup: true, name: 'Group' },
7664
+ ],
7665
+ linkDataArray: [],
7666
+ },
7667
+ [AtoGojsEditorModel.ENUM_TYPES.COOLING_TOWER + '_RESPONSIVE']: {
7668
+ nodeDataArray: [
7669
+ {
7670
+ key: 88,
7671
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.EMPTY,
7672
+ group: 100,
7673
+ loc: '0 0',
7674
+ data: {
7675
+ quantity: 2222,
7676
+ unit: 'm³',
7677
+ },
7678
+ name: 'top-left-marker',
7679
+ color: '#a8438d',
7680
+ },
7681
+ {
7682
+ key: 89,
7683
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.EMPTY,
7684
+ group: 100,
7685
+ loc: '700 300',
7686
+ data: {
7687
+ quantity: 3333,
7688
+ unit: 'm³',
7689
+ },
7690
+ name: 'bottom-right-marker',
7691
+ color: '#a8438d',
7692
+ },
7693
+ {
7694
+ key: 90,
7695
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7696
+ group: 100,
7697
+ padding: new go__default.Margin(0, 0, 0, 0),
7698
+ ...DATA_WATER_SYSTEMS[WATER_SYSTEMS_NAME.COOLING_TOWER_ANALYSIS],
7699
+ minSizeValue: new go__default.Size(100, NaN),
7700
+ selectable: false,
7701
+ dataTable: ASSET_CATEGORY_PARAMS[WATER_SYSTEMS_NAME.COOLING_TOWER_ANALYSIS].map((e) => ({
7702
+ ...e,
7703
+ value: '',
7704
+ isEditable: true,
7705
+ maxSizeValue: 130,
7706
+ })),
7707
+ visible: false,
7708
+ },
7709
+ {
7710
+ key: 91,
7711
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7712
+ group: 100,
7713
+ padding: new go__default.Margin(0, 0, 0, 0),
7714
+ ...DATA_WATER_SYSTEMS[WATER_SYSTEMS_NAME.COOLING_WATER_CHEMISTRY],
7715
+ minSizeValue: new go__default.Size(100, NaN),
7716
+ selectable: false,
7717
+ dataTable: ASSET_CATEGORY_PARAMS[WATER_SYSTEMS_NAME.COOLING_WATER_CHEMISTRY].map((e) => ({
7718
+ ...e,
7719
+ value: '',
7720
+ isEditable: true,
7721
+ maxSizeValue: 130,
7722
+ })),
7723
+ visible: false,
7724
+ },
7725
+ {
7726
+ key: 92,
7727
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7728
+ group: 100,
7729
+ padding: new go__default.Margin(0, 0, 0, 0),
7730
+ ...DATA_WATER_SYSTEMS[WATER_SYSTEMS_NAME.EVAPORATION_LOSS],
7731
+ minSizeValue: new go__default.Size(100, NaN),
7732
+ selectable: false,
7733
+ dataTable: ASSET_CATEGORY_PARAMS[WATER_SYSTEMS_NAME.EVAPORATION_LOSS].map((e) => ({
7734
+ ...e,
7735
+ value: '',
7736
+ isEditable: true,
7737
+ maxSizeValue: 140,
7738
+ })),
7739
+ visible: false,
7740
+ },
7741
+ {
7742
+ key: 93,
7743
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7744
+ group: 100,
7745
+ padding: new go__default.Margin(0, 0, 0, 0),
7746
+ ...DATA_WATER_SYSTEMS[WATER_SYSTEMS_NAME.MAKEUP_WATER],
7747
+ minSizeValue: new go__default.Size(100, NaN),
7748
+ selectable: false,
7749
+ dataTable: ASSET_CATEGORY_PARAMS[WATER_SYSTEMS_NAME.MAKEUP_WATER].map((e) => ({
7750
+ ...e,
7751
+ value: '',
7752
+ isEditable: true,
7753
+ maxSizeValue: 120,
7754
+ })),
7755
+ visible: false,
7756
+ },
7757
+ {
7758
+ key: 94,
7759
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7760
+ group: 100,
7761
+ padding: new go__default.Margin(0, 0, 0, 0),
7762
+ ...DATA_WATER_SYSTEMS[WATER_SYSTEMS_NAME.WARMER_WATER],
7763
+ minSizeValue: new go__default.Size(100, NaN),
7764
+ selectable: false,
7765
+ dataTable: ASSET_CATEGORY_PARAMS[WATER_SYSTEMS_NAME.WARMER_WATER].map((e) => ({
7766
+ ...e,
7767
+ value: '',
7768
+ isEditable: true,
7769
+ maxSizeValue: 120,
7770
+ })),
7771
+ visible: false,
7772
+ },
7773
+ {
7774
+ key: 95,
7775
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE,
7776
+ group: 100,
7777
+ padding: new go__default.Margin(0, 0, 0, 0),
7778
+ ...DATA_WATER_SYSTEMS[WATER_SYSTEMS_NAME.BLOWDOWN_WATER],
7779
+ minSizeValue: new go__default.Size(100, NaN),
7780
+ selectable: false,
7781
+ dataTable: ASSET_CATEGORY_PARAMS[WATER_SYSTEMS_NAME.BLOWDOWN_WATER].map((e) => ({
7782
+ ...e,
7783
+ value: '',
7784
+ isEditable: true,
7785
+ maxSizeValue: 120,
7786
+ })),
7787
+ visible: false,
7788
+ },
7789
+ {
7790
+ key: 96,
7791
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.IMAGE_TEMPLATE,
7792
+ source: AtoGojsEditorModel.IMAGE_COOLING_TOWER_PATH,
7793
+ group: 100,
7794
+ loc: '0 0',
7795
+ margin: new go__default.Margin(20, 20, 0, 0),
7796
+ selectable: false,
7797
+ },
7798
+ {
7799
+ key: 97,
7800
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL,
7801
+ group: 100,
7802
+ loc: '250 25',
7803
+ name: 'Evaporation Loss',
7804
+ color: AtoGojsEditorModel.ENUM_COLORS.FLAMINGO,
7805
+ },
7806
+ {
7807
+ key: 98,
7808
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL,
7809
+ group: 100,
7810
+ loc: '110 290',
7811
+ name: 'Makeup Water',
7812
+ color: AtoGojsEditorModel.ENUM_COLORS.CERULEAN,
7813
+ },
7814
+ {
7815
+ key: 99,
7816
+ type: AtoGojsEditorModel.ENUM_TEMPLATES.TEXT_LABEL,
7817
+ group: 100,
7818
+ loc: '580 435',
7819
+ name: 'Blowdown Water',
7820
+ color: AtoGojsEditorModel.ENUM_COLORS.CARROT_ORANGE,
7821
+ },
7610
7822
  { key: 100, type: AtoGojsEditorModel.ENUM_TEMPLATES.COOLING_TOWER, isGroup: true, name: 'Group' },
7611
7823
  ],
7612
7824
  linkDataArray: [],
@@ -7763,6 +7975,58 @@ const ATO_COMPONENTS_GROUP_DATA = {
7763
7975
  },
7764
7976
  };
7765
7977
 
7978
+ class AtoNgVarDirective {
7979
+ set ngVar(context) {
7980
+ this.context.$implicit = this.context.ngVar = context;
7981
+ if (!this.hasView) {
7982
+ this.vcRef.createEmbeddedView(this.templateRef, this.context);
7983
+ this.hasView = true;
7984
+ }
7985
+ }
7986
+ constructor(templateRef, vcRef) {
7987
+ this.templateRef = templateRef;
7988
+ this.vcRef = vcRef;
7989
+ this.context = {
7990
+ $implicit: null,
7991
+ ngVar: null,
7992
+ };
7993
+ this.hasView = false;
7994
+ }
7995
+ }
7996
+ AtoNgVarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoNgVarDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
7997
+ AtoNgVarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: AtoNgVarDirective, selector: "[ngVar]", inputs: { ngVar: "ngVar" }, ngImport: i0 });
7998
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoNgVarDirective, decorators: [{
7999
+ type: Directive,
8000
+ args: [{
8001
+ selector: '[ngVar]',
8002
+ }]
8003
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngVar: [{
8004
+ type: Input
8005
+ }] } });
8006
+
8007
+ class AtoAssetParamsViewComponent {
8008
+ constructor() {
8009
+ this.isEditView = false;
8010
+ this.data = [];
8011
+ this.clickParamTableRow = new EventEmitter();
8012
+ }
8013
+ onClickRowParam(itemTable) {
8014
+ this.clickParamTableRow.emit(itemTable);
8015
+ }
8016
+ }
8017
+ AtoAssetParamsViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoAssetParamsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8018
+ AtoAssetParamsViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AtoAssetParamsViewComponent, selector: "ato-asset-params-view", inputs: { isEditView: "isEditView", data: "data" }, outputs: { clickParamTableRow: "clickParamTableRow" }, ngImport: i0, template: "<div class=\"d-flex flex-column flex-gap-2\">\n <div class=\"\" *ngFor=\"let tableParam of data\">\n <ng-template\n [ngTemplateOutlet]=\"tableParamTemplate\"\n [ngTemplateOutletContext]=\"{\n data: tableParam\n }\"\n ></ng-template>\n </div>\n</div>\n\n<ng-template #tableParamTemplate let-data=\"data\">\n <div\n class=\"d-flex flex-column asset-param-item w-100\"\n *ngVar=\"{ isCollapsed: true } as vars\"\n [style.backgroundColor]=\"data?.color\"\n >\n <div\n class=\"d-flex align-items-center justify-content-between py-1 pl-1 pr-2 cursor-pointer\"\n (click)=\"vars.isCollapsed = !vars.isCollapsed\"\n >\n <div class=\"font-size-14px flex-grow-1 text-truncate color-white\">{{ data?.title }}</div>\n <i\n class=\"fa-solid font-size-14px color-white {{ vars.isCollapsed ? 'fa-angle-right' : 'fa-angle-down' }}\"\n ></i>\n </div>\n <div class=\"px-1 pb-1\" *ngIf=\"!vars.isCollapsed\">\n <div class=\"table-asset-param-wrapper\" [style.backgroundColor]=\"data?.bgColor\">\n <table>\n <tbody>\n <tr\n *ngFor=\"let itemTable of data?.dataTable\"\n (click)=\"onClickRowParam(itemTable)\"\n class=\"cursor-pointer\"\n >\n <td class=\"font-size-13px\" [style.borderColor]=\"data?.borderTable\">\n {{ itemTable?.name }}\n </td>\n <td class=\"font-size-13px\" [style.borderColor]=\"data?.borderTable\">\n <div class=\"d-flex align-items-center\">\n <div\n class=\"mr-auto font-size-13px text-truncate flex-grow-1\"\n [style.color]=\"itemTable?.color\"\n >\n {{ itemTable?.value }}\n </div>\n <i *ngIf=\"isEditView\" class=\"fal fa-edit font-size-14px color-night-rider\"></i>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".asset-param-item{border-radius:5px}.asset-param-item .table-asset-param-wrapper{border-radius:5px;background-color:#f0f8ff}.asset-param-item .table-asset-param-wrapper table{border-collapse:collapse;width:100%}.asset-param-item .table-asset-param-wrapper table tbody tr td{border:1px solid red;height:30px;padding:4px}.color-white{color:#fff}.flex-gap-2{gap:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AtoNgVarDirective, selector: "[ngVar]", inputs: ["ngVar"] }] });
8019
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoAssetParamsViewComponent, decorators: [{
8020
+ type: Component,
8021
+ args: [{ selector: 'ato-asset-params-view', template: "<div class=\"d-flex flex-column flex-gap-2\">\n <div class=\"\" *ngFor=\"let tableParam of data\">\n <ng-template\n [ngTemplateOutlet]=\"tableParamTemplate\"\n [ngTemplateOutletContext]=\"{\n data: tableParam\n }\"\n ></ng-template>\n </div>\n</div>\n\n<ng-template #tableParamTemplate let-data=\"data\">\n <div\n class=\"d-flex flex-column asset-param-item w-100\"\n *ngVar=\"{ isCollapsed: true } as vars\"\n [style.backgroundColor]=\"data?.color\"\n >\n <div\n class=\"d-flex align-items-center justify-content-between py-1 pl-1 pr-2 cursor-pointer\"\n (click)=\"vars.isCollapsed = !vars.isCollapsed\"\n >\n <div class=\"font-size-14px flex-grow-1 text-truncate color-white\">{{ data?.title }}</div>\n <i\n class=\"fa-solid font-size-14px color-white {{ vars.isCollapsed ? 'fa-angle-right' : 'fa-angle-down' }}\"\n ></i>\n </div>\n <div class=\"px-1 pb-1\" *ngIf=\"!vars.isCollapsed\">\n <div class=\"table-asset-param-wrapper\" [style.backgroundColor]=\"data?.bgColor\">\n <table>\n <tbody>\n <tr\n *ngFor=\"let itemTable of data?.dataTable\"\n (click)=\"onClickRowParam(itemTable)\"\n class=\"cursor-pointer\"\n >\n <td class=\"font-size-13px\" [style.borderColor]=\"data?.borderTable\">\n {{ itemTable?.name }}\n </td>\n <td class=\"font-size-13px\" [style.borderColor]=\"data?.borderTable\">\n <div class=\"d-flex align-items-center\">\n <div\n class=\"mr-auto font-size-13px text-truncate flex-grow-1\"\n [style.color]=\"itemTable?.color\"\n >\n {{ itemTable?.value }}\n </div>\n <i *ngIf=\"isEditView\" class=\"fal fa-edit font-size-14px color-night-rider\"></i>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".asset-param-item{border-radius:5px}.asset-param-item .table-asset-param-wrapper{border-radius:5px;background-color:#f0f8ff}.asset-param-item .table-asset-param-wrapper table{border-collapse:collapse;width:100%}.asset-param-item .table-asset-param-wrapper table tbody tr td{border:1px solid red;height:30px;padding:4px}.color-white{color:#fff}.flex-gap-2{gap:.5rem}\n"] }]
8022
+ }], propDecorators: { isEditView: [{
8023
+ type: Input
8024
+ }], data: [{
8025
+ type: Input
8026
+ }], clickParamTableRow: [{
8027
+ type: Output
8028
+ }] } });
8029
+
7766
8030
  class AssetFlowComponent {
7767
8031
  constructor() {
7768
8032
  this.onClickParamOfTableEvent = new EventEmitter();
@@ -7775,16 +8039,55 @@ class AssetFlowComponent {
7775
8039
  // isReadOnly: true,
7776
8040
  };
7777
8041
  this.flowData = {};
8042
+ this.isResponsiveView = false;
8043
+ }
8044
+ onResize(event) {
8045
+ // Now only Support Cooling Tower Responsive
8046
+ if (this.timeoutResizeWindow) {
8047
+ clearTimeout(this.timeoutResizeWindow);
8048
+ }
8049
+ this.timeoutResizeWindow = setTimeout(() => {
8050
+ this.checkResponsiveView();
8051
+ this.updateLocationReponsive();
8052
+ }, 1000);
8053
+ }
8054
+ checkResponsiveView() {
8055
+ if (this?.systemType ===
8056
+ AtoGojsEditorModel.ENUM_TYPES.COOLING_TOWER) {
8057
+ this.isResponsiveView = window.innerWidth < 1024;
8058
+ }
8059
+ else {
8060
+ this.isResponsiveView = false;
8061
+ }
8062
+ }
8063
+ updateLocationReponsive() {
8064
+ if (!this.flowData?.nodeDataArray) {
8065
+ this.setFlowData(_.cloneDeep(ATO_COMPONENTS_GROUP_DATA)[this.systemType + (this.isResponsiveView ? '_RESPONSIVE' : '')]);
8066
+ this.dataTableAssetParams = this.flowData?.nodeDataArray?.filter((e) => e?.type === AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE);
8067
+ return;
8068
+ }
8069
+ _.forEach(_.cloneDeep(ATO_COMPONENTS_GROUP_DATA)[this.systemType + (this.isResponsiveView ? '_RESPONSIVE' : '')]?.nodeDataArray, (node) => {
8070
+ const itemFind = this.flowData?.nodeDataArray?.find((x) => node?.key === x?.key);
8071
+ if (itemFind) {
8072
+ itemFind.visible = node?.visible === false ? false : true;
8073
+ itemFind.loc = node?.loc;
8074
+ itemFind.margin = node?.margin;
8075
+ itemFind.padding = node?.padding;
8076
+ }
8077
+ });
8078
+ this.dataTableAssetParams = this.flowData?.nodeDataArray?.filter((e) => e?.type === AtoGojsEditorModel.ENUM_TEMPLATES.PARAM_TABLE);
8079
+ this.setFlowData(_.cloneDeep(this.flowData));
7778
8080
  }
7779
8081
  ngOnInit() {
7780
- this.flowData = this.getDefaultFlowData();
8082
+ this.checkResponsiveView();
8083
+ this.updateLocationReponsive();
7781
8084
  }
7782
8085
  onClickParamOfTable($event) {
7783
8086
  this.onClickParamOfTableEvent.emit($event);
7784
8087
  }
7785
8088
  getDefaultFlowData() {
7786
8089
  const flowData = {
7787
- ...ATO_COMPONENTS_GROUP_DATA[this.systemType],
8090
+ ..._.cloneDeep(ATO_COMPONENTS_GROUP_DATA)[this.systemType],
7788
8091
  linkFromPortIdProperty: 'fromPort',
7789
8092
  linkToPortIdProperty: 'toPort',
7790
8093
  };
@@ -7801,10 +8104,10 @@ class AssetFlowComponent {
7801
8104
  }
7802
8105
  }
7803
8106
  AssetFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AssetFlowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7804
- AssetFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AssetFlowComponent, selector: "ato-asset-flow", inputs: { selectedComponent: "selectedComponent", systemType: "systemType", isUseBase64: "isUseBase64", flowData: "flowData" }, outputs: { onClickParamOfTableEvent: "onClickParamOfTableEvent" }, viewQueries: [{ propertyName: "gjFlowDiagramTemp", first: true, predicate: AtoFlowDiagramLibComponent, descendants: true }], ngImport: i0, template: "<div class=\"h-100\" atoLoading [appLoading]=\"flowData === null\">\n <ato-flow-diagram-lib\n *ngIf=\"flowData !== null\"\n #gjFlowDiagramTemp\n [data]=\"flowData\"\n [initialOptions]=\"options\"\n (onClikParamOfTable)=\"onClickParamOfTable($event)\"\n ></ato-flow-diagram-lib>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AtoFlowDiagramLibComponent, selector: "ato-flow-diagram-lib", inputs: ["data", "isLoading"] }, { kind: "directive", type: AtoLoadingDirective, selector: "[atoLoading]", inputs: ["appLoading"] }] });
8107
+ AssetFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AssetFlowComponent, selector: "ato-asset-flow", inputs: { selectedComponent: "selectedComponent", systemType: "systemType", isUseBase64: "isUseBase64", flowData: "flowData", isResponsiveView: "isResponsiveView", getFlowDataCallBack: "getFlowDataCallBack" }, outputs: { onClickParamOfTableEvent: "onClickParamOfTableEvent" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "gjFlowDiagramTemp", first: true, predicate: AtoFlowDiagramLibComponent, descendants: true }], ngImport: i0, template: "<div class=\"h-100 d-flex flex-column flex-gap-3 flex-grow-1 overflow-auto px-3 pb-3\">\n <div class=\"h-100 d-flex flex-column\" atoLoading [appLoading]=\"flowData === null\">\n <ato-flow-diagram-lib\n *ngIf=\"flowData !== null\"\n #gjFlowDiagramTemp\n [data]=\"flowData\"\n [initialOptions]=\"options\"\n (onClikParamOfTable)=\"onClickParamOfTable($event)\"\n [class]=\"!!isResponsiveView ? 'diagram-responsive-view' : 'flex-grow-1'\"\n ></ato-flow-diagram-lib>\n <div class=\"mt-2\" *ngIf=\"isResponsiveView\">\n <ato-asset-params-view\n [data]=\"dataTableAssetParams\"\n [isEditView]=\"true\"\n (clickParamTableRow)=\"onClickParamOfTable($event)\"\n ></ato-asset-params-view>\n </div>\n </div>\n</div>\n\n", styles: [".diagram-responsive-view{height:30vh}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AtoFlowDiagramLibComponent, selector: "ato-flow-diagram-lib", inputs: ["data", "isLoading"] }, { kind: "directive", type: AtoLoadingDirective, selector: "[atoLoading]", inputs: ["appLoading"] }, { kind: "component", type: AtoAssetParamsViewComponent, selector: "ato-asset-params-view", inputs: ["isEditView", "data"], outputs: ["clickParamTableRow"] }] });
7805
8108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AssetFlowComponent, decorators: [{
7806
8109
  type: Component,
7807
- args: [{ selector: 'ato-asset-flow', template: "<div class=\"h-100\" atoLoading [appLoading]=\"flowData === null\">\n <ato-flow-diagram-lib\n *ngIf=\"flowData !== null\"\n #gjFlowDiagramTemp\n [data]=\"flowData\"\n [initialOptions]=\"options\"\n (onClikParamOfTable)=\"onClickParamOfTable($event)\"\n ></ato-flow-diagram-lib>\n</div>\n" }]
8110
+ args: [{ selector: 'ato-asset-flow', template: "<div class=\"h-100 d-flex flex-column flex-gap-3 flex-grow-1 overflow-auto px-3 pb-3\">\n <div class=\"h-100 d-flex flex-column\" atoLoading [appLoading]=\"flowData === null\">\n <ato-flow-diagram-lib\n *ngIf=\"flowData !== null\"\n #gjFlowDiagramTemp\n [data]=\"flowData\"\n [initialOptions]=\"options\"\n (onClikParamOfTable)=\"onClickParamOfTable($event)\"\n [class]=\"!!isResponsiveView ? 'diagram-responsive-view' : 'flex-grow-1'\"\n ></ato-flow-diagram-lib>\n <div class=\"mt-2\" *ngIf=\"isResponsiveView\">\n <ato-asset-params-view\n [data]=\"dataTableAssetParams\"\n [isEditView]=\"true\"\n (clickParamTableRow)=\"onClickParamOfTable($event)\"\n ></ato-asset-params-view>\n </div>\n </div>\n</div>\n\n", styles: [".diagram-responsive-view{height:30vh}\n"] }]
7808
8111
  }], propDecorators: { gjFlowDiagramTemp: [{
7809
8112
  type: ViewChild,
7810
8113
  args: [AtoFlowDiagramLibComponent]
@@ -7818,6 +8121,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
7818
8121
  type: Input
7819
8122
  }], flowData: [{
7820
8123
  type: Input
8124
+ }], isResponsiveView: [{
8125
+ type: Input
8126
+ }], getFlowDataCallBack: [{
8127
+ type: Input
8128
+ }], onResize: [{
8129
+ type: HostListener,
8130
+ args: ['window:resize', ['$event']]
7821
8131
  }] } });
7822
8132
 
7823
8133
  class AtoWaterLibModule {
@@ -7826,11 +8136,21 @@ AtoWaterLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versio
7826
8136
  AtoWaterLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, declarations: [AtoWaterLibComponent,
7827
8137
  AtoFlowDiagramLibComponent,
7828
8138
  AssetFlowComponent,
7829
- AtoLoadingDirective], imports: [CommonModule], exports: [AtoWaterLibComponent,
8139
+ AtoLoadingDirective,
8140
+ AtoAssetParamsViewComponent,
8141
+ AtoNgVarDirective], imports: [CommonModule,
8142
+ BrowserModule,
8143
+ ReactiveFormsModule,
8144
+ FormsModule], exports: [AtoWaterLibComponent,
7830
8145
  AtoFlowDiagramLibComponent,
7831
8146
  AssetFlowComponent,
7832
- AtoLoadingDirective] });
7833
- AtoWaterLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, imports: [CommonModule] });
8147
+ AtoLoadingDirective,
8148
+ AtoAssetParamsViewComponent,
8149
+ AtoNgVarDirective] });
8150
+ AtoWaterLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, imports: [CommonModule,
8151
+ BrowserModule,
8152
+ ReactiveFormsModule,
8153
+ FormsModule] });
7834
8154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, decorators: [{
7835
8155
  type: NgModule,
7836
8156
  args: [{
@@ -7839,15 +8159,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
7839
8159
  AtoFlowDiagramLibComponent,
7840
8160
  AssetFlowComponent,
7841
8161
  AtoLoadingDirective,
8162
+ AtoAssetParamsViewComponent,
8163
+ AtoNgVarDirective,
7842
8164
  ],
7843
8165
  imports: [
7844
- CommonModule
8166
+ CommonModule,
8167
+ BrowserModule,
8168
+ ReactiveFormsModule,
8169
+ FormsModule,
7845
8170
  ],
7846
8171
  exports: [
7847
8172
  AtoWaterLibComponent,
7848
8173
  AtoFlowDiagramLibComponent,
7849
8174
  AssetFlowComponent,
7850
- AtoLoadingDirective
8175
+ AtoLoadingDirective,
8176
+ AtoAssetParamsViewComponent,
8177
+ AtoNgVarDirective
7851
8178
  ]
7852
8179
  }]
7853
8180
  }] });
@@ -7861,5 +8188,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
7861
8188
  * Generated bundle index. Do not edit.
7862
8189
  */
7863
8190
 
7864
- export { AssetFlowComponent, AtoFlowDiagramLibComponent, AtoLoadingDirective, AtoWaterLibComponent, AtoWaterLibModule, AtoWaterLibService };
8191
+ export { AssetFlowComponent, AtoAssetParamsViewComponent, AtoFlowDiagramLibComponent, AtoLoadingDirective, AtoNgVarDirective, AtoWaterLibComponent, AtoWaterLibModule, AtoWaterLibService };
7865
8192
  //# sourceMappingURL=ato-water-lib.mjs.map