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

Items identified after release v3.0.0 #420

Merged
merged 26 commits into from
Nov 18, 2024
Merged

Items identified after release v3.0.0 #420

merged 26 commits into from
Nov 18, 2024

Conversation

Don-Isdale
Copy link
Collaborator

Issues reported 2024Oct 23 - Nov18, after v3.0.0 release on Oct23

This work is tracked in issue #416, and sub-issue #415.

Development branch feature/postReleaseIssues

HandsOnTable can be used without the license key, but it displays a message which mars the layout.
matrix-view.js : add get useHandsOnTable() and check it in createOrUpdateTable().
mapview.js : add comment in getHoTLicenseKey() re. runtimeConfig
table-brushed.js : add useHandsOnTable() (copied from paths-table.js, as in previous commit 8e46790) and use in didRender() before calling .createTable().
When a Feature Search result spanned multiple blocks, adding the first block from the search result displayed the feature triangle, but adding the 2nd block did not.  This seemed to depend on the dataset - the gene dataset displayed if it was 2nd, but the 40k dataset did not. Recorded in #416.
axis-ticks-selected.js : selectedFeaturesEffect() : add dependency axis1d.blocks.length, so that Feature Search results triangles are displayed when viewing multiple blocks from the search results.
blast-results-view.js : viewFeatures() : fix order of params passed to blocksForSearch() : swap blockNames and blockScopes.
block.js : fix spelling in comment.
Previously transient blocks, in particular blast search results, were not viewed.  To support block.axis1d and other block properties, this commit views these transient blocks, and also skips API requests for them, in particular getBlocksLimits() : taskGetLimits() and getBlocksSummary() : taskGetSummary().

axis-ticks-selected.js : featureIsTransient() : don't check f.blockId.isViewed, because the transient block is now viewed.
blast-results-view.js : viewFeatures() : use datasetBlocksResolveProxies() and view blocks[].
block.js :
  getBlocksLimits() : don't call taskGetLimits for a transient block.
  getBlocksSummary() : Filter out the transient blocks; set their .featureCount, and don't call taskGetSummary for them.

transient.js : add datasetBlocksResolveProxies().
add import of isProxy, withoutProxies from ember-proxy-util which could be used instead of dp.content, but commented out because it may need an update (npm install blocked).
 ... the exact mechanism isn't clear, but somehow the blastResults_ block scope was undefined, causing it to have .referenceBlock undefined, and hence feature was not shown on axis.
blast-results-view.js : wrap viewDataset() call with run_later().  This seems to solve : viewedReferenceBlocks no matching scope on parent ... undefined Map { chr4A -> (1) [...] }, i.e. block this.scope undefined.
transient.js : pushBlockArgs() : ensure that record.scope is set; this may not be needed - added because viewedReferenceBlocks() was failing because block.scope was undefined.
…Results_ transient block

axis-ticks-selected.js : add develRefnSetup() : set up a component reference for use in the Web Inspector console; similarly blastResultsView in blast-results-view.js : didReceiveAttrs().
blast-results-view.js : viewFeatures() : move viewDataset into same later() as showFeatures(), to ensure the blocks containing the features are viewed before the features are shown.
mapview.js : loadBlock() : skip getSummaryAndData for transient block.
block.js : peekBlock() : fall back to searching each server store because transient blocks are not present in id2Server[].
…d labels after search

blast-results-view.js :
blockNames() : apply .uniq() to the result.
viewFeaturesEffect() : add dependency block.viewed.length, to update after the blastResults_ block is viewed.
parentBlocks : add dependency blockNames, which it uses.
viewFeatures() :
  check that this.blockScopes and scopesForNames are equal, and compare their length with blockNames.
  don't pass .blockScopes to blocksForSearch() (should only pass either .blockScopes or scopesForNames, not both - that was a branch merge error).
  wrap showFeatures with a run_later(); not confirmed to be required, but may be.

These frontend block.js changes were used in development, to identify when and how blastResults_ block .scope was being set to undefined;  not required now :
 models/block.js : define get&set for scope, mapping to _scope (to use this, also rename scope attr to _scope).
 serializers/block.js : attrs: map _scope property to scope in API.

transient.js : pushBlockArgs() : warn if scope === undefined and don't override current value of record.scope.
lb4app/lb3app/common/models/block.js : blockValues() : add cbCalled to guard against calling cb() a second time in .catch().
block.js : getBlocksSummary() : map the result of hasTag() so that it is exactly false rather than falsey; this fixes the transientBlocks value added in 3738681
…getBlocksLimits

 ... which was broken by hasTag(transient) check added in 3738681
