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

Feature/progressive #150

Merged
merged 107 commits into from
Dec 5, 2019
Merged

Feature/progressive #150

merged 107 commits into from
Dec 5, 2019

Conversation

Don-Isdale
Copy link
Collaborator

@Don-Isdale Don-Isdale commented Oct 31, 2019

There are further commits coming to prepare this branch for merge.

(notes from discussion 2019Oct31 4:30pm ) :

use feature flags to disable features which are not ready :

    • loading from URL
    • dataset explorer filter : disable : advanced features, 2nd filterGroup, spaces in search pattern.
  • dataset explorer : switch off 1 of the 2 genome tabs

  • alias paths result currently includes direct paths : check if this can easily be excluded in the mongo query; if not excluded it in the BE or FE whichever is easier.

  • feature search : check - there may be issues around the matched feature not being loaded due to progressive (partial) load. (Also the timing of setting block.isViewed).

axis-2d.js : axis1d() : depend on axesPCount;  dataBlocks() : use block.isData() filter in place of blocks.slice.
axis-tracks.js :
Change showTrackBlocks() to a CP and add it to .hbs, in place of calling it in didRender();  the CP dependencies include yDomain, zoomed and extended, thus replacing the zoomed() action.
Add ComputedProperty-s : axis1d, axisS, currentPosition, yDomain, trackBlocksR.
Add blocksFeaturesLengths() - used in devel trace (and initially as a dependency for tracksTree).
frontend/app/ :
 996d438  9412 Sep  3 17:57  components/axis-2d.js
 1830a8f 24256 Sep  4 13:50  components/axis-tracks.js
 5b7548e  5614 Sep  3 16:37  models/block.js
 45bc1bc 12533 Sep  3 16:37  services/data/block.js
 21dad47   685 Sep  4 13:38  templates/components/axis-tracks.hbs
 12d01c0 69368 Aug 28 16:51  utils/stacks.js
split axes visual changes :
 omit (blue) rectangle around split axis region;
 show tracks with solid colour instead of outline : app.scss : rect.track : change fill and stroke.
 centre the axis title relative to the split axes : yAxisTitleTransform() : calculate and append translateText. axis-2d : give axisTitle an initial transform of width/2.
 Shift the Zoom / Reset button out from under the split axis region : yAxisBtnScale() : calculate and append yOffsetText.  Re-apply yAxisBtnScale() to existing axes.
frontend/app/ :
 476c4e4   9776 Sep  5 14:25  components/axis-2d.js
 2f1c7f3 223040 Sep  5 15:31  components/draw-map.js
 5365f20  28422 Sep  5 15:05  styles/app.scss
 8eb88ef   5823 Sep  5 15:31  utils/draw/axis.js
… handle -ve interval

axis-2d.js : rename dataBlocks() to dataBlocksS() and add a new version which is based on blocks in Ember store instead of stacks Blocks.
axis-tracks.js : in line with change to axis-2d:dataBlocks(), derive trackBlocks() from trackBlocksR() instead of vice versa.
tracksTree() : handle -ve interval (swap) - this was causing createIntervalTree() to overflow stack.

models/block.js : add axis().
data/block.js : axesBlocks() : use ensureAxis();  add dataBlocks().

draw-map.js : factor ensureAxis() and add to axisApi.
The driver for this commit was to update when blocks are added in axis-tracks; that is incomplete, but the interval swap is needed as a hot-fix commit.
frontend/app/ :
 d0f7c87  10543 Sep  6 13:29  components/axis-2d.js
 0c57e6c  24562 Sep  6 16:16  components/axis-tracks.js
 2312316 223195 Sep  6 16:34  components/draw-map.js
 6ce4cad   6126 Sep  6 09:36  models/block.js
 b1d8da7  14140 Sep  6 15:57  services/data/block.js
 731b006  28403 Sep  6 16:39  styles/app.scss
 60ba799   1847 Sep  6 13:29  templates/components/axis-2d.hbs
