Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master Release v2.8.0 #248

Merged
merged 79 commits into from
Jun 24, 2021
Merged

Master Release v2.8.0 #248

merged 79 commits into from
Jun 24, 2021

Conversation

Don-Isdale
Copy link
Collaborator

@Don-Isdale Don-Isdale commented May 25, 2021

including branches :

There are some items in 239 and 233 which are deferred for a later branch

This handles subsequent chunks arriving after a delay when called via web api : blastn_request.bash -> blastServer.py -> blastn_cont.bash
@Don-Isdale
Copy link
Collaborator Author

Don-Isdale commented May 25, 2021

issues

  • Uncaught TypeError: window.DocumentTimeline is not a constructor
    at n.get currentZoomPanIsWheel
      documentTimeline = new window.DocumentTimeline(),

use new DocumentTimeline(), as per :
https://developer.mozilla.org/en-US/docs/Web/API/DocumentTimeline/DocumentTimeline
(2a32f13)


These can be deferred to the next branch.

Moved items here from #234 :

  • Map parent (not parentName) to Dataset.parent from Excel upload template. [2-4H].

  • possibly seeing a lack of update after the featuresCount for a block is received; it is requested when the block is viewed (if not already known), and is likely not received before the axis is shown
    e.g. axis title shows counts : "2/ undefined" (png : Mon May24 11:54 AM)


  • error : main : Unhandled error for request POST /api/datasets: ValidationError: The Dataset instance is not valid. Details: name cant be blank value: .
    GUI has a check for this - check it is operational; should detect that and display a message and not send the request; also check that this message is displayed OK in the GUI, i.e. that other API errors are reported .

Version Updates

  • Change configuration of SameSite : re. warning message :
    Cookie “ember_simple_auth_session” will be soon rejected because it has the “SameSite” attribute set to “None” or an invalid value, without the “secure” attribute. To know more about the “SameSite“ attribute, read https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

factor Database Configuration out of docker_setup.md to create database-configuration.md and add section for Pretzel 2.7 update.
feature.js : dnaSequenceSearch() : pass options as param instead of via data, so that it gets optionsFromRequest.
for removeExisting(), prefix parent. to datasetName, to align with convertSearchResults2Json() in dnaSequenceSearch.bash.

sequence-search.js : dnaSequenceInput() : log err because err.responseJSON was undefined (maybe add promise.catch).
unviewDataset() : handle undefined replacedDataset (dataset added from result may not have been received yet via getDatasets())

api-server.js : getDatasets() : handle TaskCancelation, don't set model.datasets list to [].
@Don-Isdale Don-Isdale mentioned this pull request May 27, 2021
4 tasks
Don-Isdale added 21 commits May 27, 2021 18:52
 ... in frontend/package-lock.json, partially via browserslist, but got Cannot find module internal/util/types, so then manual : npm install caniuse-lite
Use flat-cache in place of memory-cache.  closes #249
sequence-search.js : add searches, an array of sequence-search-data.
past() : delay evaluation of event.target.value.
Move promise handling from dnaSequenceInput() and unviewDataset() to blast-results.js.
blast-results.js : add showSearch, resultEffect().
factor element ids : sequence-search-output to search.tabId and blast-results-hotable to search.tableId, so that each search result tab and table can have a unique element id.

blast-results.hbs : add x-toggle : showSearch.  if showSearch, display search.parent, .seq.
add sequence-search-data.js, which wraps the search inputs, id and status.
 ... 24-hour
sequence-search.hbs : nav.item : display search.timeId
sequence-search-data.js : init() : set .timeId to HH:MM:SS.
sequence-search.js : dnaSequenceInput() : if addDataset, refreshDatasets after dnaSequenceSearch.
left-panel.hbs : pass refreshDatasets to sequence-search
sequence-search.js : dnaSequenceInput() : after refreshDatasets, if viewDatasetFlag then viewDataset.
block.js : getCountsForInterval() :  handle interval undefined.
sequence-search.hbs : add checkbox : viewDatasetFlag.
mapview: add viewDataset() and pass to left-panel, which passes it to sequence-search.
updateModel() : return datasetsTask.
sequence-search.js : declare and comment viewDatasetFlag.

