@ -2,7 +2,7 @@ import { map } from 'rxjs/operators';
import { MutableDataFrame } from '../../dataframe' ;
import { getFieldDisplayName } from '../../field/fieldState' ;
import { DataFrame , DataTransformerInfo , Field , FieldType , Vector } from '../../types' ;
import { DataFrame , DataTransformerInfo , Field , FieldType , SpecialValue , Vector } from '../../types' ;
import { DataTransformerID } from './ids' ;
@ -10,11 +10,13 @@ export interface GroupingToMatrixTransformerOptions {
columnField? : string ;
rowField? : string ;
valueField? : string ;
emptyValue? : SpecialValue ;
}
const DEFAULT_COLUMN_FIELD = 'Time' ;
const DEFAULT_ROW_FIELD = 'Time' ;
const DEFAULT_VALUE_FIELD = 'Value' ;
const DEFAULT_EMPTY_VALUE = SpecialValue . Empty ;
export const groupingToMatrixTransformer : DataTransformerInfo < GroupingToMatrixTransformerOptions > = {
id : DataTransformerID.groupingToMatrix ,
@ -32,6 +34,7 @@ export const groupingToMatrixTransformer: DataTransformerInfo<GroupingToMatrixTr
const columnFieldMatch = options . columnField || DEFAULT_COLUMN_FIELD ;
const rowFieldMatch = options . rowField || DEFAULT_ROW_FIELD ;
const valueFieldMatch = options . valueField || DEFAULT_VALUE_FIELD ;
const emptyValue = options . emptyValue || DEFAULT_EMPTY_VALUE ;
// Accept only single queries
if ( data . length !== 1 ) {
@ -76,7 +79,7 @@ export const groupingToMatrixTransformer: DataTransformerInfo<GroupingToMatrixTr
for ( const columnName of columnValues ) {
let values = [ ] ;
for ( const rowName of rowValues ) {
const value = matrixValues [ columnName ] [ rowName ] ? ? '' ;
const value = matrixValues [ columnName ] [ rowName ] ? ? getSpecialValue ( emptyValue ) ;
values . push ( value ) ;
}
@ -114,3 +117,17 @@ function findKeyField(frame: DataFrame, matchTitle: string): Field | null {
return null ;
}
function getSpecialValue ( specialValue : SpecialValue ) {
switch ( specialValue ) {
case SpecialValue . False :
return false ;
case SpecialValue . True :
return true ;
case SpecialValue . Null :
return null ;
case SpecialValue . Empty :
default :
return '' ;
}
}