Skip to content

Commit 5624418

Browse files
committed
IRSA-540: cleanup TableUtil.js and remove non ascii characters from LcUtils.js
1 parent a60fb50 commit 5624418

File tree

6 files changed

+46
-102
lines changed

6 files changed

+46
-102
lines changed

src/firefly/js/tables/TableUtil.js

Lines changed: 29 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import {take, fork, cancel} from 'redux-saga/effects';
66
import {get, set, unset, has, isEmpty, isUndefined, uniqueId, cloneDeep, omit, omitBy, isNil, isPlainObject, isArray, padEnd} from 'lodash';
7+
import Enum from 'enum';
78

89
import * as TblCntlr from './TablesCntlr.js';
910
import {SortInfo, SORT_ASC, UNSORTED} from './SortInfo.js';
@@ -17,10 +18,13 @@ import {ServerParams} from '../data/ServerParams.js';
1718
import {doUpload} from '../ui/FileUpload.jsx';
1819
import {dispatchAddSaga} from '../core/MasterSaga.js';
1920

21+
export const COL_TYPE = new Enum(['NUMBER', 'TEXT']);
2022
export const MAX_ROW = Math.pow(2,31) - 1;
2123
/* TABLE_REQUEST should match QueryUtil on the server-side */
2224

2325
const LSSTQueryPID = 'LSSTCataLogSearch';
26+
27+
2428
/**
2529
* @public
2630
*/
@@ -928,6 +932,31 @@ export function watchTableChanges(tbl_id, actions, callback) {
928932
return () => stopWatching = true;
929933
}
930934

935+
936+
/**
937+
* @summary returns the columns array of the given table.
938+
* @param {TableModel} tableModel
939+
* @returns {Array<TableColumn>}
940+
*/
941+
export function getColumns(tableModel) {
942+
return get(tableModel, 'tableData.columns', []);
943+
}
944+
945+
/**
946+
* @summary returns only the visible columns matching the given type.
947+
* @param {Array<TableColumn>} tblColumns
948+
* @param {COL_TYPE} type one of predefined COL_TYPE('NUMBER' | 'TEXT'). defaults to 'NUMBER'.
949+
* @returns {Array<TableColumn>}
950+
*/
951+
export function getColsByType(tblColumns=[], type=COL_TYPE.NUMBER) {
952+
const charTypes = ['char', 'c', 's', 'str'];
953+
const numTypes = ['double', 'd', 'long', 'l', 'int', 'i', 'float', 'f'];
954+
const matcher = type === COL_TYPE.TEXT ? charTypes : numTypes;
955+
return tblColumns.filter((col) => get(col, 'visibility') !== 'hidden' && matcher.includes(col.type));
956+
}
957+
958+
959+
931960
/*-------------------------------------private------------------------------------------------*/
932961
/**
933962
* this saga watches for table update and invoke the given callback when
@@ -955,83 +984,3 @@ function* doOnTblLoaded({tbl_id, callback}) {
955984
}
956985
callback && callback(getTblInfoById(tbl_id));
957986
}
958-
959-
960-
961-
/**
962-
* Returns only numerical column names form raw lc table
963-
* @param {Object} rawTbl
964-
* @returns {string[]} - array of table columns objects
965-
*/
966-
export function getOnlyNumericalColNames(rawTbl) {
967-
const cols = get(rawTbl, ['tableData', 'columns']);
968-
const colType = getColumnTypes(cols, 'numeric');
969-
return get(rawTbl, ['tableData', 'columns']).reduce((prev, col) => {
970-
if ((colType.includes(col.type)) ) {
971-
prev.push(col.name);
972-
}
973-
return prev;
974-
}, []);
975-
}
976-
977-
978-
/**
979-
* @summary get column names from the column of string or char type
980-
* @param {Array} tblColumns
981-
* @returns {Array}
982-
*/
983-
export function getStringColNames(tblColumns) {
984-
const CharTypes = ['char', 'c', 's', 'str'];
985-
986-
return isEmpty(tblColumns) ? [] :
987-
tblColumns.filter((tblCol) => (get(tblCol, 'visibility', '') !== 'hidden'))
988-
.filter((tblCol) => (CharTypes.includes(tblCol.type)))
989-
.map((tblCol) => (tblCol.name));
990-
}
991-
992-
/**
993-
* @summary get column names from the column of numeric type
994-
* @param {Array} tblColumns
995-
* @returns {Array}
996-
*/
997-
export function getNumericColNames(tblColumns) {
998-
const NumTypes = ['double', 'd', 'long', 'l', 'int', 'i', 'float', 'f'];
999-
1000-
return isEmpty(tblColumns) ? [] :
1001-
tblColumns.filter((tblCol) => (get(tblCol, 'visibility', '') !== 'hidden'))
1002-
.filter((tblCol) => (NumTypes.includes(tblCol.type)))
1003-
.map((tblCol) => (tblCol.name));
1004-
}
1005-
1006-
export function getColNames(tblColumns, colTypes) {
1007-
return isEmpty(tblColumns)?[]:
1008-
tblColumns.reduce((prev, col) => {
1009-
if ( colTypes && colTypes.includes(col.type) ) {
1010-
prev.push(col.name);
1011-
}
1012-
else {
1013-
prev.push(col.name);
1014-
}
1015-
return prev;
1016-
}, []);
1017-
}
1018-
1019-
export function getColumnTypes (cols, type=undefined){
1020-
// const cols = get(tblModel, ['tableData', 'columns']);
1021-
var types =[];
1022-
for (let i=0; i<cols.length; i++){
1023-
if (types.indexOf(cols[i].type)>-1) continue;
1024-
if(!has(cols[i], 'visibility') || get(cols[i], 'visibility') !== 'hidden') {
1025-
if (!type || type === 'numeric') {
1026-
if (cols[i].type!=='char' && cols[i].type.toLowerCase()!=='string' ) {
1027-
types[i] = cols[i].type;
1028-
}
1029-
}
1030-
else {
1031-
types[i] = cols[i].type;
1032-
}
1033-
}
1034-
}
1035-
return types;
1036-
1037-
}