blast-results.js : use upload-base and upload-table.
add columnsKeyString, c_name, c_chr, c_pos.
add services store, auth, classNames:blast-results.
add viewDatasetFlag.
add didReceiveAttrs() : initialise selectedParent, namespace.
add validateData()

app.scss : .blast-results : margin.
sequence-search.hbs : pass to blast-results : datasets, refreshDatasets, viewDataset.

blast-results.hbs : from data-csv : add message fields, and inputs : selectedDataset, selectedParent (currently read-only), namespace.
add checkbox viewDatasetFlag, submit button.

add upload-base.js, factored from data-base.js
add upload-table.js, factored from data-csv.js
blast-results.js : dataMatrixEffect add dependency : table.
…and id=namespace which are common and not required.

remove id=dataset_new  and id=namespace  from sequence-search.hbs, blast-results.hbs, data-csv.hbs, because those ids are not used, and they clash because multiple concurrent elements have the same id.
blast-results.js : dataMatrix() : return [] while .data is initially undefined.
dataset.js : tableUpload() : if feature.end is defined, append it to value[].
blast-results.js : validateData() : if row[c_end] is defined, pass it as feature.end.
A similar change can now be made in data-csv.js : validateData() to support end position : perhaps if row.val contains '-' then split it into [pos start,end].
sequence-search.js : add closeResultTab()
sequence-search.hbs : in search nav.item, add button closeResultTab
blast-results.js : add tableVisible, and add it as dependency for activeEffect().
showTable() : check rootElement.parentElement to see if tableVisible has removed table DOM.
blast-results.hbs : add x-toggle for tableVisible.  factor showSearch x-toggle to form added elem/x-toggle.
Drop padding to align with other toggle.
Move search.tableId from bottom to top, wrapped in #if tableVisible.
blast-results : add tableModal
x-toggle.hbs : add yield so that e.g. ember-tooltip is within the toggle.
blast-results.hbs : add tooltips for toggle value=tableVisible and button-base tableModal.
 ... works; MVP for discussing the features.
axis-ticks-selected.js : add featureIsTransient(f), and use in featuresOfBlockLookup() : show the features of un-viewed blocks, when block is reference.

blast-results.js :
change tableModal true -> false (i.e. initially table is in left panel, not in modal dialog).
add viewFeaturesFlag, dataFeatures() (factored from validateData()), blockNames(), viewFeaturesEffect().

paths-progressive.js : pushFeature() : default for param flowsService, return record found by peekRecord().

selected.js : toggle() : add param add : if true then add, if false then remove, if undefined then toggle (as before).

add transient.js : with pushFeature(), pushData() (based on pathsPro : pushFeature), datasetForSearch(), pushDatasetArgs(), pushBlockArgs(), blocksForSearch(), showFeatures().

blast-results.hbs : use viewFeaturesEffect, add checkbox viewFeaturesFlag.
…ence of the search

blast-results.js : viewFeaturesEffect() : if viewFeaturesFlag, viewDataset(parentName)
... feature and blast can be open by default
left-panel.hbs : use search-lookup
split search-lookup out of manage-search, so that the order can be changed.
... (e.g. about not selecting a reference) to appear between the search button and the drop down list
this relates to upload-table.js, and to transient.js : showFeatures() -> .pushFeature(), and to backend tableUpload().
dataset.js : tableUpload() : data.features.forEach : include feature.values if defined.
blast-results-view.js : extend columnsKeyString to cover all columns (after pos,end).
didReceiveAttrs(): use this.registerDataPipe to connect validateData().
dataFeatures() : place the remainder of the columns, after the required/standard columns name/chr/pos/end, into feature.values.