axis-tracks.js : layoutWidth() :  use trackBlocksR in place of trackBlocks.

paths-progressive.js : requestBlockFeaturesInterval() : call getBlockFeaturesInterval() once for each blockId; see comments for background;  previously the results were limited to a single block.
backend/common/utilities/ :
 69591ee  1288 Sep  8 13:59  block-features.js
 62b68d1 28235 Sep  8 16:39  paths-aggr.js
frontend/app/ :
 202df14 24528 Sep  6 17:52  components/axis-tracks.js
 515fde4 22795 Sep  8 16:08  services/data/paths-progressive.js
This addresses an issue of paths loading and one or more of the axes showing only tick 0, with all the paths connecting to it.  This was working but a recent commit disconnected the update, as has happened several times before.
Use CP dependencies to update the axis ticks and scale.

draw-map.js : add to axisApi : cmNameAdd, makeMapChrName, axisIDAdd.

axis-1d.js : added CPs : dataBlocksDomains, referenceBlock, blocksDomains, blocksDomain, blocksDomainEffect, domainEffect.

models/block.js : add CP : featuresDomain.
feature.js : add CP : valueOrdered.
data/block.js : use cmNameAdd().  (viewed() may not be updating - trialling an added dependency and changed use of blockValues()).

draw/axes-1d.hbs and axis-1d.hbs : commented-out display of values which may be changed during the render (refn emberjs/ember.js#13948) :  axis.view, currentPosition.yDomain.  Use blocksDomainEffect.

utility-chromosome.js : factor copyChrData() out of chrData(); add cmNameAdd() based on draw-map.js:receiveChr().

frontend/app/ :
 6e37a2f 223853 Sep 10 20:25  components/draw-map.js
 62cdfc0  22369 Sep 10 21:12  components/draw/axis-1d.js
 2b94ee2  24542 Sep 10 20:25  components/draw/block-adj.js
 563096e   2943 Sep 10 16:51  mixins/axis-position.js
 06c02ae   6638 Sep 10 18:30  models/block.js
 930fc67   1021 Sep  9 16:59  models/feature.js
 4e7d202  14286 Sep 10 15:14  services/data/block.js
 cf7716e    356 Sep 10 17:24  templates/components/draw/axes-1d.hbs
 ed752af    578 Sep 10 18:42  templates/components/draw/axis-1d.hbs
 8c18360   3946 Sep 10 15:36  utils/utility-chromosome.js

added :
 998f0c9   1623 Sep 10 18:30  utils/interval-calcs.js
… are required.

stacks-view and stacks.js : add stacksCount, update when Stack add / delete, showResize() when #stacks changes.
data/block.js : viewed() : use blockAxis(); factor from axesBlocks() to form blockAxis() and ensureAxis();
 947cd56 224199 Sep 12 14:15 frontend/app/components/draw-map.js
 6abed34   1744 Sep 11 16:26 frontend/app/components/draw/stacks-view.js
 b5602e5  14987 Sep 12 14:15 frontend/app/services/data/block.js
 e1a8a11    128 Sep 11 16:19 frontend/app/templates/components/draw/stacks-view.hbs
 30564f0   5950 Sep 11 14:30 frontend/app/utils/draw/axis.js
 164d095  69798 Sep 12 13:55 frontend/app/utils/stacks.js
draw-map.js : Split didRender() into CPs drawEffect() and resizeEffect();  add stacksWidthChanged(), stacksWidthChanges().
block-adj.js : updatePathsPositionDebounce(): depend on stacksWidthChanges.
stacks-view.js : stacksCount(): depend on axes2d.[]
frontend/app/ :
 0d5612e 226488 Sep 12 20:49  components/draw-map.js
 e2e293c  24663 Sep 12 19:22  components/draw/block-adj.js
 13c93b5   1757 Sep 12 15:09  components/draw/stacks-view.js
 9cc2221   2331 Sep 12 17:38  templates/components/draw-map.hbs
axis-2d.js : add .{isViewed,hasFeatures} to dependency dataBlocks.@each
axis-tracks.js : depend on trackBlocksR.@each.featuresLength
models/block.js : add hasFeatures().

data/block.js :
Split blocksReferences(), viewReferences(), receivedBlocks() out of taskGetSummary().
blocksReferences() : don't include self-reference in the result.
loadedViewedChildBlocks() : add dependency on blockValues.@each.{isViewed,isLoaded};  use hasFeatures in place of featureCount (and enable this).
dataBlocks() : add dependency on loadedViewedChildBlocks.@each.hasFeatures.
frontend/app/ :
 5340f9a 10537 Sep 13 15:37  components/axis-2d.js
 713f830 24637 Sep 13 14:31  components/axis-tracks.js
 03f3485  6830 Sep 13 14:31  models/block.js
 2ecf573 15521 Sep 13 16:04  services/data/block.js
… and received features. request features of block initially without brush required.

This is focused on displaying tracks when blocks are added to the axis, and features are received.
axis-2d.js : dataBlocks() : depend on blockService.viewed.[]
axis-tracks.js : merge(gpS) so that existing g.tracks are updated, and .exit().remove() for gpS and clipRectS.  showTrackBlocks() : depend on axis1d.featureLength.
axis-1d.js : featureLength() : depend on featuresForAxis.
models/block.js : add featuresForAxis().
data/block.js : add dataAndReferences : add blockIds to blocksToView, for receivedBlocks().
paths-progressive.js : requestBlockFeaturesInterval() : there may not be a brush (handle axisBrush === null).
frontend/app/ :
 ce195b1  10637 Sep 13 19:59  components/axis-2d.js
 773885e  24888 Sep 17 10:52  components/axis-tracks.js
 c517d5d  22637 Sep 17 11:18  components/draw/axis-1d.js
 5cadd92   1188 Sep 16 17:01  models/axis-brush.js
 4b2106c  13417 Sep 16 17:01  models/block-adj.js
 7564ed2   8048 Sep 16 17:01  models/block.js
 50ef5be  15793 Sep 16 18:24  services/data/block.js
 5e7159e  23626 Sep 17 10:31  services/data/paths-progressive.js
data/paths-progressive.js : call blocksUpdateDomain() in requestAliases().
 70b70f9  23695 Sep 17 14:52 frontend/app/services/data/paths-progressive.js
axis-tracks.js : add gpM, to distinguish from gp which is enter / append (fixes duplicate g clip-path).
 c71a660  24902 Sep 17 15:06 frontend/app/components/axis-tracks.js
axis-tracks.js : use Identity key function for blocks in layoutAndDrawTracks().
block.js : filter out .obj === null from dataAndReferences.
frontend/app/ :
 0d41efc 25051 Sep 17 06:47  components/axis-tracks.js
 9b9e9de 15901 Sep 17 06:14  services/data/block.js
draw-map.js : axisTitleFamily() : use block.getId() as key function for block subtitles.
 09cc7d1 226514 Sep 17 18:12 frontend/app/components/draw-map.js
This synchronises title and tracks colours.
Add a per-axis mapping from blockId to an index for axisTitleColour().
axis-tracks.js : replace blockIndexes() (which based blockIndex on DOM element sequence).
draw-map.js : use block.axisTitleColour().
axis-1d.js : add blockIndexes() (derives blockIndex mapping from dataBlocks).
stacks.js : add Block : axisTitleColour().
frontend/app/ :
 81149af  24755 Sep 18 12:32  components/axis-tracks.js
 fe26b41 226965 Sep 19 11:13  components/draw-map.js
 be9e2f1  23328 Sep 18 16:33  components/draw/axis-1d.js
 189f30b   6357 Sep 19 14:28  utils/draw/axis.js
 c128dc3  70664 Sep 19 14:15  utils/stacks.js
…ute function.

draw-map.js : move axisTitleColour() to become Block.axisTitleColour() and use that in axis-tracks also.  (this change was intended in the previous commit).
frontend/app/ :
 00e9a92 226612 Sep 19 05:26 components/draw-map.js
 436a881   6482 Sep 19 05:26 utils/draw/axis.js
 ea812eb  71078 Sep 19 06:00 utils/stacks.js
axis-1d.js: factor out axisTitleFamily(); add updateAxisTitleSize() (uses axisApi.updateAxisTitleSize) and use in extended().
frontend/app/ :
 80ef04e 226653 Sep 20 07:50  components/draw-map.js
 1a013f6  23715 Sep 19 21:36  components/draw/axis-1d.js
entry-tab.js : add autoAllActive, calculated using leafCount(values).
value-tree.js : add leafCount(), to count the blocks in the filtered values.
entry-expander.js : allActive() : depend on entryTab.autoAllActive.
frontend/app/ :
 f4c7ca9   3270 Sep 23 11:05  components/record/entry-expander.js
 4566daa   2098 Sep 23 10:43  components/record/entry-tab.js
 44a3b71   3977 Sep 23 10:43  utils/value-tree.js
value-tree.js : leafCount() add param levelMeta to distinguish a Blocks array value;  rename count -> count0, dc -> count1.
 fc49e80   2152 Sep 23 17:07 frontend/app/components/record/entry-tab.js
 44a1b29   4802 Sep 23 17:25 frontend/app/utils/value-tree.js
…which don't increase the domain.

blocks.js : rename featuresDomain{,Update};  add setDomain(), featuresDomainValue, featuresDomain().
 99aa5f8 9233 Sep 25 00:37 frontend/app/models/block.js
 c10157b   952 Sep  4 13:32 from dev:~/scripts/mongo_admin.2019Sep04.bash (only part is staged)  resources/tools/mongo_admin.bash
-z not required in tar because added --gzip to mongodump (recorded in previous commit).
 4595257 951 Sep  5 14:05 from dev:~/scripts/mongo_admin.bash, where these edits were done.   (edit main->dev is not staged)  resources/tools/mongo_admin.bash
mongo_admin.bash : use SERVER_NAME, default to main; factor checkDIM() out of dbCollections(); add signupList(), signupReport().
 b63f54b1 2432 Sep 26 09:16 UTC dev:~/pretzel/resources/tools/mongo_admin.bash
 654611f   830 Oct  1 14:41 frontend/bower.json
Updated various urls and config info.  Based on a Windows build done a while back; will later step through this process again to check it.
 ee260b9   6411 Oct  3 12:13 README.windows.md
…dded new note

from https://github.com/spriggsy83/pretzel branch windowsSetup1019
  commit 212d049
  Author: Andrew Spriggs <spriggsy83@yahoo.com.au>
  Date:   Wed Oct 2 15:52:34 2019 +1000

README.md : add section : Installation on MS Windows using WSL
 (almost a direct copy from the pull request; rephrased the section heading and removed trailing spaces).
 f7c8720  13243 Oct  3 16:15 README.md
…in .gitignore

from https://github.com/spriggsy83/pretzel branch windowsSetup1019
   commit 50912ee
   Author: Andrew Spriggs <spriggsy83@yahoo.com.au>
   Date:   Wed Oct 2 15:29:26 2019 +1000
 dc81e81    435 Oct  3 16:19 .gitignore
… pretzel-data repo instead.

README{,.windows}.md : Inserting data : change to refer to example dataset files in pretzel-data repo instead of resources/example_map?.json.
delete resources/example_map{1,2,3,4,5}.json because they are in the old (json upload) format and they have already been converted to the new format in pretzel-data/my*.json and aliases.json.
 5375bf1 13910 Oct  3 19:59 README.md
 eea9dc2  6377 Oct  3 19:54 README.windows.md
…ilter-group model out of component.

filter-group.js : split a model out of the component; move from component to model : patterns(), patternsRE(), defined(),  match();  drop didRender() - no longer needed;  add applyDataset, applyBlock - the GUI additions to access these 2 will be in a following commit.
filter-group.hbs : use prefix data. to refer to fields which are now in model.
filter-groups.js : move contents of initialFilterGroup to model.
manage-explorer.js : rename useFilterGroup to definedFilterGroups, return an array instead of just [0]; add datasetFilterGroup(), blockFilterGroup(), isDatasetFilter()
frontend/app/ :
 7a1dccf   870 Oct  2 14:46  components/panel/filter-group.js
 2f863de   823 Oct  2 15:13  components/panel/filter-groups.js
 c235df2 41944 Oct  2 16:47  components/panel/manage-explorer.js
 8648108  2968 Oct  2 15:21  templates/components/panel/filter-group.hbs
the styling is just a starting point.
frontend/app/
 27f64a6 28617 Oct  4 16:41  styles/app.scss
 15ce906  3527 Oct  4 16:41  templates/components/panel/filter-group.hbs
 41ae110   726 Oct  4 16:41  templates/components/panel/filter-groups.hbs
 7593068   563 Oct  4 16:41  templates/components/record/entry-tab.hbs
spriggsy83 and others added 29 commits November 19, 2019 16:56
 7d0b742 23439 Nov 19 18:50 frontend/app/services/data/block.js
block-features.js : add blockFeatureLimits().
backend/common/models/block.js : Add blockFeatureLimits. change nBins to number/false.
access.js : add blockFeatureLimits
auth.js : add getBlockFeatureLimits().

data/block.js : add taskGetLimits() (based on taskGetSummary), getLimits() (based on getSummary()), getBlocksLimits().
frontend/app/models/block.js : featuresDomain() : use featureLimits in place of featuresDomainUpdate
(unrelated, minor changes : )
axis-chart.js : blockFeatures() : don't draw features of block if ! block.isChartable
backend/ :
 b23efda 29139 Nov 20 16:03  common/models/block.js
 d24c4bd  4308 Nov 20 16:46  common/utilities/block-features.js
 3c76613  3714 Nov 18 17:04  server/boot/access.js
frontend/app/ :
 8b91567 19916 Nov 20 09:46  components/axis-chart.js
 51c1bb6  9609 Nov 20 16:22  models/block.js
 ffeb54f  4845 Nov 20 14:10  routes/mapview.js
 fd8002b 11164 Nov 18 17:04  services/auth.js
 ec97e07 25060 Nov 20 16:46  services/data/block.js
1. Dataset fetch task to dataset list is handled only on Mapview controller and passed down as required to child components.
2. Manage-explorer and Upload-data-csv no longer call fetch task again themselves.
3. Upload-data-csv Selectors populated in template rather than in controller.
view-controls.js : reduce initial pathSample : 1000 -> 400.
models/block-adj.js : domainChange() : add ppDiff() : include pathsDensityParams in comparison.  change taskGetPaths () from maxConcurrency(2).restartable() to drop() and simplify : drop the time calculations : now, lastStarted, elapsed, timeoutResult.
paths-filter.js : pathInDomain() : dataLocation() : handle value being a CP.
frontend/app/ :
 801121d 27022 Nov 22 11:24  components/draw/block-adj.js
 eb2e049  5603 Nov 22 11:27  components/panel/view-controls.js
 db3730b 13788 Nov 21 19:33  models/block-adj.js
 a8d4efa 25254 Nov 21 19:48  services/data/paths-progressive.js
 29f8a1b  5052 Nov 22 11:09  utils/draw/paths-filter.js
feature in returned path data is now converted from json data to a store reference so use .get() to access blockId if defined.  this change applies in : path-data.js : add feature2BlockId(), and paths-progressive.js
frontend/app/ : (Nov 22 16:22, applied from dev edit 04:26,41)
 53b8457  4344   components/draw/path-data.js
 041ff99 25336   services/data/paths-progressive.js
…se shared functionality vs json or csv upload-type specific
resetBrushes() : add > g[clip-path]  to selector, since the d3 brush is on that not the parent g.brush.
showResize() : heightChanged : set height of > clipPath > rect; add  > g[clip-path] to selector for calling the brush.
Drop use of maybeFlipExtent(..., a.flipped) for brush .extent().
frontend/app/
 d8c3058 228940 Nov 26 19:22  components/draw-map.js
 e65031b   2501 Nov 26 19:04  utils/stacksLayout.js
Add  getBrushedRegions(), axisBrushShowSelection(),
 121eaf9 231387 Nov 27 14:48 frontend/app/components/draw-map.js
pathsAliases(): append a match to pipeline.
 e85005c 28698 Nov 28 16:56 backend/common/utilities/paths-aggr.js
frontend/app/ :
 a95d540 231765 Nov 28 18:10  components/draw-map.js
 3c2b32d  26854 Nov 28 17:40  components/draw/axis-1d.js
This is used when e.g. flipRegion
Add combinedId as id of circles.
 7331caa 232505 Nov 28 19:49 frontend/app/components/draw-map.js
…for features which are not previously loaded

goto-feature-list.js : blocksUnique() : handle changed form of input argument - was JSON result, now has ember store object references; data is no longer in subfield features.features; use .get() for .blockId, .id.
block.js : add pushFeatureSearchResults() : convert feature / block / dataset data in JSON result into ember store object references.
feature-lookup.js : storeFeature() : use cmNameAdd(); set oa.z[axisID] from chrData()
draw-map.js : verification expression was inverted.
frontend/app/
 ef48d52 232505 Dec  2 12:36  components/draw-map.js
 90f70fd   6012 Dec  2 15:29  components/goto-feature-list.js
 82b2615  26444 Nov 29 15:39  services/data/block.js
 5938ae5   5821 Dec  2 15:19  utils/feature-lookup.js
value-tree.js : leafCount() : handle valueType Dataset (possibly caused by test data).
 6a99855 5260 Dec  3 14:48 frontend/app/utils/value-tree.js
add axisScaleEffect() and move renderTicksThrottle call into it, from zoomedAxis().
frontend/app/ :
 8ebafb6 3614 Dec  3 15:53  components/draw/axis-ticks-selected.js
 3ecdeab   73 Dec  3 16:01  templates/components/draw/axis-ticks-selected.hbs
Add reRenderLater().
 686d7c8   3937 Dec  3 19:40 frontend/app/components/draw/axis-ticks-selected.js
axis-1d.js : add scaleChanged().
block-adj.js : updatePathsPositionDebounce() : depend on axis1d scaleChanged in place of .axesDomains, i.e. after the domain changes the scale is updated then can draw;  don't get dependency stacksWidthChanges because that causes multiple dependency updates in one render cycle.
block.js : stacksCount() : depend on stacks.stacksCount in place of stacksAxes.size.
stacks.js : Stack() move stacksCount.increment to after stack changes are complete (otherwise verify error etc).
frontend/app/ :
 2d09479  27237 Dec  4 14:10  components/draw/axis-1d.js
 889fedf  26454 Dec  5 17:26  components/draw/block-adj.js
 11e2137  26856 Dec  4 15:55  services/data/block.js
 c406f81  71563 Dec  4 16:14  utils/stacks.js
stacks.js : Stacked : getDomain() : combine domainCalc result with blocksDomain.
 4137d12 71747 Dec  5 18:29 frontend/app/utils/stacks.js  (original edit on dev server : 621ca2e 71599 Dec  4 01:08, + comment)
@Don-Isdale Don-Isdale merged commit 9d22afa into develop Dec 5, 2019
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.

3 participants