Skip to content

Commit

Permalink
blast-results-view : preserve the selected (view flag) column value
Browse files Browse the repository at this point in the history
 ... when switching from results-view tab to sequence-search input tab and back again.
sequence-search.js : update comment for inputIsActive(), which is actively used since 086ea39.
blast-results-view.js : change CP viewRow() to viewRowInit() which computes initial search.viewRow, called in didReceiveAttrs() if this is the first time that search result has been displayed.  viewFeatures() : pass viewRow to showFeatures().
transient.js : showFeatures() : add param view
  • Loading branch information
Don-Isdale committed Jun 16, 2021
1 parent cfa1127 commit c89982c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 8 deletions.
6 changes: 5 additions & 1 deletion frontend/app/components/panel/sequence-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,12 @@ export default Component.extend({

// actions
actions: {
// copied from feature-list, may not be required
/** called for single-character input to textarea; similar to
* actions.dnaSequenceInput() but that is only called for defined events
* (enter / escape), and actions.paste() (paste).
*/
inputIsActive(event) {
// function name and use is copied from feature-list.
dLog('inputIsActive', event?.target);
let text = event?.target?.value;
if (text) {
Expand Down
21 changes: 16 additions & 5 deletions frontend/app/components/panel/upload/blast-results-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ export default Component.extend({
});
}

/** search.viewRow will be undefined when this is the first
* blast-results-view instance to display this search result.
*/
if (! this.get('viewRow')) {
this.viewRowInit();
}

/** not clear yet where addDataset functionality will end up, so wire this up for now. */
this.registerDataPipe({
validateData: () => this.validateData()
Expand Down Expand Up @@ -110,13 +117,15 @@ export default Component.extend({
}
return cells;
}),
viewRow : computed('dataMatrix', 'viewFeaturesFlag', function () {
viewRowInit() {
let
data = this.get('dataMatrix'),
/** viewFeaturesFlag is initially true */
viewFeaturesFlag = this.get('viewFeaturesFlag'),
viewRow = data.map((row) => viewFeaturesFlag);
return viewRow;
}),
this.set('search.viewRow', viewRow);
},
viewRow : alias('search.viewRow'),

/** Result data formatted for upload-table.js : submitFile()
*/
Expand Down Expand Up @@ -293,7 +302,7 @@ export default Component.extend({
*/
nowOrLater(
viewFeaturesFlag,
() => transient.showFeatures(dataset, blocks, features, viewFeaturesFlag));
() => transient.showFeatures(dataset, blocks, features, viewFeaturesFlag, this.get('viewRow')));
}
},

Expand Down Expand Up @@ -491,6 +500,8 @@ query ID, subject ID, % identity, length of HSP (hit), # mismatches, # gaps, que
let feature = transient.pushFeature(features[row]),
viewFeaturesFlag = newValue;
transient.showFeature(feature, viewFeaturesFlag);
let viewRow = this.get('viewRow');
viewRow[row] = newValue;
}
});
}
Expand All @@ -515,7 +526,7 @@ query ID, subject ID, % identity, length of HSP (hit), # mismatches, # gaps, que
}
let
validatedData = this.get('dataFeatures'),
viewRow = this.get('viewRow'),
// or view = this.get('viewRow'),
view = table.getDataAtCol(t_view),
viewed = validatedData.filter((r,i) => view[i]);
resolve(viewed);
Expand Down
8 changes: 6 additions & 2 deletions frontend/app/services/data/transient.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,16 @@ export default Service.extend({
return blocks;
},

showFeatures(dataset, blocks, features, viewFeaturesFlag) {
/**
* @param view a flag per-feature to enable display of the feature row;
* from values of the View checkbox column of the results features table.
*/
showFeatures(dataset, blocks, features, viewFeaturesFlag, view) {
let
selected = this.get('selected'),
// may pass dataset, blocks to pushFeature()
stored = features.map((f) => this.pushFeature(f));
stored.forEach((feature) => this.showFeature(feature, viewFeaturesFlag));
stored.forEach((feature, i) => this.showFeature(feature, viewFeaturesFlag && view[i]));
},
showFeature(feature, viewFeaturesFlag) {
let
Expand Down

0 comments on commit c89982c

Please sign in to comment.