48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
|
import {CellStatus} from '../cells/renderer/CellStatus'
|
||
|
let ColumnBase = pillar.vuecomponents.table.columns.ColumnBase;
|
||
|
|
||
|
export class Status extends ColumnBase {
|
||
|
constructor() {
|
||
|
super('', 'attract-status');
|
||
|
this.isMandatory = true;
|
||
|
}
|
||
|
getCellRenderer(rowObject) {
|
||
|
return CellStatus.options.name;
|
||
|
}
|
||
|
getRawCellValue(rowObject) {
|
||
|
return rowObject.getProperties().status;
|
||
|
}
|
||
|
getCellTitle(rawCellValue, rowObject) {
|
||
|
function capitalize(str) {
|
||
|
if(str.length === 0) return str;
|
||
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
||
|
}
|
||
|
let formatedStatus = capitalize(rawCellValue).replace('_', ' ');
|
||
|
return `Status: ${formatedStatus}`;
|
||
|
}
|
||
|
getCellClasses(rawCellValue, rowObject) {
|
||
|
let classes = super.getCellClasses(rawCellValue, rowObject);
|
||
|
classes[`status-${rawCellValue}`] = true;
|
||
|
return classes;
|
||
|
}
|
||
|
compareRows(rowObject1, rowObject2) {
|
||
|
let sortNbr1 = this.getSortNumber(rowObject1);
|
||
|
let sortNbr2 = this.getSortNumber(rowObject2);
|
||
|
if (sortNbr1 === sortNbr2) return 0;
|
||
|
return sortNbr1 < sortNbr2 ? -1 : 1;
|
||
|
}
|
||
|
getSortNumber(rowObject) {
|
||
|
let statusStr = rowObject.getProperties().status;
|
||
|
switch (statusStr) {
|
||
|
case 'on_hold': return 10;
|
||
|
case 'todo': return 20;
|
||
|
case 'in_progress': return 30;
|
||
|
case 'review': return 40;
|
||
|
case 'cbb': return 50;
|
||
|
case 'approved': return 60;
|
||
|
case 'final': return 70;
|
||
|
default: return 9999; // invalid status
|
||
|
}
|
||
|
}
|
||
|
}
|