@syncfusion/ej2-treegrid
Version:
Essential JS 2 TreeGrid Component
204 lines (203 loc) • 7.37 kB
JavaScript
import { getObject } from '@syncfusion/ej2-grids';
import { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';
import { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';
import { isNullOrUndefined } from '@syncfusion/ej2-base';
/**
* @param {TreeGrid} parent - Tree Grid instance
* @returns {boolean} - Specifies whether remote data binding
*/
export function isRemoteData(parent) {
if (parent.dataSource instanceof DataManager) {
var adaptor = parent.dataSource.adaptor;
return (adaptor instanceof ODataAdaptor ||
(adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||
(adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);
}
return false;
}
/**
* @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance
* @returns {boolean} - Returns whether custom binding
*/
export function isCountRequired(parent) {
if (parent.dataSource && 'result' in parent.dataSource) {
return true;
}
return false;
}
/**
* @param {TreeGrid} parent - Tree Grid instance
* @returns {boolean} - Returns whether checkbox column is enabled
*/
export function isCheckboxcolumn(parent) {
for (var i = 0; i < parent.columns.length; i++) {
if (parent.columns[parseInt(i.toString(), 10)].showCheckbox) {
return true;
}
}
return false;
}
/**
* @param {TreeGrid} parent - Tree Grid instance
* @returns {boolean} - Returns whether filtering and searching done
*/
export function isFilterChildHierarchy(parent) {
if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&
(parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||
(parent.allowFiltering && parent.grid.filterSettings.columns.length &&
(parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {
return true;
}
return false;
}
/**
* @param {Object} records - Define records for which parent records has to be found
* @hidden
* @returns {Object} - Returns parent records collection
*/
export function findParentRecords(records) {
var datas = [];
var recordsLength = Object.keys(records).length;
for (var i = 0, len = recordsLength; i < len; i++) {
var hasChild = getObject('hasChildRecords', records[parseInt(i.toString(), 10)]);
if (hasChild) {
datas.push(records[parseInt(i.toString(), 10)]);
}
}
return datas;
}
/**
* @param {TreeGrid} parent - Tree Grid instance
* @returns {boolean} - Returns the expand status of record
* @param {ITreeData} record - Define the record for which expand status has be found
* @param {ITreeData[]} parents - Parent Data collection
* @hidden
*/
export function getExpandStatus(parent, record, parents) {
var parentRecord = isNullOrUndefined(record.parentItem) ? null :
getParentData(parent, record.parentItem.uniqueID);
var childParent;
if (parentRecord != null) {
if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])
&& !parentRecord[parent.expandStateMapping]) {
parentRecord.expanded = false;
return false;
}
else if (parentRecord.expanded === false) {
return false;
}
else if (parentRecord.parentItem) {
childParent = getParentData(parent, parentRecord.parentItem.uniqueID);
if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])
&& !childParent[parent.expandStateMapping]) {
childParent.expanded = false;
return false;
}
if (childParent && childParent.expanded === false) {
return false;
}
else if (childParent) {
return getExpandStatus(parent, childParent, parents);
}
return true;
}
else {
return true;
}
}
else {
return true;
}
}
/**
* @param {ITreeData} records - Define the record for which child records has to be found
* @returns {Object[]} - Returns child records collection
* @hidden
*/
export function findChildrenRecords(records) {
var datas = [];
if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)
&& !records.childRecords.length)) {
return [];
}
if (!isNullOrUndefined(records.childRecords)) {
var childRecords = records.childRecords.filter(function (item) { return !item.isSummaryRow; });
var keys = Object.keys(childRecords);
for (var i = 0, len = keys.length; i < len; i++) {
datas.push(childRecords[parseInt(i.toString(), 10)]);
if (childRecords[parseInt(i.toString(), 10)].hasChildRecords ||
(!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) &&
childRecords[parseInt(i.toString(), 10)].childRecords.length)) {
datas = datas.concat(findChildrenRecords(childRecords[parseInt(i.toString(), 10)]));
}
}
}
return datas;
}
/**
* @param {TreeGrid} parent - Tree Grid instance
* @returns {boolean} - Returns whether local data binding
*/
export function isOffline(parent) {
if (isRemoteData(parent)) {
var dm = parent.dataSource;
return !isNullOrUndefined(dm.ready);
}
return true;
}
/**
* @param {Object[]} array - Defines the array to be cloned
* @returns {Object[]} - Returns cloned array collection
*/
export function extendArray(array) {
var objArr = [];
var obj;
var keys;
for (var i = 0; array && i < array.length; i++) {
keys = Object.keys(array[parseInt(i.toString(), 10)]);
obj = {};
for (var j = 0; j < keys.length; j++) {
obj[keys[parseInt(j.toString(), 10)]] = array[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];
}
objArr.push(obj);
}
return objArr;
}
/**
* @param {ITreeData} value - Defined the dirty data to be cleaned
* @returns {ITreeData} - Returns cleaned original data
*/
export function getPlainData(value) {
delete value.hasChildRecords;
delete value.childRecords;
delete value.index;
delete value.parentItem;
delete value.level;
delete value.taskData;
delete value.uniqueID;
return value;
}
/**
* @param {TreeGrid} parent - TreeGrid instance
* @param {string} value - IdMapping field name
* @param {boolean} requireFilter - Specified whether treegrid data is filtered
* @returns {ITreeData} - Returns IdMapping matched record
*/
export function getParentData(parent, value, requireFilter) {
if (requireFilter) {
var idFilter = 'uniqueIDFilterCollection';
return parent["" + idFilter]["" + value];
}
else {
var id = 'uniqueIDCollection';
return parent["" + id]["" + value];
}
}
/**
* @param {HTMLTableRowElement} el - Row element
* @returns {boolean} - Returns whether hidden
*/
export function isHidden(el) {
var style = window.getComputedStyle(el);
return ((style.display === 'none') || (style.visibility === 'hidden'));
}