table_model.ts 999 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {transformers} from './transformers';
  2. export class TableModel {
  3. columns: any[];
  4. rows: any[];
  5. constructor() {
  6. this.columns = [];
  7. this.rows = [];
  8. }
  9. sort(options) {
  10. if (options.col === null || this.columns.length <= options.col) {
  11. return;
  12. }
  13. this.rows.sort(function(a, b) {
  14. a = a[options.col];
  15. b = b[options.col];
  16. if (a < b) {
  17. return -1;
  18. }
  19. if (a > b) {
  20. return 1;
  21. }
  22. return 0;
  23. });
  24. this.columns[options.col].sort = true;
  25. if (options.desc) {
  26. this.rows.reverse();
  27. this.columns[options.col].desc = true;
  28. }
  29. }
  30. static transform(data, panel) {
  31. var model = new TableModel();
  32. if (!data || data.length === 0) {
  33. return model;
  34. }
  35. var transformer = transformers[panel.transform];
  36. if (!transformer) {
  37. throw {message: 'Transformer ' + panel.transformer + ' not found'};
  38. }
  39. transformer.transform(data, panel, model);
  40. return model;
  41. }
  42. }