From a102d480734995777762f73737d8ff1f94b3c80d Mon Sep 17 00:00:00 2001 From: christophe-g Date: Fri, 14 Oct 2016 09:43:45 +0200 Subject: [PATCH 1/7] added accessor to data-columns as a way to access nested data values --- paper-datatable-column.html | 10 +++++++++- paper-datatable.html | 29 +++++++++++++++-------------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/paper-datatable-column.html b/paper-datatable-column.html index 656c694..38df103 100644 --- a/paper-datatable-column.html +++ b/paper-datatable-column.html @@ -248,7 +248,15 @@ * * @type Number in px or String */ - width: Object + width: Object, + + /** + * `accessor` a function for accessing the row value + * example: function(rowData) {return rowdata.value.count;} + */ + accessor: { + type: Function + } }, behaviors: [ Polymer.Templatizer diff --git a/paper-datatable.html b/paper-datatable.html index d1c8907..60dbfb6 100644 --- a/paper-datatable.html +++ b/paper-datatable.html @@ -586,39 +586,40 @@ var rowData = this.get(['data',row.dataset.key]); var cells = Polymer.dom(row).querySelectorAll('.bound-cell'); + var dataColumn; cells.forEach((cell) => { - if(!cell.dataColumn){ + if(!(dataColumn = cell.dataColumn)){ console.log(cell); } var isEmpty = cell.hasAttribute('data-empty'); var isWrongRow = cell.getAttribute('data-row-key') !== row.dataset.key; - var isWrongColumn = cell.dataColumn !== cell.dataBoundColumn; + var isWrongColumn = dataColumn !== cell.dataBoundColumn; if(isEmpty || isWrongRow || isWrongColumn){ cell.removeAttribute('data-empty'); - var prop = cell.dataColumn.property; - var data = rowData[prop]; + var prop = dataColumn.property; + var data = dataColumn.accessor ? dataColumn.accessor(rowData, prop) : rowData[prop]; cell.setAttribute('data-row-key', row.dataset.key); - cell.dataBoundColumn = cell.dataColumn; + cell.dataBoundColumn = dataColumn; - if(cell.dataColumn.cellStyle.length > 0){ - cell.setAttribute('style', cell.dataColumn.cellStyle); + if(dataColumn.cellStyle.length > 0){ + cell.setAttribute('style', dataColumn.cellStyle); }else{ cell.setAttribute('style', ''); } - if(cell.style['text-align'] == '' && cell.dataColumn.align){ - cell.style['text-align'] = cell.dataColumn.align; + if(cell.style['text-align'] == '' && dataColumn.align){ + cell.style['text-align'] = dataColumn.align; } - //if(cell.style['min-width'] == '' && cell.dataColumn.width){ - // cell.style['min-width'] = cell.dataColumn.width; + //if(cell.style['min-width'] == '' && dataColumn.width){ + // cell.style['min-width'] = dataColumn.width; //} - if(cell.dataColumn.template && !cell.dataColumn.dialog){ - var instance = cell.dataColumn._createCellInstance( + if(dataColumn.template && !dataColumn.dialog){ + var instance = dataColumn._createCellInstance( rowData, row.dataset.key ); @@ -629,7 +630,7 @@ }else{ if(cell.instance) delete cell.instance; - cell.querySelector('span').innerHTML = cell.dataColumn._formatValue(data) + cell.querySelector('span').innerHTML = dataColumn._formatValue(data) //cell.textContent = data; } } From f0a28ad77752a8be84636a570528669568540b88 Mon Sep 17 00:00:00 2001 From: christophe-g Date: Sat, 15 Oct 2016 13:00:16 +0200 Subject: [PATCH 2/7] added prop attribute to the cell so that it is easier to css --- paper-datatable.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/paper-datatable.html b/paper-datatable.html index 60dbfb6..70b70b4 100644 --- a/paper-datatable.html +++ b/paper-datatable.html @@ -606,6 +606,9 @@ cell.setAttribute('data-row-key', row.dataset.key); cell.dataBoundColumn = dataColumn; + // we add the column key as an attribute for easier css rules (e.g. ::content [my-prop] {background : red;}) + cell.setAttribute(prop, ''); + if(dataColumn.cellStyle.length > 0){ cell.setAttribute('style', dataColumn.cellStyle); }else{ From ae6301765bab59d653e0349ecc61819dec42c476 Mon Sep 17 00:00:00 2001 From: christophe-g Date: Fri, 11 Nov 2016 13:30:23 +0100 Subject: [PATCH 3/7] added cls --- paper-datatable-column.html | 8 ++++++++ paper-datatable.html | 23 ++++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/paper-datatable-column.html b/paper-datatable-column.html index 38df103..eeed53a 100644 --- a/paper-datatable-column.html +++ b/paper-datatable-column.html @@ -140,6 +140,14 @@ type: String, value: '' }, + + /** + * `cls` the class to add to th + */ + cls: { + type: String, + value: '' + }, /** * Convenience attribute to align the header and cell content (e.g. 'center') * diff --git a/paper-datatable.html b/paper-datatable.html index 70b70b4..b8bbf7e 100644 --- a/paper-datatable.html +++ b/paper-datatable.html @@ -18,7 +18,7 @@ position: relative; } :host([resize-behavior='overflow']) #container{ - overflow: auto; + /*overflow: auto;*/ } :host([resize-behavior='dynamic-columns']) #container{ overflow: auto; @@ -249,12 +249,14 @@ @@ -285,7 +287,7 @@