@eo-sdk/client 10.6.0-rc.5 → 10.6.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +0 -6
  2. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
  3. package/app/eo-framework/media/media.component.d.ts +6 -1
  4. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  5. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -0
  6. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
  7. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  8. package/app/eo-framework-core/api/plugins.service.d.ts +1 -0
  9. package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
  10. package/assets/_default/i18n/de.json +4 -3
  11. package/assets/_default/i18n/en.json +3 -3
  12. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  13. package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +14 -9
  14. package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +4 -3
  15. package/esm2020/app/eo-framework/media/media.component.mjs +12 -4
  16. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +2 -2
  17. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +10 -3
  18. package/esm2020/app/eo-framework-core/api/grid.service.mjs +3 -2
  19. package/esm2020/app/eo-framework-core/api/plugins.service.mjs +5 -1
  20. package/fesm2015/eo-sdk-client.mjs +45 -19
  21. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  22. package/fesm2020/eo-sdk-client.mjs +43 -18
  23. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  24. package/package.json +2 -2
  25. package/scss/_main.scss +1 -0
  26. package/scss/_yuuvis-components.scss +8 -0
  27. package/styles.css +8 -1
@@ -915,6 +915,7 @@ class PluginsService {
915
915
  },
916
916
  translate: (key, data) => this.translate.instant(key, data),
917
917
  encodeFileName: (filename) => this.encodeFileName(filename),
