column-helper.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { camelCase, deCamelCase } from './camel-case';
  6. import { id } from './id';
  7. import { getterForProp } from './column-prop-getters';
  8. /**
  9. * Sets the column defaults
  10. * @param {?} columns
  11. * @return {?}
  12. */
  13. export function setColumnDefaults(columns) {
  14. if (!columns)
  15. return;
  16. // Only one column should hold the tree view
  17. // Thus if multiple columns are provided with
  18. // isTreeColumn as true we take only the first one
  19. /** @type {?} */
  20. let treeColumnFound = false;
  21. for (const column of columns) {
  22. if (!column.$$id) {
  23. column.$$id = id();
  24. }
  25. // prop can be numeric; zero is valid not a missing prop
  26. // translate name => prop
  27. if (isNullOrUndefined(column.prop) && column.name) {
  28. column.prop = camelCase(column.name);
  29. }
  30. if (!column.$$valueGetter) {
  31. column.$$valueGetter = getterForProp(column.prop);
  32. }
  33. // format props if no name passed
  34. if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {
  35. column.name = deCamelCase(String(column.prop));
  36. }
  37. if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {
  38. column.name = ''; // Fixes IE and Edge displaying `null`
  39. }
  40. if (!column.hasOwnProperty('resizeable')) {
  41. column.resizeable = true;
  42. }
  43. if (!column.hasOwnProperty('sortable')) {
  44. column.sortable = true;
  45. }
  46. if (!column.hasOwnProperty('draggable')) {
  47. column.draggable = true;
  48. }
  49. if (!column.hasOwnProperty('canAutoResize')) {
  50. column.canAutoResize = true;
  51. }
  52. if (!column.hasOwnProperty('width')) {
  53. column.width = 150;
  54. }
  55. if (!column.hasOwnProperty('isTreeColumn')) {
  56. column.isTreeColumn = false;
  57. }
  58. else {
  59. if (column.isTreeColumn && !treeColumnFound) {
  60. // If the first column with isTreeColumn is true found
  61. // we mark that treeCoulmn is found
  62. treeColumnFound = true;
  63. }
  64. else {
  65. // After that isTreeColumn property for any other column
  66. // will be set as false
  67. column.isTreeColumn = false;
  68. }
  69. }
  70. }
  71. }
  72. /**
  73. * @template T
  74. * @param {?} value
  75. * @return {?}
  76. */
  77. export function isNullOrUndefined(value) {
  78. return value === null || value === undefined;
  79. }
  80. /**
  81. * Translates templates definitions to objects
  82. * @param {?} templates
  83. * @return {?}
  84. */
  85. export function translateTemplates(templates) {
  86. /** @type {?} */
  87. const result = [];
  88. for (const temp of templates) {
  89. /** @type {?} */
  90. const col = {};
  91. /** @type {?} */
  92. const props = Object.getOwnPropertyNames(temp);
  93. for (const prop of props) {
  94. col[prop] = temp[prop];
  95. }
  96. if (temp.headerTemplate) {
  97. col.headerTemplate = temp.headerTemplate;
  98. }
  99. if (temp.cellTemplate) {
  100. col.cellTemplate = temp.cellTemplate;
  101. }
  102. if (temp.summaryFunc) {
  103. col.summaryFunc = temp.summaryFunc;
  104. }
  105. if (temp.summaryTemplate) {
  106. col.summaryTemplate = temp.summaryTemplate;
  107. }
  108. result.push(col);
  109. }
  110. return result;
  111. }
  112. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2NvbHVtbi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFPdEQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQXNCO0lBQ3RELElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTzs7Ozs7UUFLakIsZUFBZSxHQUFZLEtBQUs7SUFFcEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztTQUNwQjtRQUVELHdEQUF3RDtRQUN4RCx5QkFBeUI7UUFDekIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUNqRCxNQUFNLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUN6QixNQUFNLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckUsTUFBTSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsc0NBQXNDO1NBQ3pEO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDMUI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDM0MsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDN0I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQyxNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQzNDLHNEQUFzRDtnQkFDdEQsbUNBQW1DO2dCQUNuQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNMLHdEQUF3RDtnQkFDeEQsdUJBQXVCO2dCQUN2QixNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQzthQUM3QjtTQUNGO0tBQ0Y7QUFDSCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUksS0FBMkI7SUFDOUQsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQzs7Ozs7O0FBS0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQXFDOztVQUNoRSxNQUFNLEdBQVUsRUFBRTtJQUN4QixLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRTs7Y0FDdEIsR0FBRyxHQUFRLEVBQUU7O2NBRWIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDMUM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNwQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDNUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhbWVsQ2FzZSwgZGVDYW1lbENhc2UgfSBmcm9tICcuL2NhbWVsLWNhc2UnO1xuaW1wb3J0IHsgaWQgfSBmcm9tICcuL2lkJztcbmltcG9ydCB7IGdldHRlckZvclByb3AgfSBmcm9tICcuL2NvbHVtbi1wcm9wLWdldHRlcnMnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi90eXBlcy90YWJsZS1jb2x1bW4udHlwZSc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbHVtbnMvY29sdW1uLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogU2V0cyB0aGUgY29sdW1uIGRlZmF1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2x1bW5EZWZhdWx0cyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKSB7XG4gIGlmICghY29sdW1ucykgcmV0dXJuO1xuXG4gIC8vIE9ubHkgb25lIGNvbHVtbiBzaG91bGQgaG9sZCB0aGUgdHJlZSB2aWV3XG4gIC8vIFRodXMgaWYgbXVsdGlwbGUgY29sdW1ucyBhcmUgcHJvdmlkZWQgd2l0aFxuICAvLyBpc1RyZWVDb2x1bW4gYXMgdHJ1ZSB3ZSB0YWtlIG9ubHkgdGhlIGZpcnN0IG9uZVxuICBsZXQgdHJlZUNvbHVtbkZvdW5kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgIGlmICghY29sdW1uLiQkaWQpIHtcbiAgICAgIGNvbHVtbi4kJGlkID0gaWQoKTtcbiAgICB9XG5cbiAgICAvLyBwcm9wIGNhbiBiZSBudW1lcmljOyB6ZXJvIGlzIHZhbGlkIG5vdCBhIG1pc3NpbmcgcHJvcFxuICAgIC8vIHRyYW5zbGF0ZSBuYW1lID0+IHByb3BcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoY29sdW1uLnByb3ApICYmIGNvbHVtbi5uYW1lKSB7XG4gICAgICBjb2x1bW4ucHJvcCA9IGNhbWVsQ2FzZShjb2x1bW4ubmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKCFjb2x1bW4uJCR2YWx1ZUdldHRlcikge1xuICAgICAgY29sdW1uLiQkdmFsdWVHZXR0ZXIgPSBnZXR0ZXJGb3JQcm9wKGNvbHVtbi5wcm9wKTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgcHJvcHMgaWYgbm8gbmFtZSBwYXNzZWRcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGNvbHVtbi5wcm9wKSAmJiBpc051bGxPclVuZGVmaW5lZChjb2x1bW4ubmFtZSkpIHtcbiAgICAgIGNvbHVtbi5uYW1lID0gZGVDYW1lbENhc2UoU3RyaW5nKGNvbHVtbi5wcm9wKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGNvbHVtbi5wcm9wKSAmJiBpc051bGxPclVuZGVmaW5lZChjb2x1bW4ubmFtZSkpIHtcbiAgICAgIGNvbHVtbi5uYW1lID0gJyc7IC8vIEZpeGVzIElFIGFuZCBFZGdlIGRpc3BsYXlpbmcgYG51bGxgXG4gICAgfVxuXG4gICAgaWYgKCFjb2x1bW4uaGFzT3duUHJvcGVydHkoJ3Jlc2l6ZWFibGUnKSkge1xuICAgICAgY29sdW1uLnJlc2l6ZWFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghY29sdW1uLmhhc093blByb3BlcnR5KCdzb3J0YWJsZScpKSB7XG4gICAgICBjb2x1bW4uc29ydGFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghY29sdW1uLmhhc093blByb3BlcnR5KCdkcmFnZ2FibGUnKSkge1xuICAgICAgY29sdW1uLmRyYWdnYWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2NhbkF1dG9SZXNpemUnKSkge1xuICAgICAgY29sdW1uLmNhbkF1dG9SZXNpemUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghY29sdW1uLmhhc093blByb3BlcnR5KCd3aWR0aCcpKSB7XG4gICAgICBjb2x1bW4ud2lkdGggPSAxNTA7XG4gICAgfVxuXG4gICAgaWYgKCFjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2lzVHJlZUNvbHVtbicpKSB7XG4gICAgICBjb2x1bW4uaXNUcmVlQ29sdW1uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2x1bW4uaXNUcmVlQ29sdW1uICYmICF0cmVlQ29sdW1uRm91bmQpIHtcbiAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGNvbHVtbiB3aXRoIGlzVHJlZUNvbHVtbiBpcyB0cnVlIGZvdW5kXG4gICAgICAgIC8vIHdlIG1hcmsgdGhhdCB0cmVlQ291bG1uIGlzIGZvdW5kXG4gICAgICAgIHRyZWVDb2x1bW5Gb3VuZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZnRlciB0aGF0IGlzVHJlZUNvbHVtbiBwcm9wZXJ0eSBmb3IgYW55IG90aGVyIGNvbHVtblxuICAgICAgICAvLyB3aWxsIGJlIHNldCBhcyBmYWxzZVxuICAgICAgICBjb2x1bW4uaXNUcmVlQ29sdW1uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZDxUPih2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlcyB0ZW1wbGF0ZXMgZGVmaW5pdGlvbnMgdG8gb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlVGVtcGxhdGVzKHRlbXBsYXRlczogRGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlW10pOiBhbnlbXSB7XG4gIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgZm9yIChjb25zdCB0ZW1wIG9mIHRlbXBsYXRlcykge1xuICAgIGNvbnN0IGNvbDogYW55ID0ge307XG5cbiAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlbXApO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgY29sW3Byb3BdID0gdGVtcFtwcm9wXTtcbiAgICB9XG5cbiAgICBpZiAodGVtcC5oZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgY29sLmhlYWRlclRlbXBsYXRlID0gdGVtcC5oZWFkZXJUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAodGVtcC5jZWxsVGVtcGxhdGUpIHtcbiAgICAgIGNvbC5jZWxsVGVtcGxhdGUgPSB0ZW1wLmNlbGxUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAodGVtcC5zdW1tYXJ5RnVuYykge1xuICAgICAgY29sLnN1bW1hcnlGdW5jID0gdGVtcC5zdW1tYXJ5RnVuYztcbiAgICB9XG5cbiAgICBpZiAodGVtcC5zdW1tYXJ5VGVtcGxhdGUpIHtcbiAgICAgIGNvbC5zdW1tYXJ5VGVtcGxhdGUgPSB0ZW1wLnN1bW1hcnlUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICByZXN1bHQucHVzaChjb2wpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==