mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
53 lines
998 B
TypeScript
53 lines
998 B
TypeScript
import {transformers} from './transformers';
|
|
|
|
export class TableModel {
|
|
columns: any[];
|
|
rows: any[];
|
|
|
|
constructor() {
|
|
this.columns = [];
|
|
this.rows = [];
|
|
}
|
|
|
|
sort(options) {
|
|
if (options.col === null || this.columns.length < options.col) {
|
|
return;
|
|
}
|
|
|
|
this.rows.sort(function(a, b) {
|
|
a = a[options.col];
|
|
b = b[options.col];
|
|
if (a < b) {
|
|
return -1;
|
|
}
|
|
if (a > b) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
});
|
|
|
|
this.columns[options.col].sort = true;
|
|
|
|
if (options.desc) {
|
|
this.rows.reverse();
|
|
this.columns[options.col].desc = true;
|
|
}
|
|
}
|
|
|
|
static transform(data, panel) {
|
|
var model = new TableModel();
|
|
|
|
if (!data || data.length === 0) {
|
|
return model;
|
|
}
|
|
|
|
var transformer = transformers[panel.transform];
|
|
if (!transformer) {
|
|
throw {message: 'Transformer ' + panel.transformer + ' not found'};
|
|
}
|
|
|
|
transformer.transform(data, panel, model);
|
|
return model;
|
|
}
|
|
}
|