@huntsman-cancer-institute/cod 16.0.1 → 16.1.0

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.
@@ -793,7 +793,7 @@ class AttributeService {
793
793
  //Shouldn't be a need to change dirty or notify attributes
794
794
  }
795
795
  saveGridRowAttributeValues(idGroupAttribute, groupAttributeRowId) {
796
- let rowValues = this.updatedAttributeValues.filter((av) => av.groupAttributeRowId === groupAttributeRowId);
796
+ let rowValues = this.updatedAttributeValues.filter((av) => av.groupAttributeRowId === groupAttributeRowId && av.idGroupAttribute === idGroupAttribute);
797
797
  for (let j = 0; j < rowValues.length; j++) {
798
798
  //set the idAttributeValueSet if necessary
799
799
  if (!rowValues[j].idAttributeValueSet) {
@@ -807,7 +807,7 @@ class AttributeService {
807
807
  //For multi values that were sliced (de-selected) we're going to find them and null out the value, instead of removing.
808
808
  //That means they actaully need to be added to the rowValues
809
809
  //Removed multi values within an existing row
810
- let removedValues = this.slicedAttributeValues.filter((av) => av.groupAttributeRowId === groupAttributeRowId);
810
+ let removedValues = this.slicedAttributeValues.filter((av) => av.groupAttributeRowId === groupAttributeRowId && av.idGroupAttribute === idGroupAttribute);
811
811
  for (let i = 0; i < removedValues.length; i++) {
812
812
  removedValues[i].valueAttributeChoice = undefined;
813
813
  removedValues[i].valueIdDictionary = undefined;
@@ -835,8 +835,8 @@ class AttributeService {
835
835
  avs.attributeValues.push(attributeValueGridRow.attributeValues[i]);
836
836
  }
837
837
  //Remove the updated and sliced values for the grid row, now (these are the old ones with the negative rowid)
838
- this.slicedAttributeValues = this.slicedAttributeValues.filter((av) => av.groupAttributeRowId !== groupAttributeRowId);
839
- this.updatedAttributeValues = this.updatedAttributeValues.filter((av) => av.groupAttributeRowId !== groupAttributeRowId);
838
+ this.slicedAttributeValues = this.slicedAttributeValues.filter((av) => (av.groupAttributeRowId !== groupAttributeRowId || av.idGroupAttribute !== idGroupAttribute));
839
+ this.updatedAttributeValues = this.updatedAttributeValues.filter((av) => (av.groupAttributeRowId !== groupAttributeRowId || av.idGroupAttribute !== idGroupAttribute));
840
840
  this.attributeValueSetSubject.next(avs);
841
841
  this.gridRowSaved.next(attributeValueGridRow);
842
842
  this.loadingSubject.next(false);
@@ -851,20 +851,20 @@ class AttributeService {
851
851
  //Add the grid row to the original attribute values
852
852
  let avs = this.attributeValueSetSubject.getValue();
853
853
  //Remove all old values for row
854
- let index = avs.attributeValues.findIndex((av) => av.groupAttributeRowId === groupAttributeRowId);
854
+ let index = avs.attributeValues.findIndex((av) => (av.groupAttributeRowId === groupAttributeRowId && av.idGroupAttribute === idGroupAttribute));
855
855
  while (index > 0) {
856
856
  //Remove value
857
857
  avs.attributeValues.splice(index, 1);
858
858
  //Find the next one
859
- index = avs.attributeValues.findIndex((av) => av.groupAttributeRowId === groupAttributeRowId);
859
+ index = avs.attributeValues.findIndex((av) => (av.groupAttributeRowId === groupAttributeRowId && av.idGroupAttribute === idGroupAttribute));
860
860
  }
861
861
  //Add all the current values
862
862
  for (let i = 0; i < attributeValueGridRow.attributeValues.length; i++) {
863
863
  avs.attributeValues.push(attributeValueGridRow.attributeValues[i]);
864
864
  }
865
865
  //Remove the sliced and updated values for the grid row
866
- this.slicedAttributeValues = this.slicedAttributeValues.filter((av) => av.groupAttributeRowId !== groupAttributeRowId);
867
- this.updatedAttributeValues = this.updatedAttributeValues.filter((av) => av.groupAttributeRowId !== groupAttributeRowId);
866
+ this.slicedAttributeValues = this.slicedAttributeValues.filter((av) => (av.groupAttributeRowId !== groupAttributeRowId || av.idGroupAttribute !== idGroupAttribute));
867
+ this.updatedAttributeValues = this.updatedAttributeValues.filter((av) => (av.groupAttributeRowId !== groupAttributeRowId || av.idGroupAttribute !== idGroupAttribute));
868
868
  this.attributeValueSetSubject.next(avs);
869
869
  this.gridRowSaved.next(attributeValueGridRow);
870
870
  this.loadingSubject.next(false);
@@ -891,7 +891,8 @@ class AttributeService {
891
891
  this.http.request('delete', url, { body: avgr, params: queryParams }).subscribe(() => {
892
892
  //Remove the grid row from the original attribute values
893
893
  let avs = this.attributeValueSetSubject.getValue();
894
- avs.attributeValues = avs.attributeValues.filter((av) => av.groupAttributeRowId !== groupAttributeRowId);
894
+ //Filter to only attributes to KEEP - (i.e. not the same grid or not the row being deleted)
895
+ avs.attributeValues = avs.attributeValues.filter((av) => (av.idGroupAttribute !== idGroupAttribute || av.groupAttributeRowId !== groupAttributeRowId));
895
896
  this.attributeValueSetSubject.next(avs);
896
897
  this.gridRowDeleted.next(avgr);
897
898
  this.loadingSubject.next(false);
@@ -1842,11 +1843,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1842
1843
  }] } });
1843
1844
 
1844
1845
  /**
1845
- * This component is specifically designed to exist in a modal for editing. This is different from the flex attribute
1846
- * because components such as the grid need extra configuration for editing.
1846
+ * This component is specifically designed to exist in a modal for editing.
1847
+ * This is different from the flex attribute because components such as the grid need extra configuration for editing.
1847
1848
  */
1848
1849
  class AttributeEditComponent extends AttributeBase {
1849
- //dictionaryEndpoint = this.attributeService.dictionaryEndpoint;
1850
+ // dictionaryEndpoint = this.attributeService.dictionaryEndpoint;
1850
1851
  constructor(attributeService, elementRef, renderer, modalService) {
1851
1852
  super(attributeService, elementRef, renderer, modalService);
1852
1853
  }
@@ -1855,650 +1856,662 @@ class AttributeEditComponent extends AttributeBase {
1855
1856
  }
1856
1857
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeEditComponent, deps: [{ token: AttributeService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2$1.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
1857
1858
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeEditComponent, selector: "hci-attribute-edit", usesInheritance: true, ngImport: i0, template: `
1858
- <!-- String -->
1859
- <ng-container *ngIf="attribute.codeAttributeDataType === 'S'">
1860
- <div #attributeRef
1861
- class="d-flex flex-row">
1862
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1863
- {{attribute.displayName}}
1864
- </div>
1865
- <div class="d-flex col-md-6">
1866
- <input #inputRef
1867
- type="text"
1868
- [ngModel]="attributeValues[0].valueString"
1869
- (ngModelChange)="valueStringChange($event)"
1870
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
1871
- />
1859
+ <!-- String -->
1860
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'S'">
1861
+ <div #attributeRef
1862
+ class="d-flex flex-row">
1863
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1864
+ {{attribute.displayName}}
1865
+ </div>
1866
+ <div class="d-flex col-md-6">
1867
+ <input #inputRef
1868
+ type="text"
1869
+ [ngModel]="attributeValues[0].valueString"
1870
+ (ngModelChange)="valueStringChange($event)"
1871
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
1872
+ />
1873
+ </div>
1872
1874
  </div>
1873
- </div>
1874
- </ng-container>
1875
-
1876
- <!-- Text -->
1877
- <ng-container *ngIf="attribute.codeAttributeDataType === 'TXT'">
1878
- <div #attributeRef
1879
- class="d-flex flex-row">
1880
- <div class="d-flex col-md-6">
1881
- {{attribute.displayName}}
1882
- </div>
1883
- <div class="d-flex col-md-6">
1884
- <input #inputRef
1885
- type="text"
1886
- spellcheck="spellcheck"
1887
- lang="en"
1888
- [ngModel]="attributeValues[0].valueLongText.textData"
1889
- (ngModelChange)="valueTextChange($event)"
1890
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
1891
- />
1892
- </div>
1893
- </div>
1894
- </ng-container>
1895
-
1896
- <!-- Numeric -->
1897
- <ng-container *ngIf="attribute.codeAttributeDataType === 'N'">
1898
- <div #attributeRef
1899
- class="d-flex flex-row">
1900
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1901
- {{attribute.displayName}}
1902
- </div>
1903
- <div class="d-flex col-md-6">
1904
- <input #inputRef
1905
- type="number"
1906
- [ngModel]="attributeValues[0].valueNumeric"
1907
- (ngModelChange)="valueNumericChange($event)"/>
1908
- </div>
1909
- </div>
1910
- </ng-container>
1911
-
1912
- <!-- Integer -->
1913
- <ng-container *ngIf="attribute.codeAttributeDataType === 'I'">
1914
- <div #attributeRef
1915
- class="d-flex flex-row">
1916
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1917
- {{attribute.displayName}}
1918
- </div>
1919
- <div class="d-flex col-md-6">
1920
- <input #inputRef
1921
- type="number"
1922
- [ngModel]="attributeValues[0].valueInteger"
1923
- (ngModelChange)="valueIntegerChange($event)" />
1924
- </div>
1925
- </div>
1926
- </ng-container>
1927
-
1928
- <!-- Date -->
1929
- <ng-container *ngIf="attribute.codeAttributeDataType === 'D'">
1930
- <div #attributeRef
1931
- class="d-flex flex-row">
1932
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1933
- {{attribute.displayName}}
1934
- </div>
1935
- <div class="d-flex col-md-6">
1936
- <input #inputRef
1937
- matInput
1938
- name="valueDate"
1939
- [(ngModel)]="attributeValues[0].valueDate"
1940
- (ngModelChange)="valueDateChange($event)"
1941
- [matDatepicker]="valueDate"
1942
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
1943
- >
1944
- <mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
1945
- <mat-datepicker #valueDate></mat-datepicker>
1946
- </div>
1947
- </div>
1948
- </ng-container>
1875
+ </ng-container>
1949
1876
 
1950
- <!-- Date Time -->
1951
- <ng-container *ngIf="attribute.codeAttributeDataType === 'DT'">
1952
- <div #attributeRef
1953
- class="d-flex flex-row">
1954
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1955
- {{attribute.displayName}}
1956
- </div>
1957
- <div class="d-flex col-md-6">
1958
- <input #inputRef
1959
- matInput
1960
- name="valueDateTime"
1961
- [(ngModel)]="attributeValues[0].date"
1962
- (ngModelChange)="valueDateChange($event)"
1963
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
1964
- [ngxMatDatetimePicker]="dtpicker">
1965
- <mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
1966
- <ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
1967
- </div>
1968
- </div>
1969
- </ng-container>
1877
+ <!-- Text -->
1878
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'TXT'">
1879
+ <div #attributeRef
1880
+ class="d-flex flex-row">
1881
+ <div class="d-flex col-md-6">
1882
+ {{attribute.displayName}}
1883
+ </div>
1884
+ <div class="d-flex col-md-6">
1970
1885
 
1971
- <!-- Checkbox -->
1972
- <ng-container *ngIf="attribute.codeAttributeDataType === 'CB'">
1973
- <div #attributeRef
1974
- class="d-flex flex-row">
1975
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1976
- {{attribute.displayName}}
1977
- </div>
1978
- <div class="d-flex col-md-6">
1979
- <input #inputRef
1980
- type="checkbox"
1981
- [checked]="attributeValues[0].valueString === 'Y'"
1982
- (change)="valueCheckboxChange($event)"
1983
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
1984
- class="form-control" />
1985
- </div>
1986
- </div>
1987
- </ng-container>
1886
+ <textarea
1887
+ #inputRef
1888
+ type="text"
1889
+ spellcheck="spellcheck"
1890
+ lang="en"
1891
+ [ngModel]="attributeValues[0].valueLongText.textData"
1892
+ (ngModelChange)="valueTextChange($event)"
1893
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
1894
+ style="width: 500px; height: 125px; resize: none;"
1895
+ >
1896
+ </textarea>
1988
1897
 
1989
- <!-- Boolean -->
1990
- <ng-container *ngIf="attribute.codeAttributeDataType === 'B'">
1991
- <div #attributeRef
1992
- class="d-flex flex-row">
1993
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1994
- {{attribute.displayName}}
1995
- </div>
1996
- <div class="d-flex col-md-6">
1997
- <select [ngModel]="attributeValues[0].valueString"
1998
- (ngModelChange)="valueStringChange($event)"
1999
- class="edit-renderer">
2000
- <option [ngValue]="undefined"></option>
2001
- <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2002
- <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2003
- </select>
2004
- </div>
2005
- </div>
2006
- </ng-container>
1898
+ </div>
1899
+ </div>
1900
+ </ng-container>
2007
1901
 
2008
- <!-- Extended Boolean -->
2009
- <ng-container *ngIf="attribute.codeAttributeDataType === 'EB'">
2010
- <div #attributeRef
2011
- class="d-flex flex-row">
2012
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2013
- {{attribute.displayName}}
2014
- </div>
2015
- <div class="d-flex col-md-6">
2016
- <select [ngModel]="attributeValues[0].valueString"
2017
- (ngModelChange)="valueStringChange($event)"
2018
- class="edit-renderer">
2019
- <option [ngValue]="undefined"></option>
2020
- <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2021
- <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2022
- <option [ngValue]="'U'" [selected]="attributeValues[0].valueString === 'U'">Unknown</option>
2023
- </select>
2024
- </div>
2025
- </div>
2026
- </ng-container>
1902
+ <!-- Numeric -->
1903
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'N'">
1904
+ <div #attributeRef
1905
+ class="d-flex flex-row">
1906
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1907
+ {{attribute.displayName}}
1908
+ </div>
1909
+ <div class="d-flex col-md-6">
1910
+ <input #inputRef
1911
+ type="number"
1912
+ [ngModel]="attributeValues[0].valueNumeric"
1913
+ (ngModelChange)="valueNumericChange($event)"/>
1914
+ </div>
1915
+ </div>
1916
+ </ng-container>
2027
1917
 
2028
- <!-- Choice: Single -->
2029
- <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'N'">
2030
- <div #attributeRef
2031
- class="d-flex flex-row">
2032
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2033
- {{attribute.displayName}}
2034
- </div>
2035
- <div class="d-flex col-md-6">
2036
- <select [ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
2037
- (ngModelChange)="valueChoiceChange($event)"
2038
- class="edit-renderer">
2039
- <option [ngValue]="undefined"></option>
2040
- <option *ngFor="let attributeChoice of attributeChoices"
2041
- [ngValue]="attributeChoice.idAttributeChoice">
2042
- {{ attributeChoice.choice }}
2043
- </option>
2044
- </select>
2045
- </div>
2046
- </div>
2047
- </ng-container>
1918
+ <!-- Integer -->
1919
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'I'">
1920
+ <div #attributeRef
1921
+ class="d-flex flex-row">
1922
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1923
+ {{attribute.displayName}}
1924
+ </div>
1925
+ <div class="d-flex col-md-6">
1926
+ <input #inputRef
1927
+ type="number"
1928
+ [ngModel]="attributeValues[0].valueInteger"
1929
+ (ngModelChange)="valueIntegerChange($event)"/>
1930
+ </div>
1931
+ </div>
1932
+ </ng-container>
2048
1933
 
2049
- <!-- Choice: Multi -->
2050
- <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'Y'">
2051
- <div #attributeRef
2052
- class="d-flex flex-row">
2053
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2054
- {{attribute.displayName}}
2055
- </div>
2056
- <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2057
- <ng-container *ngFor="let attributeChoice of attributeChoices">
2058
- <div class="d-flex">
2059
- <input type="checkbox"
2060
- [checked]="attributeChoice.value"
1934
+ <!-- Date -->
1935
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'D'">
1936
+ <div #attributeRef
1937
+ class="d-flex flex-row">
1938
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1939
+ {{attribute.displayName}}
1940
+ </div>
1941
+ <div class="d-flex col-md-6">
1942
+ <input #inputRef
1943
+ matInput
1944
+ name="valueDate"
1945
+ [(ngModel)]="attributeValues[0].valueDate"
1946
+ (ngModelChange)="valueDateChange($event)"
1947
+ [matDatepicker]="valueDate"
2061
1948
  [disabled]="!editInline || attribute.isCalculated === 'Y'"
2062
- (change)="valueMultiChoiceChange(attributeChoice)"
2063
- class="form-control checkbox mt-auto mb-auto mr-2" />
2064
- <div class="cod-label pl-1">
2065
- {{attributeChoice.choice}}
2066
- </div>
1949
+ >
1950
+ <mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
1951
+ <mat-datepicker #valueDate></mat-datepicker>
2067
1952
  </div>
2068
- </ng-container>
2069
- </div>
2070
- </div>
2071
- </ng-container>
2072
-
2073
- <!-- Dictionary: Multi -->
2074
- <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'Y'">
2075
- <div #attributeRef
2076
- class="d-flex flex-row">
2077
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2078
- {{attribute.displayName}}
2079
- </div>
2080
- <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2081
- <ng-container *ngFor="let entry of dictionaryEntries">
2082
- <div class="d-flex">
2083
- <input type="checkbox"
2084
- [checked]="entry.checked"
1953
+ </div>
1954
+ </ng-container>
1955
+
1956
+ <!-- Date Time -->
1957
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'DT'">
1958
+ <div #attributeRef
1959
+ class="d-flex flex-row">
1960
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1961
+ {{attribute.displayName}}
1962
+ </div>
1963
+ <div class="d-flex col-md-6">
1964
+ <input #inputRef
1965
+ matInput
1966
+ name="valueDateTime"
1967
+ [(ngModel)]="attributeValues[0].date"
1968
+ (ngModelChange)="valueDateChange($event)"
2085
1969
  [disabled]="!editInline || attribute.isCalculated === 'Y'"
2086
- (change)="valueMultiDictChange(entry)"
1970
+ [ngxMatDatetimePicker]="dtpicker">
1971
+ <mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
1972
+ <ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
1973
+ </div>
1974
+ </div>
1975
+ </ng-container>
1976
+
1977
+ <!-- Checkbox -->
1978
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'CB'">
1979
+ <div #attributeRef
1980
+ class="d-flex flex-row">
1981
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
1982
+ {{attribute.displayName}}
1983
+ </div>
1984
+ <div class="d-flex col-md-6">
1985
+ <input #inputRef
1986
+ type="checkbox"
1987
+ [checked]="attributeValues[0].valueString === 'Y'"
1988
+ (change)="valueCheckboxChange($event)"
2087
1989
  [disabled]="!editInline || attribute.isCalculated === 'Y'"
2088
- class="form-control checkbox" />
2089
- <div class="cod-label pl-1">
2090
- {{entry.display}}
2091
- </div>
1990
+ class="form-control"/>
2092
1991
  </div>
2093
- </ng-container>
2094
- </div>
2095
- </div>
2096
- </ng-container>
1992
+ </div>
1993
+ </ng-container>
2097
1994
 
2098
- <!-- Dictionary -->
2099
- <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'N'">
2100
- <div #attributeRef
2101
- class="d-flex flex-row">
2102
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2103
- {{attribute.displayName}}
2104
- </div>
2105
- <div class="d-flex col-md-6">
2106
- <select #inputRef
2107
- [ngModel]="attributeValues[0].valueIdDictionary"
2108
- (ngModelChange)="valueDictChange($event)"
2109
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2110
- class="form-control edit-renderer">
2111
- <option [ngValue]="undefined"></option>
2112
- <option *ngFor="let entry of dictionaryEntries"
2113
- [ngValue]="entry.value">
2114
- {{ entry.display }}
2115
- </option>
2116
- </select>
2117
- </div>
2118
- </div>
2119
- </ng-container>
1995
+ <!-- Boolean -->
1996
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'B'">
1997
+ <div #attributeRef
1998
+ class="d-flex flex-row">
1999
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2000
+ {{attribute.displayName}}
2001
+ </div>
2002
+ <div class="d-flex col-md-6">
2003
+ <select [ngModel]="attributeValues[0].valueString"
2004
+ (ngModelChange)="valueStringChange($event)"
2005
+ class="edit-renderer">
2006
+ <option [ngValue]="undefined"></option>
2007
+ <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2008
+ <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2009
+ </select>
2010
+ </div>
2011
+ </div>
2012
+ </ng-container>
2120
2013
 
2121
- <!-- Grid -->
2122
- <ng-container *ngIf="attribute.codeAttributeDataType === 'GA'">
2123
- <div #attributeRef
2124
- class="d-flex flex-column">
2125
- <div *ngIf="attribute.displayName" class="d-flex col-md-12">
2126
- <div>
2127
- {{attribute.displayName}}
2014
+ <!-- Extended Boolean -->
2015
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'EB'">
2016
+ <div #attributeRef
2017
+ class="d-flex flex-row">
2018
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2019
+ {{attribute.displayName}}
2020
+ </div>
2021
+ <div class="d-flex col-md-6">
2022
+ <select [ngModel]="attributeValues[0].valueString"
2023
+ (ngModelChange)="valueStringChange($event)"
2024
+ class="edit-renderer">
2025
+ <option [ngValue]="undefined"></option>
2026
+ <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2027
+ <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2028
+ <option [ngValue]="'U'" [selected]="attributeValues[0].valueString === 'U'">Unknown</option>
2029
+ </select>
2030
+ </div>
2128
2031
  </div>
2129
- <div style="margin-left: auto;">
2130
- <button class="btn-ga" (click)="addGridRow(editGridModal, attribute.idAttribute)">
2032
+ </ng-container>
2033
+
2034
+ <!-- Choice: Single -->
2035
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'N'">
2036
+ <div #attributeRef
2037
+ class="d-flex flex-row">
2038
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2039
+ {{attribute.displayName}}
2040
+ </div>
2041
+ <div class="d-flex col-md-6">
2042
+ <select
2043
+ [ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
2044
+ (ngModelChange)="valueChoiceChange($event)"
2045
+ class="edit-renderer">
2046
+ <option [ngValue]="undefined"></option>
2047
+ <option *ngFor="let attributeChoice of attributeChoices"
2048
+ [ngValue]="attributeChoice.idAttributeChoice">
2049
+ {{ attributeChoice.choice }}
2050
+ </option>
2051
+ </select>
2052
+ </div>
2053
+ </div>
2054
+ </ng-container>
2055
+
2056
+ <!-- Choice: Multi -->
2057
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'Y'">
2058
+ <div #attributeRef
2059
+ class="d-flex flex-row">
2060
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2061
+ {{attribute.displayName}}
2062
+ </div>
2063
+ <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2064
+ <ng-container *ngFor="let attributeChoice of attributeChoices">
2065
+ <div class="d-flex">
2066
+ <input type="checkbox"
2067
+ [checked]="attributeChoice.value"
2068
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2069
+ (change)="valueMultiChoiceChange(attributeChoice)"
2070
+ class="form-control checkbox mt-auto mb-auto mr-2"/>
2071
+ <div class="cod-label pl-1">
2072
+ {{attributeChoice.choice}}
2073
+ </div>
2074
+ </div>
2075
+ </ng-container>
2076
+ </div>
2077
+ </div>
2078
+ </ng-container>
2079
+
2080
+ <!-- Dictionary: Multi -->
2081
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'Y'">
2082
+ <div #attributeRef
2083
+ class="d-flex flex-row">
2084
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2085
+ {{attribute.displayName}}
2086
+ </div>
2087
+ <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2088
+ <ng-container *ngFor="let entry of dictionaryEntries">
2089
+ <div class="d-flex">
2090
+ <input type="checkbox"
2091
+ [checked]="entry.checked"
2092
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2093
+ (change)="valueMultiDictChange(entry)"
2094
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2095
+ class="form-control checkbox"/>
2096
+ <div class="cod-label pl-1">
2097
+ {{entry.display}}
2098
+ </div>
2099
+ </div>
2100
+ </ng-container>
2101
+ </div>
2102
+ </div>
2103
+ </ng-container>
2104
+
2105
+ <!-- Dictionary -->
2106
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'N'">
2107
+ <div #attributeRef
2108
+ class="d-flex flex-row">
2109
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2110
+ {{attribute.displayName}}
2111
+ </div>
2112
+ <div class="d-flex col-md-6">
2113
+ <select #inputRef
2114
+ [ngModel]="attributeValues[0].valueIdDictionary"
2115
+ (ngModelChange)="valueDictChange($event)"
2116
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2117
+ class="form-control edit-renderer">
2118
+ <option [ngValue]="undefined"></option>
2119
+ <option *ngFor="let entry of dictionaryEntries"
2120
+ [ngValue]="entry.value">
2121
+ {{ entry.display }}
2122
+ </option>
2123
+ </select>
2124
+ </div>
2125
+ </div>
2126
+ </ng-container>
2127
+
2128
+ <!-- Grid -->
2129
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'GA'">
2130
+ <div #attributeRef
2131
+ class="d-flex flex-column">
2132
+ <div *ngIf="attribute.displayName" class="d-flex col-md-12">
2133
+ <div>
2134
+ {{attribute.displayName}}
2135
+ </div>
2136
+ <div style="margin-left: auto;">
2137
+ <button class="btn-ga" (click)="addGridRow(editGridModal, attribute.idAttribute)">
2131
2138
  <span class="ga-icon">
2132
2139
  <i class="fas fa-plus fa-xs"></i>
2133
2140
  </span>
2134
- </button>
2135
- <button class="btn-ga" (click)="removeGridRow(attribute.idAttribute)">
2141
+ </button>
2142
+ <button class="btn-ga" (click)="removeGridRow(attribute.idAttribute)">
2136
2143
  <span class="ga-icon">
2137
2144
  <i class="fas fa-minus fa-xs"></i>
2138
2145
  </span>
2139
- </button>
2146
+ </button>
2147
+ </div>
2148
+ </div>
2149
+ <div class="d-flex col-md-12">
2150
+ <ag-grid-angular #gridAttribute
2151
+ class="ag-theme-alpine"
2152
+ (gridReady)="this.onGridReady($event)"
2153
+ (modelUpdated)="onModelUpdated($event)"
2154
+ (gridSizeChanged)="onGridSizeChanged($event)"
2155
+ (rowDoubleClicked)="editGridRow(editGridModal, attribute.idAttribute, $event)"
2156
+ [gridOptions]="this.gridOptions"
2157
+ [rowSelection]="'single'"
2158
+ [columnDefs]="gridColumns"
2159
+ [rowData]="gridData"
2160
+ [style.width]="attribute.w + 'px'"
2161
+ [style.height]="attribute.h + 'px'">
2162
+ </ag-grid-angular>
2163
+ </div>
2140
2164
  </div>
2141
- </div>
2142
- <div class="d-flex col-md-12">
2143
- <ag-grid-angular #gridAttribute
2144
- class="ag-theme-alpine"
2145
- (gridReady)="this.onGridReady($event)"
2146
- (modelUpdated)="onModelUpdated($event)"
2147
- (gridSizeChanged)="onGridSizeChanged($event)"
2148
- (rowDoubleClicked)="editGridRow(editGridModal, attribute.idAttribute, $event)"
2149
- [gridOptions]="this.gridOptions"
2150
- [rowSelection]="'single'"
2151
- [columnDefs]="gridColumns"
2152
- [rowData]="gridData"
2153
- [style.width]="attribute.w + 'px'"
2154
- [style.height]="attribute.h + 'px'">
2155
- </ag-grid-angular>
2156
- </div>
2157
- </div>
2158
- </ng-container>
2159
-
2160
- <ng-template #editGridModal let-close="close">
2161
- <div class="modal-header">
2162
- {{attribute.displayName}} Grid Row
2163
- </div>
2164
- <div class="modal-body d-flex flex-column hci-cod-edit">
2165
- <ng-container *ngFor="let attribute of editGroupRowAttributes">
2166
- <hci-attribute-edit [id]="'edit-id-attribute-' + attribute.idAttribute"
2167
- [groupAttributeRowId]="editGroupAttributeRowId"
2168
- [attribute]="attribute"
2169
- class="attribute"></hci-attribute-edit>
2170
2165
  </ng-container>
2171
- </div>
2172
- <div class="modal-footer">
2173
- <button class="btn btn-primary" (click)="close('Save')">Save</button>
2174
- <button class="btn btn-primary" (click)="close('Cancel')">Cancel</button>
2175
- </div>
2176
- </ng-template>
2177
- `, isInline: true, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"], dependencies: [{ kind: "component", type: i3$1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.NgxMatDatetimepicker, selector: "ngx-mat-datetime-picker", exportAs: ["ngxMatDatetimePicker"] }, { kind: "directive", type: i7.NgxMatDatepickerInput, selector: "input[ngxMatDatetimePicker]", inputs: ["ngxMatDatetimePicker", "min", "max", "matDatepickerFilter"], exportAs: ["ngxMatDatepickerInput"] }, { kind: "component", type: AttributeEditComponent, selector: "hci-attribute-edit" }] }); }
2166
+
2167
+ <ng-template #editGridModal let-close="close">
2168
+ <div class="modal-header">
2169
+ {{attribute.displayName}} Grid Row
2170
+ </div>
2171
+ <div class="modal-body d-flex flex-column hci-cod-edit">
2172
+ <ng-container *ngFor="let attribute of editGroupRowAttributes">
2173
+ <hci-attribute-edit [id]="'edit-id-attribute-' + attribute.idAttribute"
2174
+ [groupAttributeRowId]="editGroupAttributeRowId"
2175
+ [attribute]="attribute"
2176
+ class="attribute"></hci-attribute-edit>
2177
+ </ng-container>
2178
+ </div>
2179
+ <div class="modal-footer">
2180
+ <button class="btn btn-primary" (click)="close('Save')">Save</button>
2181
+ <button class="btn btn-primary" (click)="close('Cancel')">Cancel</button>
2182
+ </div>
2183
+ </ng-template>
2184
+ `, isInline: true, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"], dependencies: [{ kind: "component", type: i3$1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.NgxMatDatetimepicker, selector: "ngx-mat-datetime-picker", exportAs: ["ngxMatDatetimePicker"] }, { kind: "directive", type: i7.NgxMatDatepickerInput, selector: "input[ngxMatDatetimePicker]", inputs: ["ngxMatDatetimePicker", "min", "max", "matDatepickerFilter"], exportAs: ["ngxMatDatepickerInput"] }, { kind: "component", type: AttributeEditComponent, selector: "hci-attribute-edit" }] }); }
2178
2185
  }
2179
2186
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeEditComponent, decorators: [{
2180
2187
  type: Component,
2181
- args: [{ selector: "hci-attribute-edit", template: `
2182
- <!-- String -->
2183
- <ng-container *ngIf="attribute.codeAttributeDataType === 'S'">
2184
- <div #attributeRef
2185
- class="d-flex flex-row">
2186
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2187
- {{attribute.displayName}}
2188
- </div>
2189
- <div class="d-flex col-md-6">
2190
- <input #inputRef
2191
- type="text"
2192
- [ngModel]="attributeValues[0].valueString"
2193
- (ngModelChange)="valueStringChange($event)"
2194
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2195
- />
2188
+ args: [{ selector: 'hci-attribute-edit', template: `
2189
+ <!-- String -->
2190
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'S'">
2191
+ <div #attributeRef
2192
+ class="d-flex flex-row">
2193
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2194
+ {{attribute.displayName}}
2195
+ </div>
2196
+ <div class="d-flex col-md-6">
2197
+ <input #inputRef
2198
+ type="text"
2199
+ [ngModel]="attributeValues[0].valueString"
2200
+ (ngModelChange)="valueStringChange($event)"
2201
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2202
+ />
2203
+ </div>
2196
2204
  </div>
2197
- </div>
2198
- </ng-container>
2199
-
2200
- <!-- Text -->
2201
- <ng-container *ngIf="attribute.codeAttributeDataType === 'TXT'">
2202
- <div #attributeRef
2203
- class="d-flex flex-row">
2204
- <div class="d-flex col-md-6">
2205
- {{attribute.displayName}}
2206
- </div>
2207
- <div class="d-flex col-md-6">
2208
- <input #inputRef
2209
- type="text"
2210
- spellcheck="spellcheck"
2211
- lang="en"
2212
- [ngModel]="attributeValues[0].valueLongText.textData"
2213
- (ngModelChange)="valueTextChange($event)"
2214
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2215
- />
2216
- </div>
2217
- </div>
2218
- </ng-container>
2219
-
2220
- <!-- Numeric -->
2221
- <ng-container *ngIf="attribute.codeAttributeDataType === 'N'">
2222
- <div #attributeRef
2223
- class="d-flex flex-row">
2224
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2225
- {{attribute.displayName}}
2226
- </div>
2227
- <div class="d-flex col-md-6">
2228
- <input #inputRef
2229
- type="number"
2230
- [ngModel]="attributeValues[0].valueNumeric"
2231
- (ngModelChange)="valueNumericChange($event)"/>
2232
- </div>
2233
- </div>
2234
- </ng-container>
2235
-
2236
- <!-- Integer -->
2237
- <ng-container *ngIf="attribute.codeAttributeDataType === 'I'">
2238
- <div #attributeRef
2239
- class="d-flex flex-row">
2240
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2241
- {{attribute.displayName}}
2242
- </div>
2243
- <div class="d-flex col-md-6">
2244
- <input #inputRef
2245
- type="number"
2246
- [ngModel]="attributeValues[0].valueInteger"
2247
- (ngModelChange)="valueIntegerChange($event)" />
2248
- </div>
2249
- </div>
2250
- </ng-container>
2251
-
2252
- <!-- Date -->
2253
- <ng-container *ngIf="attribute.codeAttributeDataType === 'D'">
2254
- <div #attributeRef
2255
- class="d-flex flex-row">
2256
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2257
- {{attribute.displayName}}
2258
- </div>
2259
- <div class="d-flex col-md-6">
2260
- <input #inputRef
2261
- matInput
2262
- name="valueDate"
2263
- [(ngModel)]="attributeValues[0].valueDate"
2264
- (ngModelChange)="valueDateChange($event)"
2265
- [matDatepicker]="valueDate"
2266
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2267
- >
2268
- <mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
2269
- <mat-datepicker #valueDate></mat-datepicker>
2270
- </div>
2271
- </div>
2272
- </ng-container>
2205
+ </ng-container>
2273
2206
 
2274
- <!-- Date Time -->
2275
- <ng-container *ngIf="attribute.codeAttributeDataType === 'DT'">
2276
- <div #attributeRef
2277
- class="d-flex flex-row">
2278
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2279
- {{attribute.displayName}}
2280
- </div>
2281
- <div class="d-flex col-md-6">
2282
- <input #inputRef
2283
- matInput
2284
- name="valueDateTime"
2285
- [(ngModel)]="attributeValues[0].date"
2286
- (ngModelChange)="valueDateChange($event)"
2287
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2288
- [ngxMatDatetimePicker]="dtpicker">
2289
- <mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
2290
- <ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
2291
- </div>
2292
- </div>
2293
- </ng-container>
2207
+ <!-- Text -->
2208
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'TXT'">
2209
+ <div #attributeRef
2210
+ class="d-flex flex-row">
2211
+ <div class="d-flex col-md-6">
2212
+ {{attribute.displayName}}
2213
+ </div>
2214
+ <div class="d-flex col-md-6">
2294
2215
 
2295
- <!-- Checkbox -->
2296
- <ng-container *ngIf="attribute.codeAttributeDataType === 'CB'">
2297
- <div #attributeRef
2298
- class="d-flex flex-row">
2299
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2300
- {{attribute.displayName}}
2301
- </div>
2302
- <div class="d-flex col-md-6">
2303
- <input #inputRef
2304
- type="checkbox"
2305
- [checked]="attributeValues[0].valueString === 'Y'"
2306
- (change)="valueCheckboxChange($event)"
2307
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2308
- class="form-control" />
2309
- </div>
2310
- </div>
2311
- </ng-container>
2216
+ <textarea
2217
+ #inputRef
2218
+ type="text"
2219
+ spellcheck="spellcheck"
2220
+ lang="en"
2221
+ [ngModel]="attributeValues[0].valueLongText.textData"
2222
+ (ngModelChange)="valueTextChange($event)"
2223
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2224
+ style="width: 500px; height: 125px; resize: none;"
2225
+ >
2226
+ </textarea>
2312
2227
 
2313
- <!-- Boolean -->
2314
- <ng-container *ngIf="attribute.codeAttributeDataType === 'B'">
2315
- <div #attributeRef
2316
- class="d-flex flex-row">
2317
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2318
- {{attribute.displayName}}
2319
- </div>
2320
- <div class="d-flex col-md-6">
2321
- <select [ngModel]="attributeValues[0].valueString"
2322
- (ngModelChange)="valueStringChange($event)"
2323
- class="edit-renderer">
2324
- <option [ngValue]="undefined"></option>
2325
- <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2326
- <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2327
- </select>
2328
- </div>
2329
- </div>
2330
- </ng-container>
2228
+ </div>
2229
+ </div>
2230
+ </ng-container>
2331
2231
 
2332
- <!-- Extended Boolean -->
2333
- <ng-container *ngIf="attribute.codeAttributeDataType === 'EB'">
2334
- <div #attributeRef
2335
- class="d-flex flex-row">
2336
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2337
- {{attribute.displayName}}
2338
- </div>
2339
- <div class="d-flex col-md-6">
2340
- <select [ngModel]="attributeValues[0].valueString"
2341
- (ngModelChange)="valueStringChange($event)"
2342
- class="edit-renderer">
2343
- <option [ngValue]="undefined"></option>
2344
- <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2345
- <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2346
- <option [ngValue]="'U'" [selected]="attributeValues[0].valueString === 'U'">Unknown</option>
2347
- </select>
2348
- </div>
2349
- </div>
2350
- </ng-container>
2232
+ <!-- Numeric -->
2233
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'N'">
2234
+ <div #attributeRef
2235
+ class="d-flex flex-row">
2236
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2237
+ {{attribute.displayName}}
2238
+ </div>
2239
+ <div class="d-flex col-md-6">
2240
+ <input #inputRef
2241
+ type="number"
2242
+ [ngModel]="attributeValues[0].valueNumeric"
2243
+ (ngModelChange)="valueNumericChange($event)"/>
2244
+ </div>
2245
+ </div>
2246
+ </ng-container>
2351
2247
 
2352
- <!-- Choice: Single -->
2353
- <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'N'">
2354
- <div #attributeRef
2355
- class="d-flex flex-row">
2356
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2357
- {{attribute.displayName}}
2358
- </div>
2359
- <div class="d-flex col-md-6">
2360
- <select [ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
2361
- (ngModelChange)="valueChoiceChange($event)"
2362
- class="edit-renderer">
2363
- <option [ngValue]="undefined"></option>
2364
- <option *ngFor="let attributeChoice of attributeChoices"
2365
- [ngValue]="attributeChoice.idAttributeChoice">
2366
- {{ attributeChoice.choice }}
2367
- </option>
2368
- </select>
2369
- </div>
2370
- </div>
2371
- </ng-container>
2248
+ <!-- Integer -->
2249
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'I'">
2250
+ <div #attributeRef
2251
+ class="d-flex flex-row">
2252
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2253
+ {{attribute.displayName}}
2254
+ </div>
2255
+ <div class="d-flex col-md-6">
2256
+ <input #inputRef
2257
+ type="number"
2258
+ [ngModel]="attributeValues[0].valueInteger"
2259
+ (ngModelChange)="valueIntegerChange($event)"/>
2260
+ </div>
2261
+ </div>
2262
+ </ng-container>
2372
2263
 
2373
- <!-- Choice: Multi -->
2374
- <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'Y'">
2375
- <div #attributeRef
2376
- class="d-flex flex-row">
2377
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2378
- {{attribute.displayName}}
2379
- </div>
2380
- <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2381
- <ng-container *ngFor="let attributeChoice of attributeChoices">
2382
- <div class="d-flex">
2383
- <input type="checkbox"
2384
- [checked]="attributeChoice.value"
2264
+ <!-- Date -->
2265
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'D'">
2266
+ <div #attributeRef
2267
+ class="d-flex flex-row">
2268
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2269
+ {{attribute.displayName}}
2270
+ </div>
2271
+ <div class="d-flex col-md-6">
2272
+ <input #inputRef
2273
+ matInput
2274
+ name="valueDate"
2275
+ [(ngModel)]="attributeValues[0].valueDate"
2276
+ (ngModelChange)="valueDateChange($event)"
2277
+ [matDatepicker]="valueDate"
2385
2278
  [disabled]="!editInline || attribute.isCalculated === 'Y'"
2386
- (change)="valueMultiChoiceChange(attributeChoice)"
2387
- class="form-control checkbox mt-auto mb-auto mr-2" />
2388
- <div class="cod-label pl-1">
2389
- {{attributeChoice.choice}}
2390
- </div>
2279
+ >
2280
+ <mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
2281
+ <mat-datepicker #valueDate></mat-datepicker>
2282
+ </div>
2283
+ </div>
2284
+ </ng-container>
2285
+
2286
+ <!-- Date Time -->
2287
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'DT'">
2288
+ <div #attributeRef
2289
+ class="d-flex flex-row">
2290
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2291
+ {{attribute.displayName}}
2391
2292
  </div>
2392
- </ng-container>
2393
- </div>
2394
- </div>
2395
- </ng-container>
2396
-
2397
- <!-- Dictionary: Multi -->
2398
- <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'Y'">
2399
- <div #attributeRef
2400
- class="d-flex flex-row">
2401
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2402
- {{attribute.displayName}}
2403
- </div>
2404
- <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2405
- <ng-container *ngFor="let entry of dictionaryEntries">
2406
- <div class="d-flex">
2407
- <input type="checkbox"
2408
- [checked]="entry.checked"
2293
+ <div class="d-flex col-md-6">
2294
+ <input #inputRef
2295
+ matInput
2296
+ name="valueDateTime"
2297
+ [(ngModel)]="attributeValues[0].date"
2298
+ (ngModelChange)="valueDateChange($event)"
2409
2299
  [disabled]="!editInline || attribute.isCalculated === 'Y'"
2410
- (change)="valueMultiDictChange(entry)"
2300
+ [ngxMatDatetimePicker]="dtpicker">
2301
+ <mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
2302
+ <ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
2303
+ </div>
2304
+ </div>
2305
+ </ng-container>
2306
+
2307
+ <!-- Checkbox -->
2308
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'CB'">
2309
+ <div #attributeRef
2310
+ class="d-flex flex-row">
2311
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2312
+ {{attribute.displayName}}
2313
+ </div>
2314
+ <div class="d-flex col-md-6">
2315
+ <input #inputRef
2316
+ type="checkbox"
2317
+ [checked]="attributeValues[0].valueString === 'Y'"
2318
+ (change)="valueCheckboxChange($event)"
2411
2319
  [disabled]="!editInline || attribute.isCalculated === 'Y'"
2412
- class="form-control checkbox" />
2413
- <div class="cod-label pl-1">
2414
- {{entry.display}}
2415
- </div>
2320
+ class="form-control"/>
2416
2321
  </div>
2417
- </ng-container>
2418
- </div>
2419
- </div>
2420
- </ng-container>
2322
+ </div>
2323
+ </ng-container>
2421
2324
 
2422
- <!-- Dictionary -->
2423
- <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'N'">
2424
- <div #attributeRef
2425
- class="d-flex flex-row">
2426
- <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2427
- {{attribute.displayName}}
2428
- </div>
2429
- <div class="d-flex col-md-6">
2430
- <select #inputRef
2431
- [ngModel]="attributeValues[0].valueIdDictionary"
2432
- (ngModelChange)="valueDictChange($event)"
2433
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
2434
- class="form-control edit-renderer">
2435
- <option [ngValue]="undefined"></option>
2436
- <option *ngFor="let entry of dictionaryEntries"
2437
- [ngValue]="entry.value">
2438
- {{ entry.display }}
2439
- </option>
2440
- </select>
2441
- </div>
2442
- </div>
2443
- </ng-container>
2325
+ <!-- Boolean -->
2326
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'B'">
2327
+ <div #attributeRef
2328
+ class="d-flex flex-row">
2329
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2330
+ {{attribute.displayName}}
2331
+ </div>
2332
+ <div class="d-flex col-md-6">
2333
+ <select [ngModel]="attributeValues[0].valueString"
2334
+ (ngModelChange)="valueStringChange($event)"
2335
+ class="edit-renderer">
2336
+ <option [ngValue]="undefined"></option>
2337
+ <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2338
+ <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2339
+ </select>
2340
+ </div>
2341
+ </div>
2342
+ </ng-container>
2444
2343
 
2445
- <!-- Grid -->
2446
- <ng-container *ngIf="attribute.codeAttributeDataType === 'GA'">
2447
- <div #attributeRef
2448
- class="d-flex flex-column">
2449
- <div *ngIf="attribute.displayName" class="d-flex col-md-12">
2450
- <div>
2451
- {{attribute.displayName}}
2344
+ <!-- Extended Boolean -->
2345
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'EB'">
2346
+ <div #attributeRef
2347
+ class="d-flex flex-row">
2348
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2349
+ {{attribute.displayName}}
2350
+ </div>
2351
+ <div class="d-flex col-md-6">
2352
+ <select [ngModel]="attributeValues[0].valueString"
2353
+ (ngModelChange)="valueStringChange($event)"
2354
+ class="edit-renderer">
2355
+ <option [ngValue]="undefined"></option>
2356
+ <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
2357
+ <option [ngValue]="'N'" [selected]="attributeValues[0].valueString === 'N'">No</option>
2358
+ <option [ngValue]="'U'" [selected]="attributeValues[0].valueString === 'U'">Unknown</option>
2359
+ </select>
2360
+ </div>
2452
2361
  </div>
2453
- <div style="margin-left: auto;">
2454
- <button class="btn-ga" (click)="addGridRow(editGridModal, attribute.idAttribute)">
2362
+ </ng-container>
2363
+
2364
+ <!-- Choice: Single -->
2365
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'N'">
2366
+ <div #attributeRef
2367
+ class="d-flex flex-row">
2368
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2369
+ {{attribute.displayName}}
2370
+ </div>
2371
+ <div class="d-flex col-md-6">
2372
+ <select
2373
+ [ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
2374
+ (ngModelChange)="valueChoiceChange($event)"
2375
+ class="edit-renderer">
2376
+ <option [ngValue]="undefined"></option>
2377
+ <option *ngFor="let attributeChoice of attributeChoices"
2378
+ [ngValue]="attributeChoice.idAttributeChoice">
2379
+ {{ attributeChoice.choice }}
2380
+ </option>
2381
+ </select>
2382
+ </div>
2383
+ </div>
2384
+ </ng-container>
2385
+
2386
+ <!-- Choice: Multi -->
2387
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'AC' && attribute.isMultiValue === 'Y'">
2388
+ <div #attributeRef
2389
+ class="d-flex flex-row">
2390
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2391
+ {{attribute.displayName}}
2392
+ </div>
2393
+ <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2394
+ <ng-container *ngFor="let attributeChoice of attributeChoices">
2395
+ <div class="d-flex">
2396
+ <input type="checkbox"
2397
+ [checked]="attributeChoice.value"
2398
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2399
+ (change)="valueMultiChoiceChange(attributeChoice)"
2400
+ class="form-control checkbox mt-auto mb-auto mr-2"/>
2401
+ <div class="cod-label pl-1">
2402
+ {{attributeChoice.choice}}
2403
+ </div>
2404
+ </div>
2405
+ </ng-container>
2406
+ </div>
2407
+ </div>
2408
+ </ng-container>
2409
+
2410
+ <!-- Dictionary: Multi -->
2411
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'Y'">
2412
+ <div #attributeRef
2413
+ class="d-flex flex-row">
2414
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2415
+ {{attribute.displayName}}
2416
+ </div>
2417
+ <div class="d-flex flex-column col-md-6" style="row-gap: 5px">
2418
+ <ng-container *ngFor="let entry of dictionaryEntries">
2419
+ <div class="d-flex">
2420
+ <input type="checkbox"
2421
+ [checked]="entry.checked"
2422
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2423
+ (change)="valueMultiDictChange(entry)"
2424
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2425
+ class="form-control checkbox"/>
2426
+ <div class="cod-label pl-1">
2427
+ {{entry.display}}
2428
+ </div>
2429
+ </div>
2430
+ </ng-container>
2431
+ </div>
2432
+ </div>
2433
+ </ng-container>
2434
+
2435
+ <!-- Dictionary -->
2436
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'DICT' && attribute.isMultiValue === 'N'">
2437
+ <div #attributeRef
2438
+ class="d-flex flex-row">
2439
+ <div *ngIf="attribute.displayName" class="d-flex col-md-6">
2440
+ {{attribute.displayName}}
2441
+ </div>
2442
+ <div class="d-flex col-md-6">
2443
+ <select #inputRef
2444
+ [ngModel]="attributeValues[0].valueIdDictionary"
2445
+ (ngModelChange)="valueDictChange($event)"
2446
+ [disabled]="!editInline || attribute.isCalculated === 'Y'"
2447
+ class="form-control edit-renderer">
2448
+ <option [ngValue]="undefined"></option>
2449
+ <option *ngFor="let entry of dictionaryEntries"
2450
+ [ngValue]="entry.value">
2451
+ {{ entry.display }}
2452
+ </option>
2453
+ </select>
2454
+ </div>
2455
+ </div>
2456
+ </ng-container>
2457
+
2458
+ <!-- Grid -->
2459
+ <ng-container *ngIf="attribute.codeAttributeDataType === 'GA'">
2460
+ <div #attributeRef
2461
+ class="d-flex flex-column">
2462
+ <div *ngIf="attribute.displayName" class="d-flex col-md-12">
2463
+ <div>
2464
+ {{attribute.displayName}}
2465
+ </div>
2466
+ <div style="margin-left: auto;">
2467
+ <button class="btn-ga" (click)="addGridRow(editGridModal, attribute.idAttribute)">
2455
2468
  <span class="ga-icon">
2456
2469
  <i class="fas fa-plus fa-xs"></i>
2457
2470
  </span>
2458
- </button>
2459
- <button class="btn-ga" (click)="removeGridRow(attribute.idAttribute)">
2471
+ </button>
2472
+ <button class="btn-ga" (click)="removeGridRow(attribute.idAttribute)">
2460
2473
  <span class="ga-icon">
2461
2474
  <i class="fas fa-minus fa-xs"></i>
2462
2475
  </span>
2463
- </button>
2476
+ </button>
2477
+ </div>
2478
+ </div>
2479
+ <div class="d-flex col-md-12">
2480
+ <ag-grid-angular #gridAttribute
2481
+ class="ag-theme-alpine"
2482
+ (gridReady)="this.onGridReady($event)"
2483
+ (modelUpdated)="onModelUpdated($event)"
2484
+ (gridSizeChanged)="onGridSizeChanged($event)"
2485
+ (rowDoubleClicked)="editGridRow(editGridModal, attribute.idAttribute, $event)"
2486
+ [gridOptions]="this.gridOptions"
2487
+ [rowSelection]="'single'"
2488
+ [columnDefs]="gridColumns"
2489
+ [rowData]="gridData"
2490
+ [style.width]="attribute.w + 'px'"
2491
+ [style.height]="attribute.h + 'px'">
2492
+ </ag-grid-angular>
2493
+ </div>
2464
2494
  </div>
2465
- </div>
2466
- <div class="d-flex col-md-12">
2467
- <ag-grid-angular #gridAttribute
2468
- class="ag-theme-alpine"
2469
- (gridReady)="this.onGridReady($event)"
2470
- (modelUpdated)="onModelUpdated($event)"
2471
- (gridSizeChanged)="onGridSizeChanged($event)"
2472
- (rowDoubleClicked)="editGridRow(editGridModal, attribute.idAttribute, $event)"
2473
- [gridOptions]="this.gridOptions"
2474
- [rowSelection]="'single'"
2475
- [columnDefs]="gridColumns"
2476
- [rowData]="gridData"
2477
- [style.width]="attribute.w + 'px'"
2478
- [style.height]="attribute.h + 'px'">
2479
- </ag-grid-angular>
2480
- </div>
2481
- </div>
2482
- </ng-container>
2483
-
2484
- <ng-template #editGridModal let-close="close">
2485
- <div class="modal-header">
2486
- {{attribute.displayName}} Grid Row
2487
- </div>
2488
- <div class="modal-body d-flex flex-column hci-cod-edit">
2489
- <ng-container *ngFor="let attribute of editGroupRowAttributes">
2490
- <hci-attribute-edit [id]="'edit-id-attribute-' + attribute.idAttribute"
2491
- [groupAttributeRowId]="editGroupAttributeRowId"
2492
- [attribute]="attribute"
2493
- class="attribute"></hci-attribute-edit>
2494
2495
  </ng-container>
2495
- </div>
2496
- <div class="modal-footer">
2497
- <button class="btn btn-primary" (click)="close('Save')">Save</button>
2498
- <button class="btn btn-primary" (click)="close('Cancel')">Cancel</button>
2499
- </div>
2500
- </ng-template>
2501
- `, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"] }]
2496
+
2497
+ <ng-template #editGridModal let-close="close">
2498
+ <div class="modal-header">
2499
+ {{attribute.displayName}} Grid Row
2500
+ </div>
2501
+ <div class="modal-body d-flex flex-column hci-cod-edit">
2502
+ <ng-container *ngFor="let attribute of editGroupRowAttributes">
2503
+ <hci-attribute-edit [id]="'edit-id-attribute-' + attribute.idAttribute"
2504
+ [groupAttributeRowId]="editGroupAttributeRowId"
2505
+ [attribute]="attribute"
2506
+ class="attribute"></hci-attribute-edit>
2507
+ </ng-container>
2508
+ </div>
2509
+ <div class="modal-footer">
2510
+ <button class="btn btn-primary" (click)="close('Save')">Save</button>
2511
+ <button class="btn btn-primary" (click)="close('Cancel')">Cancel</button>
2512
+ </div>
2513
+ </ng-template>
2514
+ `, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"] }]
2502
2515
  }], ctorParameters: function () { return [{ type: AttributeService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2$1.NgbModal }]; } });
2503
2516
 
2504
2517
  /**
@@ -4213,7 +4226,7 @@ class AttributeConfigurationComponent {
4213
4226
  <div *ngIf="editPopup" [id]="'id-attribute-container-' + attributeContainer.idAttributeContainer + '-header'"
4214
4227
  class="d-flex flex-grow-1 attribute-container-header {{'sort-order-' + attributeContainer.sortOrder}}">
4215
4228
  <div class="ml-auto mr-0" (click)="edit(editModal, attributeContainer)">
4216
- <i class="fas fa-pencil"></i>
4229
+ <i class="fas fa-pencil-alt"></i>
4217
4230
  </div>
4218
4231
  </div>
4219
4232
  </ng-template>
@@ -4282,7 +4295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
4282
4295
  <div *ngIf="editPopup" [id]="'id-attribute-container-' + attributeContainer.idAttributeContainer + '-header'"
4283
4296
  class="d-flex flex-grow-1 attribute-container-header {{'sort-order-' + attributeContainer.sortOrder}}">
4284
4297
  <div class="ml-auto mr-0" (click)="edit(editModal, attributeContainer)">
4285
- <i class="fas fa-pencil"></i>
4298
+ <i class="fas fa-pencil-alt"></i>
4286
4299
  </div>
4287
4300
  </div>
4288
4301
  </ng-template>
@@ -4788,12 +4801,12 @@ class AttributeContainerComponent {
4788
4801
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeContainerComponent, deps: [{ token: AttributeService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i2$1.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
4789
4802
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeContainerComponent, selector: "hci-attribute-container", inputs: { idAttributeValueSet: "idAttributeValueSet", idAttributeConfiguration: "idAttributeConfiguration", idAttributeContainer: "idAttributeContainer", indexOfContainer: "indexOfContainer", idParentObject: "idParentObject", attributeContainer: "attributeContainer", attributeConfiguration: "attributeConfiguration", attributeValueSet: "attributeValueSet", editInline: "editInline", editPopup: "editPopup", editable: "editable", boundData: "boundData" }, host: { properties: { "class": "this.classList" } }, usesOnChanges: true, ngImport: i0, template: `
4790
4803
  <hci-busy [getBusySubjects]="getBusySubjects"></hci-busy>
4791
-
4804
+
4792
4805
  <ng-container *ngIf="attributeContainer">
4793
4806
  <div *ngIf="editPopup" [id]="'id-attribute-container-' + attributeContainer.idAttributeContainer + '-header'"
4794
4807
  class="d-flex attribute-container-header {{'sort-order-' + attributeContainer.sortOrder}}">
4795
4808
  <div class="ml-auto mr-0" (click)="edit(editModal, attributeContainer)">
4796
- <i class="fas fa-pencil"></i>
4809
+ <i class="fas fa-pencil-alt"></i>
4797
4810
  </div>
4798
4811
  </div>
4799
4812
  <div class="d-flex flex-grow-1 y-auto" style="flex: 1 1 1px;">
@@ -4846,12 +4859,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
4846
4859
  selector: "hci-attribute-container",
4847
4860
  template: `
4848
4861
  <hci-busy [getBusySubjects]="getBusySubjects"></hci-busy>
4849
-
4862
+
4850
4863
  <ng-container *ngIf="attributeContainer">
4851
4864
  <div *ngIf="editPopup" [id]="'id-attribute-container-' + attributeContainer.idAttributeContainer + '-header'"
4852
4865
  class="d-flex attribute-container-header {{'sort-order-' + attributeContainer.sortOrder}}">
4853
4866
  <div class="ml-auto mr-0" (click)="edit(editModal, attributeContainer)">
4854
- <i class="fas fa-pencil"></i>
4867
+ <i class="fas fa-pencil-alt"></i>
4855
4868
  </div>
4856
4869
  </div>
4857
4870
  <div class="d-flex flex-grow-1 y-auto" style="flex: 1 1 1px;">