ngx-rs-ant 1.8.4 → 1.8.6
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/box-container/PluginManager.d.ts +1 -1
- package/box-container/box-container.component.d.ts +1 -4
- package/box-container/box-item/item-config/item-config.component.d.ts +2 -2
- package/data-grid/data-grid.component.d.ts +0 -1
- package/data-grid/data-grid.service.d.ts +4 -1
- package/esm2020/box-container/PluginManager.mjs +28 -12
- package/esm2020/box-container/box-container.component.mjs +2 -8
- package/esm2020/box-container/box-item/item-config/item-config.component.mjs +4 -4
- package/esm2020/data-grid/cell-component-template/cell-component-template.component.mjs +5 -2
- package/esm2020/data-grid/data-grid.component.mjs +5 -21
- package/esm2020/data-grid/data-grid.factory.mjs +2 -27
- package/esm2020/data-grid/data-grid.service.mjs +15 -4
- package/esm2020/form/form.component.mjs +6 -4
- package/esm2020/types/component/form-item-component-base.mjs +1 -1
- package/esm2020/types/config/form-item-config-base.mjs +1 -1
- package/fesm2015/ngx-rs-ant.mjs +246 -263
- package/fesm2015/ngx-rs-ant.mjs.map +1 -1
- package/fesm2020/ngx-rs-ant.mjs +237 -254
- package/fesm2020/ngx-rs-ant.mjs.map +1 -1
- package/package.json +1 -1
- package/types/component/form-item-component-base.d.ts +12 -0
- package/types/config/form-item-config-base.d.ts +8 -0
package/fesm2020/ngx-rs-ant.mjs
CHANGED
|
@@ -2,9 +2,10 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component, Input, HostBinding, EventEmitter, Output, HostListener, ViewContainerRef, ViewChild, Directive, ViewChildren, NgModule, Injectable, ContentChild } from '@angular/core';
|
|
3
3
|
import { PluginFactory } from 'coast-plugin-register';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
|
-
import {
|
|
6
|
-
import { Subject, ReplaySubject, Subscription, map,
|
|
5
|
+
import { formatDate, CommonModule } from '@angular/common';
|
|
6
|
+
import { firstValueFrom, of, Subject, ReplaySubject, Subscription, map, lastValueFrom, debounceTime, interval } from 'rxjs';
|
|
7
7
|
import * as i2 from 'devextreme-angular/ui/number-box';
|
|
8
|
+
import notify from 'devextreme/ui/notify';
|
|
8
9
|
import * as i2$1 from 'devextreme-angular/ui/draggable';
|
|
9
10
|
import { DevExtremeModule, DxValidationGroupComponent, DxDataGridComponent } from 'devextreme-angular';
|
|
10
11
|
import BpmnModeler from 'camunda-bpmn-js/lib/camunda-platform/Modeler';
|
|
@@ -13,7 +14,6 @@ import { isLabel } from 'diagram-js/lib/util/ModelUtil';
|
|
|
13
14
|
import * as i3 from 'devextreme-angular/ui/button';
|
|
14
15
|
import Viewer from 'camunda-bpmn-js/lib/camunda-platform/NavigatedViewer';
|
|
15
16
|
import * as i1$1 from '@angular/common/http';
|
|
16
|
-
import notify from 'devextreme/ui/notify';
|
|
17
17
|
import CustomStore from 'devextreme/data/custom_store';
|
|
18
18
|
import * as i2$2 from 'devextreme-angular/core';
|
|
19
19
|
import * as i5 from 'devextreme-angular/ui/data-grid';
|
|
@@ -308,6 +308,183 @@ class FormItemComponentBase extends ComponentBase {
|
|
|
308
308
|
class ModalComponentBase extends ComponentBase {
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
+
function notify_error(message) {
|
|
312
|
+
_notify(message, 12000, 'warning');
|
|
313
|
+
}
|
|
314
|
+
function notify_warning(message) {
|
|
315
|
+
_notify(message, 8000, 'warning');
|
|
316
|
+
}
|
|
317
|
+
function notify_success(message) {
|
|
318
|
+
_notify(message, 4000, 'success');
|
|
319
|
+
}
|
|
320
|
+
function _notify(message, time, type) {
|
|
321
|
+
notify({
|
|
322
|
+
displayTime: time,
|
|
323
|
+
message,
|
|
324
|
+
type: type,
|
|
325
|
+
closeOnSwipe: false,
|
|
326
|
+
minWidth: 200,
|
|
327
|
+
maxWidth: 500,
|
|
328
|
+
wrapperAttr: { class: 'global-toast-message' }
|
|
329
|
+
}, {
|
|
330
|
+
direction: 'up-push',
|
|
331
|
+
position: 'bottom right'
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
function format_date(date, locale) {
|
|
335
|
+
return formatDate(date, 'yyyy/MM/dd', locale, 'GMT+8');
|
|
336
|
+
}
|
|
337
|
+
function format_datetime(date, locale) {
|
|
338
|
+
return formatDate(date, 'yyyy/MM/dd HH:mm:ss', locale, 'GMT+8');
|
|
339
|
+
}
|
|
340
|
+
function localeSortMethod(value1, value2) {
|
|
341
|
+
return value1.localeCompare(value2);
|
|
342
|
+
}
|
|
343
|
+
function file_type_icon(name) {
|
|
344
|
+
const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
|
|
345
|
+
switch (type) {
|
|
346
|
+
case 'doc':
|
|
347
|
+
case 'docx':
|
|
348
|
+
return 'word';
|
|
349
|
+
case 'xls':
|
|
350
|
+
case 'xlsx':
|
|
351
|
+
case 'csv':
|
|
352
|
+
return 'excel';
|
|
353
|
+
case 'ppt':
|
|
354
|
+
case 'pptx':
|
|
355
|
+
return 'ppt';
|
|
356
|
+
case 'pdf':
|
|
357
|
+
return 'pdf';
|
|
358
|
+
case 'txt':
|
|
359
|
+
case 'xml':
|
|
360
|
+
case 'json':
|
|
361
|
+
case 'js':
|
|
362
|
+
return 'text';
|
|
363
|
+
case 'png':
|
|
364
|
+
case 'jpg':
|
|
365
|
+
case 'jpeg':
|
|
366
|
+
case 'gif':
|
|
367
|
+
case 'bmp':
|
|
368
|
+
return 'image';
|
|
369
|
+
case 'zip':
|
|
370
|
+
case 'rar':
|
|
371
|
+
case '7z':
|
|
372
|
+
case 'jar':
|
|
373
|
+
return 'zip';
|
|
374
|
+
default:
|
|
375
|
+
return 'unknown';
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
function support_preview_ext() {
|
|
379
|
+
return ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp', 'doc', 'docx', 'txt', 'xml', 'json', 'js', 'xls', 'xlsx', 'csv', 'ppt', 'pptx'];
|
|
380
|
+
}
|
|
381
|
+
function format_file_size(size) {
|
|
382
|
+
const labels = ['b', 'Kb', 'Mb', 'Gb'];
|
|
383
|
+
const count = labels.length - 1;
|
|
384
|
+
let i = 0;
|
|
385
|
+
while (i < count && size >= 1024) {
|
|
386
|
+
size /= 1024;
|
|
387
|
+
i++;
|
|
388
|
+
}
|
|
389
|
+
return Math.round(size * 100) / 100 + " " + labels[i];
|
|
390
|
+
}
|
|
391
|
+
function filename_from_disposition(disposition) {
|
|
392
|
+
const filenamePair = disposition.split(';').filter(str => /^filename=/.test(str.trim())).pop();
|
|
393
|
+
if (filenamePair) {
|
|
394
|
+
let str = filenamePair.trim();
|
|
395
|
+
str = str.split('=')[1];
|
|
396
|
+
str = str.replace(/['"]/g, '');
|
|
397
|
+
return decodeURIComponent(str);
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
return null;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
function download_file(blob, filename, callback) {
|
|
404
|
+
const url = window.webkitURL.createObjectURL(blob);
|
|
405
|
+
const a = document.createElement('a');
|
|
406
|
+
document.body.appendChild(a);
|
|
407
|
+
a.setAttribute('style', 'display:none');
|
|
408
|
+
a.setAttribute('href', url);
|
|
409
|
+
a.setAttribute('download', decodeURIComponent(filename));
|
|
410
|
+
a.click();
|
|
411
|
+
setTimeout(() => {
|
|
412
|
+
if (callback) {
|
|
413
|
+
callback();
|
|
414
|
+
}
|
|
415
|
+
a.remove();
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
async function validate(validator) {
|
|
419
|
+
return new Promise(resolve => {
|
|
420
|
+
if (!validator) {
|
|
421
|
+
resolve(true);
|
|
422
|
+
}
|
|
423
|
+
const validateResult = validator.instance.validate();
|
|
424
|
+
if (!validateResult.isValid) {
|
|
425
|
+
resolve(false);
|
|
426
|
+
}
|
|
427
|
+
if (validateResult.status === 'pending') {
|
|
428
|
+
validateResult.complete?.then((result) => {
|
|
429
|
+
if (result.isValid) {
|
|
430
|
+
resolve(true);
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
resolve(false);
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
resolve(true);
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
async function validate_group(validationGroup) {
|
|
443
|
+
if (!validationGroup) {
|
|
444
|
+
return firstValueFrom(of(true));
|
|
445
|
+
}
|
|
446
|
+
const top = validationGroup.element.nativeElement;
|
|
447
|
+
let sourceNode;
|
|
448
|
+
const targetClassName = 'dx-field';
|
|
449
|
+
const findTargetNode = (node) => {
|
|
450
|
+
sourceNode = node;
|
|
451
|
+
while (true) {
|
|
452
|
+
if (node.classList.contains(targetClassName)) {
|
|
453
|
+
return node;
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
node = node.parentElement;
|
|
457
|
+
if (node === top) {
|
|
458
|
+
return sourceNode;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
return new Promise(resolve => {
|
|
464
|
+
const validateResult = validationGroup.instance.validate();
|
|
465
|
+
if (!validateResult.isValid) {
|
|
466
|
+
const brokenElement = (validateResult.brokenRules?.[0]).validator.element();
|
|
467
|
+
findTargetNode(brokenElement).scrollIntoView();
|
|
468
|
+
resolve(false);
|
|
469
|
+
}
|
|
470
|
+
if (validateResult.status === 'pending') {
|
|
471
|
+
validateResult.complete?.then((result) => {
|
|
472
|
+
if (result.isValid) {
|
|
473
|
+
resolve(true);
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
const brokenElement = (result.brokenRules?.[0]).validator.element();
|
|
477
|
+
findTargetNode(brokenElement).scrollIntoView();
|
|
478
|
+
resolve(false);
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
resolve(true);
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
|
|
311
488
|
class PluginManager {
|
|
312
489
|
static createComponent(boxItem, index, style, config) {
|
|
313
490
|
let plugin = PluginFactory.get(config.name);
|
|
@@ -326,27 +503,36 @@ class PluginManager {
|
|
|
326
503
|
Object.assign(instance, config.pluginConfig);
|
|
327
504
|
if (PluginFactory.hasType(plugin, 'page')) {
|
|
328
505
|
if (!(instance instanceof PageItemComponentBase)) {
|
|
329
|
-
console.
|
|
506
|
+
console.error('page item component need extending PageItemComponentBase, name: ' + config.name);
|
|
507
|
+
notify_error('加载页面组件失败:' + config.name);
|
|
508
|
+
return;
|
|
330
509
|
}
|
|
331
510
|
instance.editMode = boxItem.boxContainer.editMode;
|
|
332
|
-
instance.tabId = boxItem.boxContainer.
|
|
511
|
+
instance.tabId = boxItem.boxContainer.params?.__tabId;
|
|
333
512
|
}
|
|
334
513
|
if (PluginFactory.hasType(plugin, 'form')) {
|
|
335
514
|
if (!(instance instanceof FormItemComponentBase)) {
|
|
336
|
-
console.
|
|
515
|
+
console.error('form item component need extending FormItemComponentBase, name: ' + config.name);
|
|
516
|
+
notify_error('加载表单组件失败:' + config.name);
|
|
517
|
+
return;
|
|
337
518
|
}
|
|
338
519
|
instance.editMode = boxItem.boxContainer.editMode;
|
|
339
|
-
instance.
|
|
340
|
-
instance.
|
|
520
|
+
instance.tenant = boxItem.boxContainer.params?.__form.tenant;
|
|
521
|
+
instance.className = boxItem.boxContainer.params?.__form.className;
|
|
522
|
+
instance.oid = boxItem.boxContainer.params?.__form.oid;
|
|
523
|
+
instance.model = boxItem.boxContainer.params?.__model;
|
|
524
|
+
instance.opener = boxItem.boxContainer.params?.__opener;
|
|
341
525
|
if (boxItem.boxContainer.readonly) {
|
|
342
526
|
instance.readonly = true;
|
|
343
527
|
}
|
|
344
528
|
}
|
|
345
529
|
if (PluginFactory.hasType(plugin, 'modal')) {
|
|
346
530
|
if (!(instance instanceof ModalComponentBase)) {
|
|
347
|
-
console.
|
|
531
|
+
console.error('modal component need extending ModalComponentBase, name: ' + config.name);
|
|
532
|
+
notify_error('加载模窗组件失败:' + config.name);
|
|
533
|
+
return;
|
|
348
534
|
}
|
|
349
|
-
instance.opener = boxItem.boxContainer.
|
|
535
|
+
instance.opener = boxItem.boxContainer.params?.__opener;
|
|
350
536
|
}
|
|
351
537
|
instance.params = boxItem.boxContainer.params;
|
|
352
538
|
instance.tabViewContainerRef = boxItem.boxContainer.tabViewContainerRef;
|
|
@@ -454,7 +640,7 @@ class PluginManager {
|
|
|
454
640
|
});
|
|
455
641
|
return activeComponentRef;
|
|
456
642
|
}
|
|
457
|
-
static resetItemConfig(itemConfigContainerRef, item,
|
|
643
|
+
static resetItemConfig(itemConfigContainerRef, item, params) {
|
|
458
644
|
itemConfigContainerRef.clear();
|
|
459
645
|
if (!item) {
|
|
460
646
|
itemConfigContainerRef.createComponent(ConfigBlankComponent);
|
|
@@ -467,14 +653,20 @@ class PluginManager {
|
|
|
467
653
|
const instance = componentRef.instance;
|
|
468
654
|
if (PluginFactory.hasType(plugin, 'page')) {
|
|
469
655
|
if (!(instance instanceof PageItemConfigBase)) {
|
|
470
|
-
console.
|
|
656
|
+
console.error('page item component config need extending PageItemConfigBase, name: ' + plugin.name);
|
|
657
|
+
notify_error('加载页面组件配置失败:' + plugin.name);
|
|
658
|
+
return;
|
|
471
659
|
}
|
|
472
660
|
}
|
|
473
661
|
if (PluginFactory.hasType(plugin, 'form')) {
|
|
474
662
|
if (!(instance instanceof FormItemConfigBase)) {
|
|
475
|
-
console.
|
|
663
|
+
console.error('form item component config need extending FormItemConfigBase, name: ' + plugin.name);
|
|
664
|
+
notify_error('加载表单组件配置失败:' + plugin.name);
|
|
665
|
+
return;
|
|
476
666
|
}
|
|
477
|
-
instance.
|
|
667
|
+
instance.tenant = params.tenant;
|
|
668
|
+
instance.className = params.className;
|
|
669
|
+
instance.fieldTree = params.fieldTree;
|
|
478
670
|
}
|
|
479
671
|
instance.config = item.config.pluginConfig;
|
|
480
672
|
instance.configChange.subscribe((reload) => {
|
|
@@ -518,18 +710,18 @@ class ItemConfigComponent {
|
|
|
518
710
|
if (data.id !== this.id) {
|
|
519
711
|
return;
|
|
520
712
|
}
|
|
521
|
-
PluginManager.resetItemConfig(this.itemConfigContainerRef, data.item, this.
|
|
713
|
+
PluginManager.resetItemConfig(this.itemConfigContainerRef, data.item, this.params);
|
|
522
714
|
});
|
|
523
715
|
}
|
|
524
716
|
}
|
|
525
717
|
ItemConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ItemConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
526
|
-
ItemConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ItemConfigComponent, selector: "rs-item-config", inputs: { id: "id",
|
|
718
|
+
ItemConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ItemConfigComponent, selector: "rs-item-config", inputs: { id: "id", params: "params" }, viewQueries: [{ propertyName: "itemConfigContainerRef", first: true, predicate: ["itemConfigContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #itemConfigContainerRef></ng-container>\n", styles: [""] });
|
|
527
719
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ItemConfigComponent, decorators: [{
|
|
528
720
|
type: Component,
|
|
529
721
|
args: [{ selector: 'rs-item-config', template: "<ng-container #itemConfigContainerRef></ng-container>\n" }]
|
|
530
722
|
}], propDecorators: { id: [{
|
|
531
723
|
type: Input
|
|
532
|
-
}],
|
|
724
|
+
}], params: [{
|
|
533
725
|
type: Input
|
|
534
726
|
}], itemConfigContainerRef: [{
|
|
535
727
|
type: ViewChild,
|
|
@@ -903,7 +1095,7 @@ class BoxContainerComponent {
|
|
|
903
1095
|
}
|
|
904
1096
|
}
|
|
905
1097
|
BoxContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoxContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
906
|
-
BoxContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: BoxContainerComponent, selector: "rs-box-container", inputs: { id: "id", editMode: "editMode", config: "config",
|
|
1098
|
+
BoxContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: BoxContainerComponent, selector: "rs-box-container", inputs: { id: "id", editMode: "editMode", config: "config", params: "params", readonly: "readonly", tabViewContainerRef: "tabViewContainerRef" }, viewQueries: [{ propertyName: "boxContainerContent", first: true, predicate: ["boxContainerContent"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #boxContainerContent></ng-container>\n", styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap}\n"] });
|
|
907
1099
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoxContainerComponent, decorators: [{
|
|
908
1100
|
type: Component,
|
|
909
1101
|
args: [{ selector: 'rs-box-container', template: "<ng-container #boxContainerContent></ng-container>\n", styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap}\n"] }]
|
|
@@ -913,16 +1105,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
913
1105
|
type: Input
|
|
914
1106
|
}], config: [{
|
|
915
1107
|
type: Input
|
|
916
|
-
}], model: [{
|
|
917
|
-
type: Input
|
|
918
|
-
}], opener: [{
|
|
919
|
-
type: Input
|
|
920
1108
|
}], params: [{
|
|
921
1109
|
type: Input
|
|
922
1110
|
}], readonly: [{
|
|
923
1111
|
type: Input
|
|
924
|
-
}], tabId: [{
|
|
925
|
-
type: Input
|
|
926
1112
|
}], tabViewContainerRef: [{
|
|
927
1113
|
type: Input
|
|
928
1114
|
}], boxContainerContent: [{
|
|
@@ -1757,9 +1943,20 @@ class DataGridService {
|
|
|
1757
1943
|
};
|
|
1758
1944
|
}));
|
|
1759
1945
|
}
|
|
1760
|
-
getConstraintEntries(name) {
|
|
1761
|
-
return this.http.get('api/metadata/constraint/' + name
|
|
1762
|
-
|
|
1946
|
+
getConstraintEntries(tenant, name) {
|
|
1947
|
+
return this.http.get('api/metadata/constraint/' + name, {
|
|
1948
|
+
params: {
|
|
1949
|
+
tenant
|
|
1950
|
+
}
|
|
1951
|
+
}).pipe(map(response => {
|
|
1952
|
+
const entries = [];
|
|
1953
|
+
for (let entry of response.data) {
|
|
1954
|
+
entries.push({
|
|
1955
|
+
store: entry.store,
|
|
1956
|
+
display: entry.enabled ? entry.display : entry.display + '(已禁用)'
|
|
1957
|
+
});
|
|
1958
|
+
}
|
|
1959
|
+
return entries;
|
|
1763
1960
|
}));
|
|
1764
1961
|
}
|
|
1765
1962
|
getUserColumnDataSource(tenant, className, view, field) {
|
|
@@ -1863,183 +2060,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1863
2060
|
}]
|
|
1864
2061
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
1865
2062
|
|
|
1866
|
-
function notify_error(message) {
|
|
1867
|
-
_notify(message, 12000, 'warning');
|
|
1868
|
-
}
|
|
1869
|
-
function notify_warning(message) {
|
|
1870
|
-
_notify(message, 8000, 'warning');
|
|
1871
|
-
}
|
|
1872
|
-
function notify_success(message) {
|
|
1873
|
-
_notify(message, 4000, 'success');
|
|
1874
|
-
}
|
|
1875
|
-
function _notify(message, time, type) {
|
|
1876
|
-
notify({
|
|
1877
|
-
displayTime: time,
|
|
1878
|
-
message,
|
|
1879
|
-
type: type,
|
|
1880
|
-
closeOnSwipe: false,
|
|
1881
|
-
minWidth: 200,
|
|
1882
|
-
maxWidth: 500,
|
|
1883
|
-
wrapperAttr: { class: 'global-toast-message' }
|
|
1884
|
-
}, {
|
|
1885
|
-
direction: 'up-push',
|
|
1886
|
-
position: 'bottom right'
|
|
1887
|
-
});
|
|
1888
|
-
}
|
|
1889
|
-
function format_date(date, locale) {
|
|
1890
|
-
return formatDate(date, 'yyyy/MM/dd', locale, 'GMT+8');
|
|
1891
|
-
}
|
|
1892
|
-
function format_datetime(date, locale) {
|
|
1893
|
-
return formatDate(date, 'yyyy/MM/dd HH:mm:ss', locale, 'GMT+8');
|
|
1894
|
-
}
|
|
1895
|
-
function localeSortMethod(value1, value2) {
|
|
1896
|
-
return value1.localeCompare(value2);
|
|
1897
|
-
}
|
|
1898
|
-
function file_type_icon(name) {
|
|
1899
|
-
const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
|
|
1900
|
-
switch (type) {
|
|
1901
|
-
case 'doc':
|
|
1902
|
-
case 'docx':
|
|
1903
|
-
return 'word';
|
|
1904
|
-
case 'xls':
|
|
1905
|
-
case 'xlsx':
|
|
1906
|
-
case 'csv':
|
|
1907
|
-
return 'excel';
|
|
1908
|
-
case 'ppt':
|
|
1909
|
-
case 'pptx':
|
|
1910
|
-
return 'ppt';
|
|
1911
|
-
case 'pdf':
|
|
1912
|
-
return 'pdf';
|
|
1913
|
-
case 'txt':
|
|
1914
|
-
case 'xml':
|
|
1915
|
-
case 'json':
|
|
1916
|
-
case 'js':
|
|
1917
|
-
return 'text';
|
|
1918
|
-
case 'png':
|
|
1919
|
-
case 'jpg':
|
|
1920
|
-
case 'jpeg':
|
|
1921
|
-
case 'gif':
|
|
1922
|
-
case 'bmp':
|
|
1923
|
-
return 'image';
|
|
1924
|
-
case 'zip':
|
|
1925
|
-
case 'rar':
|
|
1926
|
-
case '7z':
|
|
1927
|
-
case 'jar':
|
|
1928
|
-
return 'zip';
|
|
1929
|
-
default:
|
|
1930
|
-
return 'unknown';
|
|
1931
|
-
}
|
|
1932
|
-
}
|
|
1933
|
-
function support_preview_ext() {
|
|
1934
|
-
return ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp', 'doc', 'docx', 'txt', 'xml', 'json', 'js', 'xls', 'xlsx', 'csv', 'ppt', 'pptx'];
|
|
1935
|
-
}
|
|
1936
|
-
function format_file_size(size) {
|
|
1937
|
-
const labels = ['b', 'Kb', 'Mb', 'Gb'];
|
|
1938
|
-
const count = labels.length - 1;
|
|
1939
|
-
let i = 0;
|
|
1940
|
-
while (i < count && size >= 1024) {
|
|
1941
|
-
size /= 1024;
|
|
1942
|
-
i++;
|
|
1943
|
-
}
|
|
1944
|
-
return Math.round(size * 100) / 100 + " " + labels[i];
|
|
1945
|
-
}
|
|
1946
|
-
function filename_from_disposition(disposition) {
|
|
1947
|
-
const filenamePair = disposition.split(';').filter(str => /^filename=/.test(str.trim())).pop();
|
|
1948
|
-
if (filenamePair) {
|
|
1949
|
-
let str = filenamePair.trim();
|
|
1950
|
-
str = str.split('=')[1];
|
|
1951
|
-
str = str.replace(/['"]/g, '');
|
|
1952
|
-
return decodeURIComponent(str);
|
|
1953
|
-
}
|
|
1954
|
-
else {
|
|
1955
|
-
return null;
|
|
1956
|
-
}
|
|
1957
|
-
}
|
|
1958
|
-
function download_file(blob, filename, callback) {
|
|
1959
|
-
const url = window.webkitURL.createObjectURL(blob);
|
|
1960
|
-
const a = document.createElement('a');
|
|
1961
|
-
document.body.appendChild(a);
|
|
1962
|
-
a.setAttribute('style', 'display:none');
|
|
1963
|
-
a.setAttribute('href', url);
|
|
1964
|
-
a.setAttribute('download', decodeURIComponent(filename));
|
|
1965
|
-
a.click();
|
|
1966
|
-
setTimeout(() => {
|
|
1967
|
-
if (callback) {
|
|
1968
|
-
callback();
|
|
1969
|
-
}
|
|
1970
|
-
a.remove();
|
|
1971
|
-
});
|
|
1972
|
-
}
|
|
1973
|
-
async function validate(validator) {
|
|
1974
|
-
return new Promise(resolve => {
|
|
1975
|
-
if (!validator) {
|
|
1976
|
-
resolve(true);
|
|
1977
|
-
}
|
|
1978
|
-
const validateResult = validator.instance.validate();
|
|
1979
|
-
if (!validateResult.isValid) {
|
|
1980
|
-
resolve(false);
|
|
1981
|
-
}
|
|
1982
|
-
if (validateResult.status === 'pending') {
|
|
1983
|
-
validateResult.complete?.then((result) => {
|
|
1984
|
-
if (result.isValid) {
|
|
1985
|
-
resolve(true);
|
|
1986
|
-
}
|
|
1987
|
-
else {
|
|
1988
|
-
resolve(false);
|
|
1989
|
-
}
|
|
1990
|
-
});
|
|
1991
|
-
}
|
|
1992
|
-
else {
|
|
1993
|
-
resolve(true);
|
|
1994
|
-
}
|
|
1995
|
-
});
|
|
1996
|
-
}
|
|
1997
|
-
async function validate_group(validationGroup) {
|
|
1998
|
-
if (!validationGroup) {
|
|
1999
|
-
return firstValueFrom(of(true));
|
|
2000
|
-
}
|
|
2001
|
-
const top = validationGroup.element.nativeElement;
|
|
2002
|
-
let sourceNode;
|
|
2003
|
-
const targetClassName = 'dx-field';
|
|
2004
|
-
const findTargetNode = (node) => {
|
|
2005
|
-
sourceNode = node;
|
|
2006
|
-
while (true) {
|
|
2007
|
-
if (node.classList.contains(targetClassName)) {
|
|
2008
|
-
return node;
|
|
2009
|
-
}
|
|
2010
|
-
else {
|
|
2011
|
-
node = node.parentElement;
|
|
2012
|
-
if (node === top) {
|
|
2013
|
-
return sourceNode;
|
|
2014
|
-
}
|
|
2015
|
-
}
|
|
2016
|
-
}
|
|
2017
|
-
};
|
|
2018
|
-
return new Promise(resolve => {
|
|
2019
|
-
const validateResult = validationGroup.instance.validate();
|
|
2020
|
-
if (!validateResult.isValid) {
|
|
2021
|
-
const brokenElement = (validateResult.brokenRules?.[0]).validator.element();
|
|
2022
|
-
findTargetNode(brokenElement).scrollIntoView();
|
|
2023
|
-
resolve(false);
|
|
2024
|
-
}
|
|
2025
|
-
if (validateResult.status === 'pending') {
|
|
2026
|
-
validateResult.complete?.then((result) => {
|
|
2027
|
-
if (result.isValid) {
|
|
2028
|
-
resolve(true);
|
|
2029
|
-
}
|
|
2030
|
-
else {
|
|
2031
|
-
const brokenElement = (result.brokenRules?.[0]).validator.element();
|
|
2032
|
-
findTargetNode(brokenElement).scrollIntoView();
|
|
2033
|
-
resolve(false);
|
|
2034
|
-
}
|
|
2035
|
-
});
|
|
2036
|
-
}
|
|
2037
|
-
else {
|
|
2038
|
-
resolve(true);
|
|
2039
|
-
}
|
|
2040
|
-
});
|
|
2041
|
-
}
|
|
2042
|
-
|
|
2043
2063
|
class CustomTemplateDirective {
|
|
2044
2064
|
constructor(templateRef) {
|
|
2045
2065
|
this.templateRef = templateRef;
|
|
@@ -2101,7 +2121,6 @@ class DataGridFactory {
|
|
|
2101
2121
|
caption: field.caption,
|
|
2102
2122
|
dataType: 'string',
|
|
2103
2123
|
alignment: 'left',
|
|
2104
|
-
cssClass: 'cell-vertical-middle',
|
|
2105
2124
|
allowHeaderFiltering: true,
|
|
2106
2125
|
allowFiltering: true,
|
|
2107
2126
|
allowSorting: true,
|
|
@@ -2214,18 +2233,6 @@ class DataGridFactory {
|
|
|
2214
2233
|
};
|
|
2215
2234
|
if (field.config.constraint.multiple) {
|
|
2216
2235
|
column.allowFiltering = false;
|
|
2217
|
-
column.lookup = {
|
|
2218
|
-
dataSource: {
|
|
2219
|
-
store: new CustomStore({
|
|
2220
|
-
load: () => {
|
|
2221
|
-
return lastValueFrom(this.service.getUserColumnDataSource(tenant, className, view, field.name));
|
|
2222
|
-
}
|
|
2223
|
-
}),
|
|
2224
|
-
paginate: true
|
|
2225
|
-
},
|
|
2226
|
-
valueExpr: 'value',
|
|
2227
|
-
displayExpr: 'text'
|
|
2228
|
-
};
|
|
2229
2236
|
column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
|
|
2230
2237
|
if (this.defaultCalculateFilterExpression) {
|
|
2231
2238
|
if (!filterValue) {
|
|
@@ -2270,18 +2277,6 @@ class DataGridFactory {
|
|
|
2270
2277
|
};
|
|
2271
2278
|
if (field.config.constraint.multiple) {
|
|
2272
2279
|
column.allowFiltering = false;
|
|
2273
|
-
column.lookup = {
|
|
2274
|
-
dataSource: {
|
|
2275
|
-
store: new CustomStore({
|
|
2276
|
-
load: () => {
|
|
2277
|
-
return lastValueFrom(this.service.getUnitColumnDataSource(tenant, className, view, field.name));
|
|
2278
|
-
}
|
|
2279
|
-
}),
|
|
2280
|
-
paginate: true
|
|
2281
|
-
},
|
|
2282
|
-
valueExpr: 'value',
|
|
2283
|
-
displayExpr: 'text'
|
|
2284
|
-
};
|
|
2285
2280
|
column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
|
|
2286
2281
|
if (this.defaultCalculateFilterExpression) {
|
|
2287
2282
|
if (!filterValue) {
|
|
@@ -2322,7 +2317,7 @@ class DataGridFactory {
|
|
|
2322
2317
|
dataSource: {
|
|
2323
2318
|
store: new CustomStore({
|
|
2324
2319
|
load: () => {
|
|
2325
|
-
return lastValueFrom(this.service.getConstraintEntries(field.config.constraint.name));
|
|
2320
|
+
return lastValueFrom(this.service.getConstraintEntries(tenant, field.config.constraint.name));
|
|
2326
2321
|
}
|
|
2327
2322
|
}),
|
|
2328
2323
|
paginate: true
|
|
@@ -2576,7 +2571,9 @@ class FormComponent {
|
|
|
2576
2571
|
oid: this.oid,
|
|
2577
2572
|
copyOid: this.copyOid,
|
|
2578
2573
|
template: this.template
|
|
2579
|
-
}
|
|
2574
|
+
},
|
|
2575
|
+
__model: this.model,
|
|
2576
|
+
__opener: this
|
|
2580
2577
|
});
|
|
2581
2578
|
this.service.getFormTemplateConfig(this.tenant, this.className, this.template).subscribe(response => {
|
|
2582
2579
|
this.config = response.data.template;
|
|
@@ -2650,10 +2647,10 @@ class FormComponent {
|
|
|
2650
2647
|
}
|
|
2651
2648
|
}
|
|
2652
2649
|
FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FormComponent, deps: [{ token: i0.ViewContainerRef }, { token: FormService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2653
|
-
FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FormComponent, selector: "rs-form", inputs: { tenant: "tenant", className: "className", oid: "oid", copyOid: "copyOid", template: "template", extraAttrMap: "extraAttrMap", opener: "opener", params: "params", tabViewContainerRef: "tabViewContainerRef", onlyFrontEnd: "onlyFrontEnd", model: "model", readonly: "readonly" }, outputs: { onDataLoaded: "onDataLoaded", submitCallback: "submitCallback" }, providers: [FormService], viewQueries: [{ propertyName: "validator", first: true, predicate: DxValidationGroupComponent, descendants: true }, { propertyName: "formSubmitter", first: true, predicate: ["formSubmitter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [
|
|
2650
|
+
FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FormComponent, selector: "rs-form", inputs: { tenant: "tenant", className: "className", oid: "oid", copyOid: "copyOid", template: "template", extraAttrMap: "extraAttrMap", opener: "opener", params: "params", tabViewContainerRef: "tabViewContainerRef", onlyFrontEnd: "onlyFrontEnd", model: "model", readonly: "readonly" }, outputs: { onDataLoaded: "onDataLoaded", submitCallback: "submitCallback" }, providers: [FormService], viewQueries: [{ propertyName: "validator", first: true, predicate: DxValidationGroupComponent, descendants: true }, { propertyName: "formSubmitter", first: true, predicate: ["formSubmitter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BoxContainerComponent, selector: "rs-box-container", inputs: ["id", "editMode", "config", "params", "readonly", "tabViewContainerRef"] }, { kind: "component", type: i6.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i3.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i6.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i6$1.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }, { kind: "component", type: i9.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
|
|
2654
2651
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FormComponent, decorators: [{
|
|
2655
2652
|
type: Component,
|
|
2656
|
-
args: [{ selector: 'rs-form', providers: [FormService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [
|
|
2653
|
+
args: [{ selector: 'rs-form', providers: [FormService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"] }]
|
|
2657
2654
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: FormService }, { type: i0.ElementRef }]; }, propDecorators: { tenant: [{
|
|
2658
2655
|
type: Input
|
|
2659
2656
|
}], className: [{
|
|
@@ -2867,7 +2864,9 @@ class CellComponentTemplateComponent {
|
|
|
2867
2864
|
const instance = componentRef.instance;
|
|
2868
2865
|
Object.assign(instance, cellComponentConfig);
|
|
2869
2866
|
if (!(instance instanceof CellComponentBase)) {
|
|
2870
|
-
console.
|
|
2867
|
+
console.error('cell component need extending CellComponentBase, name: ' + plugin.name);
|
|
2868
|
+
notify_error('加载单元格组件配置失败:' + plugin.name);
|
|
2869
|
+
return;
|
|
2871
2870
|
}
|
|
2872
2871
|
instance.field = this.cellInfo.column.dataField;
|
|
2873
2872
|
instance.fieldConfig = fieldConfig;
|
|
@@ -2930,22 +2929,20 @@ class DataGridComponent {
|
|
|
2930
2929
|
}
|
|
2931
2930
|
if (this.instanceLinkType === 'tab' || this.instanceLinkType === 'drawer') {
|
|
2932
2931
|
columns.unshift({
|
|
2933
|
-
fixed: true,
|
|
2934
2932
|
caption: '详情',
|
|
2933
|
+
fixed: true,
|
|
2935
2934
|
width: 48,
|
|
2936
|
-
cellTemplate: 'instanceLinkTemplate',
|
|
2937
2935
|
alignment: 'center',
|
|
2938
|
-
|
|
2936
|
+
cellTemplate: 'instanceLinkTemplate'
|
|
2939
2937
|
});
|
|
2940
2938
|
}
|
|
2941
2939
|
if (this.showRowNum) {
|
|
2942
2940
|
columns.unshift({
|
|
2943
|
-
fixed: true,
|
|
2944
2941
|
caption: '行号',
|
|
2942
|
+
fixed: true,
|
|
2945
2943
|
width: 48,
|
|
2946
|
-
cellTemplate: 'rowIndexTemplate',
|
|
2947
2944
|
alignment: 'center',
|
|
2948
|
-
|
|
2945
|
+
cellTemplate: 'rowIndexTemplate'
|
|
2949
2946
|
});
|
|
2950
2947
|
}
|
|
2951
2948
|
this.columns = columns;
|
|
@@ -2959,20 +2956,6 @@ class DataGridComponent {
|
|
|
2959
2956
|
this.dataSource = this.factory.makeDataGridDataSource(this.tenant, this.className, this.view, this.filter, this.keyExpr, this.dataGridName);
|
|
2960
2957
|
}
|
|
2961
2958
|
}
|
|
2962
|
-
getOriginalValue(cellInfo, key) {
|
|
2963
|
-
const config = cellInfo.column[key];
|
|
2964
|
-
if (config) {
|
|
2965
|
-
const value = cellInfo.data[config.field];
|
|
2966
|
-
if (value) {
|
|
2967
|
-
if (Array.isArray(value)) {
|
|
2968
|
-
return value;
|
|
2969
|
-
}
|
|
2970
|
-
return [value];
|
|
2971
|
-
}
|
|
2972
|
-
return [];
|
|
2973
|
-
}
|
|
2974
|
-
return cellInfo.data[key];
|
|
2975
|
-
}
|
|
2976
2959
|
getSelectedRowKeys() {
|
|
2977
2960
|
return this.dxDataGrid.instance.getSelectedRowKeys();
|
|
2978
2961
|
}
|