@@ -24,6 +24,9 @@ export const absoluteFn = (d) => d.value;
2424export const getFormatTypes = ( $vis ) => formatTypes [ getDateHistogram ( $vis ) ] ;
2525
2626export function showTable ( $vis , mapColors , element , measures , data , valueFn , formatTime ) {
27+ var periodsToExclude = $vis . params . hiddenColumns ? $vis . params . hiddenColumns . split ( ";" ) : [ ] ;
28+ data = data . filter ( function ( d ) { return periodsToExclude . indexOf ( d . period . toString ( ) ) == - 1 } ) ;
29+
2730 let minMaxesForColumn = [ ] ;
2831 const periodMeans = d3 . nest ( ) . key ( ( d ) => d . period )
2932 . entries ( data ) . map ( ( d ) => {
@@ -40,8 +43,14 @@ export function showTable($vis, mapColors, element, measures, data, valueFn, for
4043
4144 const customColumn = getDateHistogram ( $vis ) ? 'Date' : 'Term' ;
4245 const fixedColumns = [ 'Total' , customColumn ] ;
43- const columns = d3 . map ( data , ( d ) => d . period ) . keys ( ) . map ( x => parseInt ( x , 10 ) ) ;
44- const allColumns = fixedColumns . concat ( columns ) ;
46+ const columns = d3 . map ( data , ( d ) => d . period ) . keys ( ) . map ( x => parseInt ( x , 10 ) ) . sort ( ( a , b ) => a - b ) ;
47+ const allColumns = fixedColumns . concat ( columns . map ( function ( x ) {
48+ if ( getPeriodAggregationName ( $vis ) == 'date_histogram' ) {
49+ return formatTime ( new Date ( x ) ) ;
50+ } else {
51+ return x ;
52+ }
53+ } ) ) ;
4554
4655 const table = d3 . select ( element ) . append ( 'table' )
4756 . attr ( 'width' , measures . width )
@@ -64,7 +73,7 @@ export function showTable($vis, mapColors, element, measures, data, valueFn, for
6473 . enter ( )
6574 . append ( 'tr' ) ;
6675
67- const colorScale = getColorScale ( mapColors , data , valueFn ) ;
76+ const colorScale = getColorScale ( mapColors , $vis . params . reverseColors , data , valueFn ) ;
6877
6978 rows . selectAll ( 'td' )
7079 . data ( ( row ) => {
@@ -242,33 +251,50 @@ export function getDateHistogram($vis) {
242251 }
243252}
244253
245- export function getHeatMapColor ( data , valueFn ) {
254+ export function getPeriodAggregationName ( $vis ) {
255+ const schema = $vis . aggs . find ( ( agg ) => agg . schema . name === 'cohort_period' ) ;
256+ if ( ! schema ) {
257+ return null ;
258+ }
259+ return schema . type . name ;
260+ }
261+
262+ export function getHeatMapColor ( data , scale , valueFn ) {
246263 const domain = d3 . extent ( data , valueFn ) ;
247264 domain . splice ( 1 , 0 , d3 . mean ( domain ) ) ;
248- return d3 . scale . linear ( ) . domain ( domain ) . range ( colors ) ;
265+ return d3 . scale . linear ( ) . domain ( domain ) . range ( scale ) ;
249266}
250267
251- export function getMeanColor ( d , column ) {
252- return d3 . scale . linear ( ) . domain ( [ column . min , column . mean , column . max ] ) . range ( colors ) ( d ) ;
268+ export function getMeanColor ( scale ) {
269+ return ( d , column ) => {
270+ return d3 . scale . linear ( ) . domain ( [ column . min , column . mean , column . max ] ) . range ( scale ) ( d ) ;
271+ } ;
253272}
254273
255- export function getAboveAverageColor ( d , column ) {
256- if ( d > column . mean ) {
257- return green ;
258- } else if ( d === column . mean ) {
259- return yellow ;
260- } else if ( d < column . mean ) {
261- return red ;
274+ export function getAboveAverageColor ( scale ) {
275+ return ( d , column ) => {
276+ if ( d > column . mean ) {
277+ return scale [ 0 ] ;
278+ } else if ( d === column . mean ) {
279+ return scale [ 1 ] ;
280+ } else if ( d < column . mean ) {
281+ return scale [ 2 ] ;
282+ }
262283 }
263284}
264285
265- export function getColorScale ( mapColors , data , valueFn ) {
286+ export function getColorScale ( mapColors , reverseColors , data , valueFn ) {
287+ var scale = colors ;
288+ if ( reverseColors ) {
289+ scale = colors . slice ( ) . reverse ( ) ;
290+ }
291+
266292 if ( mapColors === 'heatmap' ) {
267- return getHeatMapColor ( data , valueFn ) ;
293+ return getHeatMapColor ( data , scale , valueFn ) ;
268294 } else if ( mapColors === 'mean' ) {
269- return getMeanColor ;
295+ return getMeanColor ( scale ) ;
270296 } else if ( mapColors === 'aboveAverage' ) {
271- return getAboveAverageColor ;
297+ return getAboveAverageColor ( scale ) ;
272298 } else {
273299 return ( d ) => {
274300 } ;
0 commit comments