import { action, computed, observable } from "mobx"; import { observer } from "mobx-react"; import * as React from "react"; import { StrCast } from "../../../../fields/Types"; import { ViewBoxBaseComponent } from "../../DocComponent"; import { FieldViewProps, FieldView } from "../FieldView"; import "./DataVizBox.scss"; import { HistogramBox } from "./HistogramBox"; import { TableBox } from "./TableBox"; enum DataVizView { TABLE = "table", HISTOGRAM= "histogram" } @observer export class DataVizBox extends ViewBoxBaseComponent() { @observable private pairs: {x: number, y:number}[] = [{x: 1, y:2}]; // TODO: nda - make this use enum values instead // @observable private currView: DataVizView = DataVizView.TABLE; @computed get currView() { if (this.rootDoc._dataVizView) { return StrCast(this.rootDoc._dataVizView); } else { return "table"; } } constructor(props: any) { super(props); if (!this.rootDoc._dataVizView) { // TODO: nda - this might not always want to default to "table" this.rootDoc._dataVizView = "table"; } } public static LayoutString(fieldKey: string) { return FieldView.LayoutString(DataVizBox, fieldKey); } @action private createPairs() { const xVals: number[] = [0, 1, 2, 3, 4, 5]; // const yVals: number[] = [10, 20, 30, 40, 50, 60]; const yVals: number[] = [1, 2, 3, 4, 5, 6]; let pairs: { x: number, y:number }[] = []; if (xVals.length != yVals.length) return pairs; for (let i = 0; i < xVals.length; i++) { pairs.push({x: xVals[i], y: yVals[i]}); } this.pairs = pairs; return pairs; } @computed get selectView() { switch(this.currView) { case "table": return () case "histogram": return () } } @computed get pairVals() { return this.createPairs(); } componentDidMount() { this.createPairs(); } // handle changing the view using a button @action changeViewHandler(e: React.MouseEvent) { e.preventDefault(); e.stopPropagation(); this.rootDoc._dataVizView = this.currView == "table" ? "histogram" : "table"; } render() { return (
{this.selectView}
); } }