diff --git a/buildScript/webpack.config.js b/buildScript/webpack.config.js index 4b8af805b3..a1816ad6b3 100644 --- a/buildScript/webpack.config.js +++ b/buildScript/webpack.config.js @@ -1,5 +1,4 @@ /* eslint-env node */ -/* global process */ import webpack from 'webpack'; import TerserPlugin from 'terser-webpack-plugin'; diff --git a/eslint.config.mjs b/eslint.config.mjs index 5c32741215..814f669101 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -80,29 +80,17 @@ export default [ // rules with existing violations: warn until the sites are addressed "no-case-declarations": 1, "no-async-promise-executor": 1, - "no-cond-assign": 1, "no-constant-binary-expression": 1, "no-control-regex": 1, - "no-debugger": 1, - "no-empty-pattern": 1, - "no-extra-boolean-cast": 1, - "no-import-assign": 1, - "no-irregular-whitespace": 1, - "no-prototype-builtins": 1, "no-redeclare": 1, - "no-regex-spaces": 1, - "no-sparse-arrays": 1, - "no-undef": 1, - "no-unreachable": 1, "no-unsafe-optional-chaining": 1, - "no-useless-escape": 1, - "@stylistic/js/semi": [1, "always"], // restore to [2, "always"] "@stylistic/js/arrow-parens": [2, "always"], "@stylistic/js/comma-spacing": 0, "@stylistic/js/jsx-quotes": [1, "prefer-single"], "@stylistic/js/key-spacing": 0, "@stylistic/js/no-multi-spaces": 0, + "@stylistic/js/semi": [2, "always"], "@stylistic/js/space-infix-ops": 0, "@stylistic/js/quotes": [2, "single", {avoidEscape: true, allowTemplateLiterals: "avoidEscape"}], "react/jsx-boolean-value": [1, "always"], diff --git a/src/firefly/js/api/webApiCommands/SiaCommands.js b/src/firefly/js/api/webApiCommands/SiaCommands.js index e60dd39d12..b8769bd547 100644 --- a/src/firefly/js/api/webApiCommands/SiaCommands.js +++ b/src/firefly/js/api/webApiCommands/SiaCommands.js @@ -33,7 +33,7 @@ export const siaPanelOverview= { obsCoreWavelengthRangeType : 'Type of Wavelength search for Observations. `contains` or `overlaps`', obsCoreWavelengthContains : `Wavelength value (in ${wvlUnit}) when selecting \`obsCoreWavelengthRangeType=contains\``, obsCoreWavelengthMinRange : `Upper limit of an observation's wavelength coverage (in ${wvlUnit}). Requires \`obsCoreWavelengthRangeType=overlaps\``, - obsCoreWavelengthMaxRange : `Lower limit of an observation\'s wavelength coverage (in ${wvlUnit}). Requires \`obsCoreWavelengthRangeType=overlaps\``, + obsCoreWavelengthMaxRange : `Lower limit of an observation's wavelength coverage (in ${wvlUnit}). Requires \`obsCoreWavelengthRangeType=overlaps\``, [ReservedParams.POSITION.name]: ['coordinates of the search',...ReservedParams.POSITION.desc], [ReservedParams.SR.name]: ['radius of search (optional)',...ReservedParams.SR.desc], diff --git a/src/firefly/js/api/webApiCommands/TapCommands.js b/src/firefly/js/api/webApiCommands/TapCommands.js index 0261a7fb02..bf7f289bae 100644 --- a/src/firefly/js/api/webApiCommands/TapCommands.js +++ b/src/firefly/js/api/webApiCommands/TapCommands.js @@ -33,7 +33,7 @@ export const tapPanelOverview= { obsCoreWavelengthRangeType : 'Type of Wavelength search for Observations. `contains` or `overlaps`', obsCoreWavelengthContains : `Wavelength value (in ${wvlUnit}) when selecting \`obsCoreWavelengthRangeType=contains\``, obsCoreWavelengthMinRange : `Upper limit of an observation's wavelength coverage (in ${wvlUnit}). Requires \`obsCoreWavelengthRangeType=overlaps\``, - obsCoreWavelengthMaxRange : `Lower limit of an observation\'s wavelength coverage (in ${wvlUnit}). Requires \`obsCoreWavelengthRangeType=overlaps\``, + obsCoreWavelengthMaxRange : `Lower limit of an observation's wavelength coverage (in ${wvlUnit}). Requires \`obsCoreWavelengthRangeType=overlaps\``, [ReservedParams.POSITION.name]: ['coordinates of the search',...ReservedParams.POSITION.desc], [ReservedParams.SR.name]: ['radius of search (optional)',...ReservedParams.SR.desc], polygon: 'polygon as a list of ra dec strings, example: 269.3 68.2, 272.85 68.2, 272.7 66.7, 269.3 66.7', @@ -134,7 +134,7 @@ WHERE CONTAINS(POINT('ICRS', ra, dec),CIRCLE('ICRS', 83.63321237, 22.01446012, 0 service: 'https://irsa.ipac.caltech.edu/TAP', adql: `SELECT ra,dec,sigra,sigdec,sigradec,w1mpro,w1sigmpro,w1snr,w1rchi2,w1mpro_allwise,w1sigmpro_allwise,w4mpro_allwise,w4sigmpro_allwise \ -FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE(\'ICRS\', 10.68479, 41.26906, 0.013))=1`, +FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', 10.68479, 41.26906, 0.013))=1`, } }, { @@ -143,7 +143,7 @@ FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE(\'ICRS\', 1 service: 'https://irsa.ipac.caltech.edu/TAP', adql: `SELECT ra,dec,sigra,sigdec,sigradec,w2mpro,w2sigmpro,w2snr,w2rchi2,w2mpro_allwise,w2sigmpro_allwise,w3mpro_allwise,w3sigmpro_allwise \ -FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE(\'ICRS\', 10.68479, 41.26906, 0.013))=1`, +FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', 10.68479, 41.26906, 0.013))=1`, execute: 'true', } } diff --git a/src/firefly/js/astro/net/Resolver.js b/src/firefly/js/astro/net/Resolver.js index 774ce6ce87..5ee85d4287 100644 --- a/src/firefly/js/astro/net/Resolver.js +++ b/src/firefly/js/astro/net/Resolver.js @@ -24,7 +24,7 @@ export var parseResolver= function(resolveStr) { if (!resolveStr) return undefined; var retval= null; for( var resolveType in Resolver) { - if( Resolver.hasOwnProperty( resolveType ) ) { + if (Object.hasOwn(Resolver, resolveType)) { if (resolveStr.toLowerCase()===Resolver[resolveType].key) { retval= Resolver[resolveType]; break; diff --git a/src/firefly/js/charts/ChartUtil.js b/src/firefly/js/charts/ChartUtil.js index 28a25485f4..e651dff326 100644 --- a/src/firefly/js/charts/ChartUtil.js +++ b/src/firefly/js/charts/ChartUtil.js @@ -727,7 +727,7 @@ export function getDataChangesForMappings({tableModel, mappings, traceNum}) { let getDataVal; const changes = {}; - changes[`fireflyData.${traceNum}.isLoading`] = !Boolean(tableModel); + changes[`fireflyData.${traceNum}.isLoading`] = !tableModel; if (tableModel) { const cols = tableModel.tableData.columns.map((c) => c.name); const transposed = tableModel.tableData.columns.map(() => []); diff --git a/src/firefly/js/charts/ChartsCntlr.js b/src/firefly/js/charts/ChartsCntlr.js index a1a7624c7f..8ee7007377 100644 --- a/src/firefly/js/charts/ChartsCntlr.js +++ b/src/firefly/js/charts/ChartsCntlr.js @@ -360,7 +360,7 @@ function chartUpdate(action) { return (dispatch) => { const {chartId, changes, replaceTableSources=false} = action.payload; // when selection is undefined, selections layer must be removed - if (changes.hasOwnProperty('selection') && !changes.selection) changes['layout.selections'] = []; + if (Object.hasOwn(changes, 'selection') && !changes.selection) changes['layout.selections'] = []; // remove any table's mappings from changes because it will be applied by the connectors. const changesWithoutTblMappings = omitBy(changes, (v) => isString(v) && v.match(TBL_SRC_PATTERN)); set(action, 'payload.changes', changesWithoutTblMappings); diff --git a/src/firefly/js/charts/ui/ChartsContainer.jsx b/src/firefly/js/charts/ui/ChartsContainer.jsx index 18a06aef99..b8819260db 100644 --- a/src/firefly/js/charts/ui/ChartsContainer.jsx +++ b/src/firefly/js/charts/ui/ChartsContainer.jsx @@ -176,7 +176,7 @@ export const ActiveChartsPanel = (props) => { chartId, tbl_group, toolbarVariant, - showToolbar: !Boolean(noChartToolbar), + showToolbar: !noChartToolbar, }}/> ); } diff --git a/src/firefly/js/charts/ui/MultiChartViewer.jsx b/src/firefly/js/charts/ui/MultiChartViewer.jsx index 48443c710f..a5ce8b2f7d 100644 --- a/src/firefly/js/charts/ui/MultiChartViewer.jsx +++ b/src/firefly/js/charts/ui/MultiChartViewer.jsx @@ -151,7 +151,7 @@ export class MultiChartViewer extends PureComponent { //console.log('Active chart ID: '+activeItemId); const ToolBar = expandedMode ? MultiChartToolbarExpanded : MultiChartToolbarStandard; - const showChartToolbar = !Boolean(noChartToolbar); + const showChartToolbar = !noChartToolbar; const borderSettings= useBorder ? {border: '1px solid', borderColor: 'divider', borderRadius: '5px'} : {}; diff --git a/src/firefly/js/charts/ui/PlotlyWrapper.jsx b/src/firefly/js/charts/ui/PlotlyWrapper.jsx index 09cf956cec..23053696b0 100644 --- a/src/firefly/js/charts/ui/PlotlyWrapper.jsx +++ b/src/firefly/js/charts/ui/PlotlyWrapper.jsx @@ -48,7 +48,7 @@ function deltas(a, b, wrapArray=true) { const doDiff = (a2, b2, r, wrapArray) => { forEach(a2, function(v, k) { // already checked this or equal or original has no value... - if (b2 && (r.hasOwnProperty(k) || shallowequal(b2[k], v))) return; + if (b2 && (Object.hasOwn(r, k) || shallowequal(b2[k], v))) return; // but what if it returns an empty object? still attach? r[k] = b2 && isPlainObject(v) ? diff(v, b2[k], wrapArray) : v; if (wrapArray && Array.isArray(r[k])) { diff --git a/src/firefly/js/core/AppDataCntlr.js b/src/firefly/js/core/AppDataCntlr.js index 4af1814025..b599fcdeb1 100644 --- a/src/firefly/js/core/AppDataCntlr.js +++ b/src/firefly/js/core/AppDataCntlr.js @@ -160,7 +160,7 @@ export function dispatchConnectionStatus({lost, reason}) { export function dispatchNotifyRemoteAppReady() { const channel= getWsChannel(); if (!channel) return; - const [, sourceChannel, app] = channel.match(channel_matcher) || [,channel]; + const [, sourceChannel, app] = channel.match(channel_matcher) || [undefined, channel]; dispatchRemoteAction(sourceChannel,{ type : NOTIFY_REMOTE_APP_READY, payload: {ready:true, viewerChannel:channel}}); } diff --git a/src/firefly/js/core/background/BackgroundCntlr.js b/src/firefly/js/core/background/BackgroundCntlr.js index b5998b103c..2ebe55832f 100644 --- a/src/firefly/js/core/background/BackgroundCntlr.js +++ b/src/firefly/js/core/background/BackgroundCntlr.js @@ -247,7 +247,6 @@ function reducer(state={}, action={}) { nstate = TblUtil.smartMerge(nstate, updates); } return nstate; - break; case BG_LOAD_JOBS: { const {jobs, overflow} = action.payload; let nstate = state; @@ -256,14 +255,12 @@ function reducer(state={}, action={}) { nstate = updateObject(nstate, updates); } return nstate; - break; } case BG_SET_INFO : { const {email, notifEnabled} = action.payload; let nstate = updateSet(state, 'email', email); nstate = updateSet(nstate, 'notifEnabled', notifEnabled); return nstate; - break; } default: return state; diff --git a/src/firefly/js/drawingLayers/Artifact.js b/src/firefly/js/drawingLayers/Artifact.js index c810fbd41b..36601967b4 100644 --- a/src/firefly/js/drawingLayers/Artifact.js +++ b/src/firefly/js/drawingLayers/Artifact.js @@ -165,7 +165,6 @@ function getLayerChanges(drawLayer, action) { const {tableModel}= action.payload.changes; return tableModel ? Object.assign({tableModel}, createDrawData(drawLayer, tableModel)) : {tableModel:null, drawData: null}; - break; case ATTACH_LAYER_TO_PLOT: case CHANGE_VISIBILITY: diff --git a/src/firefly/js/drawingLayers/ComputeWebGridData.js b/src/firefly/js/drawingLayers/ComputeWebGridData.js index e7e4047ecc..3339b4ce0f 100644 --- a/src/firefly/js/drawingLayers/ComputeWebGridData.js +++ b/src/firefly/js/drawingLayers/ComputeWebGridData.js @@ -133,20 +133,20 @@ function getRangeFromFourSides(plot, csys, cc){ var wLen, hLen; wLen = width/det; hLen = height/det; - for (var i=0; i 360?tx-360:tx; tx=tx<0?tx+360:tx; @@ -1367,7 +1367,7 @@ function getLevels(ranges,factor, maxLines){ levels[i]=[]; } else if ( Math.abs(min - (-90.0)) < 0.1 && Math.abs(max - 90.0) <0.1){ //include both poles - levels[i]= [-75.,-60., -45., -30., -15., 0.,
15., 30., 45., 60., 75.]; + levels[i]= [-75.,-60., -45., -30., -15., 0., 15., 30., 45., 60., 75.]; } else { /* LZ DM-10491: introduced this simple algorithm to calculate the intervals. The previous one diff --git a/src/firefly/js/drawingLayers/FootprintTool.js b/src/firefly/js/drawingLayers/FootprintTool.js index 32fb577a10..ae7c10cb4c 100644 --- a/src/firefly/js/drawingLayers/FootprintTool.js +++ b/src/firefly/js/drawingLayers/FootprintTool.js @@ -20,7 +20,7 @@ import { } from './MarkerTool.js'; import {getFootprintToolUIComponent} from './FootprintToolUI.jsx'; import ShapeDataObj from '../visualize/draw/ShapeDataObj.js'; -import {clone} from '../util/WebUtil.js' +import {clone} from '../util/WebUtil.js'; import {getDS9Region} from '../rpc/PlotServicesJson.js'; import {FootprintFactory} from '../visualize/draw/FootprintFactory.js'; import {makeImagePt} from '../visualize/Point.js'; diff --git a/src/firefly/js/drawingLayers/SearchTarget.js b/src/firefly/js/drawingLayers/SearchTarget.js index a471945931..b2089d250c 100644 --- a/src/firefly/js/drawingLayers/SearchTarget.js +++ b/src/firefly/js/drawingLayers/SearchTarget.js @@ -52,7 +52,7 @@ function creator(initPayload, presetDefaults) { destroyWhenAllDetached: true, canUserChangeColor: ColorChangeType.DYNAMIC, canUserDelete, - allocatedColor: !Boolean(color), + allocatedColor: !color, }; return DrawLayer.makeDrawLayer(drawLayerId || `${ID}-${idCnt}`,TYPE_ID, {}, options, drawingDef, [RECENTER, UPDATE_SEARCH_TARGET]); } diff --git a/src/firefly/js/fieldGroup/FieldGroupUtils.js b/src/firefly/js/fieldGroup/FieldGroupUtils.js index 65da818b99..a8fa6578e1 100644 --- a/src/firefly/js/fieldGroup/FieldGroupUtils.js +++ b/src/firefly/js/fieldGroup/FieldGroupUtils.js @@ -39,11 +39,11 @@ function validateSingle(groupKey, includeUnmounted) { const newValue= fields[key].value(); if (typeof newValue=== 'object' && // check to see if return is an object that includes {value: any} and not a promise !newValue.then && - newValue.hasOwnProperty('value') ) { - dispatchValueChange({valid:true,fieldKey:key,groupKey,...newValue}); + Object.hasOwn(newValue, 'value') ) { + dispatchValueChange({valid:true, fieldKey:key, groupKey, ...newValue}); } else { - dispatchValueChange({fieldKey:key,groupKey,valid:true,value:newValue}); + dispatchValueChange({valid:true, fieldKey:key, groupKey, value:newValue}); } } }); diff --git a/src/firefly/js/metaConvert/DataProductsWatcher.js b/src/firefly/js/metaConvert/DataProductsWatcher.js index de9cc61780..e80ee42004 100644 --- a/src/firefly/js/metaConvert/DataProductsWatcher.js +++ b/src/firefly/js/metaConvert/DataProductsWatcher.js @@ -81,7 +81,7 @@ function watchDataProductsTable(tbl_id, action, cancelSelf, params) { const dpView= getViewer(mvRoot, dataTypeViewerId); if (!action) { - if (paused) paused= !Boolean(imView || dpView); + if (paused) paused= !(imView || dpView); if (!paused && getActiveTableId()===tbl_id) { updateDataProducts(factoryKey, null, firstTime, tbl_id, activateParams); firstTime= false; diff --git a/src/firefly/js/tables/__tests__/FilterInfo-test.js b/src/firefly/js/tables/__tests__/FilterInfo-test.js index 1043f58712..7b3f538294 100644 --- a/src/firefly/js/tables/__tests__/FilterInfo-test.js +++ b/src/firefly/js/tables/__tests__/FilterInfo-test.js @@ -17,7 +17,7 @@ describe('FilterInfo', () => { } }; - TblUtil.getTblById = jest.fn().mockReturnValue(aStringColumn); // mock getTblById to return the aStringColumn table + jest.spyOn(TblUtil, 'getTblById').mockReturnValue(aStringColumn); // mock getTblById to return the aStringColumn table let actual = FilterInfo.conditionValidator('=abc', 'a_fake_tbl_id', 'desc'); expect(actual.valid).toBe(true); @@ -36,7 +36,7 @@ describe('FilterInfo', () => { } }; - TblUtil.getTblById = jest.fn().mockReturnValue(aNumericColumn); // once again mock getTblById to return the different (numeric) table + jest.spyOn(TblUtil, 'getTblById').mockReturnValue(aNumericColumn); // once again mock getTblById to return the different (numeric) table const {valid, value} = FilterInfo.conditionValidator('>1.23', 'a_fake_tbl_id', 'ra'); expect(valid).toBe(true); diff --git a/src/firefly/js/tables/__tests__/TableUtil-test.js b/src/firefly/js/tables/__tests__/TableUtil-test.js index 4a7ebd5963..60e0c3f273 100644 --- a/src/firefly/js/tables/__tests__/TableUtil-test.js +++ b/src/firefly/js/tables/__tests__/TableUtil-test.js @@ -355,7 +355,7 @@ describe('TableUtil: datarights', () => { ], } }; - TblUtil.getTblById = jest.fn().mockReturnValue(table); + jest.spyOn(TblUtil, 'getTblById').mockReturnValue(table); const dataRoot = dataReducer({data:{id123: table}}, {type: TABLE_LOADED, payload: table}); const otable = get(dataRoot, 'id123'); @@ -378,7 +378,7 @@ describe('TableUtil: datarights', () => { ], } }; - TblUtil.getTblById = jest.fn().mockReturnValue(table); + jest.spyOn(TblUtil, 'getTblById').mockReturnValue(table); const dataRoot = dataReducer({data:{id123: table}}, {type: TABLE_LOADED, payload: table}); const otable = get(dataRoot, 'id123'); @@ -401,7 +401,7 @@ describe('TableUtil: datarights', () => { ], } }; - TblUtil.getTblById = jest.fn().mockReturnValue(table); + jest.spyOn(TblUtil, 'getTblById').mockReturnValue(table); const dataRoot = dataReducer({data:{id123: table}}, {type: TABLE_LOADED, payload: table}); const otable = get(dataRoot, 'id123'); diff --git a/src/firefly/js/tables/reducer/TableDataReducer.js b/src/firefly/js/tables/reducer/TableDataReducer.js index e338dbcc02..fc584464ea 100644 --- a/src/firefly/js/tables/reducer/TableDataReducer.js +++ b/src/firefly/js/tables/reducer/TableDataReducer.js @@ -175,7 +175,7 @@ function fixStatus(root, tbl_id) { if (code && (code < 200 || code >= 400)) { if (!table.error) { // if there error status but no error in tableModel, add error for backward compatibility. const {message:error, cause} = parseError(message); - return updateSet(root, [tbl_id, 'error'], new Error(error, {cause}) || 'Unable to load table.'); + return updateSet(root, [tbl_id, 'error'], new Error(error, {cause})); } } } else { @@ -189,6 +189,6 @@ function fixStatus(root, tbl_id) { function parseStatus(error) { if (!error) return {code:200, message: ''}; - const [,code=500,message=error] = error.trim?.().match(/^(\d{3})\W+(.*)/) || [,,]; + const [,code=500,message=error] = error.trim?.().match(/^(\d{3})\W+(.*)/) || []; return {code, message}; } diff --git a/src/firefly/js/tables/ui/BasicTableView.jsx b/src/firefly/js/tables/ui/BasicTableView.jsx index 30cca40fad..734e95917a 100644 --- a/src/firefly/js/tables/ui/BasicTableView.jsx +++ b/src/firefly/js/tables/ui/BasicTableView.jsx @@ -454,7 +454,7 @@ function makeColumnTag(props, col, idx) { tbl_id, renderers, startIdx, cellRenderers} = props; if (col.visibility && col.visibility !== 'show') return false; - const HeadRenderer = get(renderers, [col.name, 'headRenderer'], showHeader ? HeaderCell : ({})=>null); + const HeadRenderer = renderers?.[col.name]?.headRenderer ?? (showHeader ? HeaderCell : ()=>null); const CellRenderer = renderers?.[col.name]?.cellRenderer || cellRenderers?.[idx]; const fixed = col.fixed || false; const {resizable=true} = col; diff --git a/src/firefly/js/templates/fireflyviewer/LandingPage.jsx b/src/firefly/js/templates/fireflyviewer/LandingPage.jsx index eb13d7e1e4..474da1ef37 100644 --- a/src/firefly/js/templates/fireflyviewer/LandingPage.jsx +++ b/src/firefly/js/templates/fireflyviewer/LandingPage.jsx @@ -112,7 +112,7 @@ function EmptyResults({icon, text, subtext, summaryText, actionItems, slotProps} return ( - + {icon} diff --git a/src/firefly/js/templates/lightcurve/LcResult.jsx b/src/firefly/js/templates/lightcurve/LcResult.jsx index 1b6dd27b23..7edba7cc4c 100644 --- a/src/firefly/js/templates/lightcurve/LcResult.jsx +++ b/src/firefly/js/templates/lightcurve/LcResult.jsx @@ -122,7 +122,7 @@ export class LcResult extends PureComponent { } export function defaultDownloadPanel(mission='', cutoutSize, addtlParams={}) { - mission = mission.replace(/[\/ ]/g, '_'); // clean up mission description to be used for save as value. + mission = mission.replace(/[/ ]/g, '_'); // clean up mission description to be used for save as value. return ( { diff --git a/src/firefly/js/templates/lightcurve/generic/errorMsg.js b/src/firefly/js/templates/lightcurve/generic/errorMsg.js index 7f11f72d6c..1426d2a952 100644 --- a/src/firefly/js/templates/lightcurve/generic/errorMsg.js +++ b/src/firefly/js/templates/lightcurve/generic/errorMsg.js @@ -1,3 +1,3 @@ export const ERROR_MSG_KEY = { IMAGE_FETCH: 'imageFetchedError' -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/firefly/js/ui/PositionFieldDef.js b/src/firefly/js/ui/PositionFieldDef.js index 27e973a61e..a9026be956 100644 --- a/src/firefly/js/ui/PositionFieldDef.js +++ b/src/firefly/js/ui/PositionFieldDef.js @@ -119,7 +119,7 @@ export function formatPosForHelp(wp) { } } else { - s = `
+ s = `
${lonStr}, ${latStr}  ${csys}
`; s += getEQJ2000(wp); } diff --git a/src/firefly/js/ui/TargetFeedback.jsx b/src/firefly/js/ui/TargetFeedback.jsx index 9c12a9025e..0ab15ac813 100644 --- a/src/firefly/js/ui/TargetFeedback.jsx +++ b/src/firefly/js/ui/TargetFeedback.jsx @@ -30,7 +30,7 @@ function formatExample(row, fieldKey, setFld) { } })} - ) + ); } diff --git a/src/firefly/js/ui/dynamic/DLGenAnalyzeSearch.js b/src/firefly/js/ui/dynamic/DLGenAnalyzeSearch.js index af65bb37bd..f30f804692 100644 --- a/src/firefly/js/ui/dynamic/DLGenAnalyzeSearch.js +++ b/src/firefly/js/ui/dynamic/DLGenAnalyzeSearch.js @@ -224,7 +224,7 @@ export function supportsUpload(qAna, standardID, useConcurrent= false) { const hasUpload= getCisxUIValue(qAna,'IRSA_SIA_upload_extension') && isSIAStandardID(standardID); if (!hasUpload) return false; if (!useConcurrent) return true; - return !Boolean(qAna.concurrentSearchDef?.length); + return !qAna.concurrentSearchDef?.length; } diff --git a/src/firefly/js/ui/dynamic/DynComponents.jsx b/src/firefly/js/ui/dynamic/DynComponents.jsx index feac904b6a..85fd5209fa 100644 --- a/src/firefly/js/ui/dynamic/DynComponents.jsx +++ b/src/firefly/js/ui/dynamic/DynComponents.jsx @@ -142,7 +142,7 @@ export function isSimpleTargetPanel(fieldDefAry) { if (sizeKey && manageAllSpacial && targetDetails?.hipsUrl) { return false; } - return !Boolean(targetDetails?.hipsUrl); + return !targetDetails?.hipsUrl; } diff --git a/src/firefly/js/ui/tap/AdvancedADQL.jsx b/src/firefly/js/ui/tap/AdvancedADQL.jsx index 9914ed1c38..b4d7b4b7ca 100644 --- a/src/firefly/js/ui/tap/AdvancedADQL.jsx +++ b/src/firefly/js/ui/tap/AdvancedADQL.jsx @@ -451,7 +451,7 @@ export function AdvancedADQL({adqlKey, defAdqlKey, serviceUrl, capabilities, sty POLYGON('', POINT1, POINT2, POINT3...) DISTANCE(POINT1, POINT2) CONTAINS(REGION1, REGION2) - INTERSECTS(REGION1, REGION2)`).replace(/ +/g, '') + INTERSECTS(REGION1, REGION2)`).replace(/ {4,}/g, '') } diff --git a/src/firefly/js/ui/tap/ColumnConstraintsPanel.jsx b/src/firefly/js/ui/tap/ColumnConstraintsPanel.jsx index 524e71cd42..a59dc8ec6d 100644 --- a/src/firefly/js/ui/tap/ColumnConstraintsPanel.jsx +++ b/src/firefly/js/ui/tap/ColumnConstraintsPanel.jsx @@ -63,7 +63,7 @@ function validSingleCondition(s) { if (sUp.startsWith('IN')) return sUp.match(/^IN\s*\(.*\)$/); if (startsWithAny(sUp,['=','>','<',])) return validParam(sUp.substr(1)); if (startsWithAny(sUp,['!=','>=','<='])) return validParam(sUp.substr(2)); - return !Boolean(sUp.match(/( [A-Za-z]\S* )/)); + return !sUp.match(/( [A-Za-z]\S* )/); } function validParam(param) { diff --git a/src/firefly/js/ui/tap/Cutout.js b/src/firefly/js/ui/tap/Cutout.js index df522865e6..5445493131 100644 --- a/src/firefly/js/ui/tap/Cutout.js +++ b/src/firefly/js/ui/tap/Cutout.js @@ -150,7 +150,7 @@ export function getCutoutTargetType(dataProductsComponentKey=DEFAULT_DATA_PRODUC if (typeFromOptions === ROW_POSITION && canDoRow) return ROW_POSITION; // compute fallback from the default based on if a search target exist - if (canDoRow) return Boolean(getSearchTargetFromTable(tbl_id)) ? SEARCH_POSITION : ROW_POSITION; + if (canDoRow) return getSearchTargetFromTable(tbl_id) ? SEARCH_POSITION : ROW_POSITION; // fallback to SEARCH_POSITION return SEARCH_POSITION; diff --git a/src/firefly/js/ui/tap/TemporalSearch.jsx b/src/firefly/js/ui/tap/TemporalSearch.jsx index 45402ca9b4..50f26b2b52 100644 --- a/src/firefly/js/ui/tap/TemporalSearch.jsx +++ b/src/firefly/js/ui/tap/TemporalSearch.jsx @@ -143,7 +143,7 @@ export function TemporalSearch({cols, columnsModel, tableName}) { if (existingTimeCol) timeColExists = cols.some((c) => c.name === existingTimeCol); if (!timeColExists) existingTimeCol = findTimeCol; setVal(TemporalColumns, existingTimeCol, {validator: getColValidator(cols, true, false, errMsg), valid: true}); - if (Boolean(findTimeCol)) checkHeaderCtl.setPanelOpen(true); + if (findTimeCol) checkHeaderCtl.setPanelOpen(true); }, [columnsModel]); diff --git a/src/firefly/js/util/BrowserInfo.js b/src/firefly/js/util/BrowserInfo.js index dec6aa0324..1a39f2e565 100644 --- a/src/firefly/js/util/BrowserInfo.js +++ b/src/firefly/js/util/BrowserInfo.js @@ -198,7 +198,7 @@ function parseVersion(ua,key,browser) { let idx= ua.indexOf(key); if (idx!==-1) idx+= key.length; const ver= ua.substring(idx).match(/[0-9.]+/)?.[0]; - const sAry= ver?.split('\.') ?? []; + const sAry= ver?.split('.') ?? []; return { browser, majorVersion: !isNaN(Number(sAry[0])) ? parseInt(sAry[0]) : UNKNOWN_VER, diff --git a/src/firefly/js/util/__tests__/Expression-test.js b/src/firefly/js/util/__tests__/Expression-test.js index f2add2d7c6..4346074b4b 100644 --- a/src/firefly/js/util/__tests__/Expression-test.js +++ b/src/firefly/js/util/__tests__/Expression-test.js @@ -1,8 +1,3 @@ -/*eslint-env node, mocha */ - -// to run: from firefly/src/firefly -// node ../../node_modules/mocha/bin/mocha js/util/expr/__test__/*test.js --compilers js:babel-core/register --requires ignore-styles - import {Expression} from '../expr/Expression.js'; describe('A test suite for expr/Expression.js', function () { diff --git a/src/firefly/js/util/expr/Expression.js b/src/firefly/js/util/expr/Expression.js index 916b1e0cb4..def5abcf3d 100644 --- a/src/firefly/js/util/expr/Expression.js +++ b/src/firefly/js/util/expr/Expression.js @@ -22,7 +22,7 @@ export class Expression { allowedVariables.forEach((v)=>{ parser.allow(makeVariable(v)); // also allow quoted variables - if (!v.startsWith('\"')) { + if (!v.startsWith('"')) { parser.allow(makeVariable(`"${v}"`)); } }); diff --git a/src/firefly/js/util/expr/__test__/Expression-test.js b/src/firefly/js/util/expr/__test__/Expression-test.js deleted file mode 100644 index 430d1f686f..0000000000 --- a/src/firefly/js/util/expr/__test__/Expression-test.js +++ /dev/null @@ -1,123 +0,0 @@ -/*eslint-env node, mocha */ - -// to run: from firefly/src/firefly -// node ../../node_modules/mocha/bin/mocha js/util/expr/__test__/*test.js --compilers js:babel-core/register --requires ignore-styles - - -import {expect} from 'chai'; -//import {assert} from 'chai'; - -import {Expression} from '../Expression.js'; - -describe('A test suite for expr/Expression.js', function () { - - - /* run once before testing */ - before(() => { - - - } - ); - /* run once testing is done */ - after(() => { - } - ); - - /* run before every test-case*/ - beforeEach(() => { - } - ); - /* run after every test-case*/ - afterEach(function () { - - } - ); - - /* Valid operators: * / + - ^ < > = , ( ) - * Supported functions: - * abs, acos, asin, atan, - * ceil, cos, exp, floor, - * lg, ln, round, sin, sqrt, - * tan, atan2, max, min - * Supported conditional if(condition, then, alternative) - * Supported constants: pi - */ - it('valid expression (functions)', function () { - var x,y; - - for (x=-1; x<=1; x+=0.2) { - const utests = [ - {e: 'abs(x)', r: Math.abs(x)}, - {e: 'acos(x)', r: Math.acos(x)}, - {e: 'asin(x)', r: Math.asin(x)}, - {e: 'atan(x)', r: Math.atan(x)}, - {e: 'ceil(x)', r: Math.ceil(x)}, - {e: 'cos(x)', r: Math.cos(x)}, - {e: 'exp(x)', r: Math.exp(x)}, - {e: 'floor(x)', r: Math.floor(x)}, - {e: 'lg(x)', r: Math.log10(x)}, - {e: 'log10(x)', r: Math.log10(x)}, - {e: 'log(x)', r: Math.log(x)}, - {e: 'ln(x)', r: Math.log(x)}, - {e: 'round(x)', r: Math.round(x)}, - {e: 'sin(x)', r: Math.sin(x)}, - {e: 'sqrt(x)', r: Math.sqrt(x)}, - {e: 'tan(x)', r: Math.tan(x)} - ]; - utests.forEach((t)=> { - //console.log(`${t.e} with ${x}`); - const e = new Expression(t.e, ['x']); - expect(e.isValid()).to.be.true; - expect(!e.getError()).to.be.true; - e.setVariableValue('x', x); - const r = e.getValue(); - !(Number.isNaN(r)&&Number.isNaN(t.r)) && expect(r).to.be.equal(t.r); - }); - } - - for (x=-2; x<=2; x+=0.5) { - for (y=-2; y<=2; y+=0.5) { - const btests = [ - {e: 'min(x,y)', r: Math.min(x,y)}, - {e: 'max(x,y)', r: Math.max(x,y)}, - {e: 'atan2(x,y)', r: Math.atan2(x,y)}, - {e: 'if(x>y,x,y)', r: (x>y?x:y)} - ]; - btests.forEach((t)=> { - //console.log(`${t.e} with ${x} and ${y}`); - const e = new Expression(t.e, ['x', 'y']); - expect(e.isValid()).to.be.true; - expect(!e.getError()).to.be.true; - e.setVariableValue('x', x); - e.setVariableValue('y', y); - const r = e.getValue(); - !(Number.isNaN(r)&&Number.isNaN(t.r)) && expect(r).to.be.equal(t.r); - }); - } - } - }); - - - it('valid expression (operators)', function () { - const x= 0.5, y=-2.2; - const expressionGood = new Expression('2*(sin(pi()-acos(x))+abs(y)^3)/x', ['x','y']); - expect(expressionGood.isValid()).to.be.true; - expect(!expressionGood.getError()).to.be.true; - expressionGood.setVariableValue('x', x); - expressionGood.setVariableValue('y', y); - expect(expressionGood.getValue()).to.be.equal(2*(Math.sin(Math.PI-Math.acos(x))+Math.pow(Math.abs(y),3))/x); - }); - - - - it('invalid expression', function () { - const expressionBad = new Expression('2*sin(x)+y/z', ['x','y']); - expect(expressionBad.isValid()).to.be.false; - const se = expressionBad.getError(); - expect(se).property('error'); - expect(se).property('details'); - expect(se).property('where'); - expect(se).property('why'); - console.log(se); - }); -}); diff --git a/src/firefly/js/visualize/PlotViewUtil.js b/src/firefly/js/visualize/PlotViewUtil.js index c6ccf82b6c..6ff9fd0494 100644 --- a/src/firefly/js/visualize/PlotViewUtil.js +++ b/src/firefly/js/visualize/PlotViewUtil.js @@ -953,7 +953,7 @@ export function convertImageIdxToHDU(pv, imageIdx) { export const hasWLInfo= (plot) => Boolean(plot?.wlData?.hasPlainOnlyCoordInfo || plot?.wlData?.hasPixelLevelCoordInfo ); -export const wavelengthInfoParsedSuccessfully= (plot) => !Boolean(plot?.wlData?.failReason); +export const wavelengthInfoParsedSuccessfully= (plot) => !plot?.wlData?.failReason; export const getWavelengthParseFailReason= (plot) => plot?.wlData?.failReason; diff --git a/src/firefly/js/visualize/WebPlotRequest.js b/src/firefly/js/visualize/WebPlotRequest.js index f7ef8286d5..40571fef00 100644 --- a/src/firefly/js/visualize/WebPlotRequest.js +++ b/src/firefly/js/visualize/WebPlotRequest.js @@ -934,7 +934,7 @@ function cleanupObj(r) { * @return {String[]} an array of invalid keys */ export function findInvalidWPRKeys(r) { - return [...Object.keys(r),...plotAttKeys].filter( (k) => !Boolean(allKeys.get(k))); + return [...Object.keys(r),...plotAttKeys].filter( (k) => !allKeys.get(k)); } /** diff --git a/src/firefly/js/visualize/__tests__/PlotViewUtil-test.js b/src/firefly/js/visualize/__tests__/PlotViewUtil-test.js index 129eda3ea7..fda8d101eb 100644 --- a/src/firefly/js/visualize/__tests__/PlotViewUtil-test.js +++ b/src/firefly/js/visualize/__tests__/PlotViewUtil-test.js @@ -1,6 +1,6 @@ import {primePlot, getPlotViewById, isActivePlotView, getActivePlotView} from '../PlotViewUtil.js'; import {makePlotView} from '../reducer/PlotView.js'; -import {WebPlotRequest} from '../WebPlotRequest.js' +import {WebPlotRequest} from '../WebPlotRequest.js'; import {findPlot, primePlotType} from '../PlotViewUtil'; @@ -115,7 +115,6 @@ describe('Less used PlotViewUtil functions', () => { }); test('findPlot)', () => { - debugger; const pv= getPlotViewById(pvAry, 'testId1'); const plot= findPlot(pv, 'testId1-image1'); expect(plot).toBeDefined(); diff --git a/src/firefly/js/visualize/draw/PointDataObj.js b/src/firefly/js/visualize/draw/PointDataObj.js index 0bf0ffb718..8a24885616 100644 --- a/src/firefly/js/visualize/draw/PointDataObj.js +++ b/src/firefly/js/visualize/draw/PointDataObj.js @@ -423,7 +423,6 @@ function toRegion(pt, plot, drawObj, drawParams, renderOptions) { break; case DrawSymbol.ROTATE: return retList; // no region - break; default: pointType = 'box'; } diff --git a/src/firefly/js/visualize/draw/ShapeHighlight.js b/src/firefly/js/visualize/draw/ShapeHighlight.js index d20fe972a0..87abbffaaf 100644 --- a/src/firefly/js/visualize/draw/ShapeHighlight.js +++ b/src/firefly/js/visualize/draw/ShapeHighlight.js @@ -52,7 +52,7 @@ var areaObj = (min_x, max_x, min_y, max_y, unit = ShapeDataObj.UnitType.IMAGE_PI */ export function getDrawobjArea(drawObj, cc, def={}) { var rCover = null; - var firstObj; + const firstObj = drawObj[doAry]?.[0]; switch (drawObj.sType) { case ShapeDataObj.ShapeType.Line: @@ -71,17 +71,17 @@ export function getDrawobjArea(drawObj, cc, def={}) { rCover = getDrawobjPolygonArea(drawObj, cc); break; case ShapeDataObj.ShapeType.Annulus: - if (firstObj = get(drawObj, [doAry, '0'])) { + if (firstObj) { rCover = getDrawobjCircleArea(firstObj, cc, def); } break; case ShapeDataObj.ShapeType.BoxAnnulus: - if (firstObj = get(drawObj, [doAry, '0'])) { + if (firstObj) { rCover = getDrawobjRectArea(firstObj, cc, def); } break; case ShapeDataObj.ShapeType.EllipseAnnulus: - if (firstObj = get(drawObj, [doAry, '0'])) { + if (firstObj) { rCover = getDrawobjEllipseArea(firstObj, cc, def); } break; diff --git a/src/firefly/js/visualize/region/RegionFactory.js b/src/firefly/js/visualize/region/RegionFactory.js index d2c666a9c8..425aa2a7ff 100644 --- a/src/firefly/js/visualize/region/RegionFactory.js +++ b/src/firefly/js/visualize/region/RegionFactory.js @@ -461,7 +461,8 @@ export class RegionFactory { case RegionType.text: if (params.length < 2) break; - if (wp1 = this.parseXY(regionCsys, params[n], params[++n])) { + wp1 = this.parseXY(regionCsys, params[n], params[++n]); + if (wp1) { region = makeRegionText(wp1.pt); } if (params.length >= 3) { @@ -472,7 +473,8 @@ export class RegionFactory { case RegionType.point: if (params.length < 2) break; - if (wp1 = this.parseXY(regionCsys, params[n], params[++n])) { + wp1 = this.parseXY(regionCsys, params[n], params[++n]); + if (wp1) { region = makeRegionPoint(wp1.pt); } if (pointType) { diff --git a/src/firefly/js/visualize/saga/CoverageWatcher.js b/src/firefly/js/visualize/saga/CoverageWatcher.js index 801e525260..804ce5ccc4 100644 --- a/src/firefly/js/visualize/saga/CoverageWatcher.js +++ b/src/firefly/js/visualize/saga/CoverageWatcher.js @@ -608,7 +608,7 @@ function makeOverlayCoverageDrawing() { tblCatIdMap[tbl_id].forEach((cId) => { const layer = getDrawLayerById(getDlAry(), cId); - const tableRemoved= !Boolean(getTblById(tbl_id)); + const tableRemoved= !getTblById(tbl_id); if (layer && (tableRemoved || tbl_id===affectedTblId)) { drawingOptions[cId] = layer.drawingDef; // drawingDef and selectOption is stored as layer based selectOps[cId] = layer.selectOption; diff --git a/src/firefly/js/visualize/ui/ColorRGBHuePreservingPanel.jsx b/src/firefly/js/visualize/ui/ColorRGBHuePreservingPanel.jsx index 81e244143e..0bf4b5bbb9 100644 --- a/src/firefly/js/visualize/ui/ColorRGBHuePreservingPanel.jsx +++ b/src/firefly/js/visualize/ui/ColorRGBHuePreservingPanel.jsx @@ -23,7 +23,7 @@ export const ColorRGBHuePreservingPanel= ({rgbFields,groupKey}) => { ); if (!rgbFields) return
; const {zscale} = rgbFields; - const zscaleValue = zscale?.value + const zscaleValue = zscale?.value; const renderRange = (isZscale) => { if (isZscale) { return null; diff --git a/src/firefly/js/visualize/ui/CtxToolbarFunctions.js b/src/firefly/js/visualize/ui/CtxToolbarFunctions.js index 4a11682607..d8303d12f4 100644 --- a/src/firefly/js/visualize/ui/CtxToolbarFunctions.js +++ b/src/firefly/js/visualize/ui/CtxToolbarFunctions.js @@ -135,7 +135,7 @@ function tabulateStatics(wpResult, cc) { tblData[STable] = [{'cells': ['', 'Position', 'Value']}]; for (let i = 0; i < ipMetrics.length; i++) { - if (!b.hasOwnProperty(ipMetrics[i])) { + if (!Object.hasOwn(b, ipMetrics[i])) { continue; } diff --git a/src/firefly/js/visualize/ui/DrawLayerPanel.jsx b/src/firefly/js/visualize/ui/DrawLayerPanel.jsx index 5f5e6c9bd5..8416b3ec54 100644 --- a/src/firefly/js/visualize/ui/DrawLayerPanel.jsx +++ b/src/firefly/js/visualize/ui/DrawLayerPanel.jsx @@ -62,7 +62,7 @@ function DrawLayerPanel() { } const defaultTitle = 'Layers- '; -export function DrawLayerPanelTitle({}) { +export function DrawLayerPanelTitle() { const plotTitle = useStoreConnector(() => currentP().plot?.title); return (plotTitle ? `${defaultTitle}${plotTitle}` : defaultTitle); } diff --git a/src/firefly/js/visualize/ui/ImageSearchPanelV2.jsx b/src/firefly/js/visualize/ui/ImageSearchPanelV2.jsx index 9ef25ed498..777f74bc15 100644 --- a/src/firefly/js/visualize/ui/ImageSearchPanelV2.jsx +++ b/src/firefly/js/visualize/ui/ImageSearchPanelV2.jsx @@ -308,7 +308,7 @@ HiPSImage.propTypes = { imageMasterData: PropTypes.array, }; -function ImageType({}) { +function ImageType() { const options = [ {label: 'View FITS Images', value: 'singleChannel'}, {label: 'Create 3-Color Composite', value: 'threeColor'}]; diff --git a/src/firefly/js/visualize/ui/ImageTableRowViewer.jsx b/src/firefly/js/visualize/ui/ImageTableRowViewer.jsx index 2eb706fd63..9dcb385a77 100644 --- a/src/firefly/js/visualize/ui/ImageTableRowViewer.jsx +++ b/src/firefly/js/visualize/ui/ImageTableRowViewer.jsx @@ -262,7 +262,7 @@ function Toolbar({viewerId, tableId:tbl_id, closeFunc=null, maxImageCnt, default useEffect(()=>{ if (matchInit.wcsMatchInitDone) return; - const {pv}= currentP() + const {pv}= currentP(); const plotId= (!pv || pv.plotViewCtx.useForCoverage || !pv.plotViewCtx.useForSearchResults) ? undefined : activePlotId; if(plotId && wcsMatchType!==defaultWcsMatchType) { //to make sure wcsMatch checkbox is checked on initial render diff --git a/src/firefly/js/visualize/ui/MaskAddPanel.jsx b/src/firefly/js/visualize/ui/MaskAddPanel.jsx index 93dac97ccf..fe0d68da4d 100644 --- a/src/firefly/js/visualize/ui/MaskAddPanel.jsx +++ b/src/firefly/js/visualize/ui/MaskAddPanel.jsx @@ -29,7 +29,7 @@ export function showMaskDialog() { -export function MaskAddPanel({}) { +export function MaskAddPanel() { return ( diff --git a/src/firefly/js/visualize/ui/multiProduct/MultiProductViewer.jsx b/src/firefly/js/visualize/ui/multiProduct/MultiProductViewer.jsx index b78a3dda85..614f266acb 100644 --- a/src/firefly/js/visualize/ui/multiProduct/MultiProductViewer.jsx +++ b/src/firefly/js/visualize/ui/multiProduct/MultiProductViewer.jsx @@ -219,6 +219,6 @@ function shouldGetInput(dpId,dataProductsState) { const searchParams= getSearchParams(serviceParamsAry,activeMenuLookupKey,menuKey); const serDescActive = isServiceDescriptorActivated(dpId,serDef.internalServiceDescriptorID); if (noInputRequired && isDefined(serDescActive)) return !serDescActive; - return !Boolean(searchParams); + return !searchParams; }