Skip to content

Commit 921dcda

Browse files
authored
Merge pull request #176 from Caltech-IPAC/dm-7470-coverage
DM-7470: Tri-view coverage now working more like the GWT version
2 parents 70f2820 + 4158f8c commit 921dcda

File tree

2 files changed

+34
-23
lines changed

2 files changed

+34
-23
lines changed

src/firefly/js/templates/fireflyviewer/FireflyViewerManager.js

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ import {REPLACE_IMAGES, DEFAULT_FITS_VIEWER_ID, getViewerPlotIds, getMultiViewRo
1919
* These main components are image plots, charts, tables, dropdown panel, etc.
2020
* This manager implements the default firefly viewer's requirements.
2121
* Because it may differs between applications, it is okay to have a custom layout manager if needed.
22-
* @param [title] title to display.
23-
* @param views defaults to tri-view if not given.
24-
* @param callback
22+
* @param {object} p
23+
* @param [p.title] title to display. p
24+
* @param p.views defaults to tri-view if not given.
2525
*/
2626
export function* layoutManager({title, views='tables | images | xyPlots'}) {
2727
views = LO_VIEW.get(views) || LO_VIEW.none;
28+
var coverageLockedOn= false;
2829

2930
while (true) {
3031
const action = yield take([
@@ -58,7 +59,7 @@ export function* layoutManager({title, views='tables | images | xyPlots'}) {
5859
break;
5960

6061
case TABLE_LOADED :
61-
[showImages, images] = handleNewTable(action, images, showImages, showTables);
62+
[showImages, images, coverageLockedOn] = handleNewTable(action, images, showImages, showTables, coverageLockedOn);
6263
break;
6364

6465
case REPLACE_IMAGES :
@@ -67,10 +68,10 @@ export function* layoutManager({title, views='tables | images | xyPlots'}) {
6768
[showImages, images, ignore] = handleNewImage(action, images);
6869
break;
6970
case TBL_RESULTS_ACTIVE:
70-
[showImages, images] = handleActiveTableChange(action.payload.tbl_id, images);
71+
[showImages, images, coverageLockedOn] = handleActiveTableChange(action.payload.tbl_id, images, coverageLockedOn);
7172
break;
7273
case TABLE_REMOVE:
73-
[showImages, images] = handleActiveTableChange(getActiveTableId(findGroupByTblId(action.payload.tbl_id)), images);
74+
[showImages, images, coverageLockedOn] = handleActiveTableChange(getActiveTableId(findGroupByTblId(action.payload.tbl_id)), images, coverageLockedOn);
7475
break;
7576

7677
}
@@ -133,53 +134,63 @@ function handleLayoutChanges(action) {
133134
}
134135
}
135136

136-
function handleNewTable(action, images, showImages, showTables) {
137+
function handleNewTable(action, images, showImages, showTables, coverageLockedOn) {
137138
// check for catalog or meta images
138-
if (!showTables) return [showImages, images]; // ignores this if table is not visible
139+
if (!showTables) return [showImages, images, coverageLockedOn]; // ignores this if table is not visible
139140
const {tbl_id} = action.payload;
140141
const isMeta = isMetaDataTable(tbl_id);
141142
if (isMeta || isCatalogTable(tbl_id)) {
142143
if (!get(images, 'showFits')) {
143-
images = clone(images, {selectedTab: 'coverage', showCoverage: true});
144+
// only show coverage if there are not images or coverage is showing
145+
const showFits= shouldShowFits();
146+
coverageLockedOn= !showFits||coverageLockedOn;
147+
images = clone(images, {selectedTab: 'coverage', showCoverage: coverageLockedOn});
144148
showImages = true;
145149
}
146150
}
147151
if (isMeta) {
148152
images = clone(images, {selectedTab: 'meta', showMeta: true, metaDataTableId: tbl_id});
149153
showImages = true;
150154
}
151-
return [showImages, images];
155+
return [showImages, images, coverageLockedOn];
152156
}
153157

154-
function handleActiveTableChange (tbl_id, images) {
158+
function handleActiveTableChange (tbl_id, images, coverageLockedOn) {
155159
// check for catalog or meta images
156160

157161
const showFits= shouldShowFits();
158-
var showImages= showFits;
162+
163+
var showImages= showFits||coverageLockedOn;
159164

160165
if (!tbl_id) {
161166
images = clone(images, {showMeta: false, showCoverage: false, showFits, metaDataTableId: null});
162-
return [showFits, images];
167+
return [showFits, images, false];
163168
}
164169

165170
const tblGroup= findGroupByTblId(tbl_id);
166-
if (!tblGroup) return [showImages, images];
171+
if (!tblGroup) return [showImages, images, coverageLockedOn];
167172
const tblList= getTblIdsByGroup(tblGroup);
168-
if (isEmpty(tblList)) return [showImages, images];
173+
if (isEmpty(tblList)) return [showImages, images, coverageLockedOn];
169174

170175
const anyHasCatalog= hasCatalogTable(tblList);
171176
const anyHasMeta= hasMetaTable(tblList);
172177

178+
if (coverageLockedOn) {
179+
coverageLockedOn= anyHasCatalog || anyHasMeta;
180+
showImages= showFits || coverageLockedOn;
181+
}
173182

174183
if (!anyHasCatalog && !anyHasMeta) {
184+
coverageLockedOn= false;
185+
showImages= showFits || coverageLockedOn;
175186
images = clone(images, {showMeta: false, showCoverage: false, showFits, metaDataTableId: null});
176-
return [showFits, images];
187+
return [showFits, images, coverageLockedOn];
177188
}
178189

179190

180191

181192
if (hasCatalogTable(tblList)) {
182-
images = clone(images, {showCoverage: true, showFits});
193+
images = clone(images, {showCoverage: coverageLockedOn, showFits});
183194
showImages = true;
184195
}
185196

@@ -191,7 +202,7 @@ function handleActiveTableChange (tbl_id, images) {
191202
else {
192203
images = clone(images, {showMeta: false, showFits, metaTableId:null});
193204
}
194-
return [showImages, images];
205+
return [showImages, images, coverageLockedOn];
195206
}
196207

197208
const hasCatalogTable= (tblList) => tblList.some( (id) => isCatalogTable(id) );
@@ -212,7 +223,7 @@ function handleNewImage(action, images) {
212223
images = clone(images, {selectedTab: 'fits', showFits: true});
213224
} else {
214225
ignore = true;
215-
};
226+
}
216227

217228
return [true, images, ignore];
218229
}

src/firefly/js/visualize/saga/CoverageWatcher.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ export function* watchCoverage({viewerId, options= {}}) {
127127
break;
128128

129129
case TABLE_REMOVE:
130-
if (!getTableInGroup(payload.tbl_id)) continue;
131130
removeCoverage(payload.tbl_id, decimatedTables);
131+
if (!getTableInGroup(payload.tbl_id)) continue;
132132
displayedTableId = null;
133133
previousDisplayedTableId = null;
134134
tbl_id = getActiveTableId();
@@ -160,9 +160,9 @@ export function* watchCoverage({viewerId, options= {}}) {
160160

161161

162162
function removeCoverage(tbl_id, decimatedTables) {
163-
Reflect.deleteProperty(decimatedTables, tbl_id);
164-
if (!Object.keys(decimatedTables)) {
165-
dispatchDeletePlotView(PLOT_ID);
163+
if (tbl_id) Reflect.deleteProperty(decimatedTables, tbl_id);
164+
if (isEmpty(Object.keys(decimatedTables))) {
165+
dispatchDeletePlotView({plotId:PLOT_ID});
166166
}
167167
}
168168

0 commit comments

Comments
 (0)