diff --git a/demo/paper-datatable/playground.html b/demo/paper-datatable/playground.html index 4e59fd1..939809b 100644 --- a/demo/paper-datatable/playground.html +++ b/demo/paper-datatable/playground.html @@ -57,6 +57,16 @@ + + + + + + + + + + @@ -81,6 +91,18 @@ + + + + + + @@ -109,9 +131,9 @@ return this.get(path); }; app.data = [ - {title: 'Ice cream', yummy: true, calories: 2000, complexObj: {a: 'b', b: 'd'}, arr: [2,3,4], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447315235838)}, - {title: 'Dessert', yummy: true, calories: 3000, complexObj: {a: 'bb', b: 'dd'}, arr: [5,6], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447155235838)}, - {title: 'Cake', yummy: false, calories: 4000, complexObj: {a: 'cc', b: 'gg'}, arr: [7,8], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447355135838)} + {title: 'Ice cream', yummy: true, calories: 2000, veryComplexObj: {a: {x: ['b', 'c']}}, complexObj: {a: 'b', b: 'd'}, arr: [2,3,4], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447315235838)}, + {title: 'Dessert', yummy: true, calories: 3000, veryComplexObj: {a: {x: ['b', 'c']}}, complexObj: {a: 'bb', b: 'dd'}, arr: [5,6], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447155235838)}, + {title: 'Cake', yummy: false, calories: 4000, veryComplexObj: {a: {x: ['b', 'c']}}, complexObj: {a: 'cc', b: 'gg'}, arr: [7,8], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447355135838)} ]; app.log = function(ev){ console.info('event', ev.type, 'on', ev.target, 'with detail', ev.detail); diff --git a/paper-datatable-column.html b/paper-datatable-column.html index 656c694..3e8cef8 100644 --- a/paper-datatable-column.html +++ b/paper-datatable-column.html @@ -286,10 +286,14 @@ }, _createCellInstance: function(model, notificationKey){ - if(typeof model[this.property] == 'undefined' && typeof this.default !== 'undefined'){ + var modelDefined = model[this.property]; + if (!modelDefined && this.property) { + this.property.split('.').forEach(key => modelDefined = modelDefined ? modelDefined[key] : model[key]); + } + if(modelDefined == 'undefined' && typeof this.default !== 'undefined'){ var instance = this.stamp({item: model, column:this, value: this.default, _dataKey: notificationKey}); }else{ - var instance = this.stamp({item: model, column:this, value: model[this.property], _dataKey: notificationKey}); + var instance = this.stamp({item: model, column:this, value: modelDefined, _dataKey: notificationKey}); } return instance; }, diff --git a/paper-datatable.html b/paper-datatable.html index d1c8907..1ebf212 100644 --- a/paper-datatable.html +++ b/paper-datatable.html @@ -601,6 +601,9 @@ cell.removeAttribute('data-empty'); var prop = cell.dataColumn.property; var data = rowData[prop]; + if (!data && prop) { + prop.split('.').forEach(key => data = data ? data[key] : rowData[key]); + } cell.setAttribute('data-row-key', row.dataset.key); cell.dataBoundColumn = cell.dataColumn;