diff --git a/src/scripts/js/es6/common/vuecomponents/init.js b/src/scripts/js/es6/common/vuecomponents/init.js index 26a30795..b24bc409 100644 --- a/src/scripts/js/es6/common/vuecomponents/init.js +++ b/src/scripts/js/es6/common/vuecomponents/init.js @@ -7,6 +7,8 @@ import { PillarTable, TableState } from './table/Table' import { CellPrettyDate } from './table/cells/renderer/CellPrettyDate' import { CellDefault } from './table/cells/renderer/CellDefault' import { ColumnBase } from './table/columns/ColumnBase' +import { Created } from './table/columns/Created' +import { Updated } from './table/columns/Updated' import { ColumnFactoryBase } from './table/columns/ColumnFactoryBase' import { RowObjectsSourceBase } from './table/rows/RowObjectsSourceBase' import { RowBase } from './table/rows/RowObjectBase' @@ -18,7 +20,7 @@ import { NameFilter } from './table/rows/filter/NameFilter' let mixins = { UnitOfWorkTracker, - BrowserHistoryState, + BrowserHistoryState, StateSaveMode } @@ -27,6 +29,8 @@ let table = { TableState, columns: { ColumnBase, + Created, + Updated, ColumnFactoryBase, }, cells: { diff --git a/src/scripts/js/es6/common/vuecomponents/table/columns/Created.js b/src/scripts/js/es6/common/vuecomponents/table/columns/Created.js new file mode 100644 index 00000000..49d998b1 --- /dev/null +++ b/src/scripts/js/es6/common/vuecomponents/table/columns/Created.js @@ -0,0 +1,58 @@ +import { CellPrettyDate } from '../cells/renderer/CellPrettyDate' +import {ColumnBase} from './ColumnBase' + +/** + * Column showing the objects _created prettyfied + */ + +export class Created extends ColumnBase{ + constructor() { + super('Created', 'row-created'); + this.includedByDefault = false; + } + + /** + * + * @param {RowObject} rowObject + * @returns {String} Name of the Cell renderer component + */ + getCellRenderer(rowObject) { + return CellPrettyDate.options.name; + } + + /** + * + * @param {RowObject} rowObject + * @returns {DateString} + */ + getRawCellValue(rowObject) { + return rowObject.underlyingObject['_created']; + } + + /** + * Cell tooltip + * @param {Any} rawCellValue + * @param {RowObject} rowObject + * @returns {String} + */ + getCellTitle(rawCellValue, rowObject) { + return rawCellValue; + } + + /** + * Compare two rows to sort them. Can be overridden for more complex situations. + * + * @param {RowObject} rowObject1 + * @param {RowObject} rowObject2 + * @returns {Number} -1, 0, 1 + */ + compareRows(rowObject1, rowObject2) { + let dueDateStr1 = this.getRawCellValue(rowObject1); + let dueDateStr2 = this.getRawCellValue(rowObject2); + if (dueDateStr1 === dueDateStr2) return 0; + if (dueDateStr1 && dueDateStr2) { + return new Date(dueDateStr1) < new Date(dueDateStr2) ? -1 : 1; + } + return dueDateStr1 ? -1 : 1; + } +} diff --git a/src/scripts/js/es6/common/vuecomponents/table/columns/Updated.js b/src/scripts/js/es6/common/vuecomponents/table/columns/Updated.js new file mode 100644 index 00000000..855ae48d --- /dev/null +++ b/src/scripts/js/es6/common/vuecomponents/table/columns/Updated.js @@ -0,0 +1,58 @@ +import { CellPrettyDate } from '../cells/renderer/CellPrettyDate' +import {ColumnBase} from './ColumnBase' + +/** + * Column showing the objects _updated prettyfied + */ + +export class Updated extends ColumnBase{ + constructor() { + super('Updated', 'row-updated'); + this.includedByDefault = false; + } + + /** + * + * @param {RowObject} rowObject + * @returns {String} Name of the Cell renderer component + */ + getCellRenderer(rowObject) { + return CellPrettyDate.options.name; + } + + /** + * + * @param {RowObject} rowObject + * @returns {DateString} + */ + getRawCellValue(rowObject) { + return rowObject.underlyingObject['_updated']; + } + + /** + * Cell tooltip + * @param {Any} rawCellValue + * @param {RowObject} rowObject + * @returns {String} + */ + getCellTitle(rawCellValue, rowObject) { + return rawCellValue; + } + + /** + * Compare two rows to sort them. Can be overridden for more complex situations. + * + * @param {RowObject} rowObject1 + * @param {RowObject} rowObject2 + * @returns {Number} -1, 0, 1 + */ + compareRows(rowObject1, rowObject2) { + let dueDateStr1 = this.getRawCellValue(rowObject1); + let dueDateStr2 = this.getRawCellValue(rowObject2); + if (dueDateStr1 === dueDateStr2) return 0; + if (dueDateStr1 && dueDateStr2) { + return new Date(dueDateStr1) < new Date(dueDateStr2) ? -1 : 1; + } + return dueDateStr1 ? -1 : 1; + } +}