aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/views/nodes/DataVizBox/DataVizBox.tsx42
-rw-r--r--src/client/views/nodes/DataVizBox/components/Chart.scss3
-rw-r--r--src/client/views/nodes/DataVizBox/components/Histogram.tsx37
-rw-r--r--src/client/views/nodes/DataVizBox/components/LineChart.tsx28
-rw-r--r--src/client/views/nodes/DataVizBox/components/PieChart.tsx20
-rw-r--r--src/client/views/nodes/DataVizBox/components/TableBox.tsx26
6 files changed, 95 insertions, 61 deletions
diff --git a/src/client/views/nodes/DataVizBox/DataVizBox.tsx b/src/client/views/nodes/DataVizBox/DataVizBox.tsx
index 12aa2ae34..710c049a2 100644
--- a/src/client/views/nodes/DataVizBox/DataVizBox.tsx
+++ b/src/client/views/nodes/DataVizBox/DataVizBox.tsx
@@ -14,7 +14,7 @@ import { TableBox } from './components/TableBox';
import './DataVizBox.scss';
import { Histogram } from './components/Histogram';
import { PieChart } from './components/PieChart';
-import { Toggle, ToggleType } from 'browndash-components';
+import { Toggle, ToggleType, Type } from 'browndash-components';
export enum DataVizView {
TABLE = 'table',
@@ -25,6 +25,7 @@ export enum DataVizView {
@observer
export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
+
public static LayoutString(fieldKey: string) {
return FieldView.LayoutString(DataVizBox, fieldKey);
}
@@ -97,37 +98,16 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
}
selectAxes = (axes: string[]) => (this.layoutDoc.data_vizAxes = new List<string>(axes));
- @computed get table(){
- if (!this.pairs) return 'no data';
- return <TableBox pairs={this.pairs} axes={this.axes} rootDoc={this.rootDoc} docView={this.props.DocumentView} selectAxes={this.selectAxes}/>;
- }
- @computed get lineChart(){
- const width = this.props.PanelWidth() * 0.9;
- const height = (this.props.PanelHeight() - 32) /* height of 'change view' button */ * 0.9;
- const margin = { top: 10, right: 25, bottom: 50, left: 25 };
- if (!this.pairs) return 'no data';
- return <LineChart ref={r => (this._chartRenderer = r ?? undefined)} height={height} width={width} fieldKey={this.fieldKey} margin={margin} rootDoc={this.rootDoc} axes={this.axes} pairs={this.pairs} dataDoc={this.dataDoc} />;
- }
- @computed get histogram(){
- const width = this.props.PanelWidth() * 0.9;
- const height = (this.props.PanelHeight() - 32) /* height of 'change view' button */ * 0.9;
- const margin = { top: 10, right: 25, bottom: 50, left: 25 };
- if (!this.pairs) return 'no data';
- return <Histogram height={height} width={width} fieldKey={this.fieldKey} margin={margin} rootDoc={this.rootDoc} axes={this.axes} pairs={this.pairs} dataDoc={this.dataDoc} />;
- }
- @computed get pieChart(){
+ @computed get selectView() {
const width = this.props.PanelWidth() * 0.9;
const height = (this.props.PanelHeight() - 32) /* height of 'change view' button */ * 0.9;
const margin = { top: 10, right: 25, bottom: 50, left: 25 };
if (!this.pairs) return 'no data';
- return <PieChart height={height} width={width} fieldKey={this.fieldKey} margin={margin} rootDoc={this.rootDoc} axes={this.axes} pairs={this.pairs} dataDoc={this.dataDoc} />;
- }
- @computed get selectView() {
switch (this.dataVizView) {
- case DataVizView.TABLE: return this.table;
- case DataVizView.LINECHART: return this.lineChart;
- case DataVizView.HISTOGRAM: return this.histogram;
- case DataVizView.PIECHART: return this.pieChart;
+ case DataVizView.TABLE: return <TableBox pairs={this.pairs} axes={this.axes} height={height} width={width} margin={margin} rootDoc={this.rootDoc} docView={this.props.DocumentView} selectAxes={this.selectAxes}/>;
+ case DataVizView.LINECHART: return <LineChart layoutDoc={this.layoutDoc} ref={r => (this._chartRenderer = r ?? undefined)} height={height} width={width} fieldKey={this.fieldKey} margin={margin} rootDoc={this.rootDoc} axes={this.axes} pairs={this.pairs} dataDoc={this.dataDoc} />;
+ case DataVizView.HISTOGRAM: return <Histogram layoutDoc={this.layoutDoc} height={height} width={width} fieldKey={this.fieldKey} margin={margin} rootDoc={this.rootDoc} axes={this.axes} pairs={this.pairs} dataDoc={this.dataDoc} />;
+ case DataVizView.PIECHART: return <PieChart layoutDoc={this.layoutDoc} height={height} width={width} fieldKey={this.fieldKey} margin={margin} rootDoc={this.rootDoc} axes={this.axes} pairs={this.pairs} dataDoc={this.dataDoc} />;
}
}
@computed get dataUrl() {
@@ -176,19 +156,19 @@ export class DataVizBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
)
}>
<div className={'datatype-button'}>
- <Toggle text={"TABLE"} toggleType={ToggleType.BUTTON} type={"secondary"} color={"black"}
+ <Toggle text={"TABLE"} toggleType={ToggleType.BUTTON} type={Type.SEC} color={"black"}
onClick={e => this.layoutDoc._dataVizView = DataVizView.TABLE}
toggleStatus={this.layoutDoc._dataVizView == DataVizView.TABLE}
/>
- <Toggle text={"LINECHART"} toggleType={ToggleType.BUTTON} type={"secondary"} color={"black"}
+ <Toggle text={"LINECHART"} toggleType={ToggleType.BUTTON} type={Type.SEC} color={"black"}
onClick={e => this.layoutDoc._dataVizView = DataVizView.LINECHART}
toggleStatus={this.layoutDoc._dataVizView == DataVizView.LINECHART}
/>
- <Toggle text={"HISTOGRAM"} toggleType={ToggleType.BUTTON} type={"secondary"} color={"black"}
+ <Toggle text={"HISTOGRAM"} toggleType={ToggleType.BUTTON} type={Type.SEC} color={"black"}
onClick={e => this.layoutDoc._dataVizView = DataVizView.HISTOGRAM}
toggleStatus={this.layoutDoc._dataVizView == DataVizView.HISTOGRAM}
/>
- <Toggle text={"PIE CHART"} toggleType={ToggleType.BUTTON} type={"secondary"} color={"black"}
+ <Toggle text={"PIE CHART"} toggleType={ToggleType.BUTTON} type={Type.SEC} color={"black"}
onClick={e => this.layoutDoc._dataVizView = DataVizView.PIECHART}
toggleStatus={this.layoutDoc._dataVizView == DataVizView.PIECHART}
/>
diff --git a/src/client/views/nodes/DataVizBox/components/Chart.scss b/src/client/views/nodes/DataVizBox/components/Chart.scss
index fc0c4cea3..6c87241b8 100644
--- a/src/client/views/nodes/DataVizBox/components/Chart.scss
+++ b/src/client/views/nodes/DataVizBox/components/Chart.scss
@@ -75,3 +75,6 @@
fill: red;
}
}
+.table-container{
+ overflow: scroll;
+} \ No newline at end of file
diff --git a/src/client/views/nodes/DataVizBox/components/Histogram.tsx b/src/client/views/nodes/DataVizBox/components/Histogram.tsx
index 64e61fca8..740ee6e3a 100644
--- a/src/client/views/nodes/DataVizBox/components/Histogram.tsx
+++ b/src/client/views/nodes/DataVizBox/components/Histogram.tsx
@@ -1,10 +1,10 @@
import { observer } from "mobx-react";
-import { Doc, DocListCast } from "../../../../../fields/Doc";
+import { Doc, DocListCast, FieldResult } from "../../../../../fields/Doc";
import * as React from 'react';
import * as d3 from 'd3';
import { IReactionDisposer, action, computed, observable, reaction } from "mobx";
import { LinkManager } from "../../../../util/LinkManager";
-import { Cast, DocCast} from "../../../../../fields/Types";
+import { Cast, DocCast, StrCast} from "../../../../../fields/Types";
import { DataPoint, SelectedDataPoint } from "./LineChart";
import { DocumentManager } from "../../../../util/DocumentManager";
import { Id } from "../../../../../fields/FieldSymbols";
@@ -19,6 +19,7 @@ import { FaFillDrip } from "react-icons/fa";
export interface HistogramProps {
rootDoc: Doc;
+ layoutDoc: Doc;
axes: string[];
pairs: { [key: string]: any }[];
width: number;
@@ -44,9 +45,6 @@ export class Histogram extends React.Component<HistogramProps> {
private maxBins = 15; // maximum number of bins that is readable on a normal sized doc
@observable _currSelected: any | undefined = undefined;
private curBarSelected: any = undefined;
- private barColors: any = {};
- private defaultBarColor: string = '#69b3a2';
- @observable graphTitle: string = this.defaultGraphTitle;
// TODO: nda - some sort of mapping that keeps track of the annotated points so we can easily remove when annotations list updates
@computed get _histogramData() {
@@ -75,7 +73,7 @@ export class Histogram extends React.Component<HistogramProps> {
@computed get defaultGraphTitle(){
var ax0 = this.props.axes[0];
var ax1 = (this.props.axes.length>1)? this.props.axes[1] : undefined;
- if (this.props.axes.length<2 || !/\d/.test(this.props.pairs[0][ax0]) || !ax1){
+ if (this.props.axes.length<2 || !/\d/.test(this.props.pairs[0][ax0]) || !ax1 || !this.numericalYData){
return ax0 + " Histogram";
}
else return ax1 + " by " + ax0 + " Histogram";
@@ -285,8 +283,8 @@ export class Histogram extends React.Component<HistogramProps> {
histStringDataSet.push({[yAxisTitle]: 0, [xAxisTitle]: uniqueArr[i]})
}
for (let i=0; i<data.length; i++){
- let sliceData = histStringDataSet.filter(each => each[xAxisTitle]==data[i])
- sliceData[0][yAxisTitle] = sliceData[0][yAxisTitle] + 1;
+ let barData = histStringDataSet.filter(each => each[xAxisTitle]==data[i])
+ barData[0][yAxisTitle] = barData[0][yAxisTitle] + 1;
}
}
histDataSet = histStringDataSet
@@ -426,27 +424,33 @@ export class Histogram extends React.Component<HistogramProps> {
return height - y(d.length)})
.attr("width", eachRectWidth)
.attr("class", 'histogram-bar')
- .attr("fill", (d)=>{ return this.barColors[d[0]]? this.barColors[d[0]] : this.defaultBarColor})
+ .attr("fill", (d)=>{ return this.props.layoutDoc['histogramBarColors-'+d[0]]? StrCast(this.props.layoutDoc['histogramBarColors-'+d[0]]) : this.props.layoutDoc.defaultHistogramColor? StrCast(this.props.layoutDoc.defaultHistogramColor): '#69b3a2'})
};
@action changeSelectedColor = (color: string) => {
this.curBarSelected.attr("fill", color);
- this.barColors[this._currSelected[this.props.axes[0]].replace(/\$/g, '').replace(/\%/g, '').replace(/\</g, '')] = color;
+ var barName = StrCast(this._currSelected[this.props.axes[0]].replace(/\$/g, '').replace(/\%/g, '').replace(/\</g, ''))
+ this.props.layoutDoc['histogramBarColors-'+barName] = color;
};
@action changeDefaultColor = (color: string) => {
const defaultColorBars = this._histogramSvg!.selectAll('.histogram-bar').filter((d: any) => {
- if (this.barColors[d[0]]) return false;
+ if (this.props.layoutDoc['histogramBarColors-'+d[0]]) return false;
else return true;
})
defaultColorBars.attr("fill", color);
- this.defaultBarColor = color;
+ this.props.layoutDoc.defaultHistogramColor = color;
};
render() {
- const title = this.graphTitle;
+ var curSelectedBarName;
+ var titleAccessor: any='';
+ if (this.props.axes.length==2) titleAccessor = StrCast(this.props.layoutDoc['histogram-title-'+this.props.axes[0]+'-'+this.props.axes[1]]);
+ else if (this.props.axes.length>0) titleAccessor = StrCast(this.props.layoutDoc['histogram-title-'+this.props.axes[0]]);
+ const title = titleAccessor? titleAccessor : this.defaultGraphTitle;
var selected: string;
if (this._currSelected){
+ curSelectedBarName = StrCast(this._currSelected![this.props.axes[0]].replace(/\$/g, '').replace(/\%/g, '').replace(/\</g, ''))
selected = '{ ';
Object.keys(this._currSelected).map(key => {
key!=''? selected += key + ': ' + this._currSelected[key] + ', ': '';
@@ -461,7 +465,8 @@ export class Histogram extends React.Component<HistogramProps> {
<div className="graph-title">
<EditableText
val={title}
- setVal={action(val => this.graphTitle = val as string)}
+ setVal={action(val => {this.props.axes.length>1? this.props.layoutDoc['histogram-title-'+this.props.axes[0]+"-"+this.props.axes[1]] = val as string
+ : this.props.layoutDoc['histogram-title-'+this.props.axes[0]] = val as string})}
color={"black"}
size={Size.LARGE}
fillWidth
@@ -471,7 +476,7 @@ export class Histogram extends React.Component<HistogramProps> {
tooltip={'Change Default Bar Color'}
type={Type.SEC}
icon={<FaFillDrip/>}
- selectedColor={this.defaultBarColor}
+ selectedColor={this.props.layoutDoc.defaultHistogramColor? StrCast(this.props.layoutDoc.defaultHistogramColor): '#69b3a2'}
setSelectedColor={color => this.changeDefaultColor(color)}
size={Size.XSMALL}
/>
@@ -484,7 +489,7 @@ export class Histogram extends React.Component<HistogramProps> {
tooltip={'Change Slice Color'}
type={Type.SEC}
icon={<FaFillDrip/>}
- selectedColor={this.curBarSelected.attr("fill")}
+ selectedColor={this.props.layoutDoc['histogramBarColors-'+curSelectedBarName]? this.props.layoutDoc['histogramBarColors-'+curSelectedBarName] : this.curBarSelected.attr("fill")}
setSelectedColor={color => this.changeSelectedColor(color)}
size={Size.XSMALL}
/>
diff --git a/src/client/views/nodes/DataVizBox/components/LineChart.tsx b/src/client/views/nodes/DataVizBox/components/LineChart.tsx
index da79df476..0142e96ad 100644
--- a/src/client/views/nodes/DataVizBox/components/LineChart.tsx
+++ b/src/client/views/nodes/DataVizBox/components/LineChart.tsx
@@ -6,7 +6,7 @@ import { Doc, DocListCast } from '../../../../../fields/Doc';
import { Id } from '../../../../../fields/FieldSymbols';
import { List } from '../../../../../fields/List';
import { listSpec } from '../../../../../fields/Schema';
-import { Cast, DocCast } from '../../../../../fields/Types';
+import { Cast, DocCast, StrCast } from '../../../../../fields/Types';
import { Docs } from '../../../../documents/Documents';
import { DocumentManager } from '../../../../util/DocumentManager';
import { LinkManager } from '../../../../util/LinkManager';
@@ -14,6 +14,7 @@ import { PinProps, PresBox } from '../../trails';
import { DataVizBox } from '../DataVizBox';
import { createLineGenerator, drawLine, minMaxRange, scaleCreatorNumerical, xAxisCreator, xGrid, yAxisCreator, yGrid } from '../utils/D3Utils';
import './Chart.scss';
+import { EditableText, Size } from 'browndash-components';
export interface DataPoint {
x: number;
@@ -24,6 +25,7 @@ export interface SelectedDataPoint extends DataPoint {
}
export interface LineChartProps {
rootDoc: Doc;
+ layoutDoc: Doc;
axes: string[];
pairs: { [key: string]: any }[];
width: number;
@@ -185,6 +187,15 @@ export class LineChart extends React.Component<LineChartProps> {
return this.props.width - this.props.margin.left - this.props.margin.right;
}
+ @computed get defaultGraphTitle(){
+ var ax0 = this.props.axes[0];
+ var ax1 = (this.props.axes.length>1)? this.props.axes[1] : undefined;
+ if (this.props.axes.length<2 || !/\d/.test(this.props.pairs[0][ax0]) || !ax1){
+ return ax0 + " Line Chart";
+ }
+ else return ax1 + " by " + ax0 + " Line Chart";
+ }
+
setupTooltip() {
return d3
.select(this._lineChartRef.current)
@@ -339,11 +350,24 @@ export class LineChart extends React.Component<LineChartProps> {
}
render() {
+ var titleAccessor:any = '';
+ if (this.props.axes.length==2) titleAccessor = StrCast(this.props.layoutDoc['lineChart-title-'+this.props.axes[0]+'-'+this.props.axes[1]]);
+ else if (this.props.axes.length>0) titleAccessor = StrCast(this.props.layoutDoc['lineChart-title-'+this.props.axes[0]]);
+ const title = titleAccessor? titleAccessor : this.defaultGraphTitle;
const selectedPt = this._currSelected ? `x: ${this._currSelected.x} y: ${this._currSelected.y}` : 'none';
return (
this.props.axes.length >= 2 ? (
<div className="chart-container" >
- <div className="graph-title"> {this.graphTitle} </div>
+ <div className="graph-title">
+ <EditableText
+ val={title}
+ setVal={action(val => {this.props.axes.length>1? this.props.layoutDoc['lineChart-title-'+this.props.axes[0]+"-"+this.props.axes[1]] = val as string
+ : this.props.layoutDoc['lineChart-title-'+this.props.axes[0]] = val as string})}
+ color={"black"}
+ size={Size.LARGE}
+ fillWidth
+ />
+ </div>
<div className={'selected-data'}> {`Selected: ${selectedPt}`}</div>
<div ref={this._lineChartRef} />
</div>
diff --git a/src/client/views/nodes/DataVizBox/components/PieChart.tsx b/src/client/views/nodes/DataVizBox/components/PieChart.tsx
index 47d4fb23e..f0c27866d 100644
--- a/src/client/views/nodes/DataVizBox/components/PieChart.tsx
+++ b/src/client/views/nodes/DataVizBox/components/PieChart.tsx
@@ -4,7 +4,7 @@ import * as React from 'react';
import * as d3 from 'd3';
import { IReactionDisposer, action, computed, observable, reaction } from "mobx";
import { LinkManager } from "../../../../util/LinkManager";
-import { Cast, DocCast} from "../../../../../fields/Types";
+import { Cast, DocCast, StrCast} from "../../../../../fields/Types";
import { DataPoint, SelectedDataPoint } from "./LineChart";
import { DocumentManager } from "../../../../util/DocumentManager";
import { Id } from "../../../../../fields/FieldSymbols";
@@ -19,6 +19,7 @@ import { FaFillDrip } from "react-icons/fa";
export interface PieChartProps {
rootDoc: Doc;
+ layoutDoc: Doc;
axes: string[];
pairs: { [key: string]: any }[];
width: number;
@@ -42,8 +43,6 @@ export class PieChart extends React.Component<PieChartProps> {
private byCategory: boolean = true; // whether the data is organized by category or by specified number percentages/ratios
@observable _currSelected: any | undefined = undefined;
private curSliceSelected: any = undefined;
- private sliceColors: any = {};
- @observable graphTitle: string = this.defaultGraphTitle;
// TODO: nda - some sort of mapping that keeps track of the annotated points so we can easily remove when annotations list updates
@computed get _piechartData() {
@@ -254,7 +253,7 @@ export class PieChart extends React.Component<PieChartProps> {
var percentField = Object.keys(dataSet[0])[0]
var descriptionField = Object.keys(dataSet[0])[1]!
- var radius = Math.min(width, height) / 2 - Math.max(this.props.margin.top, this.props.margin.bottom, this.props.margin.left, this.props.margin.right)
+ var radius = Math.min(width, height-this.props.margin.top-this.props.margin.bottom) /2
var svg = (this._piechartSvg = d3
.select(this._piechartRef.current)
.append("svg")
@@ -349,7 +348,7 @@ export class PieChart extends React.Component<PieChartProps> {
.enter()
.append("g")
arcs.append("path")
- .attr("fill", (data, i)=>{ return this.sliceColors[data.data.valueOf()]? this.sliceColors[data.data.valueOf()] : d3.schemeSet3[i]? d3.schemeSet3[i]: d3.schemeSet3[i%12] })
+ .attr("fill", (data, i)=>{ return this.props.layoutDoc['pieSliceColors-'+data.data.valueOf()]? StrCast(this.props.layoutDoc['pieSliceColors-'+data.data.valueOf()]) : d3.schemeSet3[i]? d3.schemeSet3[i]: d3.schemeSet3[i%12] })
.attr("class", 'slice')
.attr("d", arc)
.on('click', onPointClick)
@@ -379,11 +378,15 @@ export class PieChart extends React.Component<PieChartProps> {
@action changeSelectedColor = (color: string) => {
this.curSliceSelected.attr("fill", color);
- this.sliceColors[this._currSelected[this.props.axes[0]].replace(/\$/g, '').replace(/\%/g, '').replace(/\</g, '')] = color;
+ var sliceName = this._currSelected[this.props.axes[0]].replace(/\$/g, '').replace(/\%/g, '').replace(/\</g, '')
+ this.props.layoutDoc['pieSliceColors-'+sliceName] = color;
};
render() {
- const title = this.graphTitle;
+ var titleAccessor: any='';
+ if (this.props.axes.length==2) titleAccessor = StrCast(this.props.layoutDoc['pieChart-title-'+this.props.axes[0]+'-'+this.props.axes[1]]);
+ else if (this.props.axes.length>0) titleAccessor = StrCast(this.props.layoutDoc['pieChart-title-'+this.props.axes[0]]);
+ const title = titleAccessor? titleAccessor : this.defaultGraphTitle;
var selected: string;
if (this._currSelected){
selected = '{ ';
@@ -400,7 +403,8 @@ export class PieChart extends React.Component<PieChartProps> {
<div className="graph-title">
<EditableText
val={title}
- setVal={action(val => this.graphTitle = val as string)}
+ setVal={action(val => {this.props.axes.length>1? this.props.layoutDoc['pieChart-title-'+this.props.axes[0]+"-"+this.props.axes[1]] = val as string
+ : this.props.layoutDoc['pieChart-title-'+this.props.axes[0]] = val as string})}
color={"black"}
size={Size.LARGE}
fillWidth
diff --git a/src/client/views/nodes/DataVizBox/components/TableBox.tsx b/src/client/views/nodes/DataVizBox/components/TableBox.tsx
index aaedba202..64c6dc940 100644
--- a/src/client/views/nodes/DataVizBox/components/TableBox.tsx
+++ b/src/client/views/nodes/DataVizBox/components/TableBox.tsx
@@ -9,14 +9,24 @@ import { DragManager } from '../../../../util/DragManager';
import { DocumentView } from '../../DocumentView';
import { DataVizView } from '../DataVizBox';
import { LinkManager } from '../../../../util/LinkManager';
-import { DocCast } from '../../../../../fields/Types';
+import { Cast, DocCast } from '../../../../../fields/Types';
import { EditableText, Size, Type } from 'browndash-components';
+import './Chart.scss';
+import { listSpec } from '../../../../../fields/Schema';
interface TableBoxProps {
rootDoc: Doc;
pairs: { [key: string]: any }[];
selectAxes: (axes: string[]) => void;
axes: string[];
+ width: number;
+ height: number;
+ margin: {
+ top: number;
+ right: number;
+ bottom: number;
+ left: number;
+ };
docView?: () => DocumentView | undefined;
}
@@ -27,6 +37,7 @@ export class TableBox extends React.Component<TableBoxProps> {
@computed get _tableData() {
if (this.incomingLinks.length! <= 0) return this.props.pairs;
+ /// StrListCast(this.incomingLinks[0].anchor_1.selected) ==> list of guids that the parent has selected
return this.props.pairs?.filter(pair => (Array.from(Object.keys(pair)).some(key => pair[key] && key.startsWith('select'))))
}
@@ -44,7 +55,7 @@ export class TableBox extends React.Component<TableBoxProps> {
// render() {
// return (
- // <div className="table-container">
+ // <div className="table-container" style={{height: this.props.height+this.props.margin.top+this.props.margin.bottom}}>
// <table className="table">
// <thead>
// <tr className="table-row">
@@ -144,7 +155,7 @@ export class TableBox extends React.Component<TableBoxProps> {
render() {
return (
- <div className="table-container">
+ <div className="table-container" style={{height: this.props.height+this.props.margin.top+this.props.margin.bottom}}>
<table className="table">
<thead>
<tr className="table-row">
@@ -214,7 +225,14 @@ export class TableBox extends React.Component<TableBoxProps> {
<tbody>
{this._tableData?.map((p, i) => {
return (
- <tr key={i} className="table-row" onClick={action(e => (p['select' + this.props.docView?.()?.rootDoc![Id]] = !p['select' + this.props.docView?.()?.rootDoc![Id]]))}>
+ <tr key={i} className="table-row" onClick={action(e => {
+ // if (!this.props.docView?.()!.layoutDoc.selected)
+ // this.props.docView!.()!.layoutDoc.selected = new List<string>();
+ // const selected = Cast(this.props.docView?.()!.layoutDoc.selected, listSpec("string"), null);
+ // // StrListCast(this.props.docView?.()!.layoutDoc.selected)
+ // selected.push(p.guid);
+ (p['select' + this.props.docView?.()?.rootDoc![Id]] = !p['select' + this.props.docView?.()?.rootDoc![Id]])
+ })}>
{this.columns.map(col => (
<td key={this.columns.indexOf(col)} style={{ fontWeight: p['select' + this.props.docView?.()?.rootDoc![Id]] ? 'bold' : '' }}>
{p[col]}