@@ -2,35 +2,33 @@ import * as React from 'react';
22import { useState , useEffect } from 'react' ;
33import * as Rdom from 'react-dom' ;
44
5- import RawTableHeader from '../../view/RawTableHeader' ;
65import {
76 ToCompareViewMessage ,
87 SetComparisonsMessage ,
98} from '../../interface-types' ;
109import CompareSelector from './CompareSelector' ;
1110import { vscode } from '../../view/vscode-api' ;
12- import RawTableRow from '../../view/RawTableRow' ;
13- import { ResultRow } from '../../adapt' ;
14- import { className } from '../../view/result-table-utils' ;
11+ import CompareTable from './CompareTable' ;
1512
1613const emptyComparison : SetComparisonsMessage = {
1714 t : 'setComparisons' ,
1815 stats : { } ,
19- rows : {
20- from : [ ] ,
21- to : [ ] ,
22- } ,
16+ rows : undefined ,
2317 columns : [ ] ,
2418 commonResultSetNames : [ ] ,
2519 currentResultSetName : '' ,
2620 datebaseUri : '' ,
21+ message : 'Empty comparison'
2722} ;
2823
29- export function Compare ( props : { } ) : JSX . Element {
24+ export function Compare ( _ : { } ) : JSX . Element {
3025 const [ comparison , setComparison ] = useState < SetComparisonsMessage > (
3126 emptyComparison
3227 ) ;
3328
29+ const message = comparison . message || 'Empty comparison' ;
30+ const hasRows = comparison . rows && ( comparison . rows . to . length || comparison . rows . from . length ) ;
31+
3432 useEffect ( ( ) => {
3533 window . addEventListener ( 'message' , ( evt : MessageEvent ) => {
3634 const msg : ToCompareViewMessage = evt . data ;
@@ -48,7 +46,9 @@ export function Compare(props: {}): JSX.Element {
4846 return (
4947 < >
5048 < div className = "vscode-codeql__compare-header" >
51- < div > Table to compare:</ div >
49+ < div className = "vscode-codeql__compare-header-item" >
50+ Table to compare:
51+ </ div >
5252 < CompareSelector
5353 availableResultSets = { comparison . commonResultSetNames }
5454 currentResultSetName = { comparison . currentResultSetName }
@@ -57,60 +57,11 @@ export function Compare(props: {}): JSX.Element {
5757 }
5858 />
5959 </ div >
60- < table className = "vscode-codeql__compare-body" >
61- < thead >
62- < tr >
63- < td >
64- < a
65- onClick = { ( ) => openQuery ( 'from' ) }
66- className = "vscode-codeql__compare-open"
67- >
68- { comparison . stats . fromQuery ?. name }
69- </ a >
70- </ td >
71- < td >
72- < a
73- onClick = { ( ) => openQuery ( 'to' ) }
74- className = "vscode-codeql__compare-open"
75- >
76- { comparison . stats . toQuery ?. name }
77- </ a >
78- </ td >
79- </ tr >
80- < tr >
81- < td > { comparison . stats . fromQuery ?. time } </ td >
82- < td > { comparison . stats . toQuery ?. time } </ td >
83- </ tr >
84- < tr >
85- < th > { comparison . rows . from . length } rows removed</ th >
86- < th > { comparison . rows . to . length } rows added</ th >
87- </ tr >
88- </ thead >
89- < tbody >
90- < tr >
91- < td >
92- < table className = { className } >
93- < RawTableHeader
94- columns = { comparison . columns }
95- schemaName = { comparison . currentResultSetName }
96- preventSort = { true }
97- />
98- { createRows ( comparison . rows . from , comparison . datebaseUri ) }
99- </ table >
100- </ td >
101- < td >
102- < table className = { className } >
103- < RawTableHeader
104- columns = { comparison . columns }
105- schemaName = { comparison . currentResultSetName }
106- preventSort = { true }
107- />
108- { createRows ( comparison . rows . to , comparison . datebaseUri ) }
109- </ table >
110- </ td >
111- </ tr >
112- </ tbody >
113- </ table >
60+ { hasRows ? (
61+ < CompareTable comparison = { comparison } > </ CompareTable >
62+ ) : (
63+ < div className = "vscode-codeql__compare-message" > { message } </ div >
64+ ) }
11465 </ >
11566 ) ;
11667 } catch ( err ) {
@@ -119,28 +70,6 @@ export function Compare(props: {}): JSX.Element {
11970 }
12071}
12172
122- async function openQuery ( kind : 'from' | 'to' ) {
123- vscode . postMessage ( {
124- t : 'openQuery' ,
125- kind,
126- } ) ;
127- }
128-
129- function createRows ( rows : ResultRow [ ] , databaseUri : string ) {
130- return (
131- < tbody >
132- { rows . map ( ( row , rowIndex ) => (
133- < RawTableRow
134- key = { rowIndex }
135- rowIndex = { rowIndex }
136- row = { row }
137- databaseUri = { databaseUri }
138- />
139- ) ) }
140- </ tbody >
141- ) ;
142- }
143-
14473Rdom . render (
14574 < Compare /> ,
14675 document . getElementById ( 'root' ) ,
0 commit comments