-
Notifications
You must be signed in to change notification settings - Fork 112
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
improve centroids #872
improve centroids #872
Conversation
6e4688a
to
711ab3a
Compare
44e2323
to
38a8aa5
Compare
57be1de
to
71659a4
Compare
12ade4b
to
f39c405
Compare
// If the category is truncated and this value is removed, | ||
// it will not be assigned a category value and will not be | ||
// labeled on the graph | ||
const categoryValueIndex = categoricalSelection[ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could be optimized significantly if you pull all of this setup code, which does not change as you iterate through the loop, out into a setup pass. Use the schema - it has all of the information already in it.
I think the following lines could be done once, rather than for each row/cell: lines 38-63
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per our offline conversation, this optimization can be done as a later PR (ie, land this thing!) Please make sure you capture in an issue, linked from this PR, so we don't forget about it.
59772aa
to
e437896
Compare
* refactor reducer to no longer support hover state and hold many labels * refactor to generate centroidCoordinates for all values of a category * create hash for function and memoize export * create button to display all labels for a category * clear state * create label for each thing * calculate on each value * change to in place modification of map * switch to for loop with iterator instead of forEach * use map from centroidLabel instead of creating copy * adapt for map * utilize tarrays * begin documentation * disable centroids if in zoom mode * clean up * persist uncalc coordinates * document * clean up and document * cleanup and document * fix * fix undefined labels and document changes * fix first element skip * fix conditional recalc * rename centroidLabel -> centroidLabels * break out dilation on hover to new reducer * numerous styling changes for readability * change centroid icon * remove colorAccessor from parameters * recalc centroids on world change * make label toggle undoable * remove unused import * highlight labels on hover * remove special characters from svg id * lighten backdrop * only generate new centroids if they pre-exist * fix issue with spaces in catagorical value name * add label buttons to menubar * change reducer to use colorAccessor and have single toggle * fix check to see if svg should be rendered * move svg overlays onto a single svg layer * dilate on label hover * remove logs * allow centroid to update along side regl renders * allow actions to pass through svg if in zoom mode * remove artifact from circle * remove comment * remove disabling of centroid button * fix conditional map to screen * make styling label conditions stricter * prettier * refactor onto master * refactor computePointFlags() to use pointDilation store * notify when viewport changes * move svg attributes out of lasso setup and prevent rerenders/writes * begin playing with transform matrix * first solution for camera interaction * create transform using nested groups * semi-working method using nested groups with transforms * inversely scale text * properly do final transform * cleanup dead / test code * reinstate original functionality * breakout centroid labels labels into separate component * default toggle on for testing * separate lasso and centroid layers * remove unnecessary attributes, working hover * dilation on label hover * fix dilation on scatterplot * add dilation on label hover * break overlay into separate component * make overlay agnostic to children * move label mouse actions to centroidlabels component, add overlay state * remove lasso on switch to camera * disallow user selection * fix reducer * fix subset with continuous color error * reset labels on color by continuous * revert centroids on by default * refactor for nested restructuring * remove update checking * remove unused method * readd deleted hover delay * remove old centroid setup * remove centroid from undoable * cleanup dead code * remove dead code * rollback unnecessary changes * begin adding annotation functionality * add annotation functionality * add reset and undo functionality * change centroids on layout change * don't create label for unassigned * add comment pointing out POI for performance * touch up matrix transform comment * add comment explaining coordinate space and children's assumed space * remove dead code * switch to pure component * connect centroidLabels to redux * clean up camera check and null result * tool tip change * rename centroid toggle and the like * fix the misalignment of buttons, also make blueprint use consistent * fix comment spelling mistakes * introduce variable for cleaner logic expressions and state assignment * alter tooltip text to back color by interaction * remove manual iterator manipulation for forEach() * remove debounce * nit fix * tooltip wording fix * lint
This PR reintroduces centroids with a graph overlay which hosts labels marking centroids for each value within the current column colored by. These labels can be toggled on by clicking the new label button on the menubar and coloring by the desired column.
This PR implements the following changes:
client/src/components/graph/overlays/graphOverlayLayer.js
client/src/components/graph/overlays/centroidLabels.js
client/src/components/graph/graph.js
client/src/components/graph/setupCentroidSVG.js
client/src/components/graph/setupLasso.js
lasso-svg
class to lasso related SVGs for easier DOM managementclient/src/components/graph/setupSVGandBrush.js
client/src/components/menubar/index.js
client/src/reducers/centroidLabels.js
client/src/reducers/index.js
client/src/actions/index.js
client/src/reducers/undoableConfig.js
client/src/reducers/centroidLabel.js → client/src/reducers/pointDilation.js
client/src/components/scatterplot/scatterplot.js
client/src/util/centroid.js
calcMedianCentroid()
to calculate all coordinates instead of a single value'sclient/src/components/categorical/value.js