Skip to content

Commit e15d4e2

Browse files
committed
DM-6287 chart refactoring: moved chart-related code to charts package, converted React components to ES6 classes, fixed bug when undefined shows as a label.
1 parent c4ea90f commit e15d4e2

24 files changed

+584
-576
lines changed

src/firefly/js/api/ApiBuild.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import {isString} from 'lodash';
66
import {dispatchOnAppReady} from '../core/AppDataCntlr.js';
77

88
// Used for dispatch and action type constants
9-
import * as TableStatsCntlr from '../visualize/TableStatsCntlr.js';
10-
import * as HistogramCntlr from '../visualize/HistogramCntlr.js';
11-
import * as XYPlotCntlr from '../visualize/XYPlotCntlr.js';
9+
import * as TableStatsCntlr from '../charts/TableStatsCntlr.js';
10+
import * as HistogramCntlr from '../charts/HistogramCntlr.js';
11+
import * as XYPlotCntlr from '../charts/XYPlotCntlr.js';
1212
import * as TablesCntlr from '../tables/TablesCntlr.js';
1313
import * as ReadoutCntlr from '../visualize/MouseReadoutCntlr.js';
1414
import * as ImPlotCntlr from '../visualize/ImagePlotCntlr.js';
@@ -33,8 +33,8 @@ import {ExpandedModeDisplay} from '../visualize/iv/ExpandedModeDisplay.jsx';
3333
import {ApiExpandedDisplay} from '../visualize/ui/ApiExpandedDisplay.jsx';
3434
import {TablesContainer} from '../tables/ui/TablesContainer.jsx';
3535
import {TablePanel} from '../tables/ui/TablePanel.jsx';
36-
import {ChartsContainer} from '../visualize/ChartsContainer.jsx';
37-
import {ChartsTableViewPanel} from '../visualize/ChartsTableViewPanel.jsx';
36+
import {ChartsContainer} from '../charts/ui/ChartsContainer.jsx';
37+
import {ChartsTableViewPanel} from '../charts/ui/ChartsTableViewPanel.jsx';
3838
import {PopupMouseReadoutMinimal} from '../visualize/ui/PopupMouseReadoutMinimal.jsx';
3939
import {PopupMouseReadoutFull} from '../visualize/ui/PopupMouseReadoutFull.jsx';
4040

src/firefly/js/api/ApiExpandedView.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import sCompare from 'react-addons-shallow-compare';
77

88
import {flux} from '../Firefly.js';
99
import {TablesContainer} from '../tables/ui/TablesContainer.jsx';
10-
import {ChartsContainer} from '../visualize/ChartsContainer.jsx';
10+
import {ChartsContainer} from '../charts/ui/ChartsContainer.jsx';
1111
import {ApiExpandedDisplay} from '../visualize/ui/ApiExpandedDisplay.jsx';
1212
import {dispatchChangeExpandedMode, ExpandType} from '../visualize/ImagePlotCntlr.js';
1313
import {dispatchSetLayoutMode, getExpandedMode, LO_MODE, LO_VIEW} from '../core/LayoutCntlr.js';

src/firefly/js/api/ApiUtilChart.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
* License information at https://github.com/Caltech-IPAC/firefly/blob/master/License.txt
33
*/
44

5-
import * as XYPlotCntlr from '../visualize/XYPlotCntlr.js';
5+
import * as XYPlotCntlr from '../charts/XYPlotCntlr.js';
66
//import * as HistogramCntlr from '../visualize/HistogramCntlr.js';
77
//import * as TableStatsCntlr from '../visualize/TableStatsCntlr.js';
88

9-
export {uniqueChartId} from '../visualize/ChartUtil.js';
9+
export {uniqueChartId} from '../charts/ChartUtil.js';
1010

