From eb08bdaa227da40b5cc6308a841b4a6ee13d5695 Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 29 Jul 2019 12:27:57 -0400 Subject: [PATCH 1/4] parcoords - do not stick to min max ranges when moving constraint below or above --- src/traces/parcoords/axisbrush.js | 6 ------ src/traces/parcoords/lines.js | 6 ++++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/traces/parcoords/axisbrush.js b/src/traces/parcoords/axisbrush.js index 1e7cc8fcc65..7a47db672a0 100644 --- a/src/traces/parcoords/axisbrush.js +++ b/src/traces/parcoords/axisbrush.js @@ -266,12 +266,6 @@ function attachDragBehavior(selection) { s.newExtent = [s.startExtent, d.unitToPaddedPx.invert(y)].sort(sortAsc); } - // take care of the parcoords axis height constraint: bar can't breach it - var bottomViolation = Math.max(0, -s.newExtent[0]); - var topViolation = Math.max(0, s.newExtent[1] - 1); - s.newExtent[0] += bottomViolation; - s.newExtent[1] -= topViolation; - d.brush.filterSpecified = true; s.extent = s.stayingIntervals.concat([s.newExtent]); s.brushCallback(d); diff --git a/src/traces/parcoords/lines.js b/src/traces/parcoords/lines.js index 08d6cafd814..2646165aa87 100644 --- a/src/traces/parcoords/lines.js +++ b/src/traces/parcoords/lines.js @@ -225,9 +225,11 @@ function makeItem(model, leftmost, rightmost, itemNumber, i0, i1, x, y, panelSiz function expandedPixelRange(bounds) { var dh = maskHeight - 1; + var a = Math.max(0, Math.floor(bounds[0] * dh), 0); + var b = Math.min(dh, Math.ceil(bounds[1] * dh), dh); return [ - Math.max(0, Math.floor(bounds[0] * dh), 0), - Math.min(dh, Math.ceil(bounds[1] * dh), dh) + Math.min(a, b), + Math.max(a, b) ]; } From 3e8ab96a7c1dec1c0f8bad2d6cac57048ce60a88 Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 29 Jul 2019 12:28:40 -0400 Subject: [PATCH 2/4] new parcoords mock for selecting above and below ranges --- ...ords_out-of-range_selected-above-below.png | Bin 0 -> 88902 bytes ...rds_out-of-range_selected-above-below.json | 821 ++++++++++++++++++ 2 files changed, 821 insertions(+) create mode 100644 test/image/baselines/gl2d_parcoords_out-of-range_selected-above-below.png create mode 100644 test/image/mocks/gl2d_parcoords_out-of-range_selected-above-below.json diff --git a/test/image/baselines/gl2d_parcoords_out-of-range_selected-above-below.png b/test/image/baselines/gl2d_parcoords_out-of-range_selected-above-below.png new file mode 100644 index 0000000000000000000000000000000000000000..0dccfb563c820d084be4956857a6e44fc7853895 GIT binary patch literal 88902 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/gl2d_parcoords_out-of-range_selected-above-below.json b/test/image/mocks/gl2d_parcoords_out-of-range_selected-above-below.json new file mode 100644 index 00000000000..0c50eaab3d2 --- /dev/null +++ b/test/image/mocks/gl2d_parcoords_out-of-range_selected-above-below.json @@ -0,0 +1,821 @@ +{ + "data": [ + { + "type": "parcoords", + "dimensions": [ + { + "label": "A", + "constraintrange": [ + [ + 20, + 40 + ], + [ + 80, + 100 + ], + [ + 200, + 220 + ] + ], + "range": [ + 30, + 210 + ], + "values": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ] + }, + { + "label": "B", + "values": [ + "1.00000", + "0.99992", + "0.99970", + "0.99932", + "0.99880", + "0.99812", + "0.99729", + "0.99631", + "0.99518", + "0.99391", + "0.99248", + "0.99090", + "0.98918", + "0.98730", + "0.98528", + "0.98311", + "0.98079", + "0.97832", + "0.97570", + "0.97294", + "0.97003", + "0.96698", + "0.96378", + "0.96043", + "0.95694", + "0.95331", + "0.94953", + "0.94561", + "0.94154", + "0.93734", + "0.93299", + "0.92851", + "0.92388", + "0.91911", + "0.91421", + "0.90917", + "0.90399", + "0.89867", + "0.89322", + "0.88764", + "0.88192", + "0.87607", + "0.87009", + "0.86397", + "0.85773", + "0.85136", + "0.84485", + "0.83822", + "0.83147", + "0.82459", + "0.81758", + "0.81046", + "0.80321", + "0.79584", + "0.78835", + "0.78074", + "0.77301", + "0.76517", + "0.75721", + "0.74914", + "0.74095", + "0.73265", + "0.72425", + "0.71573", + "0.70711", + "0.69838", + "0.68954", + "0.68060", + "0.67156", + "0.66242", + "0.65317", + "0.64383", + "0.63439", + "0.62486", + "0.61523", + "0.60551", + "0.59570", + "0.58580", + "0.57581", + "0.56573", + "0.55557", + "0.54532", + "0.53500", + "0.52459", + "0.51410", + "0.50354", + "0.49290", + "0.48218", + "0.47140", + "0.46054", + "0.44961", + "0.43862", + "0.42756", + "0.41643", + "0.40524", + "0.39399", + "0.38268", + "0.37132", + "0.35990", + "0.34842", + "0.33689", + "0.32531", + "0.31368", + "0.30201", + "0.29028", + "0.27852", + "0.26671", + "0.25487", + "0.24298", + "0.23106", + "0.21910", + "0.20711", + "0.19509", + "0.18304", + "0.17096", + "0.15886", + "0.14673", + "0.13458", + "0.12241", + "0.11022", + "0.09802", + "0.08580", + "0.07356", + "0.06132", + "0.04907", + "0.03681", + "0.02454", + "0.01227", + "0.00000", + "-0.01227", + "-0.02454", + "-0.03681", + "-0.04907", + "-0.06132", + "-0.07356", + "-0.08580", + "-0.09802", + "-0.11022", + "-0.12241", + "-0.13458", + "-0.14673", + "-0.15886", + "-0.17096", + "-0.18304", + "-0.19509", + "-0.20711", + "-0.21910", + "-0.23106", + "-0.24298", + "-0.25487", + "-0.26671", + "-0.27852", + "-0.29028", + "-0.30201", + "-0.31368", + "-0.32531", + "-0.33689", + "-0.34842", + "-0.35990", + "-0.37132", + "-0.38268", + "-0.39399", + "-0.40524", + "-0.41643", + "-0.42756", + "-0.43862", + "-0.44961", + "-0.46054", + "-0.47140", + "-0.48218", + "-0.49290", + "-0.50354", + "-0.51410", + "-0.52459", + "-0.53500", + "-0.54532", + "-0.55557", + "-0.56573", + "-0.57581", + "-0.58580", + "-0.59570", + "-0.60551", + "-0.61523", + "-0.62486", + "-0.63439", + "-0.64383", + "-0.65317", + "-0.66242", + "-0.67156", + "-0.68060", + "-0.68954", + "-0.69838", + "-0.70711", + "-0.71573", + "-0.72425", + "-0.73265", + "-0.74095", + "-0.74914", + "-0.75721", + "-0.76517", + "-0.77301", + "-0.78074", + "-0.78835", + "-0.79584", + "-0.80321", + "-0.81046", + "-0.81758", + "-0.82459", + "-0.83147", + "-0.83822", + "-0.84485", + "-0.85136", + "-0.85773", + "-0.86397", + "-0.87009", + "-0.87607", + "-0.88192", + "-0.88764", + "-0.89322", + "-0.89867", + "-0.90399", + "-0.90917", + "-0.91421", + "-0.91911", + "-0.92388", + "-0.92851", + "-0.93299", + "-0.93734", + "-0.94154", + "-0.94561", + "-0.94953", + "-0.95331", + "-0.95694", + "-0.96043", + "-0.96378", + "-0.96698", + "-0.97003", + "-0.97294", + "-0.97570", + "-0.97832", + "-0.98079", + "-0.98311", + "-0.98528", + "-0.98730", + "-0.98918", + "-0.99090", + "-0.99248", + "-0.99391", + "-0.99518", + "-0.99631", + "-0.99729", + "-0.99812", + "-0.99880", + "-0.99932", + "-0.99970", + "-1.00000" + ] + } + ], + "line": { + "colorscale": "Portland", + "color": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ] + } + } + ], + "layout": { + "width": 800, + "height": 800, + "margin": { + "t": 200, + "b": 200 + }, + "title": { + "text": "Should select constraintranges outside range" + } + } +} From 8a2d707cbea1e09aae8e095a3dd9ba39597c26da Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 29 Jul 2019 12:33:59 -0400 Subject: [PATCH 3/4] parcoords interaction test - should not stick to min max ranges when moving constraint below or above --- test/jasmine/tests/parcoords_test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/jasmine/tests/parcoords_test.js b/test/jasmine/tests/parcoords_test.js index 270143137dc..fbf69101730 100644 --- a/test/jasmine/tests/parcoords_test.js +++ b/test/jasmine/tests/parcoords_test.js @@ -1496,8 +1496,7 @@ describe('parcoords constraint interactions', function() { .then(delay(noSnapDelay)) .then(function() { expect(getDashArray(1)).toBeCloseToArray(newDashArray); - // TODO: ideally this would get clipped to [0, 9]... - expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([-0.1020, 9]); + expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([-2.913369429404415, 9]); }) .catch(failTest) .then(done); From b30f07eb373ea07c388310b6292d60c77d97985d Mon Sep 17 00:00:00 2001 From: archmoj Date: Tue, 30 Jul 2019 11:12:44 -0400 Subject: [PATCH 4/4] add jasmine tests for parcoords to lock issue 4086 --- test/jasmine/tests/parcoords_test.js | 98 ++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 6 deletions(-) diff --git a/test/jasmine/tests/parcoords_test.js b/test/jasmine/tests/parcoords_test.js index fbf69101730..98858b374bc 100644 --- a/test/jasmine/tests/parcoords_test.js +++ b/test/jasmine/tests/parcoords_test.js @@ -40,6 +40,12 @@ function mouseTo(x, y) { mouseEvent('mouseover', x, y); } +function mostOfDrag(x1, y1, x2, y2) { + mouseTo(x1, y1); + mouseEvent('mousedown', x1, y1); + mouseEvent('mousemove', x2, y2); +} + function purgeGraphDiv(done) { var gd = d3.select('.js-plotly-plot').node(); if(gd) Plotly.purge(gd); @@ -1301,7 +1307,7 @@ describe('parcoords react more attributes', function() { }); }); -describe('parcoords constraint interactions', function() { +describe('parcoords constraint interactions - without defined axis ranges', function() { var gd, initialDashArray0, initialDashArray1; function initialFigure() { @@ -1365,11 +1371,6 @@ describe('parcoords constraint interactions', function() { return highlight.attributes['stroke-dasharray'].value.split(',').map(Number); } - function mostOfDrag(x1, y1, x2, y2) { - mouseTo(x1, y1); - mouseEvent('mousedown', x1, y1); - mouseEvent('mousemove', x2, y2); - } function checkDashCount(dashArray, intervals) { // no-selection dasharrays have 2 entries: @@ -1539,3 +1540,88 @@ describe('parcoords constraint interactions', function() { .then(done); }); }); + +describe('parcoords constraint interactions - with defined axis ranges', function() { + function initialFigure() { + return { + data: [{ + type: 'parcoords', + dimensions: [{ + values: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], + + }, { + values: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9], + tickvals: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + ticktext: ['a', 'b', 'c', 'd', 'e', 'f', 'i', 'j', 'k', 'l'], + range: [3, 7], + constraintrange: [4, 6] + }] + }], + layout: { + width: 400, + height: 400, + margin: {t: 100, b: 100, l: 100, r: 100} + } + }; + } + + var gd; + var initialSnapDuration; + var shortenedSnapDuration = 20; + var noSnapDelay = 20; + beforeAll(function() { + initialSnapDuration = PC.bar.snapDuration; + PC.bar.snapDuration = shortenedSnapDuration; + }); + + afterAll(function() { + purgeGraphDiv(); + PC.bar.snapDuration = initialSnapDuration; + }); + + beforeEach(function(done) { + var hasGD = !!gd; + if(!hasGD) gd = createGraphDiv(); + + Plotly.react(gd, initialFigure()) + .catch(failTest) + .then(done); + }); + + it('@noCI @gl updates constraints above and below axis ranges', function(done) { + expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([4, 6]); + + var x = 295; + + // first: move above range + mostOfDrag(x, 200, x, 100); + mouseEvent('mouseup', x, 100); + delay(noSnapDelay)() + .then(function() { + expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([5.75, 8.25]); + // move back + mostOfDrag(x, 110, x, 210); + mouseEvent('mouseup', x, 210); + }) + .then(delay(noSnapDelay)) + .then(function() { + expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([3.75, 6.25]); + // move below range + mostOfDrag(x, 200, x, 300); + mouseEvent('mouseup', x, 300); + }) + .then(delay(noSnapDelay)) + .then(function() { + expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([1.75, 4.25]); + // move back + mostOfDrag(x, 290, x, 190); + mouseEvent('mouseup', x, 190); + }) + .then(delay(noSnapDelay)) + .then(function() { + expect(gd.data[0].dimensions[1].constraintrange).toBeCloseToArray([3.75, 6.25]); + }) + .catch(failTest) + .then(done); + }); +});