Skip to content

Commit 60a5d65

Browse files
author
Cindy Wang
committed
Merge branch 'DM-8189-TableModelErrHandle' into dev
2 parents 9df077a + 523f2e1 commit 60a5d65

File tree

4 files changed

+35
-25
lines changed

4 files changed

+35
-25
lines changed

src/firefly/js/tables/TableUtil.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,4 +836,8 @@ export function isTableUsingRadians(tableOrMeta) {
836836
if (!tableOrMeta) return false;
837837
const tableMeta= tableOrMeta.tableMeta || tableOrMeta;
838838
return has(tableMeta, 'HIERARCH.AFW_TABLE_VERSION');
839+
}
840+
841+
export function createErrorTbl(tbl_id, error) {
842+
return {tbl_id, error};
839843
}

src/firefly/js/tables/TablesCntlr.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -476,14 +476,11 @@ function* doOnTblLoaded({tbl_id, callback}) {
476476
hasData = hasData || get(tableModel, 'tableData.columns.length');
477477
if (get(tableModel, 'error')) {
478478
// there was an error loading this table.
479-
callback(createErrorTbl(tbl_id, tableModel.error));
479+
callback(TblUtil.createErrorTbl(tbl_id, tableModel.error));
480480
return;
481481
}
482482
}
483483
}
484484
callback && callback(TblUtil.getTblInfoById(tbl_id));
485485
}
486486

487-
function createErrorTbl(tbl_id, error) {
488-
return {tbl_id, error};
489-
}

