From 93b4f3fac8fdda0c48a0a69f35ab90a6e3019a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 4 Nov 2015 12:56:53 +0100 Subject: [PATCH] feat(tablepanel): minor progress on table panel --- public/app/panels/table/module.html | 2 + public/app/panels/table/module.ts | 69 +++++++++++----- public/app/panels/table/options.html | 19 +++-- public/less/grafana.less | 1 + public/less/pagination.less | 113 +++++++++++++++++++++++++++ public/less/panel_table.less | 12 ++- 6 files changed, 187 insertions(+), 29 deletions(-) create mode 100644 public/less/pagination.less diff --git a/public/app/panels/table/module.html b/public/app/panels/table/module.html index c85252354dc..75d428acf6a 100644 --- a/public/app/panels/table/module.html +++ b/public/app/panels/table/module.html @@ -2,5 +2,7 @@
+
diff --git a/public/app/panels/table/module.ts b/public/app/panels/table/module.ts index 6103e11113b..f4da7161f6f 100644 --- a/public/app/panels/table/module.ts +++ b/public/app/panels/table/module.ts @@ -15,6 +15,7 @@ export class TablePanelCtrl { constructor($scope, $rootScope, $q, panelSrv, panelHelper) { $scope.ctrl = this; $scope.transformers = transformers; + $scope.pageIndex = 0; $scope.panelMeta = new PanelMeta({ panelName: 'Table', @@ -68,6 +69,7 @@ export function tablePanelDirective() { controller: TablePanelCtrl, link: function(scope, elem) { var data; + var panel = scope.panel; function getTableHeight() { var panelHeight = scope.height || scope.panel.height || scope.row.height; @@ -78,39 +80,67 @@ export function tablePanelDirective() { return (panelHeight - 40) + 'px'; } - function renderPanel() { - var rootDiv = elem.find('.table-panel-container'); - var tableDiv = $('
'); - var i, y, rowElem, colElem, column, row; - - rowElem = $(''); - for (i = 0; i < data.columns.length; i++) { - column = data.columns[i]; - colElem = $('' + column.text + ''); + function appendTableHeader(tableElem) { + var rowElem = $(''); + for (var i = 0; i < data.columns.length; i++) { + var column = data.columns[i]; + var colElem = $('' + column.text + ''); rowElem.append(colElem); } var headElem = $(''); headElem.append(rowElem); + headElem.appendTo(tableElem); + } + function appendTableRows(tableElem) { var tbodyElem = $(''); - for (y = 0; y < data.rows.length; y++) { - row = data.rows[y]; - rowElem = $(''); - for (i = 0; i < data.columns.length; i++) { - colElem = $('' + row[i] + ''); + var rowEnd = Math.min(panel.pageSize, data.rows.length); + var rowStart = 0; + + for (var y = rowStart; y < rowEnd; y++) { + var row = data.rows[y]; + var rowElem = $(''); + for (var i = 0; i < data.columns.length; i++) { + var colElem = $('' + row[i] + ''); rowElem.append(colElem); } tbodyElem.append(rowElem); } - tableDiv.append(headElem); - tableDiv.append(tbodyElem); + tableElem.append(tbodyElem); + } - rootDiv.css({'max-height': getTableHeight()}); + function appendPaginationControls(footerElem) { + var paginationElem = $('