918
+ decodeHtmlCharCodes: (filename) => this.decodeHtmlCharCodes(filename),
918
919
  notifier: {
919
920
  success: (text, title) => this.notifications.success(title, text),
920
921
  error: (text, title) => this.notifications.error(title, text),
@@ -996,6 +997,9 @@ class PluginsService {
996
997
  encodeFileName(filename) {
997
998
  return Utils.encodeFileName(filename);
998
999
  }
1000
+ decodeHtmlCharCodes(str) {
1001
+ return str.replace(/(&#(\d+);)/g, (match, capture, charCode) => String.fromCharCode(charCode));
1002
+ }
999
1003
  getConfig() {
1000
1004
  return {
1001
1005
  serviceBase: this.backend.getServiceBase()
@@ -2078,7 +2082,8 @@ class CellRenderer {
2078
2082
  if (param.value === null && CellRenderer.situation === 'SEARCH') {
2079
2083
  return CellRenderer.noValueRenderer(param);
2080
2084
  }
2081
- let val = `<path class="background" d="M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3z"/>`;
2085
+ let val = `<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>
2086
+ <path d="M 5,19 L 19,5" stroke="rgba(0, 0, 0, 0.54)" stroke-width="2"/>`;
2082
2087
  if (param.value === true || param.value === 'true') {
2083
2088
  val = `<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>
2084
2089
  <polyline class="checkmark" points="6.3,11.8 7.8,10.3 10.8,13.3 16.3,7.8 17.8,9.3 10.8,16.3 6.3,11.8"/>`;
@@ -6006,7 +6011,7 @@ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
6006
6011
  useExisting: forwardRef(() => CheckboxComponent),
6007
6012
  multi: true
6008
6013
  }
6009
- ], ngImport: i0, template: "<yvc-checkbox [(ngModel)]=\"value\" (ngModelChange)=\"onChange($event)\" [tristate]=\"tristate\"\n [readonly]=\"readonly\"></yvc-checkbox>", styles: [":host{display:flex;align-items:center}:host .tristate{display:flex;align-items:center}:host .tristate ::ng-deep .pi-times:before{content:\"\"}:host eo-icon{height:16px;width:16px;color:var(--text-color-hint);cursor:pointer;margin:1px 0 0 4px}:host-context(.dark) eo-icon{color:rgba(var(--color-white-rgb),.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$4.CheckboxComponent, selector: "yvc-checkbox", inputs: ["tristate", "readonly"] }] });
6014
+ ], ngImport: i0, template: "<yvc-checkbox [title]=\"value === null ? ('eo.form.property.checkbox.indefinite.tooltip' | translate) : ''\" [(ngModel)]=\"value\" (ngModelChange)=\"onChange($event)\" [tristate]=\"tristate\"\n [readonly]=\"readonly\"></yvc-checkbox>\n", styles: [":host{display:flex;align-items:center}:host .tristate{display:flex;align-items:center}:host .tristate ::ng-deep .pi-times:before{content:\"\"}:host eo-icon{height:16px;width:16px;color:var(--text-color-hint);cursor:pointer;margin:1px 0 0 4px}:host-context(.dark) eo-icon{color:rgba(var(--color-white-rgb),.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$4.CheckboxComponent, selector: "yvc-checkbox", inputs: ["tristate", "readonly"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
6010
6015
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CheckboxComponent, decorators: [{
6011
6016
  type: Component,
6012
6017
  args: [{ selector: 'eo-checkbox', providers: [
@@ -6015,7 +6020,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
6015
6020
  useExisting: forwardRef(() => CheckboxComponent),
6016
6021
  multi: true
6017
6022
  }
6018
- ], template: "<yvc-checkbox [(ngModel)]=\"value\" (ngModelChange)=\"onChange($event)\" [tristate]=\"tristate\"\n [readonly]=\"readonly\"></yvc-checkbox>", styles: [":host{display:flex;align-items:center}:host .tristate{display:flex;align-items:center}:host .tristate ::ng-deep .pi-times:before{content:\"\"}:host eo-icon{height:16px;width:16px;color:var(--text-color-hint);cursor:pointer;margin:1px 0 0 4px}:host-context(.dark) eo-icon{color:rgba(var(--color-white-rgb),.8)}\n"] }]
6023
+ ], template: "<yvc-checkbox [title]=\"value === null ? ('eo.form.property.checkbox.indefinite.tooltip' | translate) : ''\" [(ngModel)]=\"value\" (ngModelChange)=\"onChange($event)\" [tristate]=\"tristate\"\n [readonly]=\"readonly\"></yvc-checkbox>\n", styles: [":host{display:flex;align-items:center}:host .tristate{display:flex;align-items:center}:host .tristate ::ng-deep .pi-times:before{content:\"\"}:host eo-icon{height:16px;width:16px;color:var(--text-color-hint);cursor:pointer;margin:1px 0 0 4px}:host-context(.dark) eo-icon{color:rgba(var(--color-white-rgb),.8)}\n"] }]
6019
6024
  }], propDecorators: { required: [{
6020
6025
  type: Input
6021
6026
  }], tristate: [{
@@ -7673,10 +7678,13 @@ let MediaComponent = MediaComponent_1 = class MediaComponent {
7673
7678
  path: file.path,
7674
7679
  mediaTypeName: item.typeName
7675
7680
  };
7676
- if (!!file.mimegroup?.match(/^mail|octet-stream/) && this.viewer.viewer.startsWith(MediaComponent_1.PDF_VIEWER)) {
7681
+ if (!!file.mimegroup?.match(/^mail|octet-stream/) && this.viewer.viewer.match('/view/api/pdf/')) {
7677
7682
  this.slideUri = this.dms.getSlide(item.content.id, item.content.type, this.useVersion ? item.version : null, 256);
7678
7683
  this.attachmentsLoading = this.dms.getAttachments(item).subscribe(a => this.setAttachments = a);
7679
7684
  }
7685
+ if (this.viewer.viewer.match('/view/api/mail/')) {
7686
+ this.dms.getAttachments(item).subscribe(a => window.api.content.attachments = a);
7687
+ }
7680
7688
  }
7681
7689
  else {
7682
7690
  this.previewUri = '';
@@ -7710,8 +7718,13 @@ let MediaComponent = MediaComponent_1 = class MediaComponent {
7710
7718
  "mimeType": ["message/rfc822", "application/vnd.ms-outlook"],
7711
7719
  "viewer": "viewer/view/api/mail/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
7712
7720
  },
7713
- // We need another pathPdf for email attachment files. This will only come in place if the mimetype is pdf or one of the not supported ones.
7714
- { "viewer": "() => {var attachment = parameters.pathPdf.match(new RegExp('attachment=(\\\\d)')); if (attachment) {parameters.pathPdf = location.origin + '/rest-ws/service/dms/' + dmsObject.content.id + '/attachments/' + attachment[1]} return parameters.defaultViewer;}" },
7721
+ // ONLY applies to localhost env; fixed email cors for localhost testing
7722
+ {
7723
+ "type": "extend",
7724
+ "viewer": "() => { if (parameters.viewer.match('/view/api/mail/') && parameters.path.match('localhost')) { var host = 'localhost:4200'; var cors = 'kolibriproliant.optimal-systems.de'; parameters.path = parameters.path.replace(host, cors); return parameters.viewer + '&cors=' + cors;} return parameters.viewer; }"
7725
+ },
7726
+ // We need another pathPdf for email attachment files. This will only come in place if the mimetype is pdf or one of the not supported ones. (viewer attachments & api attachments can be parsed in different order, so we have to match them by filename)
7727
+ { "viewer": "() => {var attachment = parameters.pathPdf.match(new RegExp('attachment=(\\\\d+)')); var a = attachment && api.content.viewer().document.querySelector('iframe').contentDocument.querySelector('a[data-src$=\"' + attachment[0] + '\"]'); var params = a && (api.content.attachments || []).find(att => api.util.decodeHtmlCharCodes(att.name) === a.getAttribute('data-filename')); if(params && params.previewUri) { debugger; parameters.pathPdf = location.origin + params.previewUri; } return parameters.defaultViewer;}" },
7715
7728
  { "error": true, "type": "error", "viewer": "viewer/view/api/error/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}" }
7716
7729
  ];
7717
7730
  this.undockDisabled = false;
@@ -7925,6 +7938,9 @@ let RowEditComponent = class RowEditComponent {
7925
7938
  return this._showDeleteDialog;
7926
7939
  }
7927
7940
  set row(r) {
7941
+ if (!this._row || this._row.index !== r.index) {
7942
+ this.saved = false;
7943
+ }
7928
7944
  this._row = r;
7929
7945
  this.formData = undefined;
7930
7946
  this.queryEnabled = r?.situation === 'SEARCH';
@@ -7950,6 +7966,7 @@ let RowEditComponent = class RowEditComponent {
7950
7966
  this.createNewRow = false;
7951
7967
  this._showDeleteDialog = false;
7952
7968
  this.saving = false;
7969
+ this.saved = false;
7953
7970
  this.onCancel = new EventEmitter();
7954
7971
  this.onSave = new EventEmitter();
7955
7972
  this.onSaveCopy = new EventEmitter();
@@ -7985,8 +8002,10 @@ let RowEditComponent = class RowEditComponent {
7985
8002
  saveEnabled: this.saveEnabled,
7986
8003
  persisted: this.isNewRow // Not persisted if it is a new row
7987
8004
  };
7988
- // Call the script function ...
7989
- this._row.tableElement.onrowedit(this._row.tableElement, row);
8005
+ // Call the script function if row was not already saved now
8006
+ if (!this.saved) {
8007
+ this._row.tableElement.onrowedit(this._row.tableElement, row);
8008
+ }
7990
8009
  // ... and respect the result
7991
8010
  this.copyEnabled = row.copyEnabled;
7992
8011
  this.deleteEnabled = row.deleteEnabled;
@@ -8055,6 +8074,7 @@ let RowEditComponent = class RowEditComponent {
8055
8074
  }
8056
8075
  save() {
8057
8076
  this.saving = true;
8077
+ this.saved = true;
8058
8078
  this.finishPending();
8059
8079
  setTimeout(() => {
8060
8080
  if (!this.formState.invalid) {
@@ -8622,7 +8642,7 @@ let FormElementTableComponent = FormElementTableComponent_1 = class FormElementT
8622
8642
  this.overlayGridOptions.api.ensureNodeVisible(rowNode);
8623
8643
  }
8624
8644
  onCellClicked($event) {
8625
- if ($event.rowIndex !== null && !this.pendingChanges.check()) {
8645
+ if ($event.rowIndex !== null && !this.pendingChanges.checkForPendingTasks(this.rowEdit ? this.rowEdit.pendingTaskId : undefined)) {
8626
8646
  if (!$event.node.group && $event.data) {
8627
8647
  if ($event.colDef.cellClass === 'router-link-cell') {
8628
8648
  this.gridApi.openRouterLink($event.event, 'ag-row');
@@ -22419,10 +22439,10 @@ class AboutStateComponent {
22419
22439
  this.backend = backend;
22420
22440
  this.userService = userService;
22421
22441
  this.config = config;
22422
- this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "22.1.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "22.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/cdk", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/common", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/compiler", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/core", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/forms", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/router", "version": "15.2.2", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.8.1", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "10.6.0-rc.5", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "15.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "14.0.0", "license": "MIT" }, { "name": "@types/lodash", "version": "4.14.88", "license": "MIT" }, { "name": "@yuuvis/components", "version": "0.0.65", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "1.0.2", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "moment", "version": "2.29.4", "license": "MIT" }, { "name": "ngx-toastr", "version": "16.0.2", "license": "MIT" }, { "name": "rxjs", "version": "7.5.7", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.2", "license": "0BSD" }, { "name": "zone.js", "version": "0.11.8", "license": "MIT" }];
22442
+ this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "22.1.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "22.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/cdk", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/common", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/compiler", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/core", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/forms", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "15.2.2", "license": "MIT" }, { "name": "@angular/router", "version": "15.2.2", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.8.1", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "10.6.0-rc.7", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "15.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "14.0.0", "license": "MIT" }, { "name": "@types/lodash", "version": "4.14.88", "license": "MIT" }, { "name": "@yuuvis/components", "version": "0.0.65", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "1.0.2", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "moment", "version": "2.29.4", "license": "MIT" }, { "name": "ngx-toastr", "version": "16.0.2", "license": "MIT" }, { "name": "rxjs", "version": "7.5.7", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.2", "license": "0BSD" }, { "name": "zone.js", "version": "0.11.8", "license": "MIT" }];
22423
22443
  this.ctrl = {
22424
22444
  componentName: 'yuuvis® RAD client',
22425
- componentVersion: '10.6.0-rc.5',
22445
+ componentVersion: '10.6.0-rc.7',
22426
22446
  productName: '',
22427
22447
  productVersion: ''
22428
22448
  };
@@ -23447,11 +23467,10 @@ let ChartsSetupComponent = class ChartsSetupComponent {
23447
23467
  this.setupForm = this.fb.group({
23448
23468
  storedQuery: [null],
23449
23469
  chartType: [],
23450
- size: ['', [Validators.max(20), Validators.min(3)]],
23470
+ size: ['', [Validators.max(100), Validators.min(3)]],
23451
23471
  aggregation: [],
23452
23472
  histogramType: [],
23453
23473
  });
23454
- this.chartTypes = [];
23455
23474
  this.storedQueriesPicker = {
23456
23475
  title: this.translate.instant('eo.search.title.storedqueries'),
23457
23476
  codesystem: null,
@@ -23470,7 +23489,7 @@ let ChartsSetupComponent = class ChartsSetupComponent {
23470
23489
  };
23471
23490
  this.isDateTimeType = false;
23472
23491
  this.selectedSavedSearchName = '';
23473
- this.setupForm.valueChanges.pipe(untilDestroyed(this)).subscribe((_) => {
23492
+ this.setupForm.valueChanges.pipe(skip(1), untilDestroyed(this)).subscribe((_) => {
23474
23493
  this.setWidgetConfig();
23475
23494
  });
23476
23495
  this.getStoredQuerys();
@@ -23491,7 +23510,7 @@ let ChartsSetupComponent = class ChartsSetupComponent {
23491
23510
  this.aggregationPicker.codesystem = null;
23492
23511
  if (this.selectedSavedSearchName !== '') {
23493
23512
  this.setupForm.patchValue({
23494
- aggregation: '',
23513
+ aggregation: 'sysobject.created',
23495
23514
  });
23496
23515
  }
23497
23516
  if (this.storedQuery.types.length !== 1) {
@@ -23629,11 +23648,17 @@ let ChartsSetupComponent = class ChartsSetupComponent {
23629
23648
  });
23630
23649
  if (this.storedQuery) {
23631
23650
  this.selectedSavedSearchName = this.setupForm.get('storedQuery').value;
23632
- this.getAggregationField(this.storedQuery.types[0]?.qname);
23651
+ if (this.storedQuery.types.length !== 1) {
23652
+ this.getAggregationField('sysdocument');
23653
+ }
23654
+ else {
23655
+ this.getAggregationField(this.storedQuery.types[0].qname);
23656
+ }
23633
23657
  setTimeout(() => {
23634
23658
  this.setupForm.patchValue({
23635
- aggregation: this._widgetConfig ? this._widgetConfig.formValue.aggregation : '',
23659
+ aggregation: this._widgetConfig ? this._widgetConfig.formValue.aggregation : 'sysobject.created',
23636
23660
  });
23661
+ this.isDateTimeType = this.widgetConfig?.formValue.aggregation === 'sysobject.created' || this.widgetConfig?.aggregationType === 'DATETIME';
23637
23662
  }, 100);
23638
23663
  }
23639
23664
  }, (error) => {
@@ -23642,7 +23667,7 @@ let ChartsSetupComponent = class ChartsSetupComponent {
23642
23667
  if (error.status === 404) {
23643
23668
  this.setupForm.patchValue({
23644
23669
  chartType: 'pie',
23645
- aggregation: this._widgetConfig ? this._widgetConfig.formValue.aggregation : '',
23670
+ aggregation: this._widgetConfig ? this._widgetConfig.formValue.aggregation : 'sysobject.created',
23646
23671
  histogramType: 'standard',
23647
23672
  size: '',
23648
23673
  });