src/firefly/js/templates/lightcurve/LcUtil.jsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
33
import {get, has, set, isEmpty} from 'lodash';
44
import {LC} from './LcManager.js';
55
import {getConverter} from './LcConverterFactory.js';
6-
import {getCellValue, getTblById, findIndex, getColumnTypes,getColNames,getColumnIdx} from '../../tables/TableUtil.js';
6+
import {getCellValue, getTblById, findIndex, getColsByType, getColumnIdx, COL_TYPE} from '../../tables/TableUtil.js';
77
import {dispatchTableHighlight} from '../../tables/TablesCntlr.js';
88
import {ValidationField} from '../../ui/ValidationField.jsx';
99
import {SuggestBoxInputField} from '../../ui/SuggestBoxInputField.jsx';
@@ -146,10 +146,10 @@ export function getInitialDefaultValues(labelWidth, missionName) {
146146
return commonDefault;
147147
case 'wise':
148148
const wiseDefault = {
149-
[LC.META_FLUX_BAND]: Object.assign(getTypeData(LC.META_FLUX_BAND, '', '' +
150-
'Select WISE band for images to be displayed', 'Image display:', 70)),
151-
[LC.META_ERR_CNAME]: Object.assign(getTypeData(LC.META_ERR_CNAME, '',
152-
'value error column name', 'Error Column:', labelWidth))
149+
[LC.META_FLUX_BAND]: Object.assign(getTypeData(LC.META_FLUX_BAND, '', '' +
150+
'Select WISE band for images to be displayed', 'Image display:', 70)),
151+
[LC.META_ERR_CNAME]: Object.assign(getTypeData(LC.META_ERR_CNAME, '',
152+
'value error column name', 'Error Column:', labelWidth))
153153
};
154154
return Object.assign ({},commonDefault, wiseDefault );
155155
case 'ptf':
@@ -187,9 +187,7 @@ export function getMissionEntries(generalEntries, missionEntries,tblColumns,wrap
187187

188188
if (isEmpty(generalEntries) || isEmpty(missionEntries)) return false;
189189

190-
const numericColTypes = getColumnTypes( tblColumns, 'numeric');
191-
192-
const numColumns = getColNames(tblColumns, numericColTypes);
190+
const numColumns = getColsByType(tblColumns, COL_TYPE.NUMBER).map( (c) => c.name);
193191

194192
var allCommonEntries = Object.keys(generalEntries).map((key) =>
195193
<ValidationField key={key} fieldKey={key} wrapperStyle={wrapperStyle}

src/firefly/js/templates/lightcurve/PTF/PTFMissionOptions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, {PureComponent} from 'react';
22
import PropTypes from 'prop-types';
33
import {get, set, isNil} from 'lodash';
44
import {RadioGroupInputField} from '../../../ui/RadioGroupInputField.jsx';
5-
import {makeFileRequest, getCellValue, getTblById, getColumnIdx, smartMerge,getOnlyNumericalColNames} from '../../../tables/TableUtil.js';
5+
import {makeFileRequest, getCellValue, getTblById, getColumnIdx, smartMerge, getColumns, getColsByType, COL_TYPE} from '../../../tables/TableUtil.js';
66
import {sortInfoString} from '../../../tables/SortInfo.js';
77
import {getInitialDefaultValues,renderMissionView,validate,getTimeAndYColInfo,fileUpdateOnTimeColumn,setValueAndValidator} from '../LcUtil.jsx';
88
import {LC} from '../LcManager.js';
@@ -102,7 +102,7 @@ export function ptfOnNewRawTable(rawTable, missionEntries, generalEntries, conve
102102
// Update default values AND sortInfo and
103103
const metaInfo = rawTable && rawTable.tableMeta;
104104

105-
const numericalCols = getOnlyNumericalColNames(rawTable);
105+
const numericalCols = getColsByType(getColumns(rawTable), COL_TYPE.NUMBER).map((c) => c.name);
106106
const defaultDataSource = (getColumnIdx(rawTable, converterData.dataSource) > 0) ? converterData.dataSource : numericalCols[3];
107107

108108
const {defaultCTimeName,defaultYColName } = getTimeAndYColInfo(numericalCols,xyColPattern,rawTable,converterData );

src/firefly/js/templates/lightcurve/SettingBox.jsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {PureComponent} from 'react';
2-
import { getColNames,getColumnTypes,getStringColNames} from '../../tables/TableUtil.js';
2+
import { getColsByType, COL_TYPE} from '../../tables/TableUtil.js';
33
import {getLayouInfo} from '../../core/LayoutCntlr.js';
44
import {flux} from '../../Firefly.js';
55
import {get} from 'lodash';
@@ -17,9 +17,8 @@ export class SettingBox extends PureComponent {
1717
};
1818

1919
const {tblColumns} = this.getNextState();
20-
const numericColTypes = getColumnTypes(tblColumns, 'numeric');
21-
const numColumns = getColNames(tblColumns, numericColTypes);
22-
const charColumns = getStringColNames(tblColumns);//(tblColumns, ['char', 'c', 's', 'str']);
20+
const numColumns = getColsByType(tblColumns, COL_TYPE.NUMBER).map((c) => c.name);
21+
const charColumns = getColsByType(tblColumns, COL_TYPE.TEXT).map((c) => c.name);//(tblColumns, ['char', 'c', 's', 'str']);
2322
this.state = {tblColumns, charColumns, numColumns};
2423
}
2524

@@ -38,9 +37,8 @@ export class SettingBox extends PureComponent {
3837
const {tblColumns} = this.getNextState();
3938

4039
if (tblColumns !== this.state.tblColumns) {
41-
const numericColTypes = getColumnTypes(tblColumns, 'numeric');
42-
const numColumns = getColNames(tblColumns, numericColTypes);
43-
const charColumns = getStringColNames(tblColumns);
40+
const numColumns = getColsByType(tblColumns, COL_TYPE.NUMBER).map((c) => c.name);
41+
const charColumns = getColsByType(tblColumns, COL_TYPE.TEXT).map((c) => c.name);
4442
;//getColNames(tblColumns, ['char', 'c', 's', 'str']);
4543
this.setState({tblColumns, charColumns, numColumns});
4644
}

src/firefly/js/templates/lightcurve/basic/BasicMissionOptions.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
33
import {get,isEmpty} from 'lodash';
44
import {FieldGroup} from '../../../ui/FieldGroup.jsx';
55
import {makeFileRequest} from '../../../tables/TableUtil.js';
6-
import {getColumnIdx, smartMerge, getColNames,getColumnTypes} from '../../../tables/TableUtil.js';
6+
import {getColumnIdx, smartMerge, getColsByType, COL_TYPE} from '../../../tables/TableUtil.js';
77
import {ReadOnlyText, getInitialDefaultValues,getMissionInput,getMissionInfo,validate,fileUpdateOnTimeColumn, setValueAndValidator} from '../LcUtil.jsx';
88
import {LC, getViewerGroupKey} from '../LcManager.js';
99
import {getMissionName} from '../LcConverterFactory.js';
@@ -133,8 +133,7 @@ export function basicOnNewRawTable(rawTable, missionEntries, generalEntries, con
133133
// Update default values AND sortInfo and
134134
const metaInfo = rawTable && rawTable.tableMeta;
135135
const tblColumns = get(rawTable, ['tableData', 'columns'], []);
136-
const numericColTypes = getColumnTypes(tblColumns, 'numeric');
137-
const numericalCols = getColNames(tblColumns,numericColTypes);
136+
const numericalCols = getColsByType(tblColumns, COL_TYPE.NUMBER).map((c) => c.name);
138137

139138
//let strCols = getStringCol(rawTable);
140139
//strCols.push('');// Empty means no images

src/firefly/js/templates/lightcurve/wise/WiseMissionOptions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, {PureComponent} from 'react';
22
import PropTypes from 'prop-types';
33
import {get, set, isNil} from 'lodash';
44
import {RadioGroupInputField} from '../../../ui/RadioGroupInputField.jsx';
5-
import {makeFileRequest, getCellValue, getTblById, getColumnIdx, smartMerge,getOnlyNumericalColNames} from '../../../tables/TableUtil.js';
5+
import {makeFileRequest, getCellValue, getTblById, getColumnIdx, smartMerge, getColumns, getColsByType, COL_TYPE} from '../../../tables/TableUtil.js';
66
import {sortInfoString} from '../../../tables/SortInfo.js';
77
import {getInitialDefaultValues,renderMissionView,validate,getTimeAndYColInfo,fileUpdateOnTimeColumn,setValueAndValidator} from '../LcUtil.jsx';
88
import {LC} from '../LcManager.js';
@@ -116,7 +116,7 @@ export function wiseOnNewRawTable(rawTable, missionEntries, generalEntries, conv
116116

117117
// Update default values AND sortInfo and
118118
const metaInfo = rawTable && rawTable.tableMeta;
119-
const numericalCols = getOnlyNumericalColNames(rawTable);
119+
const numericalCols = getColsByType(getColumns(rawTable), COL_TYPE.NUMBER).map((c) => c.name);
120120
let defaultDataSource = (getColumnIdx(rawTable, converterData.dataSource) > 0) ? converterData.dataSource : numericalCols[3];
121121

122122
const {defaultCTimeName,defaultYColName } = getTimeAndYColInfo(numericalCols,xyColPattern,rawTable,converterData );

0 commit comments

Comments
 (0)