← All changes
|
classes/Visualizer/Gutenberg/src/Components/DataTable.js
+50
-65
3.10.0
→
3.3.4
View file →
| @@ -45,20 +45,21 @@ | ||
| 45 | 45 | } |
| 46 | 46 | |
| 47 | 47 | initDataTable( tableColumns, tableRow ) { |
| 48 | 48 | const settings = this.props.options; |
| 49 | + | |
| 49 | 50 | const columns = tableColumns.map( ( i, index ) => { |
| 50 | 51 | let type = i.type; |
| 51 | 52 | |
| 52 | 53 | switch ( i.type ) { |
| 53 | - case 'number': | |
| 54 | - type = 'num'; | |
| 55 | - break; | |
| 56 | - case 'date': | |
| 57 | - case 'datetime': | |
| 58 | - case 'timeofday': | |
| 59 | - type = 'date'; | |
| 60 | - break; | |
| 54 | + case 'number': | |
| 55 | + type = 'num'; | |
| 56 | + break; | |
| 57 | + case 'date': | |
| 58 | + case 'datetime': | |
| 59 | + case 'timeofday': | |
| 60 | + type = 'date'; | |
| 61 | + break; | |
| 61 | 62 | } |
| 62 | 63 | |
| 63 | 64 | return { |
| 64 | 65 | title: i.label, |
| @@ -63,9 +64,9 @@ | ||
| 63 | 64 | return { |
| 64 | 65 | title: i.label, |
| 65 | 66 | data: i.label, |
| 66 | 67 | type: type, |
| 67 | - render: this.dataRenderer( type, index ) | |
| 68 | + render: this.dataRenderer( data, type, index ) | |
| 68 | 69 | }; |
| 69 | 70 | }); |
| 70 | 71 | |
| 71 | 72 | const data = tableRow.map( i => { |
| @@ -71,15 +72,9 @@ | ||
| 71 | 72 | const data = tableRow.map( i => { |
| 72 | 73 | const row = {}; |
| 73 | 74 | |
| 74 | 75 | columns.forEach( ( j, n ) => { |
| 75 | - var datum = i[n]; | |
| 76 | - | |
| 77 | - // datum could be undefined for dynamic data (e.g. through json). | |
| 78 | - if ( 'undefined' === typeof datum ) { | |
| 79 | - datum = i[j.data]; | |
| 80 | - } | |
| 81 | - row[j.data] = datum; | |
| 76 | + row[j.data] = i[n]; | |
| 82 | 77 | }); |
| 83 | 78 | |
| 84 | 79 | return row; |
| 85 | 80 | }); |
| @@ -92,11 +87,11 @@ | ||
| 92 | 87 | pageLength: settings.pageLength_int || 10, |
| 93 | 88 | pagingType: settings.pagingType, |
| 94 | 89 | ordering: 'false' === settings.ordering_bool ? false : true, |
| 95 | 90 | fixedHeader: 'true' === settings.fixedHeader_bool ? true : false, |
| 96 | - scrollCollapse: !! this.props.chartsScreen || 'true' === settings.scrollCollapse_bool ? true : false, | |
| 91 | + scrollCollapse: this.props.chartsScreen && true || 'true' === settings.scrollCollapse_bool ? true : false, | |
| 97 | 92 | scrollY: this.props.chartsScreen && 180 || ( 'true' === settings.scrollCollapse_bool && Number( settings.scrollY_int ) || false ), |
| 98 | - responsive: !! this.props.chartsScreen || 'true' === settings.responsive_bool ? true : false, | |
| 93 | + responsive: this.props.chartsScreen && true || 'true' === settings.responsive_bool ? true : false, | |
| 99 | 94 | searching: false, |
| 100 | 95 | select: false, |
| 101 | 96 | lengthChange: false, |
| 102 | 97 | bFilter: false, |
| @@ -103,60 +98,50 @@ | ||
| 103 | 98 | bInfo: false |
| 104 | 99 | }); |
| 105 | 100 | } |
| 106 | 101 | |
| 107 | - dataRenderer( type, index ) { | |
| 102 | + dataRenderer( data, type, index ) { | |
| 108 | 103 | const settings = this.props.options; |
| 109 | 104 | |
| 110 | - let renderer = null; | |
| 111 | - if ( 'undefined' === typeof settings.series || 'undefined' === typeof settings.series[index] || 'undefined' === typeof settings.series[index].format ) { | |
| 112 | - return renderer; | |
| 113 | - } | |
| 105 | + if ( undefined === settings.series[index]) { | |
| 106 | + return data; | |
| 107 | + } | |
| 114 | 108 | |
| 115 | - switch ( type ) { | |
| 116 | - case 'date': | |
| 117 | - case 'datetime': | |
| 118 | - case 'timeofday': | |
| 119 | - if ( settings.series[index].format && settings.series[index].format.from && settings.series[index].format.to ) { | |
| 120 | - renderer = jQuery.fn.dataTable.render.moment( settings.series[index].format.from, settings.series[index].format.to ); | |
| 121 | - } else { | |
| 122 | - renderer = jQuery.fn.dataTable.render.moment( 'MM-DD-YYYY' ); | |
| 123 | - } | |
| 124 | - break; | |
| 125 | - case 'num': | |
| 126 | - const parts = [ '', '', '', '', '' ]; | |
| 127 | - if ( settings.series[index].format.thousands ) { | |
| 128 | - parts[0] = settings.series[index].format.thousands; | |
| 129 | - } | |
| 130 | - if ( settings.series[index].format.decimal ) { | |
| 131 | - parts[1] = settings.series[index].format.decimal; | |
| 132 | - } | |
| 133 | - if ( settings.series[index].format.precision && 0 < parseInt( settings.series[index].format.precision ) ) { | |
| 134 | - parts[2] = settings.series[index].format.precision; | |
| 135 | - } | |
| 136 | - if ( settings.series[index].format.prefix ) { | |
| 137 | - parts[3] = settings.series[index].format.prefix; | |
| 138 | - } | |
| 139 | - if ( settings.series[index].format.suffix ) { | |
| 140 | - parts[4] = settings.series[index].format.suffix; | |
| 141 | - } | |
| 142 | - renderer = jQuery.fn.dataTable.render.number( ...parts ); | |
| 143 | - break; | |
| 144 | - case 'boolean': | |
| 145 | - jQuery.fn.dataTable.render.extra = function( data, type, row ) { | |
| 146 | - if ( ( true === data || 'true' === data ) && '' !== settings.series[index].format.truthy ) { | |
| 147 | - return settings.series[index].format.truthy.replace( /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '' ); | |
| 148 | - } | |
| 149 | - if ( ( false === data || 'false' === data ) && '' !== settings.series[index].format.falsy ) { | |
| 150 | - return settings.series[index].format.falsy.replace( /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '' ); | |
| 151 | - } | |
| 152 | - return data; | |
| 153 | - }; | |
| 154 | - renderer = jQuery.fn.dataTable.render.extra; | |
| 155 | - break; | |
| 109 | + if ( 'date' === type || 'datetime' === type || 'timeofday' === type ) { | |
| 110 | + if ( settings.series[index].format && settings.series[index].format.from && settings.series[index].format.to ) { | |
| 111 | + return jQuery.fn.dataTable.render.moment( settings.series[index].format.from, settings.series[index].format.to ); | |
| 112 | + } | |
| 113 | + | |
| 114 | + return jQuery.fn.dataTable.render.moment( 'MM-DD-YYYY' ); | |
| 156 | 115 | } |
| 157 | 116 | |
| 158 | - return renderer; | |
| 117 | + if ( 'num' === type ) { | |
| 118 | + const parts = [ '', '', '', '', '' ]; | |
| 119 | + | |
| 120 | + if ( settings.series[index].format.thousands ) { | |
| 121 | + parts[0] = settings.series[index].format.thousands; | |
| 122 | + } | |
| 123 | + | |
| 124 | + if ( settings.series[index].format.decimal ) { | |
| 125 | + parts[1] = settings.series[index].format.decimal; | |
| 126 | + } | |
| 127 | + | |
| 128 | + if ( settings.series[index].format.precision ) { | |
| 129 | + parts[2] = settings.series[index].format.precision; | |
| 130 | + } | |
| 131 | + | |
| 132 | + if ( settings.series[index].format.prefix ) { | |
| 133 | + parts[3] = settings.series[index].format.prefix; | |
| 134 | + } | |
| 135 | + | |
| 136 | + if ( settings.series[index].format.suffix ) { | |
| 137 | + parts[4] = settings.series[index].format.suffix; | |
| 138 | + } | |
| 139 | + | |
| 140 | + return jQuery.fn.dataTable.render.number( ...parts ); | |
| 141 | + } | |
| 142 | + | |
| 143 | + return data; | |
| 159 | 144 | } |
| 160 | 145 | |
| 161 | 146 | render() { |
| 162 | 147 | const settings = this.props.options; |