src/firefly/js/tables/ui/BasicTableView.jsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,11 @@ export class BasicTableView extends React.Component {
142142

143143
render() {
144144
const {columns, data, hlRowIdx, showUnits, showFilters, filterInfo, renderers, bgColor,
145-
selectable, selectInfoCls, sortInfo, callbacks, textView, rowHeight, showMask} = this.props;
145+
selectable, selectInfoCls, sortInfo, callbacks, textView, rowHeight, showMask, error} = this.props;
146146
const {widthPx, heightPx, columnWidths} = this.state;
147147
const {onSort, onFilter, onRowSelect, onSelectAll, onFilterSelected} = this;
148148

149-
if (isEmpty(columns)) return (<div style={{top: 0}} className='loading-mask'/>);
149+
if (!error && isEmpty(columns)) return (<div style={{top: 0}} className='loading-mask'/>);
150150

151151
// const filterInfoCls = FilterInfo.parse(filterInfo);
152152
// const sortInfoCls = SortInfo.parse(sortInfo);
@@ -159,7 +159,8 @@ export class BasicTableView extends React.Component {
159159

160160
return (
161161
<Resizable id='table-resizer' tabIndex='-1' onKeyDown={this.onKeyDown} className='TablePanel__frame' onResize={this.onResize}>
162-
{ widthPx === 0 ? <div /> :
162+
{ error ? <div style={{padding: 10}}>{error}</div> :
163+
widthPx === 0 ? <div /> :
163164
textView ? <TextView { ...{columns, data, showUnits, heightPx, widthPx} }/> :
164165
<Table
165166
rowHeight={rowHeight}
@@ -175,8 +176,8 @@ export class BasicTableView extends React.Component {
175176
{ makeColumns(makeColumnsProps) }
176177
</Table>
177178
}
178-
{showMask && <div style={{top: 0}} className='loading-mask'/>}
179-
{!showMask && isEmpty(data) && <div className='TablePanel_NoData'> No Data Found </div>}
179+
{!error && showMask && <div style={{top: 0}} className='loading-mask'/>}
180+
{!error && !showMask && isEmpty(data) && <div className='TablePanel_NoData'> No Data Found </div>}
180181
</Resizable>
181182
);
182183
}
@@ -198,6 +199,7 @@ BasicTableView.propTypes = {
198199
showMask: PropTypes.bool,
199200
currentPage: PropTypes.number,
200201
bgColor: PropTypes.string,
202+
error: PropTypes.string,
201203
renderers: PropTypes.objectOf(
202204
PropTypes.shape({
203205
cellRenderer: PropTypes.func,

src/firefly/js/visualize/ui/CatalogConstraintsPanel.jsx

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@
44

55
import React, {Component, PropTypes} from 'react';
66
import sCompare from 'react-addons-shallow-compare';
7-
import {isEmpty, get, merge} from 'lodash';
7+
import {isEmpty, get, merge, isNil, isArray, cloneDeep, set, has} from 'lodash';
88
import FieldGroupUtils from '../../fieldGroup/FieldGroupUtils.js';
9-
import {fieldGroupConnector} from '../../ui/FieldGroupConnector.jsx';
10-
import {doFetchTable, getColumnIdx, getTblById} from '../../tables/TableUtil.js';
9+
import {dispatchValueChange} from '../../fieldGroup/FieldGroupCntlr.js';
10+
import {fetchTable} from '../../rpc/SearchServicesJson.js';
11+
import {getColumnIdx, getTblById} from '../../tables/TableUtil.js';
1112
import {BasicTableView} from '../../tables/ui/BasicTableView.jsx';
12-
import {ListBoxInputField} from '../../ui/ListBoxInputField.jsx';
13-
import {InputAreaFieldConnected} from '../../ui/InputAreaField.jsx';
1413
import {createLinkCell, createInputCell} from '../../tables/ui/TableRenderer.js';
1514
import * as TblCntlr from '../../tables/TablesCntlr.js';
1615
import * as TblUtil from '../../tables/TableUtil.js';
1716
import {SelectInfo} from '../../tables/SelectInfo.js';
1817
import {FilterInfo, FILTER_TTIPS} from '../../tables/FilterInfo.js';
19-
import {isNil, isArray, cloneDeep, set} from 'lodash';
20-
import {dispatchValueChange} from '../../fieldGroup/FieldGroupCntlr.js';
18+
import {ListBoxInputField} from '../../ui/ListBoxInputField.jsx';
19+
import {InputAreaFieldConnected} from '../../ui/InputAreaField.jsx';
20+
import {fieldGroupConnector} from '../../ui/FieldGroupConnector.jsx';
2121
import {LSSTDDPID} from './LSSTCatalogSelectViewPanel.jsx';
2222
const sqlConstraintsCol = {name: 'constraints', idx: 1, type: 'char', width: 10};
2323

@@ -37,6 +37,7 @@ function getTblId(catName, dd_short) {
3737
/**
3838
* @summary reest table constraints state
3939
* @param {string} gkey
40+
* @param {string} fieldKey
4041
*/
4142
function resetConstraints(gkey, fieldKey) {
4243
const value = {constraints: '', selcols: '', filters: {}, errorConstraints:''};
@@ -86,6 +87,7 @@ export class CatalogConstraintsPanel extends React.Component {
8687

8788
render() {
8889
const {tableModel} = this.state;
90+
const {error} = tableModel || {};
8991
const {catname, dd_short, fieldKey, showFormType=true, createDDRequest, groupKey} = this.props;
9092

9193
var resetButton = () => {
@@ -126,12 +128,12 @@ export class CatalogConstraintsPanel extends React.Component {
126128
margin:'0px 10px 5px 5px', padding:'0 0 0 10px',
127129
border:'1px solid #a3aeb9'}}>
128130
<div style={{display:'flex', flexDirection:'row', padding:'5px 5px 0'}}>
129-
{showFormType && formTypeList()}
130-
{resetButton()}
131+
{!error && showFormType && formTypeList()}
132+
{!error && resetButton()}
131133
</div>
132134
<div>
133135
<TablePanelConnected {...{tableModel, fieldKey}} />
134-
{renderSqlArea()}
136+
{!error && renderSqlArea()}
135137
</div>
136138
</div>
137139
</div>
@@ -165,8 +167,7 @@ export class CatalogConstraintsPanel extends React.Component {
165167
const request = createDDRequest(); //Fetch DD master table
166168
const urlDef = get(FieldGroupUtils.getGroupFields(this.props.groupKey), 'cattable.coldef', 'null');
167169

168-
169-
doFetchTable(request).then((tableModel) => {
170+
fetchTable(request).then((tableModel) => {
170171
const tableModelFetched = tableModel;
171172
tableModelFetched.tbl_id = tblid;
172173
addConstraintColumn(tableModelFetched, this.props.groupKey);
@@ -180,7 +181,11 @@ export class CatalogConstraintsPanel extends React.Component {
180181
TblCntlr.dispatchTableReplace(tableModel);
181182
this.setState({tableModel: tableModelFetched});
182183
}).catch((reason) => {
183-
console.error(reason);
184+
console.log(reason.message);
185+
const errTable = TblUtil.createErrorTbl(tblid, `Catalog Fetch Error: ${reason.message}`);
186+
187+
TblCntlr.dispatchTableReplace(errTable);
188+
this.setState({tableModel: errTable});
184189
}
185190
);
186191
}
@@ -359,8 +364,9 @@ class ConstraintPanel extends Component {
359364
const {tableModel, onTableChanged} = this.props;
360365
const tbl_ui_id = tableModel.tbl_id + '-ui';
361366
const tbl = getTblById(tableModel.tbl_id);
362-
const {columns, data} = get(tbl, 'tableData');
363-
const selectInfoCls = SelectInfo.newInstance(tbl.selectInfo, 0);
367+
const {columns, data} = get(tbl, 'tableData', {});
368+
const selectInfoCls = has(tbl, 'selectInfo') && SelectInfo.newInstance(tbl.selectInfo, 0);
369+
const totalCol = columns ? (columns.length-1) : 0;
364370

365371
//const {tableconstraints} = FieldGroupUtils.getGroupFields(groupKey);
366372
//console.log('constraint: ' + tableconstraints.value.constraints + ' errorConstraints: ' + tableconstraints.value.errorConstraints);
@@ -383,6 +389,7 @@ class ConstraintPanel extends Component {
383389
currentPage={1}
384390
hlRowIdx={0}
385391
key={tableModel.tbl_id}
392+
error={tableModel.error}
386393
callbacks={
387394
{
388395
onRowSelect: updateRowSelected(tableModel.tbl_id, onTableChanged),
@@ -395,7 +402,7 @@ class ConstraintPanel extends Component {
395402
{ cellRenderer:
396403
createLinkCell(
397404
{
398-
hrefColIdx: tableModel.tableData.columns.length-1
405+
hrefColIdx: totalCol
399406
}
400407
)
401408
},

0 commit comments

Comments
 (0)