@@ -36,6 +36,15 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
3636 const [ minDate , setMinDate ] = useState < Date | null > ( null ) ;
3737 const [ instrumentId , setInstrumentId ] = useState < null | string > ( null ) ;
3838
39+ function splitFirstDollar ( str : string ) {
40+ const match = / ^ ( .* ?) \$ ( .* ) $ / . exec ( str ) ;
41+ if ( ! match ) {
42+ return [ str , str ] ;
43+ }
44+ const [ , before , after ] = match ;
45+ return [ before , after ] ;
46+ }
47+
3948 const instrument = useInstrument ( instrumentId ) as AnyUnilingualScalarInstrument ;
4049
4150 const instrumentInfoQuery = useInstrumentInfoQuery ( {
@@ -70,7 +79,10 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
7079 const makeWideRows = ( ) => {
7180 const columnNames = Object . keys ( exportRecords [ 0 ] ! ) ;
7281 return exportRecords . map ( ( item ) => {
73- const obj : { [ key : string ] : any } = { subjectId : params . subjectId } ;
82+ const obj : { [ key : string ] : any } = {
83+ GroupID : splitFirstDollar ( params . subjectId ) [ 0 ] ,
84+ subjectId : splitFirstDollar ( params . subjectId ) [ 1 ]
85+ } ;
7486 for ( const key of columnNames ) {
7587 const val = item [ key ] ;
7688 if ( key === '__date__' ) {
@@ -99,8 +111,10 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
99111 objVal . forEach ( ( arrayItem ) => {
100112 Object . entries ( arrayItem as object ) . forEach ( ( [ arrKey , arrItem ] ) => {
101113 longRecord . push ( {
114+ GroupID : splitFirstDollar ( params . subjectId ) [ 0 ] ,
115+ // eslint-disable-next-line perfectionist/sort-objects
102116 Date : toBasicISOString ( date ) ,
103- SubjectID : params . subjectId ,
117+ SubjectID : splitFirstDollar ( params . subjectId ) [ 1 ] ,
104118 Variable : `${ objKey } -${ arrKey } ` ,
105119 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, perfectionist/sort-objects
106120 Value : arrItem
@@ -109,8 +123,10 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
109123 } ) ;
110124 } else {
111125 longRecord . push ( {
126+ GroupID : splitFirstDollar ( params . subjectId ) [ 0 ] ,
127+ // eslint-disable-next-line perfectionist/sort-objects
112128 Date : toBasicISOString ( date ) ,
113- SubjectID : params . subjectId ,
129+ SubjectID : splitFirstDollar ( params . subjectId ) [ 1 ] ,
114130 Value : objVal ,
115131 Variable : objKey
116132 } ) ;
0 commit comments