blast-results.js : move store,auth here from blast-results-view.js.
blast-results.hbs : pass registerDataPipe to blast-results-view.
upload-table.js : submitFile() : .validateData() may be defined via .dataPipe.
blast-results-view.js : validateData() : use getDataAtCol() to get the viewed checkbox values and use them to filter the returned features.
 paths-progressive.js : verifyFeatureRecord()  f may have ._name instead of .name, after push;  this change could have been included in 1486120.
blast-results-view.js : factor viewParent() out of viewFeatures().  Add parentIsViewedEffect() to update viewAllResultAxesFlag when user un-views an axis of the result.
mapview.js : viewDataset() : if ! view,  unview the data blocks before the axis / reference block.
blast-results-view.hbs : entail parentIsViewedEffect.
…(OK), return empty result to client

feature.js : dnaSequenceSearch() : searchDataOut() : if ! chunk, reply OK with [].
child-process.js : childProcess() : child.on(close ) : if status OK and ! child.killed, dataOutCb(null ).
sequence-search.js : add searchStringMinLength : 25,
inputsOK() : depend on .text, pass that to checkTextInput() and if warning set .warningMessage.
checkTextInput() : add check : rawText.length <  this.searchStringMinLength.
move empty-input warningMessage from dnaSequenceInput() to checkTextInput().
Move panel message from below BsTab into tab.pane #sequence-search-input so it is close to Search;  this means it won't be visible when user views a blast-results tab; this is probably OK since the messages it displays will mostly occur in response to actions in sequence-search-input.
… (dnaSequence)

 ... to handle parallel requests.
feature.js : add sessionIds, sessionIndex().
dnaSequenceSearch() : add queryStringFileName : use sessionIndex() to augment file name dnaSequence.
(re. comment each user session may have 1 concurrent dnaSequenceSearch; this will be implemented in frontend client)
sequence-search.js : rename loading : taskGet to searching : sendRequest (for .isRunning). searchButtonDisabled() : use .searching.   split sendRequest() as a task out of dnaSequenceInput().
sequence-search.hbs : if this.searching, display Searching ...
…ition

data-csv.js :
Use these from upload-table.js (uploadTable), which was factored from data-csv.js in 9640e0f : getDatasetId(), isDupName(), onNameChange(), onSelectChange(), actions.submitFile.
define column index constants : c_name, c_block, c_val, c_end.
add viewDatasetFlag.
table config : append column : End.
validateData() : use table.getData() in place of .getSourceData() (see comment in checkBlocks() related to handsontable version update 7 -> 8).
validateData() and checkBlocks() : use array indexes c_name, c_block, c_val, c_end in place of row.name, row.block, row.val.

left-panel.hbs : pass viewDataset to upload-data.
upload-data.hbs : pass-thru viewDataset to data-csv.
data-csv.hbs : add checkbox View : viewDatasetFlag.

This commit doesn't enable additional .values columns, that can be done by factoring blast-results-view.js : dataFeatures()
sequence-search.js : default range sliders to 0
blast-results-view.hbs : change text 'Show / Hide all Features (triangles)' to 'Select / Deselect all'
blast-results.hbs : don't show 'Show Table' toggle
 ... 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
…play.

blast-results-view.js :
declare viewAllResultAxesFlag.
didReceiveAttrs() : if viewRow is defined, use it to initialise viewFeaturesFlag.
add : viewFeaturesChange(), narrowAxesToViewedEffect(), narrowAxesToViewed(), resultParentBlocks().
viewFeatures() : use narrowAxesToViewed() in place of viewParent().
afterChange() : set viewRow[row] before narrowAxesToViewed and showFeature. use narrowAxesToViewed().

blast-results-view.hbs : replace use of parentIsViewedEffect to narrowAxesToViewedEffect.
viewAllResultAxesFlag is now constant true.
connect action viewFeaturesChange to checkbox viewFeaturesFlag.
…ckboxes to be unticked initially