1111
export function loadPlotDataForTbl(tblId, chartId, xyPlotParams) {
1212
XYPlotCntlr.dispatchLoadPlotData(chartId, xyPlotParams, tblId);

src/firefly/js/visualize/ChartUtil.js renamed to src/firefly/js/charts/ChartUtil.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ import {MetaConst} from '../data/MetaConst.js';
1515
import {getTblById, getColumnIdx, getCellValue} from '../tables/TableUtil.js';
1616
import {Expression} from '../util/expr/Expression.js';
1717
import {logError} from '../util/WebUtil.js';
18-
import {XYPLOT_DATA_KEY} from '../visualize/XYPlotCntlr.js';
19-
import {HISTOGRAM_DATA_KEY} from '../visualize/HistogramCntlr';
18+
import {XYPLOT_DATA_KEY} from './XYPlotCntlr.js';
19+
import {HISTOGRAM_DATA_KEY} from './HistogramCntlr.js';
2020

2121
export const SCATTER = 'scatter';
2222
export const HISTOGRAM = 'histogram';

src/firefly/js/visualize/ChartsCntlr.js renamed to src/firefly/js/charts/ChartsCntlr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,4 @@ export function getNumRelatedCharts(tblId, mounted, chartType) {
154154
export function isChartMounted(tblId, chartId, chartType) {
155155
const uChartId = uniqueId(chartId, chartType);
156156
return Boolean(get(flux.getState(), [CHART_SPACE_PATH, 'tbl', tblId, uChartId, 'mounted']));
157-
}
157+
}

src/firefly/js/visualize/ColValuesStatistics.js renamed to src/firefly/js/charts/ColValuesStatistics.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ export default class ColValuesStatistics{
88
this.numpoints = Number(numpoints);
99
this.type = type;
1010
}
11-
};
11+
};

src/firefly/js/visualize/HistogramCntlr.js renamed to src/firefly/js/charts/HistogramCntlr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,4 @@ function fetchColData(dispatch, tblId, histogramParams, chartId) {
248248
console.error(`Failed to fetch histogram data: ${reason}`);
249249
}
250250
);
251-
}
251+
}

src/firefly/js/visualize/TableStatsCntlr.js renamed to src/firefly/js/charts/TableStatsCntlr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,4 @@ function fetchTblStats(dispatch, activeTableServerRequest) {
145145
console.error(`Failed to fetch table statistics: ${reason}`);
146146
}
147147
);
148-
}
148+
}

src/firefly/js/visualize/XYPlotCntlr.js renamed to src/firefly/js/charts/XYPlotCntlr.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import {flux} from '../Firefly.js';
66
import {updateSet, updateMerge} from '../util/WebUtil.js';
77
import {get, has, omit, omitBy, isUndefined, isString} from 'lodash';
88

9-
import {doFetchTable, getTblById, isFullyLoaded} from '../tables/TableUtil.js';
9+
import {doFetchTable, getColumnIdx, getTblById, isFullyLoaded} from '../tables/TableUtil.js';
1010
import * as TablesCntlr from '../tables/TablesCntlr.js';
1111
import {DELETE} from './ChartsCntlr.js';
1212
import {serializeDecimateInfo} from '../tables/Decimate.js';
1313
import {logError} from '../util/WebUtil.js';
14-
import {getDefaultXYPlotParams} from '../visualize/ChartUtil.js';
14+
import {getDefaultXYPlotParams} from './ChartUtil.js';
1515

