com.phloxui
Version:
PhloxUI Ng2+ Framework
90 lines (89 loc) • 8.76 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { TableRowController } from './TableRowController';
export class DefaultTableRowGenerator {
/**
* @param {?} a
* @param {?} b
* @param {?} comparator
* @return {?}
*/
static compareIgnoreNullOrUndefined(a, b, comparator) {
if (a === b) {
return 0;
}
if ((a === null || a === undefined) && (b === null || b === undefined)) {
return 0;
}
if (a === null || a === undefined) {
return -1;
}
if (b === null || b === undefined) {
return 1;
}
if (comparator === null || typeof comparator !== 'function') {
return 0;
}
return comparator(a, b);
}
/**
* @param {?} table
* @param {?} data
* @return {?}
*/
generateTableRows(table, data) {
if (data === null || typeof data === 'undefined') {
return [];
}
if (!Array.isArray(data)) {
return [];
}
let /** @type {?} */ re = [];
for (let /** @type {?} */ d of data) {
let /** @type {?} */ row = new TableRowController(table, d);
re.push(row);
}
return re;
}
/**
* @param {?} compareRowData
* @param {?} toRowData
* @return {?}
*/
compareRowData(compareRowData, toRowData) {
return DefaultTableRowGenerator.compareIgnoreNullOrUndefined(compareRowData, toRowData, (compareRowData, toRowData) => {
return JSON.stringify(compareRowData).localeCompare(JSON.stringify(toRowData));
});
}
/**
* @param {?} compareRow
* @param {?} toRow
* @return {?}
*/
compareRow(compareRow, toRow) {
return DefaultTableRowGenerator.compareIgnoreNullOrUndefined(compareRow, toRow, (compareRow, toRow) => {
let /** @type {?} */ compareData = compareRow.getData();
let /** @type {?} */ toData = toRow.getData();
return this.compareRowData(compareData, toData);
});
}
/**
* @param {?} rows
* @param {?} rowData
* @return {?}
*/
findRow(rows, rowData) {
if (rows === null || rows === undefined || !Array.isArray(rows)) {
return null;
}
for (let /** @type {?} */ row of rows) {
if (this.compareRowData(row.getData(), rowData) === 0) {
return row;
}
}
return null;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFRhYmxlUm93R2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L3RhYmxlL0RlZmF1bHRUYWJsZVJvd0dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJMUQsTUFBTTs7Ozs7OztJQUVHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLFVBQW9CO1FBQzdFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNWO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNWO1FBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7SUFHbkIsaUJBQWlCLENBQUMsS0FBaUIsRUFBRSxJQUFTO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQ1g7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDWDtRQUVELHFCQUFJLEVBQUUsR0FBMEIsRUFBRSxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxDQUFDLHFCQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25CLHFCQUFJLEdBQUcsR0FBd0IsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFaEUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNkO1FBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQzs7Ozs7OztJQUdMLGNBQWMsQ0FBQyxjQUFtQixFQUFFLFNBQWM7UUFDdkQsTUFBTSxDQUFDLHdCQUF3QixDQUFDLDRCQUE0QixDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxjQUFtQixFQUFFLFNBQWMsRUFBRSxFQUFFO1lBQzlILE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDaEYsQ0FBQyxDQUFDOzs7Ozs7O0lBR0UsVUFBVSxDQUFDLFVBQStCLEVBQUUsS0FBMEI7UUFDM0UsTUFBTSxDQUFDLHdCQUF3QixDQUFDLDRCQUE0QixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFlLEVBQUUsS0FBVSxFQUFFLEVBQUU7WUFDOUcscUJBQUksV0FBVyxHQUFRLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QyxxQkFBSSxNQUFNLEdBQVEsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWxDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNqRCxDQUFDLENBQUM7Ozs7Ozs7SUFHRSxPQUFPLENBQUMsSUFBMkIsRUFBRSxPQUFZO1FBQ3RELEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELEdBQUcsQ0FBQyxDQUFDLHFCQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDWjtTQUNGO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQzs7Q0FHZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBobG94VGFibGUgfSBmcm9tICcuL1BobG94VGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlUm93Q29udHJvbGxlciB9IGZyb20gJy4vVGFibGVSb3dDb250cm9sbGVyJztcbmltcG9ydCB7IElUYWJsZVJvd0NvbnRyb2xsZXIgfSBmcm9tICcuL0lUYWJsZVJvd0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgSVRhYmxlUm93R2VuZXJhdG9yIH0gZnJvbSAnLi9JVGFibGVSb3dHZW5lcmF0b3InO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRhYmxlUm93R2VuZXJhdG9yIGltcGxlbWVudHMgSVRhYmxlUm93R2VuZXJhdG9yIHtcblxuICBwdWJsaWMgc3RhdGljIGNvbXBhcmVJZ25vcmVOdWxsT3JVbmRlZmluZWQoYTogYW55LCBiOiBhbnksIGNvbXBhcmF0b3I6IEZ1bmN0aW9uKTogbnVtYmVyIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmICgoYSA9PT0gbnVsbCB8fCBhID09PSB1bmRlZmluZWQpICYmIChiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoYSA9PT0gbnVsbCB8fCBhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBpZiAoY29tcGFyYXRvciA9PT0gbnVsbCB8fCB0eXBlb2YgY29tcGFyYXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmF0b3IoYSwgYik7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVUYWJsZVJvd3ModGFibGU6IFBobG94VGFibGUsIGRhdGE6IGFueSk6IElUYWJsZVJvd0NvbnRyb2xsZXJbXSB7XG4gICAgaWYgKGRhdGEgPT09IG51bGwgfHwgdHlwZW9mIGRhdGEgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCByZTogSVRhYmxlUm93Q29udHJvbGxlcltdID0gW107XG4gICAgZm9yIChsZXQgZCBvZiBkYXRhKSB7XG4gICAgICBsZXQgcm93OiBJVGFibGVSb3dDb250cm9sbGVyID0gbmV3IFRhYmxlUm93Q29udHJvbGxlcih0YWJsZSwgZCk7XG5cbiAgICAgIHJlLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmU7XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZVJvd0RhdGEoY29tcGFyZVJvd0RhdGE6IGFueSwgdG9Sb3dEYXRhOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiBEZWZhdWx0VGFibGVSb3dHZW5lcmF0b3IuY29tcGFyZUlnbm9yZU51bGxPclVuZGVmaW5lZChjb21wYXJlUm93RGF0YSwgdG9Sb3dEYXRhLCAoY29tcGFyZVJvd0RhdGE6IGFueSwgdG9Sb3dEYXRhOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjb21wYXJlUm93RGF0YSkubG9jYWxlQ29tcGFyZShKU09OLnN0cmluZ2lmeSh0b1Jvd0RhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJlUm93KGNvbXBhcmVSb3c6IElUYWJsZVJvd0NvbnRyb2xsZXIsIHRvUm93OiBJVGFibGVSb3dDb250cm9sbGVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGVmYXVsdFRhYmxlUm93R2VuZXJhdG9yLmNvbXBhcmVJZ25vcmVOdWxsT3JVbmRlZmluZWQoY29tcGFyZVJvdywgdG9Sb3csIChjb21wYXJlUm93OiBhbnksIHRvUm93OiBhbnkpID0+IHtcbiAgICAgIGxldCBjb21wYXJlRGF0YTogYW55ID0gY29tcGFyZVJvdy5nZXREYXRhKCk7XG4gICAgICBsZXQgdG9EYXRhOiBhbnkgPSB0b1Jvdy5nZXREYXRhKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVSb3dEYXRhKGNvbXBhcmVEYXRhLCB0b0RhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbmRSb3cocm93czogSVRhYmxlUm93Q29udHJvbGxlcltdLCByb3dEYXRhOiBhbnkpOiBJVGFibGVSb3dDb250cm9sbGVyIHtcbiAgICBpZiAocm93cyA9PT0gbnVsbCB8fCByb3dzID09PSB1bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAobGV0IHJvdyBvZiByb3dzKSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJlUm93RGF0YShyb3cuZ2V0RGF0YSgpLCByb3dEYXRhKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbn1cbiJdfQ==