@refinitiv-ui/efx-grid 6.0.101 → 6.0.103
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/lib/core/dist/core.js +289 -532
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataCache.d.ts +0 -12
- package/lib/core/es6/data/DataCache.js +11 -371
- package/lib/core/es6/data/WrappedView.d.ts +1 -0
- package/lib/core/es6/data/WrappedView.js +1 -0
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/core/es6/grid/LayoutGrid.d.ts +1 -0
- package/lib/core/es6/grid/LayoutGrid.js +25 -2
- package/lib/core/es6/grid/VirtualizedLayoutGrid.d.ts +1 -0
- package/lib/core/es6/grid/VirtualizedLayoutGrid.js +24 -104
- package/lib/core/es6/grid/util/CellBoundPainter.d.ts +16 -0
- package/lib/core/es6/grid/util/CellBoundPainter.js +171 -0
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +30 -21
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/FieldDefinition.d.ts +1 -1
- package/lib/rt-grid/es6/FieldDefinition.js +21 -21
- package/lib/rt-grid/es6/RowDefinition.js +9 -0
- package/lib/tr-grid-cell-selection/es6/CellSelection.js +22 -8
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +8 -0
- package/lib/types/es6/Core/data/DataCache.d.ts +0 -12
- package/lib/types/es6/Core/data/WrappedView.d.ts +1 -0
- package/lib/types/es6/Core/grid/LayoutGrid.d.ts +1 -0
- package/lib/types/es6/Core/grid/VirtualizedLayoutGrid.d.ts +1 -0
- package/lib/types/es6/Core/grid/util/CellBoundPainter.d.ts +16 -0
- package/lib/versions.json +2 -2
- package/package.json +1 -1
| @@ -45,8 +45,6 @@ declare class DataCache extends EventDispatcher { | |
| 45 45 |  | 
| 46 46 | 
             
                public setData(rid: string, cid: string, value: any): boolean;
         | 
| 47 47 |  | 
| 48 | 
            -
                public hasDataCloudData(rid: string): boolean;
         | 
| 49 | 
            -
             | 
| 50 48 | 
             
                public setRowData(rid: string, values?: { [key: string]:  any }|null, opt_eventArg?: any): boolean;
         | 
| 51 49 |  | 
| 52 50 | 
             
                public cloneRowData(rid: string): any;
         | 
| @@ -63,19 +61,9 @@ declare class DataCache extends EventDispatcher { | |
| 63 61 |  | 
| 64 62 | 
             
                public log(opt_options?: any): void;
         | 
| 65 63 |  | 
| 66 | 
            -
                public setDataCloudSettings(userId: string, productId: string, url: string, opt_lang?: string|null): void;
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                public getDataCloudFields(): (string)[]|null;
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                public addDataCloudFields(fields: (string)[]|string|null): boolean;
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                public removeDataCloudField(field: string): boolean;
         | 
| 73 | 
            -
             | 
| 74 64 | 
             
            }
         | 
| 75 65 |  | 
| 76 66 | 
             
            declare function cid(rid: string, cid: string): any;
         | 
| 77 67 |  | 
| 78 | 
            -
            declare function ricMap(field: string): boolean;
         | 
| 79 | 
            -
             | 
| 80 68 | 
             
            export default DataCache;
         | 
| 81 69 | 
             
            export { DataCache };
         | 
| @@ -28,9 +28,6 @@ let DataCache = function () { | |
| 28 28 | 
             
            	_t._onInsert = _t._onInsert.bind(_t);
         | 
| 29 29 | 
             
            	_t._onUpdate = _t._onUpdate.bind(_t);
         | 
| 30 30 | 
             
            	_t._onDelete = _t._onDelete.bind(_t);
         | 
| 31 | 
            -
            	_t._onBatchRequestADCData = _t._onBatchRequestADCData.bind(_t);
         | 
| 32 | 
            -
            	_t._onADCUpdate = _t._onADCUpdate.bind(_t);
         | 
| 33 | 
            -
            	_t._onADCError = _t._onADCError.bind(_t);
         | 
| 34 31 | 
             
            	_t._onQ2DataChanged = _t._onQ2DataChanged.bind(_t);
         | 
| 35 32 | 
             
            	_t._onQ2SubAdded = _t._onQ2SubAdded.bind(_t);
         | 
| 36 33 | 
             
            	_t._onQ2SubRemoved = _t._onQ2SubRemoved.bind(_t);
         | 
| @@ -205,13 +202,6 @@ DataCache.prototype.clearAllData = function (opt_suppressEvent) { // All subscri | |
| 205 202 | 
             
            	this._subs = {};
         | 
| 206 203 | 
             
            	this._rows = {};
         | 
| 207 204 |  | 
| 208 | 
            -
            	if (this._adcTimerId >= 0) {
         | 
| 209 | 
            -
            		clearTimeout(this._adcTimerId);
         | 
| 210 | 
            -
            		this._adcTimerId = -1;
         | 
| 211 | 
            -
            	}
         | 
| 212 | 
            -
             | 
| 213 | 
            -
            	this._adcRicMap = null;
         | 
| 214 | 
            -
             | 
| 215 205 | 
             
            	if (!opt_suppressEvent) {
         | 
| 216 206 | 
             
            		this._dispatchDataChange({"globalChange": true});
         | 
| 217 207 | 
             
            	}
         | 
| @@ -388,30 +378,10 @@ DataCache.prototype.setData = function (rid, cid, value) { // Data changed event | |
| 388 378 |  | 
| 389 379 | 
             
            /**
         | 
| 390 380 | 
             
             * @public
         | 
| 381 | 
            +
             * @ignore
         | 
| 391 382 | 
             
             * @param {string} rid
         | 
| 392 | 
            -
             * @return {boolean}
         | 
| 393 383 | 
             
             */
         | 
| 394 | 
            -
            DataCache.prototype.hasDataCloudData = function (rid) {
         | 
| 395 | 
            -
            	if (!this._adcFields) {
         | 
| 396 | 
            -
            		return false;
         | 
| 397 | 
            -
            	}
         | 
| 398 | 
            -
             | 
| 399 | 
            -
            	let row = this.getRowData(rid);
         | 
| 400 | 
            -
             | 
| 401 | 
            -
            	if (!row) {
         | 
| 402 | 
            -
            		return false;
         | 
| 403 | 
            -
            	}
         | 
| 404 | 
            -
             | 
| 405 | 
            -
            	for (let i = this._adcFields.length; --i >= 0;) {
         | 
| 406 | 
            -
            		let data = row[this._adcFields[i]];
         | 
| 407 | 
            -
             | 
| 408 | 
            -
            		if (data != null) {
         | 
| 409 | 
            -
            			return true;
         | 
| 410 | 
            -
            		}
         | 
| 411 | 
            -
            	}
         | 
| 412 | 
            -
             | 
| 413 | 
            -
            	return false;
         | 
| 414 | 
            -
            };
         | 
| 384 | 
            +
            DataCache.prototype.hasDataCloudData = function (rid) {};
         | 
| 415 385 |  | 
| 416 386 | 
             
            /**
         | 
| 417 387 | 
             
             * @public
         | 
| @@ -587,97 +557,36 @@ DataCache.prototype.log = function (opt_options) { | |
| 587 557 | 
             
            //#region ADC
         | 
| 588 558 | 
             
            /** Deprecated. Built-in Data Service is deprecated due to the lack of flexibility.
         | 
| 589 559 | 
             
             * @public
         | 
| 560 | 
            +
             * @ignore
         | 
| 590 561 | 
             
             * @param {string} userId
         | 
| 591 562 | 
             
             * @param {string} productId
         | 
| 592 563 | 
             
             * @param {string} url
         | 
| 593 564 | 
             
             * @param {string=} opt_lang
         | 
| 594 565 | 
             
             */
         | 
| 595 | 
            -
            DataCache.prototype.setDataCloudSettings = function (userId, productId, url, opt_lang) {
         | 
| 596 | 
            -
            	if (userId != null) {
         | 
| 597 | 
            -
            		this._userId = userId;
         | 
| 598 | 
            -
            	}
         | 
| 599 | 
            -
             | 
| 600 | 
            -
            	if (productId != null) {
         | 
| 601 | 
            -
            		this._productId = productId;
         | 
| 602 | 
            -
            	}
         | 
| 603 | 
            -
             | 
| 604 | 
            -
            	if (url != null) {
         | 
| 605 | 
            -
            		this._adcUrl = url;
         | 
| 606 | 
            -
            	}
         | 
| 607 | 
            -
             | 
| 608 | 
            -
            	if (opt_lang) {
         | 
| 609 | 
            -
            		this._lang = opt_lang;
         | 
| 610 | 
            -
            	}
         | 
| 611 | 
            -
            };
         | 
| 566 | 
            +
            DataCache.prototype.setDataCloudSettings = function (userId, productId, url, opt_lang) {};
         | 
| 612 567 |  | 
| 613 568 | 
             
            /**
         | 
| 614 569 | 
             
             * Deprecated. Built-in Data Service is deprecated due to the lack of flexibility.
         | 
| 615 570 | 
             
             * @public
         | 
| 616 | 
            -
             * @ | 
| 571 | 
            +
             * @ignore
         | 
| 617 572 | 
             
             */
         | 
| 618 | 
            -
            DataCache.prototype.getDataCloudFields = function () {
         | 
| 619 | 
            -
            	return this._adcFields; // Return private members
         | 
| 620 | 
            -
            };
         | 
| 573 | 
            +
            DataCache.prototype.getDataCloudFields = function () {};
         | 
| 621 574 |  | 
| 622 575 | 
             
            /**
         | 
| 623 576 | 
             
             * Deprecated. Built-in Data Service is deprecated due to the lack of flexibility.
         | 
| 624 577 | 
             
             * @public
         | 
| 578 | 
            +
             * @ignore
         | 
| 625 579 | 
             
             * @param {Array.<string>|string} fields
         | 
| 626 | 
            -
             * @return {boolean} Return true if success, and false otherwise
         | 
| 627 580 | 
             
             */
         | 
| 628 | 
            -
            DataCache.prototype.addDataCloudFields = function (fields) {
         | 
| 629 | 
            -
            	if (!this._adcFields) {
         | 
| 630 | 
            -
            		this._adcFields = [];
         | 
| 631 | 
            -
            		this._adcRefMap = {};
         | 
| 632 | 
            -
            	}
         | 
| 633 | 
            -
             | 
| 634 | 
            -
            	let newFields = [];
         | 
| 635 | 
            -
             | 
| 636 | 
            -
            	if (fields instanceof Array) {
         | 
| 637 | 
            -
            		for (let i = fields.length; --i >= 0;) {
         | 
| 638 | 
            -
            			this._addDataCloudField(fields[i], newFields);
         | 
| 639 | 
            -
            		}
         | 
| 640 | 
            -
            	} else {
         | 
| 641 | 
            -
            		this._addDataCloudField(/** @type {string} */(fields), newFields);
         | 
| 642 | 
            -
            	}
         | 
| 643 | 
            -
             | 
| 644 | 
            -
            	if (newFields.length <= 0) {
         | 
| 645 | 
            -
            		return false;
         | 
| 646 | 
            -
            	}
         | 
| 647 | 
            -
             | 
| 648 | 
            -
            	let ricMap = this.getAllRics();
         | 
| 649 | 
            -
             | 
| 650 | 
            -
            	this._batchRequestDataCloud(ricMap, newFields);
         | 
| 651 | 
            -
             | 
| 652 | 
            -
            	return true;
         | 
| 653 | 
            -
            };
         | 
| 581 | 
            +
            DataCache.prototype.addDataCloudFields = function (fields) {};
         | 
| 654 582 |  | 
| 655 583 | 
             
            /**
         | 
| 656 584 | 
             
             * Deprecated. Built-in Data Service is deprecated due to the lack of flexibility.
         | 
| 657 585 | 
             
             * @public
         | 
| 586 | 
            +
             * @ignore
         | 
| 658 587 | 
             
             * @param {string} field
         | 
| 659 | 
            -
             * @return {boolean} Return true if success, and false otherwise
         | 
| 660 588 | 
             
             */
         | 
| 661 | 
            -
            DataCache.prototype.removeDataCloudField = function (field) {
         | 
| 662 | 
            -
            	if (!this._adcFields) {
         | 
| 663 | 
            -
            		return false;
         | 
| 664 | 
            -
            	}
         | 
| 665 | 
            -
             | 
| 666 | 
            -
            	if (!this._adcRefMap[field]) {
         | 
| 667 | 
            -
            		return false;
         | 
| 668 | 
            -
            	}
         | 
| 669 | 
            -
             | 
| 670 | 
            -
            	--this._adcRefMap[field];
         | 
| 671 | 
            -
             | 
| 672 | 
            -
            	if (!this._adcRefMap[field]) {
         | 
| 673 | 
            -
            		let foundAt = this._adcFields.indexOf(field);
         | 
| 674 | 
            -
             | 
| 675 | 
            -
            		this._adcFields.splice(foundAt, 1);
         | 
| 676 | 
            -
            		this.clearColumnData(field);
         | 
| 677 | 
            -
            	}
         | 
| 678 | 
            -
             | 
| 679 | 
            -
            	return true;
         | 
| 680 | 
            -
            };
         | 
| 589 | 
            +
            DataCache.prototype.removeDataCloudField = function (field) {};
         | 
| 681 590 | 
             
            //#endregion ADC
         | 
| 682 591 | 
             
            //#endregion Public
         | 
| 683 592 |  | 
| @@ -829,9 +738,6 @@ DataCache.prototype._insertRic = function (subId, ric, values) { | |
| 829 738 |  | 
| 830 739 | 
             
            	let rid = subId + ric;
         | 
| 831 740 |  | 
| 832 | 
            -
            	// We cannot cache event arguments because user may want to collect all the updates
         | 
| 833 | 
            -
            	this._onADCForNewRic(subId, ric);
         | 
| 834 | 
            -
             | 
| 835 741 | 
             
            	let rowData = this.getRowData(rid);
         | 
| 836 742 | 
             
            	if (!rowData) { // Ensure that we have subscription id and ric from Quotes2
         | 
| 837 743 | 
             
            		let tmp = values;
         | 
| @@ -926,36 +832,6 @@ DataCache.prototype._onQ2SubRemoved = function (e) { | |
| 926 832 | 
             
            	}
         | 
| 927 833 | 
             
            };
         | 
| 928 834 |  | 
| 929 | 
            -
            /**
         | 
| 930 | 
            -
             * @private
         | 
| 931 | 
            -
             * @param {string} subId Subscription id
         | 
| 932 | 
            -
             * @param {string} ric
         | 
| 933 | 
            -
             */
         | 
| 934 | 
            -
            DataCache.prototype._onADCForNewRic = function (subId, ric) {
         | 
| 935 | 
            -
            	let sub = this._subs[subId];
         | 
| 936 | 
            -
             | 
| 937 | 
            -
            	if (!sub) {
         | 
| 938 | 
            -
            		return;
         | 
| 939 | 
            -
            	}
         | 
| 940 | 
            -
             | 
| 941 | 
            -
            	if (this._adcFields) {
         | 
| 942 | 
            -
            		if (!sub["rics"][ric]) { // First time insertion
         | 
| 943 | 
            -
            			if (this._adcTimerId < 0) {
         | 
| 944 | 
            -
            				this._adcRicMap = {};
         | 
| 945 | 
            -
            				this._adcTimerId = setTimeout(this._onBatchRequestADCData, 100);
         | 
| 946 | 
            -
            			}
         | 
| 947 | 
            -
             | 
| 948 | 
            -
            			if (!this._adcRicMap[ric]) {
         | 
| 949 | 
            -
            				this._adcRicMap[ric] = [];
         | 
| 950 | 
            -
            			}
         | 
| 951 | 
            -
             | 
| 952 | 
            -
            			this._adcRicMap[ric].push(subId);
         | 
| 953 | 
            -
            		}
         | 
| 954 | 
            -
            	}
         | 
| 955 | 
            -
             | 
| 956 | 
            -
            	sub["rics"][ric] = true;
         | 
| 957 | 
            -
            };
         | 
| 958 | 
            -
             | 
| 959 835 | 
             
            /**
         | 
| 960 836 | 
             
             * @private
         | 
| 961 837 | 
             
             * @param {string} subId
         | 
| @@ -989,7 +865,7 @@ DataCache.prototype._onDuplicateRic = function (subId, dupData) { | |
| 989 865 | 
             
            			ric = children[i];
         | 
| 990 866 | 
             
            			values = this._cloneRowData(dupSubId, ric, subId);
         | 
| 991 867 |  | 
| 992 | 
            -
            			this._onInsert(sub, ric, values); | 
| 868 | 
            +
            			this._onInsert(sub, ric, values);
         | 
| 993 869 | 
             
            		}
         | 
| 994 870 | 
             
            	}
         | 
| 995 871 | 
             
            };
         | 
| @@ -1006,7 +882,6 @@ DataCache.prototype._onInsert = function (sub, ric, values/*, rowN*/) { | |
| 1006 882 | 
             
            	if (this._quotes2) {
         | 
| 1007 883 | 
             
            		this._insertRic(subId, ric, values);
         | 
| 1008 884 | 
             
            	} else {
         | 
| 1009 | 
            -
            		this._onADCForNewRic(subId, ric);
         | 
| 1010 885 | 
             
            		this.setRowData(subId + ric, values, {"subscription": sub, "ric": ric});
         | 
| 1011 886 | 
             
            	}
         | 
| 1012 887 | 
             
            };
         | 
| @@ -1031,191 +906,6 @@ DataCache.prototype._onDelete = function (sub, ric, values/*, rowN*/) { | |
| 1031 906 | 
             
            	this.setRowData(sub["id"] + ric, null, {"subscription": sub, "ric": ric});
         | 
| 1032 907 | 
             
            };
         | 
| 1033 908 |  | 
| 1034 | 
            -
            /**
         | 
| 1035 | 
            -
             * @private
         | 
| 1036 | 
            -
             * @param {string} field
         | 
| 1037 | 
            -
             * @param {Array.<string>} ary_out
         | 
| 1038 | 
            -
             */
         | 
| 1039 | 
            -
            DataCache.prototype._addDataCloudField = function (field, ary_out) {
         | 
| 1040 | 
            -
            	if (!this._adcRefMap[field]) {
         | 
| 1041 | 
            -
            		this._adcFields.push(field);
         | 
| 1042 | 
            -
             | 
| 1043 | 
            -
            		ary_out.push(field);
         | 
| 1044 | 
            -
             | 
| 1045 | 
            -
            		this._adcRefMap[field] = 1;
         | 
| 1046 | 
            -
            	} else {
         | 
| 1047 | 
            -
            		++this._adcRefMap[field];
         | 
| 1048 | 
            -
            	}
         | 
| 1049 | 
            -
            };
         | 
| 1050 | 
            -
             | 
| 1051 | 
            -
            /**
         | 
| 1052 | 
            -
             * @private
         | 
| 1053 | 
            -
             * @param {Object} e
         | 
| 1054 | 
            -
             * @suppress {missingProperties}
         | 
| 1055 | 
            -
             */
         | 
| 1056 | 
            -
            DataCache.prototype._onADCUpdate = function (e) {
         | 
| 1057 | 
            -
            	let xhr = e["currentTarget"]; // XMLHttpRequest
         | 
| 1058 | 
            -
            	let resp = null;
         | 
| 1059 | 
            -
             | 
| 1060 | 
            -
            	try {
         | 
| 1061 | 
            -
            		resp = JSON.parse(xhr.responseText);
         | 
| 1062 | 
            -
            		// window.console.log("Successfully parse: " + resp.rows);
         | 
| 1063 | 
            -
            	} catch (err) {
         | 
| 1064 | 
            -
            		return;
         | 
| 1065 | 
            -
            	}
         | 
| 1066 | 
            -
             | 
| 1067 | 
            -
            	if (resp["status"] !== "Ok") {
         | 
| 1068 | 
            -
            		return;
         | 
| 1069 | 
            -
            	}
         | 
| 1070 | 
            -
             | 
| 1071 | 
            -
            	let colCount = resp["cols"];
         | 
| 1072 | 
            -
            	let rows = resp["rows"];
         | 
| 1073 | 
            -
            	let colDefs = rows[0]; // The first row is always the column definition
         | 
| 1074 | 
            -
            	let ricIndex = -1;
         | 
| 1075 | 
            -
            	let fieldIndices = {};
         | 
| 1076 | 
            -
             | 
| 1077 | 
            -
            	for (let i = 0; i < colCount; ++i) {
         | 
| 1078 | 
            -
            		let colDef = colDefs[i];
         | 
| 1079 | 
            -
             | 
| 1080 | 
            -
            		if (colDef["i"] === "instrument") {
         | 
| 1081 | 
            -
            			ricIndex = i;
         | 
| 1082 | 
            -
            		} else if (colDef["r"]) {
         | 
| 1083 | 
            -
            			fieldIndices[colDef["r"]] = i;
         | 
| 1084 | 
            -
            		}
         | 
| 1085 | 
            -
            	}
         | 
| 1086 | 
            -
             | 
| 1087 | 
            -
            	let rowCount = rows.length;
         | 
| 1088 | 
            -
             | 
| 1089 | 
            -
            	for (let j = 1; j < rowCount; ++j) { // Start from 1
         | 
| 1090 | 
            -
            		let row = rows[j];
         | 
| 1091 | 
            -
            		let ric = row[ricIndex];
         | 
| 1092 | 
            -
            		let values = {};
         | 
| 1093 | 
            -
             | 
| 1094 | 
            -
            		for (let field in fieldIndices) {
         | 
| 1095 | 
            -
            			let value = row[fieldIndices[field]];
         | 
| 1096 | 
            -
             | 
| 1097 | 
            -
            			if (value != null) {
         | 
| 1098 | 
            -
            				// Data should be merged from the backend.
         | 
| 1099 | 
            -
            				// Don't override data with null value.
         | 
| 1100 | 
            -
            				// TODO: Merge all the row into one single row
         | 
| 1101 | 
            -
            				if (value !== null && value["f"] == null) {
         | 
| 1102 | 
            -
            					if (this._quotes2) {
         | 
| 1103 | 
            -
            						values[field] = value;
         | 
| 1104 | 
            -
            						values[field + "_FORMATTED"] = value;
         | 
| 1105 | 
            -
            					} else {
         | 
| 1106 | 
            -
            						values[field] = {"formatted": value + "", "raw": value};
         | 
| 1107 | 
            -
            					}
         | 
| 1108 | 
            -
            				}
         | 
| 1109 | 
            -
            			}
         | 
| 1110 | 
            -
            		}
         | 
| 1111 | 
            -
             | 
| 1112 | 
            -
            		let subIds = xhr.ricMap[ric];
         | 
| 1113 | 
            -
             | 
| 1114 | 
            -
            		if (subIds) { // Only ric within the subscription can be updated
         | 
| 1115 | 
            -
            			for (i = subIds.length; --i >= 0;) {
         | 
| 1116 | 
            -
            				let subId = subIds[i];
         | 
| 1117 | 
            -
             | 
| 1118 | 
            -
            				if (this._subs[subId]) { // Only update the existing subscription
         | 
| 1119 | 
            -
            					// window.console.log("ADC update " + subId + ric + " with " + JSON.stringify(values));
         | 
| 1120 | 
            -
            					this.setRowData(subId + ric, values); // Event is fired
         | 
| 1121 | 
            -
            				}
         | 
| 1122 | 
            -
            			}
         | 
| 1123 | 
            -
            		}
         | 
| 1124 | 
            -
            	}
         | 
| 1125 | 
            -
            };
         | 
| 1126 | 
            -
             | 
| 1127 | 
            -
            /**
         | 
| 1128 | 
            -
             * @private
         | 
| 1129 | 
            -
             * @param {Object} e
         | 
| 1130 | 
            -
             */
         | 
| 1131 | 
            -
            DataCache.prototype._onADCError = function (e) {
         | 
| 1132 | 
            -
            	window.console.log(e);
         | 
| 1133 | 
            -
            };
         | 
| 1134 | 
            -
             | 
| 1135 | 
            -
            /**
         | 
| 1136 | 
            -
             * @private
         | 
| 1137 | 
            -
             * @param {Object} e
         | 
| 1138 | 
            -
             */
         | 
| 1139 | 
            -
            DataCache.prototype._onBatchRequestADCData = function (e) {
         | 
| 1140 | 
            -
            	if (this._adcTimerId <= 0) {
         | 
| 1141 | 
            -
            		return;
         | 
| 1142 | 
            -
            	}
         | 
| 1143 | 
            -
             | 
| 1144 | 
            -
            	this._adcTimerId = -1;
         | 
| 1145 | 
            -
            	this._batchRequestDataCloud(this._adcRicMap, this._adcFields);
         | 
| 1146 | 
            -
            	this._adcRicMap = null;
         | 
| 1147 | 
            -
            };
         | 
| 1148 | 
            -
             | 
| 1149 | 
            -
            /**
         | 
| 1150 | 
            -
             * @private
         | 
| 1151 | 
            -
             * @param {Object.<string, Array.<string>>} ricMap of Array of subscription object
         | 
| 1152 | 
            -
             * @param {Array.<string>} fields
         | 
| 1153 | 
            -
             * @return {XMLHttpRequest}
         | 
| 1154 | 
            -
             */
         | 
| 1155 | 
            -
            DataCache.prototype._batchRequestDataCloud = function (ricMap, fields) {
         | 
| 1156 | 
            -
            	if (!this._adcUrl) {
         | 
| 1157 | 
            -
            		return null;
         | 
| 1158 | 
            -
            	}
         | 
| 1159 | 
            -
             | 
| 1160 | 
            -
            	let rics = [];
         | 
| 1161 | 
            -
             | 
| 1162 | 
            -
            	for (let ric in ricMap) {
         | 
| 1163 | 
            -
            		rics.push(ric);
         | 
| 1164 | 
            -
            	}
         | 
| 1165 | 
            -
             | 
| 1166 | 
            -
            	// Request data cloud in small multiple batches because the service cannot handle a long request
         | 
| 1167 | 
            -
            	while (rics.length > 30) {
         | 
| 1168 | 
            -
            		this._requestDataCloud(ricMap, fields, rics.splice(0, 30));
         | 
| 1169 | 
            -
            	}
         | 
| 1170 | 
            -
             | 
| 1171 | 
            -
            	return this._requestDataCloud(ricMap, fields, rics);
         | 
| 1172 | 
            -
            };
         | 
| 1173 | 
            -
             | 
| 1174 | 
            -
            /**
         | 
| 1175 | 
            -
             * @private
         | 
| 1176 | 
            -
             * @param {Object.<string, Array.<string>>} ricMap of Array of subscription object
         | 
| 1177 | 
            -
             * @param {Array.<string>} fields
         | 
| 1178 | 
            -
             * @param {Array.<string>} rics
         | 
| 1179 | 
            -
             * @return {XMLHttpRequest}
         | 
| 1180 | 
            -
             */
         | 
| 1181 | 
            -
            DataCache.prototype._requestDataCloud = function (ricMap, fields, rics) { // Small batch
         | 
| 1182 | 
            -
            	if (!rics || rics.length <= 0) {
         | 
| 1183 | 
            -
            		return null;
         | 
| 1184 | 
            -
            	}
         | 
| 1185 | 
            -
             | 
| 1186 | 
            -
            	if (!fields || fields.length <= 0) {
         | 
| 1187 | 
            -
            		return null;
         | 
| 1188 | 
            -
            	}
         | 
| 1189 | 
            -
             | 
| 1190 | 
            -
            	let xhr = new XMLHttpRequest();
         | 
| 1191 | 
            -
             | 
| 1192 | 
            -
            	xhr.onload = this._onADCUpdate;
         | 
| 1193 | 
            -
            	xhr.onerror = this._onADCError;
         | 
| 1194 | 
            -
            	xhr.ricMap = ricMap;
         | 
| 1195 | 
            -
             | 
| 1196 | 
            -
            	xhr.open("POST", this._adcUrl, true);
         | 
| 1197 | 
            -
            	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         | 
| 1198 | 
            -
             | 
| 1199 | 
            -
            	let body = 'formula=' + fields + '&identifiers=' + rics;
         | 
| 1200 | 
            -
             | 
| 1201 | 
            -
            	// window.console.log("ADC is requested with " + body);
         | 
| 1202 | 
            -
            	if (this._productId) {
         | 
| 1203 | 
            -
            		body += '&productid=' + this._productId;
         | 
| 1204 | 
            -
            	}
         | 
| 1205 | 
            -
             | 
| 1206 | 
            -
            	if (this._userId) {
         | 
| 1207 | 
            -
            		body += '&uuid=' + this._userId;
         | 
| 1208 | 
            -
            	}
         | 
| 1209 | 
            -
             | 
| 1210 | 
            -
            	if (this._lang) {
         | 
| 1211 | 
            -
            		body += '&lang=' + this._lang;
         | 
| 1212 | 
            -
            	}
         | 
| 1213 | 
            -
             | 
| 1214 | 
            -
            	xhr.send(body);
         | 
| 1215 | 
            -
             | 
| 1216 | 
            -
            	return xhr;
         | 
| 1217 | 
            -
            };
         | 
| 1218 | 
            -
             | 
| 1219 909 | 
             
            /**
         | 
| 1220 910 | 
             
             * @private
         | 
| 1221 911 | 
             
             * @param {string|Object.<string, *>} obj
         | 
| @@ -1272,62 +962,12 @@ DataCache.prototype._quotes2 = null; | |
| 1272 962 | 
             
             */
         | 
| 1273 963 | 
             
            DataCache.prototype._staticFields = null;
         | 
| 1274 964 |  | 
| 1275 | 
            -
            //#region ADC
         | 
| 1276 | 
            -
            /**
         | 
| 1277 | 
            -
             * @private
         | 
| 1278 | 
            -
             * @type {Array.<string>}
         | 
| 1279 | 
            -
             */
         | 
| 1280 | 
            -
            DataCache.prototype._adcFields = null;
         | 
| 1281 | 
            -
             | 
| 1282 | 
            -
            /**
         | 
| 1283 | 
            -
             * @private
         | 
| 1284 | 
            -
             * @type {Object.<string, number>}
         | 
| 1285 | 
            -
             */
         | 
| 1286 | 
            -
            DataCache.prototype._adcRefMap = null;
         | 
| 1287 | 
            -
             | 
| 1288 | 
            -
            /**
         | 
| 1289 | 
            -
             * @private
         | 
| 1290 | 
            -
             * @type {number}
         | 
| 1291 | 
            -
             */
         | 
| 1292 | 
            -
            DataCache.prototype._adcTimerId = -1;
         | 
| 1293 | 
            -
             | 
| 1294 | 
            -
            /**
         | 
| 1295 | 
            -
             * @private
         | 
| 1296 | 
            -
             * @description ricMap of Array of subscription object
         | 
| 1297 | 
            -
             * @type {Object.<string, Array.<string>>}
         | 
| 1298 | 
            -
             */
         | 
| 1299 | 
            -
            DataCache.prototype._adcRicMap = null;
         | 
| 1300 | 
            -
             | 
| 1301 | 
            -
            /**
         | 
| 1302 | 
            -
             * @private
         | 
| 1303 | 
            -
             * @type {string}
         | 
| 1304 | 
            -
             */
         | 
| 1305 | 
            -
            DataCache.prototype._adcUrl = "/datacloud/rest/select";
         | 
| 1306 | 
            -
             | 
| 1307 | 
            -
            /**
         | 
| 1308 | 
            -
             * @private
         | 
| 1309 | 
            -
             * @type {string}
         | 
| 1310 | 
            -
             */
         | 
| 1311 | 
            -
            DataCache.prototype._userId = "";
         | 
| 1312 | 
            -
             | 
| 1313 | 
            -
            /**
         | 
| 1314 | 
            -
             * @private
         | 
| 1315 | 
            -
             * @type {string}
         | 
| 1316 | 
            -
             */
         | 
| 1317 | 
            -
            DataCache.prototype._productId = "";
         | 
| 1318 | 
            -
             | 
| 1319 965 | 
             
            /** @protected
         | 
| 1320 966 | 
             
             * @ignore
         | 
| 1321 967 | 
             
             * @type {boolean}
         | 
| 1322 968 | 
             
             */
         | 
| 1323 969 | 
             
            DataCache.prototype._composing = false;
         | 
| 1324 970 |  | 
| 1325 | 
            -
            /** @protected
         | 
| 1326 | 
            -
             * @ignore
         | 
| 1327 | 
            -
             * @type {string}
         | 
| 1328 | 
            -
             */
         | 
| 1329 | 
            -
            DataCache.prototype._lang = "";
         | 
| 1330 | 
            -
            //#endregion ADC
         | 
| 1331 971 | 
             
            //#endregion Private
         | 
| 1332 972 |  | 
| 1333 973 | 
             
            DataCache._proto = DataCache.prototype;
         | 
| @@ -2,6 +2,7 @@ import Ext from "../../../tr-grid-util/es6/Ext.js"; | |
| 2 2 | 
             
            import EventDispatcher from "../grid/event/EventDispatcher.js";
         | 
| 3 3 | 
             
            import DataView from "./DataView.js"; // eslint-disable-line
         | 
| 4 4 | 
             
            import DataTable from "./DataTable.js"; // eslint-disable-line
         | 
| 5 | 
            +
            import DataCache from "./DataCache.js"; // eslint-disable-line
         | 
| 5 6 | 
             
            import ColumnStats from "./ColumnStats.js"; // eslint-disable-line
         | 
| 6 7 |  | 
| 7 8 | 
             
            declare namespace WrappedView {
         | 
| @@ -2,6 +2,7 @@ import Ext from "../../../tr-grid-util/es6/Ext.js"; | |
| 2 2 | 
             
            import EventDispatcher from "../grid/event/EventDispatcher.js";
         | 
| 3 3 | 
             
            import DataView from "./DataView.js"; // eslint-disable-line
         | 
| 4 4 | 
             
            import DataTable from "./DataTable.js"; // eslint-disable-line
         | 
| 5 | 
            +
            import DataCache from "./DataCache.js"; // eslint-disable-line
         | 
| 5 6 | 
             
            import ColumnStats from "./ColumnStats.js"; // eslint-disable-line
         | 
| 6 7 |  | 
| 7 8 | 
             
            /** @event WrappedView#dataChanged
         | 
| @@ -11,6 +11,7 @@ import SelectionList from "./util/SelectionList.js"; | |
| 11 11 | 
             
            import ILayoutGrid from "./ILayoutGrid.js";
         | 
| 12 12 | 
             
            import ElementWrapper from "./components/ElementWrapper.js";
         | 
| 13 13 | 
             
            import HScrollbar from "./components/HScrollbar.js";
         | 
| 14 | 
            +
            import CellBoundPainter from "./util/CellBoundPainter.js";
         | 
| 14 15 |  | 
| 15 16 | 
             
            declare class LayoutGrid extends ElementWrapper {
         | 
| 16 17 |  | 
| @@ -12,6 +12,7 @@ import SelectionList from "./util/SelectionList.js"; | |
| 12 12 | 
             
            import ILayoutGrid from "./ILayoutGrid.js";
         | 
| 13 13 | 
             
            import ElementWrapper from "./components/ElementWrapper.js";
         | 
| 14 14 | 
             
            import HScrollbar from "./components/HScrollbar.js";
         | 
| 15 | 
            +
            import CellBoundPainter from "./util/CellBoundPainter.js";
         | 
| 15 16 | 
             
            /* eslint-enable */
         | 
| 16 17 |  | 
| 17 18 | 
             
            //#region Events
         | 
| @@ -277,7 +278,10 @@ LayoutGrid.prototype._leftColumnSeparator = null; | |
| 277 278 | 
             
            * @private
         | 
| 278 279 | 
             
            */
         | 
| 279 280 | 
             
            LayoutGrid.prototype._rightColumnSeparator = null;
         | 
| 280 | 
            -
             | 
| 281 | 
            +
            /** @type {Element}
         | 
| 282 | 
            +
            * @private
         | 
| 283 | 
            +
            */
         | 
| 284 | 
            +
            LayoutGrid.prototype._cellBoundPainter = null;
         | 
| 281 285 | 
             
            /**
         | 
| 282 286 | 
             
             * {@link ElementWrapper#dispose}
         | 
| 283 287 | 
             
             * @override
         | 
| @@ -302,6 +306,10 @@ LayoutGrid.prototype.dispose = function () { | |
| 302 306 | 
             
            	this._ctx = null;
         | 
| 303 307 | 
             
            	this._hscrollbar = null;
         | 
| 304 308 |  | 
| 309 | 
            +
            	if(this._cellBoundPainter) {
         | 
| 310 | 
            +
            		this._cellBoundPainter.dispose();
         | 
| 311 | 
            +
            	}
         | 
| 312 | 
            +
             | 
| 305 313 | 
             
            	this._dispose();
         | 
| 306 314 | 
             
            };
         | 
| 307 315 | 
             
            /**
         | 
| @@ -2272,7 +2280,22 @@ LayoutGrid.prototype.selectCell = function (colIndex, rowIndex, selected) { | |
| 2272 2280 | 
             
            * @param {number} width
         | 
| 2273 2281 | 
             
            * @param {number} height
         | 
| 2274 2282 | 
             
            */
         | 
| 2275 | 
            -
            LayoutGrid.prototype.setCellBounds = function (colIndex, rowIndex, width, height) { | 
| 2283 | 
            +
            LayoutGrid.prototype.setCellBounds = function (colIndex, rowIndex, width, height) {
         | 
| 2284 | 
            +
            	let boundLayer = this._initBoundLayer();
         | 
| 2285 | 
            +
            	let cellBoundPainter = this._cellBoundPainter;
         | 
| 2286 | 
            +
            	if(!cellBoundPainter) {
         | 
| 2287 | 
            +
            		cellBoundPainter = this._cellBoundPainter = new CellBoundPainter({
         | 
| 2288 | 
            +
            			boundLayer: boundLayer,
         | 
| 2289 | 
            +
            			layoutX: this._trackX,
         | 
| 2290 | 
            +
            			layoutY: this._trackY,
         | 
| 2291 | 
            +
            			hscrollbar: this._hscrollbar,
         | 
| 2292 | 
            +
            			calculateColumnBounds: this.calculateColumnBounds.bind(this)
         | 
| 2293 | 
            +
            		});
         | 
| 2294 | 
            +
            	}
         | 
| 2295 | 
            +
             | 
| 2296 | 
            +
            	let colCount = this.getColumnCount();
         | 
| 2297 | 
            +
            	cellBoundPainter.setCellBounds(colIndex, rowIndex, width, height, colCount);
         | 
| 2298 | 
            +
            };
         | 
| 2276 2299 | 
             
            /** @public
         | 
| 2277 2300 | 
             
            * @ignore
         | 
| 2278 2301 | 
             
            * @return {!TrackLayout}
         | 
| @@ -6,6 +6,7 @@ import ILayoutGrid from "./ILayoutGrid.js"; | |
| 6 6 | 
             
            import LayoutGrid from "./LayoutGrid.js";
         | 
| 7 7 | 
             
            import ElementWrapper from "./components/ElementWrapper.js";
         | 
| 8 8 | 
             
            import HScrollbar from "./components/HScrollbar.js";
         | 
| 9 | 
            +
            import CellBoundPainter from "./util/CellBoundPainter.js";
         | 
| 9 10 |  | 
| 10 11 | 
             
            declare class VirtualizedLayoutGrid extends ElementWrapper {
         | 
| 11 12 |  |