block.js :
  peekBlock() : handle blockId being undefined; this seemed not to be reported in console log, although when executed from the command line REPL it gets, as expected  : Uncaught Error: Assertion Failed: Expected id to be a string or number, received undefined
  getBlocksLimits() : don't use .peekBlock() if blockId is undefined
…aph axes down

draw-map.hbs : popoverTarget : style : change float:right to position:absolute; this takes it out of the CSS layout flow, but also moves the element from the right margin to the left, where it may overlap with headsUp; the uses of popoverTarget can be changed to use headsUp.
…n in Chrome

app.scss : .featureIsFilter : comment out the border-left-width : 23px override; probably can't easily do what this was trying to achieve.
This commit also implements reset of selected SNPs instead, via gtBlockViewEffect(), as an alternative to retain;  retain (via sampleFiltersCopyEffect) seems OK, except that view block may switch to features tab, and fresh instance of manage-genotype is not sorted;  committing to test further.
matrix-view.js : topLeftDialogUpdate() : wrap set() of topLeftDialog with later() to avoid update of attribute after it had already been used previously in the same computation, when called from updateSettings() ... afterRender().
manage-genotype.hbs : use sampleFiltersCopyEffect; add comment showing use of gtBlockViewEffect.
manage-genotype.js :
 sampleFiltersClear() : handle undefined sampleFilters or selected.
 add gtBlocksPrevious, gtBlockViewEffect(), sampleFiltersCopyEffect(), sampleFiltersCopy(), sampleFiltersCopyType(), selectedSampleRefreshDisplay(). The requirements for selectedSampleRefreshDisplay() are still being worked out.
lookupBlockWithinBlocks() : if lookupBlock is not found, search for a block with same .referenceBlock as lookupBlock, and fallback to using blocks[0] if .length because result -1 is not handled.
mapview.js : selectDatasetValue() : don't change to dataset tab if current tab is Genotype Table - it is distracting and unergonomic, probably not useful, and (currently) disrupts column/sample sorting by selected SNPS (sampleFilters). This is already done in selectBlock(), and is an extension of earlier 5e0765c : selectDataset{,Value}().
…w time for brushed features to be loaded

manage-genotype.js :
sampleFiltersCopyEffect() : use later(, 3sec) to allow time for brushed features to be loaded.
sampleFiltersCopyType() : also check if a feature is in this block.
add sampleFiltersCheck(), used for trace.
matrix-view.js : colHeaderHeight() : measure just sampleName, not all of col_name which includes tab datasetId, using columnName2SampleName().
application.js and application-route-mixin.js : init() : pass param routeAfterInvalidation to handleInvalidation() ; previously param routeAfterInvalidation was undefined, causing app to route to /undefined.  The param value login in application.js takes precedence; the redundancy can be removed in a separate commit.
application.js and application-route-mixin.js : init() : drop registrations for session.on authenticationSucceeded and invalidationSucceeded which are already done by ember-simple-auth/addon/services/session.js : _setupHandlers(), which uses Configuration.{routeAfterAuthentication,rootURL}.  That does not include authenticationRequested : triggerAuthentication(), which seems no longer applicable.

environment.js : ENV : add ember-simple-auth : routeAfterAuthentication : mapview
datasets.ots : copy worksheets from .xltx to .ots : QTL|, Genome|, VCF|.
.xltx and .ots : append to comment in Genome| : ... include BlastDb
 ... e.g. if the dataset name in the VCF sheet doesn't have a corresponding directory in the VCF directory on the server.
dataset.js : spreadsheetUploadInternal() : add .catch() for checkP.
errorStatus.js : ErrorStatus() : prefix Error() with new - not required, but seems clearer.
add exception_handling.js, with handlers for uncaughtException, unhandledRejection - trace the error with console.error.
Resolve issues reported since the v3.0.0 release
manage-explorer.js : blockFeatureOntologiesTreeEmbedded() : handle undefined error.responseJSON in .catch().
manage-genotype.js : sampleFiltersCopy() : check .isDestroying in later(, 1000).
@Don-Isdale Don-Isdale merged commit 8b56df9 into master Nov 18, 2024
llamapreview[bot]

This comment was marked as off-topic.

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