Files
Sensores/static/lib/Highcharts-10.2.1/es-modules/Data/Modifiers/ChainModifier.js
2025-04-17 00:35:33 -06:00

302 lines
9.2 KiB
JavaScript

/* *
*
* (c) 2020-2022 Highsoft AS
*
* License: www.highcharts.com/license
*
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
*
* Authors:
* - Sophie Bremer
*
* */
'use strict';
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import DataModifier from './DataModifier.js';
import U from '../../Core/Utilities.js';
var merge = U.merge;
/* *
*
* Class
*
* */
/**
* Modifies a table with the help of modifiers in an ordered chain.
*
* @private
*/
var ChainModifier = /** @class */ (function (_super) {
__extends(ChainModifier, _super);
/* *
*
* Constructors
*
* */
/**
* Constructs an instance of the modifier chain.
*
* @param {DeepPartial<ChainModifier.Options>} [options]
* Options to configure the modifier chain.
*
* @param {...DataModifier} [modifiers]
* Modifiers in order for the modifier chain.
*/
function ChainModifier(options) {
var modifiers = [];
for (var _i = 1; _i < arguments.length; _i++) {
modifiers[_i - 1] = arguments[_i];
}
var _this = _super.call(this) || this;
_this.modifiers = modifiers;
_this.options = merge(ChainModifier.defaultOptions, options);
return _this;
}
/* *
*
* Functions
*
* */
/**
* Adds a configured modifier to the end of the modifier chain. Please note,
* that the modifier can be added multiple times.
*
* @param {DataModifier} modifier
* Configured modifier to add.
*
* @param {DataEventEmitter.EventDetail} [eventDetail]
* Custom information for pending events.
*/
ChainModifier.prototype.add = function (modifier, eventDetail) {
this.emit({
type: 'addModifier',
detail: eventDetail,
modifier: modifier
});
this.modifiers.push(modifier);
this.emit({
type: 'addModifier',
detail: eventDetail,
modifier: modifier
});
};
/**
* Clears all modifiers from the chain.
*
* @param {DataEventEmitter.EventDetail} [eventDetail]
* Custom information for pending events.
*/
ChainModifier.prototype.clear = function (eventDetail) {
this.emit({
type: 'clearChain',
detail: eventDetail
});
this.modifiers.length = 0;
this.emit({
type: 'afterClearChain',
detail: eventDetail
});
};
/**
* Applies partial modifications of a cell change to the property `modified`
* of the given modified table.
*
* *Note:* The `modified` property of the table gets replaced.
*
* @param {Highcharts.DataTable} table
* Modified table.
*
* @param {string} columnName
* Column name of changed cell.
*
* @param {number|undefined} rowIndex
* Row index of changed cell.
*
* @param {Highcharts.DataTableCellType} cellValue
* Changed cell value.
*
* @param {Highcharts.DataTableEventDetail} [eventDetail]
* Custom information for pending events.
*
* @return {Highcharts.DataTable}
* Table with `modified` property as a reference.
*/
ChainModifier.prototype.modifyCell = function (table, columnName, rowIndex, cellValue, eventDetail) {
var modifiers = (this.options.reverse ?
this.modifiers.reverse() :
this.modifiers);
if (modifiers.length) {
var clone = table.clone();
for (var i = 0, iEnd = modifiers.length; i < iEnd; ++i) {
modifiers[i].modifyCell(clone, columnName, rowIndex, cellValue, eventDetail);
clone = clone.modified;
}
table.modified = clone;
}
return table;
};
/**
* Applies partial modifications of column changes to the property
* `modified` of the given table.
*
* *Note:* The `modified` property of the table gets replaced.
*
* @param {Highcharts.DataTable} table
* Modified table.
*
* @param {Highcharts.DataTableColumnCollection} columns
* Changed columns as a collection, where the keys are the column names.
*
* @param {number} [rowIndex=0]
* Index of the first changed row.
*
* @param {Highcharts.DataTableEventDetail} [eventDetail]
* Custom information for pending events.
*
* @return {Highcharts.DataTable}
* Table with `modified` property as a reference.
*/
ChainModifier.prototype.modifyColumns = function (table, columns, rowIndex, eventDetail) {
var modifiers = (this.options.reverse ?
this.modifiers.reverse() :
this.modifiers.slice());
if (modifiers.length) {
var clone = table.clone();
for (var i = 0, iEnd = modifiers.length; i < iEnd; ++i) {
modifiers[i].modifyColumns(clone, columns, rowIndex, eventDetail);
clone = clone.modified;
}
table.modified = clone;
}
return table;
};
/**
* Applies partial modifications of row changes to the property `modified`
* of the given table.
*
* *Note:* The `modified` property of the table gets replaced.
*
* @param {Highcharts.DataTable} table
* Modified table.
*
* @param {Array<(Highcharts.DataTableRow|Highcharts.DataTableRowObject)>} rows
* Changed rows.
*
* @param {number} [rowIndex]
* Index of the first changed row.
*
* @param {Highcharts.DataTableEventDetail} [eventDetail]
* Custom information for pending events.
*
* @return {Highcharts.DataTable}
* Table with `modified` property as a reference.
*/
ChainModifier.prototype.modifyRows = function (table, rows, rowIndex, eventDetail) {
var modifiers = (this.options.reverse ?
this.modifiers.reverse() :
this.modifiers.slice());
if (modifiers.length) {
var clone = table.clone();
for (var i = 0, iEnd = modifiers.length; i < iEnd; ++i) {
modifiers[i].modifyRows(clone, rows, rowIndex, eventDetail);
clone = clone.modified;
}
table.modified = clone;
}
return table;
};
/**
* Applies several modifications to the table.
*
* *Note:* The `modified` property of the table gets replaced.
*
* @param {DataTable} table
* Table to modify.
*
* @param {DataEventEmitter.EventDetail} [eventDetail]
* Custom information for pending events.
*
* @return {DataTable}
* Table as a reference.
*
* @emits ChainDataModifier#execute
* @emits ChainDataModifier#afterExecute
*/
ChainModifier.prototype.modifyTable = function (table, eventDetail) {
var chain = this;
chain.emit({ type: 'modify', detail: eventDetail, table: table });
var modifiers = (chain.options.reverse ?
chain.modifiers.reverse() :
chain.modifiers.slice());
var modified = table.modified;
for (var i = 0, iEnd = modifiers.length, modifier = void 0; i < iEnd; ++i) {
modifier = modifiers[i];
modified = modifier.modifyTable(modified).modified;
}
table.modified = modified;
chain.emit({ type: 'afterModify', detail: eventDetail, table: table });
return table;
};
/**
* Removes a configured modifier from all positions of the modifier chain.
*
* @param {DataModifier} modifier
* Configured modifier to remove.
*
* @param {DataEventEmitter.EventDetail} [eventDetail]
* Custom information for pending events.
*/
ChainModifier.prototype.remove = function (modifier, eventDetail) {
var modifiers = this.modifiers;
this.emit({
type: 'removeModifier',
detail: eventDetail,
modifier: modifier
});
modifiers.splice(modifiers.indexOf(modifier), 1);
this.emit({
type: 'afterRemoveModifier',
detail: eventDetail,
modifier: modifier
});
};
/* *
*
* Static Properties
*
* */
/**
* Default option for the ordered modifier chain.
*/
ChainModifier.defaultOptions = {
modifier: 'Chain',
reverse: false
};
return ChainModifier;
}(DataModifier));
/* *
*
* Register
*
* */
DataModifier.addModifier(ChainModifier);
/* *
*
* Export
*
* */
export default ChainModifier;