sequence-search.js : didReceiveAttrs() :  check viewRow.length - initially viewRow will be initialised from no data (if the request takes a few seconds);  calculating viewFeaturesFlag from empty viewRow results in false, and then viewRow=[false,...].
This may address stray transition on feature lable - in sequence search result, all feature triangles have the same name, and this would confuse the d3 join and could cause entry/exit transitions.
axis-1d.js : FeatureTicks:showLabels() : append location (feature.value[0]) in the keyFn.
blast-results-view.js :
narrowAxesToViewed() : handle block undefined -  if parent does not have block with name matching result; don't display an axis.
resultParentBlocks() : trace when parent has no blocks but search result has.
createTable() : for columns after the view checkbox : disable editor .
…e required.

paths-progressive.js : getBlockFeaturesInterval() : catch task, if didCancel() then return lastSuccessful.value otherwise re-throw.
… to/from modal.

The role of viewFeaturesFlag has changed in 79d650b; it is now only used to configure the toggle which sets viewRow[*], it doesn't drive viewFeatures().
feature-list.js : appendSelectedFeatures() : trace added param remove.
factor viewFeaturesFlagIntegrate() out of didReceiveAttrs().
viewRowInit() : pass in viewFeaturesFlag so it is not locked to this.viewFeaturesFlag.
add viewFeaturesAll().
viewFeaturesChange() : access viewRowInit via viewFeaturesAll() which passes viewFeaturesFlag as param so run_later is not required here.
viewFeaturesEffect() : depend on viewRow instead of viewFeaturesFlag.
viewFeatures() : rename param viewFeaturesFlag -> active.
afterChange() : call .viewFeaturesFlagIntegrate().

transient.js : showFeatures() : rename param viewFeaturesFlag -> active
…ations() also.

axis-1d.js : FeatureTicks:showTickLocations() : keyFn() : append value[0] to key, because features created from blast search results will all have the same name (same change as applied to .showLabels() in 18196f2).
 0a78044 48368 Jun 19 01:06 frontend/app/components/draw/axis-1d.js
…ng to modal.

blast-results-view.js :
tableModal : width:70vw -> 90vw, wide enough to expose all columns; otherwise get 'The provided element is not a child of the top overlay' in getRelativeCellPosition() from setupHandlePosition(); possible alternative work-around noted in comment.
showTable() : handle search.promise undefined; log and stop if table defined but not connected (these may not be needed)
createTable() : remove : $(() => ); when switching to modal this appears to cause duplication of the div.handsontable.{ht_master,ht_clone_{top,bottom,left,top_left_corner} and doesn't seem required - copied from data-csv.js:createTable() where it is probably also not required.
add param data (this.dataForTable) so that initial data is not required.
 5a7f36b1 23319 Jun 22 11:19 frontend/app/components/panel/upload/blast-results-view.js (on dev)
axis-1d.js : showLabels() : Change pSM to pS because pSE is handled separately.
Use transition.call directly instead of transitionFn() which wraps in run_bind() (labelsTransitionPerform() in axis-ticks-selected.js,  axisScaleEffect()) - seems to effect timing.
axis-1d.js : if transition is used, set y (attrY_featureY) for .enter() after the transition time; also set text then because default y is (0) near the top of the axis.

d3-svg.js : add nowOrAfterTransition()
blast-results.{js,hbs} : add setTableModal() to set tableModal in later(), to avoid warning :  attempted to update tableModal, but it had already been used previously in the same computation.
…itioned

axis-1d.js: showTickLocations() : instead of using .merge() (pSM), show .enter() elements (pSE) (at their final posiiton) after the pS elements have transitioned to their final position, using nowOrAfterTransition().
factor to form pathAndColour() so it can be called separately for pS and pSE.
dev_blastResult() : add param test file name. Add devResultDir to identify location of test files.
Commented-out sleep 10 is useful to simulating the delay of a typical blast query.
@Don-Isdale Don-Isdale merged commit ff685ee into master Jun 24, 2021
Don-Isdale added a commit that referenced this pull request Jun 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant