@eo-sdk/client 9.3.0-rc.1 → 9.3.0-rc.2
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.
- package/app/eo-framework/actions/actions/delete-action/delete/delete.component.d.ts +2 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +4 -3
- package/app/eo-framework-core/search/app-search.service.d.ts +5 -0
- package/assets/_default/i18n/de.json +6 -1
- package/assets/_default/i18n/en.json +6 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +71 -61
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +40 -10
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/actions/actions/delete-action/delete/delete.component.js +14 -6
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +10 -4
- package/esm2015/app/eo-framework/ui/signature-tab/signature-tab.component.js +3 -3
- package/esm2015/app/eo-framework-core/search/app-search.service.js +15 -1
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +6 -2
- package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +64 -62
- package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +5 -2
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +71 -62
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +38 -10
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +2 -1
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +3 -1
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -620,6 +620,21 @@
|
|
|
620
620
|
this.querySource.next(this.query);
|
|
621
621
|
this.aggregate(filter.property);
|
|
622
622
|
};
|
|
623
|
+
/**
|
|
624
|
+
* Toggles created filters and aggregates them together.
|
|
625
|
+
* @param filters - the filters to be toggled
|
|
626
|
+
*/
|
|
627
|
+
AppSearchService.prototype.toggleQueryFilters = function (filters, override) {
|
|
628
|
+
var _this = this;
|
|
629
|
+
var baseParam = '';
|
|
630
|
+
filters.forEach(function (filter) {
|
|
631
|
+
_this.query.toggleFilter(filter, override);
|
|
632
|
+
_this.query.__updateCause = i1.SearchQuery.UPDATE_CAUSE.TOGGLED_FILTER;
|
|
633
|
+
baseParam += filter.property + ' ';
|
|
634
|
+
});
|
|
635
|
+
this.querySource.next(this.query);
|
|
636
|
+
this.aggregate(baseParam.trim());
|
|
637
|
+
};
|
|
623
638
|
/**
|
|
624
639
|
* Adds a filter to the query.
|
|
625
640
|
* @param filter - the filter to be added
|
|
@@ -4557,8 +4572,8 @@
|
|
|
4557
4572
|
SignatureTabComponent.decorators = [
|
|
4558
4573
|
{ type: i0.Component, args: [{
|
|
4559
4574
|
selector: 'eo-signature-tab',
|
|
4560
|
-
template: "<ng-container *ngIf=\"dmsObject.data.yuvsigrequester_meta\">\n
|
|
4561
|
-
styles: [":host{display:block;height:100%;overflow-y:auto;padding:var(--app-pane-padding)}:host .row{
|
|
4575
|
+
template: "<ng-container *ngIf=\"dmsObject.data.yuvsigrequester_meta\">\n\n <section class=\"info\">\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.date'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigreqdate\">{{dmsObject.data.yuvsigreqdate | localeDate:\n 'eoShortDate'}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.requester'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigrequester_meta.title\">\n {{dmsObject.data.yuvsigrequester_meta.title}} </div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.subject'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigemailsubject\">{{dmsObject.data.yuvsigemailsubject}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.body'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigemailbody\">{{dmsObject.data.yuvsigemailbody}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.status'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigstatus_meta.label\">\n {{dmsObject.data.yuvsigstatus_meta.label}}</div>\n </div>\n <div class=\"row\" *ngIf=\"dmsObject.data.yuvsigerror\">\n <div class=\"label\">{{'eo.object.signature-tab.label.error'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigerror.length\">{{dmsObject.data.yuvsigerror}}</div>\n </div>\n <div class=\"row\" *ngIf=\"isUserAdmin()\">\n <div class=\"label\">{{'eo.object.signature-tab.label.signingPlatform'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigplatform\">{{dmsObject.data.yuvsigplatform}}</div>\n </div>\n <div class=\"row\" *ngIf=\"isUserAdmin()\">\n <div class=\"label\">{{'eo.object.signature-tab.label.signingPlatformId'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigplatformid\">{{dmsObject.data.yuvsigplatformid}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.signers'|translate}}</div>\n <div class=\"value\">\n <div class=\"signer-container\" *ngFor=\"let s of dmsObject.data.yuvsigners\">\n <span class=\"circle\" [title]=\"'eo.object.signature-tab.order.tooltip' | translate\">{{s.yuvsignerorder}}</span>\n <div class=\"signer\">\n <div class=\"date\" *ngIf=\"s.yuvsignerdate\">{{s.yuvsignerdate | localeDate: 'eoShort'}}</div>\n <div class=\"name\" *ngIf=\"s.yuvsignername\">{{s.yuvsignername}}</div>\n <div class=\"email\" *ngIf=\"s.yuvsigneremail\">{{s.yuvsigneremail}}</div>\n <div class=\"state {{s.yuvsignerstatus}}\"><span *ngIf=\"s.yuvsignerstatus_meta?.label\">{{s.yuvsignerstatus_meta.label}}</span></div>\n <div class=\"reason\" *ngIf=\"s.yuvsignercomment\">{{s.yuvsignercomment}}</div>\n </div>\n\n </div>\n </div>\n </div>\n </section>\n</ng-container>",
|
|
4576
|
+
styles: [":host{display:block;height:100%;overflow-y:auto;padding:var(--app-pane-padding)}:host .row{display:flex;line-height:1.5em;margin:0 calc(var(--app-pane-padding)/-4) 2px}:host .row .label,:host .row .value{margin:calc(var(--app-pane-padding)/4)}:host .row .label{border-radius:2px;color:var(--color-white);flex-basis:30%;flex-shrink:0;margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/4);white-space:normal}:host .row .circle,:host .row .label{background-color:var(--color-primary-3);display:inline-block}:host .row .circle{align-self:center;border-radius:50%;color:#fff;height:2em;line-height:1.8em;text-align:center;width:2em}:host .row .signer-container{--signer-border-radius:4px;--signer-icon-color:var(--text-color-hint);--signer-row-gap:calc(var(--app-pane-padding)/2);background-color:var(--panel-background);border-radius:0 var(--signer-border-radius) var(--signer-border-radius) 0;display:flex;margin-bottom:calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/2)}:host .row .signer-container .signer{-moz-column-gap:var(--app-pane-padding);column-gap:var(--app-pane-padding);display:grid;grid-template-areas:\"name name\" \"email email\" \"state date\" \"reason reason\";grid-template-columns:1fr auto;grid-template-rows:auto auto auto auto;margin-left:5px}:host .row .signer-container .signed{--signer-icon-color:var(--color-success)}:host .row .signer-container .cancelled,:host .row .signer-container .expired,:host .row .signer-container .revised{--signer-icon-color:var(--color-warning)}:host .row .signer-container .error{--signer-icon-color:var(--color-error)}:host .row .signer-container .date{-ms-grid-column:3;-ms-grid-row:3;align-self:center;color:var(--text-color-caption);grid-area:date;margin-top:var(--signer-row-gap)}:host .row .signer-container .name{-ms-grid-column:1;-ms-grid-column-span:3;-ms-grid-row:1;font-weight:var(--font-weight-bold);grid-area:name}:host .row .signer-container .email{-ms-grid-column:1;-ms-grid-column-span:3;-ms-grid-row:2;grid-area:email}:host .row .signer-container .state{-ms-grid-column:1;-ms-grid-row:3;grid-area:state;margin-top:var(--signer-row-gap)}:host .row .signer-container .state span{background-color:var(--signer-icon-color);border-radius:4px;color:#fff;display:inline-block;padding:2px 4px 1px}:host .row .signer-container .reason{-ms-grid-column:1;-ms-grid-column-span:3;-ms-grid-row:4;grid-area:reason;margin-top:var(--signer-row-gap)}"]
|
|
4562
4577
|
},] }
|
|
4563
4578
|
];
|
|
4564
4579
|
SignatureTabComponent.ctorParameters = function () { return [
|
|
@@ -5366,7 +5381,13 @@
|
|
|
5366
5381
|
};
|
|
5367
5382
|
AppSearchComponent.prototype.toggleFilter = function (filterType, operator, key, selected) {
|
|
5368
5383
|
var filter = this.buildFilter(filterType, operator, key);
|
|
5369
|
-
this.
|
|
5384
|
+
if (filterType === this.PARAMS.FILESIZE) {
|
|
5385
|
+
var folderFilter = this.buildFilter('folder', 'eq', false);
|
|
5386
|
+
this.appSearchService.toggleQueryFilters([filter, folderFilter], !selected);
|
|
5387
|
+
}
|
|
5388
|
+
else {
|
|
5389
|
+
this.appSearchService.toggleQueryFilter(filter, !selected);
|
|
5390
|
+
}
|
|
5370
5391
|
};
|
|
5371
5392
|
AppSearchComponent.prototype.isEmpty = function (value) {
|
|
5372
5393
|
return (((value instanceof i1.RangeValue || value instanceof i1.SearchFilter) &&
|
|
@@ -17144,6 +17165,7 @@
|
|
|
17144
17165
|
this.deleting = false;
|
|
17145
17166
|
this.folder = '';
|
|
17146
17167
|
this.count = '...';
|
|
17168
|
+
this.showForceDeleteDialog = false;
|
|
17147
17169
|
this.finished = new i0.EventEmitter();
|
|
17148
17170
|
this.canceled = new i0.EventEmitter();
|
|
17149
17171
|
this.datePipe = new LocaleDatePipe(translate);
|
|
@@ -17153,12 +17175,14 @@
|
|
|
17153
17175
|
var disabledStates = ['/result'];
|
|
17154
17176
|
return !disabledStates.some(function (s) { return _this.router.url.startsWith(s); });
|
|
17155
17177
|
};
|
|
17156
|
-
DeleteComponent.prototype.deleteDmsObject = function (dmsObject) {
|
|
17178
|
+
DeleteComponent.prototype.deleteDmsObject = function (dmsObject, force) {
|
|
17157
17179
|
var _this = this;
|
|
17180
|
+
if (force === void 0) { force = false; }
|
|
17158
17181
|
var hardDelete = !this.capabilitiesService.hasCapability('recyclebin');
|
|
17159
17182
|
this.dmsService
|
|
17160
|
-
.deleteDmsObject(dmsObject.id, dmsObject.type.name, hardDelete)
|
|
17183
|
+
.deleteDmsObject(dmsObject.id, dmsObject.type.name, hardDelete, force)
|
|
17161
17184
|
.subscribe(function () {
|
|
17185
|
+
_this.showForceDeleteDialog = false;
|
|
17162
17186
|
_this.toast.success(_this.translate.instant('eo.action.delete.dms.object.done.title'), _this.translate.instant('eo.action.delete.dms.object.done.message'));
|
|
17163
17187
|
_this.eventService.trigger(i1.EnaioEvent.DMS_OBJECT_DELETED, _this.selection[0]);
|
|
17164
17188
|
if ((dmsObject.isContextFolder || !dmsObject.contextFolder) && _this.isAllowedState()) {
|
|
@@ -17168,16 +17192,22 @@
|
|
|
17168
17192
|
}, function (error) {
|
|
17169
17193
|
switch (error.status) {
|
|
17170
17194
|
case 403:
|
|
17195
|
+
if (error.error.key === 'DMS_DOCUMENT_IN_PROCESS_FILE') {
|
|
17196
|
+
_this.showForceDeleteDialog = true;
|
|
17197
|
+
break;
|
|
17198
|
+
}
|
|
17171
17199
|
_this.toast.error(_this.translate.instant('eo.action.delete.dms.object.error.403'));
|
|
17200
|
+
_this.finished.emit();
|
|
17172
17201
|
break;
|
|
17173
17202
|
case 409:
|
|
17174
17203
|
_this.toast.error(_this.translate.instant('eo.action.delete.dms.object.error.409'));
|
|
17204
|
+
_this.finished.emit();
|
|
17175
17205
|
break;
|
|
17176
17206
|
case 410:
|
|
17177
17207
|
_this.toast.error(_this.translate.instant('eo.action.delete.dms.object.error.410'));
|
|
17208
|
+
_this.finished.emit();
|
|
17178
17209
|
break;
|
|
17179
17210
|
}
|
|
17180
|
-
_this.finished.emit();
|
|
17181
17211
|
});
|
|
17182
17212
|
};
|
|
17183
17213
|
DeleteComponent.prototype.run = function () {
|
|
@@ -17216,8 +17246,8 @@
|
|
|
17216
17246
|
DeleteComponent.decorators = [
|
|
17217
17247
|
{ type: i0.Component, args: [{
|
|
17218
17248
|
selector: 'eo-delete',
|
|
17219
|
-
template: "<div class=\"eo-delete\" eoTrapFocus>\n\n <h2 *ngIf=\"!folder && !retentionTime\" translate [translateParams]=\"{item: selection[0].title}\">eo.action.delete.dms.object.confirm.message</h2>\n <h2 *ngIf=\"folder && !retentionTime\" translate [translateParams]=\"{folder: folder, count: count}\">eo.action.delete.dms.object.confirm.context.folder.title</h2>\n <h2 *ngIf=\"retentionTime\" translate [translateParams]=\"{retentionTime: retentionTime}\">eo.action.delete.dms.object.error.retention.title</h2>\n\n <div *ngIf=\"!deleting\">\n <div class=\"form-buttons\">\n <button (click)=\"cancel()\" translate>eo.checkout.cancel</button>\n <button *ngIf=\"!retentionTime\" class=\"primary\" (click)=\"run()\">OK</button>\n </div>\n </div>\n\n <div class=\"spinner-container\" *ngIf=\"deleting\">\n <eo-loading-spinner></eo-loading-spinner>\n </div>\n</div>\n",
|
|
17220
|
-
styles: [".eo-delete{display:flex;flex-flow:column;justify-content:center;margin:var(--app-pane-padding)}.eo-delete h2{font-size:var(--font-subhead);font-weight:var(--font-weight-light)}.eo-delete .form-buttons{padding:5px 0;text-align:right}.eo-delete .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding)/2)}.eo-delete .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding)/2);margin-right:0}.eo-delete .spinner-container{align-items:center;display:flex;justify-content:center}"]
|
|
17249
|
+
template: "<div class=\"eo-delete\" eoTrapFocus>\n\n <h2 *ngIf=\"!folder && !retentionTime\" translate [translateParams]=\"{item: selection[0].title}\">eo.action.delete.dms.object.confirm.message</h2>\n <h2 *ngIf=\"folder && !retentionTime\" translate [translateParams]=\"{folder: folder, count: count}\">eo.action.delete.dms.object.confirm.context.folder.title</h2>\n <h2 *ngIf=\"retentionTime\" translate [translateParams]=\"{retentionTime: retentionTime}\">eo.action.delete.dms.object.error.retention.title</h2>\n\n <div *ngIf=\"!deleting\">\n <div class=\"form-buttons\">\n <button (click)=\"cancel()\" translate>eo.checkout.cancel</button>\n <button *ngIf=\"!retentionTime\" class=\"primary\" (click)=\"run()\">OK</button>\n </div>\n </div>\n\n <div class=\"spinner-container\" *ngIf=\"deleting\">\n <eo-loading-spinner></eo-loading-spinner>\n </div>\n</div>\n\n<eo-dialog [title]=\"'eo.action.delete.dms.dialog.title' | translate\"\n [(visible)]=\"showForceDeleteDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'force-delete__dialog'\">\n\n <div>{{'eo.action.delete.dms.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showForceDeleteDialog = false\"\n translate>eo.action.delete.dms.dialog.cancel</button>\n <button type=\"button\" (click)=\"deleteDmsObject(selection[0], true)\" class=\"button primary\"\n translate>eo.action.delete.dms.dialog.delete</button>\n </div>\n</eo-dialog>\n\n\n",
|
|
17250
|
+
styles: [".eo-delete{display:flex;flex-flow:column;justify-content:center;margin:var(--app-pane-padding)}.eo-delete h2{font-size:var(--font-subhead);font-weight:var(--font-weight-light)}.eo-delete .form-buttons{padding:5px 0;text-align:right}.eo-delete .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding)/2)}.eo-delete .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding)/2);margin-right:0}.eo-delete .spinner-container{align-items:center;display:flex;justify-content:center}::ng-deep .force-delete__dialog{min-height:unset!important;padding:8px}::ng-deep .force-delete__dialog--header{background:#fff!important;color:rgba(var(--color-black-rgb),.54)!important;font-size:1.17em!important;font-weight:400!important;margin:0;padding:0 0 1em!important}"]
|
|
17221
17251
|
},] }
|
|
17222
17252
|
];
|
|
17223
17253
|
DeleteComponent.ctorParameters = function () { return [
|
|
@@ -25091,10 +25121,10 @@
|
|
|
25091
25121
|
this.backend = backend;
|
|
25092
25122
|
this.userService = userService;
|
|
25093
25123
|
this.config = config;
|
|
25094
|
-
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": "11.2.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/common", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/core", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/forms", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/router", "version": "11.2.0", "license": "MIT" }, { "name": "@eo-sdk/core", "version": "9.3.0-rc.
|
|
25124
|
+
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": "11.2.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/common", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/core", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/forms", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/router", "version": "11.2.0", "license": "MIT" }, { "name": "@eo-sdk/core", "version": "9.3.0-rc.2", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "11.1.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "13.0.0", "license": "MIT" }, { "name": "@types/lodash", "version": "4.14.88", "license": "MIT" }, { "name": "core-js", "version": "2.5.7", "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": "keyboardevent-key-polyfill", "version": "1.1.0", "license": "CC0-1.0" }, { "name": "keycode-js", "version": "0.0.4", "license": "MIT" }, { "name": "mobile-drag-drop", "version": "2.2.0", "license": "MIT" }, { "name": "moment", "version": "2.22.2", "license": "MIT" }, { "name": "ngx-toastr", "version": "13.2.0", "license": "MIT" }, { "name": "primeicons", "version": "1.0.0-beta.6", "license": "MIT" }, { "name": "primeng", "version": "7.0.1", "license": "MIT" }, { "name": "reflect-metadata", "version": "0.1.10", "license": "Apache-2.0" }, { "name": "rxjs", "version": "6.6.3", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.1.0", "license": "0BSD" }, { "name": "zone.js", "version": "0.10.3", "license": "MIT" }];
|
|
25095
25125
|
this.ctrl = {
|
|
25096
25126
|
componentName: 'yuuvis® RAD client',
|
|
25097
|
-
componentVersion: '9.3.0-rc.
|
|
25127
|
+
componentVersion: '9.3.0-rc.2',
|
|
25098
25128
|
productName: '',
|
|
25099
25129
|
productVersion: ''
|
|
25100
25130
|
};
|