1616
export const XYPLOT_DATA_KEY = 'xyplot';
1717
export const LOAD_PLOT_DATA = `${XYPLOT_DATA_KEY}/LOAD_COL_DATA`;
@@ -135,7 +135,8 @@ function dispatchResetZoom(chartId) {
135135
*/
136136
export function loadPlotData (rawAction) {
137137
return (dispatch) => {
138-
const {chartId, xyPlotParams, tblId} = rawAction.payload;
138+
let xyPlotParams = rawAction.payload.xyPlotParams;
139+
const {chartId, tblId} = rawAction.payload;
139140
const tblSource = get(getTblById(tblId), 'tableMeta.source');
140141

141142
const chartModel = get(flux.getState(), [XYPLOT_DATA_KEY, chartId]);
@@ -146,7 +147,12 @@ export function loadPlotData (rawAction) {
146147
// we do need to update parameters, but we can reuse the old chart data
147148
serverCallNeeded = serverCallNeeded || serverParamsChanged(chartModel.xyPlotParams, xyPlotParams);
148149

149-
dispatch({ type : LOAD_PLOT_DATA, payload : {...rawAction.payload, tblSource, serverCallNeeded}});
150+
if (!serverCallNeeded) {
151+
const tableModel = getTblById(tblId);
152+
xyPlotParams = getUpdatedParams(xyPlotParams, tableModel);
153+
}
154+
155+
dispatch({ type : LOAD_PLOT_DATA, payload : {chartId, tblId, xyPlotParams, tblSource, serverCallNeeded}});
150156

151157
if (serverCallNeeded) {
152158
fetchPlotData(dispatch, tblId, xyPlotParams, chartId);
@@ -366,18 +372,24 @@ function getUpdatedParams(xyPlotParams, tableModel) {
366372
newParams = updateSet(newParams, 'x.label', get(xyPlotParams, 'x.columnOrExpr'));
367373
}
368374
if (!get(xyPlotParams, 'x.unit')) {
369-
const xUnit = get(tableModel, 'tableData.columns.0.units');
370-
if (xUnit) {
371-
newParams = updateSet(newParams, 'x.unit', xUnit);
375+
const xIdx = getColumnIdx(tableModel, get(xyPlotParams, 'x.columnOrExpr'));
376+
if (xIdx >= 0 ) {
377+
const xUnit = get(tableModel, `tableData.columns.${xIdx}.units`);
378+
if (xUnit) {
379+
newParams = updateSet(newParams, 'x.unit', xUnit);
380+
}
372381
}
373382
}
374383
if (!get(xyPlotParams, 'y.label')) {
375384
newParams = updateSet(newParams, 'y.label', get(xyPlotParams, 'y.columnOrExpr'));
376385
}
377386
if (!get(xyPlotParams, 'y.unit')) {
378-
const yUnit = get(tableModel, 'tableData.columns.1.units');
379-
if (yUnit) {
380-
newParams = updateSet(newParams, 'y.unit', yUnit);
387+
const yIdx = getColumnIdx(tableModel, get(xyPlotParams, 'y.columnOrExpr'));
388+
if (yIdx >= 0 ) {
389+
const yUnit = get(tableModel, `tableData.columns.${yIdx}.units`);
390+
if (yUnit) {
391+
newParams = updateSet(newParams, 'y.unit', yUnit);
392+
}
381393
}
382394
}
383395
if (get(xyPlotParams, 'selection')) {

src/firefly/js/visualize/ChartPanel.css renamed to src/firefly/js/charts/ui/ChartPanel.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,4 @@
5555
.selectionBtn {
5656
padding: 0 5px;
5757
cursor: pointer;
58-
}
58+
}

src/firefly/js/visualize/ChartsContainer.jsx renamed to src/firefly/js/charts/ui/ChartsContainer.jsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import sCompare from 'react-addons-shallow-compare';
77
import shallowequal from 'shallowequal';
88

99

10-
import {flux} from '../Firefly.js';
10+
import {flux} from '../../Firefly.js';
1111

12-
import {LO_VIEW, LO_MODE, dispatchSetLayoutMode, getExpandedMode} from '../core/LayoutCntlr.js';
13-
import {CloseButton} from '../ui/CloseButton.jsx';
12+
import {LO_VIEW, LO_MODE, dispatchSetLayoutMode, getExpandedMode} from '../../core/LayoutCntlr.js';
13+
import {CloseButton} from '../../ui/CloseButton.jsx';
1414

15-
import {ChartsTableViewPanel} from '../visualize/ChartsTableViewPanel.jsx';
16-
import {getExpandedChartProps} from '../visualize/ChartsCntlr.js';
15+
import {ChartsTableViewPanel} from './ChartsTableViewPanel.jsx';
16+
import {getExpandedChartProps} from '../ChartsCntlr.js';
1717

1818

1919
function nextState(props) {

src/firefly/js/visualize/ChartsTableViewPanel.jsx renamed to src/firefly/js/charts/ui/ChartsTableViewPanel.jsx

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,26 @@ import {get, debounce, defer, isBoolean} from 'lodash';
1111
import Resizable from 'react-component-resizable';
1212

1313

14-
import {flux} from '../Firefly.js';
15-
import * as TablesCntlr from '../tables/TablesCntlr.js';
16-
import * as TblUtil from '../tables/TableUtil.js';
17-
import {SelectInfo} from '../tables/SelectInfo.js';
18-
import {FilterInfo} from '../tables/FilterInfo.js';
19-
20-
import * as TableStatsCntlr from '../visualize/TableStatsCntlr.js';
21-
import * as HistogramCntlr from '../visualize/HistogramCntlr.js';
22-
import * as XYPlotCntlr from '../visualize/XYPlotCntlr.js';
23-
import {dispatchChartExpanded, dispatchDelete, dispatchChartMounted, dispatchChartUnmounted} from '../visualize/ChartsCntlr.js';
24-
25-
import {LO_MODE, LO_VIEW, dispatchSetLayoutMode} from '../core/LayoutCntlr.js';
26-
27-
import {SCATTER, HISTOGRAM, getHighlighted, getTblIdForChartId, numRelatedCharts} from './ChartUtil.js';
28-
import XYPlotOptions from '../visualize/XYPlotOptions.jsx';
29-
import {XYPlot} from '../visualize/XYPlot.jsx';
30-
import HistogramOptions from '../visualize/HistogramOptions.jsx';
31-
import Histogram from '../visualize/Histogram.jsx';
32-
33-
import {showInfoPopup} from '../ui/PopupUtil.jsx';
14+
import {flux} from '../../Firefly.js';
15+
import * as TablesCntlr from '../../tables/TablesCntlr.js';
16+
import * as TblUtil from '../../tables/TableUtil.js';
17+
import {SelectInfo} from '../../tables/SelectInfo.js';
18+
import {FilterInfo} from '../../tables/FilterInfo.js';
19+
20+
import * as TableStatsCntlr from '../TableStatsCntlr.js';
21+
import * as HistogramCntlr from '../HistogramCntlr.js';
22+
import * as XYPlotCntlr from '../XYPlotCntlr.js';
23+
import {dispatchChartExpanded, dispatchDelete, dispatchChartMounted, dispatchChartUnmounted} from '../ChartsCntlr.js';
24+
25+
import {LO_MODE, LO_VIEW, dispatchSetLayoutMode} from '../../core/LayoutCntlr.js';
26+
27+
import {SCATTER, HISTOGRAM, getHighlighted, getTblIdForChartId, numRelatedCharts} from '../ChartUtil.js';
28+
import {XYPlotOptions} from './XYPlotOptions.jsx';
29+
import {XYPlot} from './XYPlot.jsx';
30+
import {HistogramOptions} from './HistogramOptions.jsx';
31+
import {Histogram} from './Histogram.jsx';
32+
33+
import {showInfoPopup} from '../../ui/PopupUtil.jsx';
3434

3535
import DELETE from 'html/images/blue_delete_10x10.png';
3636
import OUTLINE_EXPAND from 'html/images/icons-2014/24x24_ExpandArrowsWhiteOutline.png';

src/firefly/js/visualize/ColSelectView.jsx renamed to src/firefly/js/charts/ui/ColSelectView.jsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
/*
22
*/
33
import React from 'react';
4-
import DialogRootContainer from '../ui/DialogRootContainer.jsx';
5-
import {PopupPanel} from '../ui/PopupPanel.jsx';
6-
import {dispatchTableRemove} from '../tables/TablesCntlr';
7-
8-
import {BasicTable} from '../tables/ui/BasicTable.jsx';
9-
import {getTblById} from '../tables/TableUtil.js';
10-
import {dispatchShowDialog} from '../core/ComponentCntlr.js';
11-
import CompleteButton from '../ui/CompleteButton.jsx';
12-
import HelpIcon from '../ui/HelpIcon.jsx';
4+
import DialogRootContainer from '../../ui/DialogRootContainer.jsx';
5+
import {PopupPanel} from '../../ui/PopupPanel.jsx';
6+
import {dispatchTableRemove} from '../../tables/TablesCntlr';
7+
8+
import {BasicTable} from '../../tables/ui/BasicTable.jsx';
9+
import {getTblById} from '../../tables/TableUtil.js';
10+
import {dispatchShowDialog} from '../../core/ComponentCntlr.js';
11+
import CompleteButton from '../../ui/CompleteButton.jsx';
12+
//import HelpIcon from '../../ui/HelpIcon.jsx';
1313
const popupId = 'XYColSelect';
1414
const TBL_ID ='selectCol';
1515

@@ -30,7 +30,7 @@ const tableStyle = {boxSizing: 'border-box', paddingLeft:5,paddingRight:5, width
3030
//define the complete button
3131
const closeButtonStyle = {'textAlign': 'center', display: 'inline-block', height:40, marginTop:10, width: '90%'};
3232
//define the helpButton
33-
const helpIdStyle = {'textAlign': 'center', display: 'inline-block', height:40, marginRight: 20};
33+
//const helpIdStyle = {'textAlign': 'center', display: 'inline-block', height:40, marginRight: 20};
3434

3535

3636
export function showColSelectPopup(colValStats,onColSelected,popupTitle,buttonText,currentVal) {

0 commit comments

Comments
 (0)