Skip to content

Commit 54882e4

Browse files
committed
remove duplicate period labels in preiod mode - improve tests
1 parent 43cb8d5 commit 54882e4

File tree

4 files changed

+36
-15
lines changed

4 files changed

+36
-15
lines changed

src/plots/cartesian/axes.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -607,11 +607,12 @@ axes.calcTicks = function calcTicks(ax, opts) {
607607
var isDLog = (ax.type === 'log') && !(isNumeric(ax.dtick) || ax.dtick.charAt(0) === 'L');
608608

609609
var definedDelta;
610+
var resetDtick;
610611
if(isPeriod && tickformat) {
611612
var noDtick = !!ax._dtickInit;
612-
613+
resetDtick = true;
613614
if(
614-
!(/%[fLQsSMX]/.test(tickformat))
615+
/%[fLQsSMX]/.test(tickformat)
615616
// %f: microseconds as a decimal number [000000, 999999]
616617
// %L: milliseconds as a decimal number [000, 999]
617618
// %Q: milliseconds since UNIX epoch
@@ -620,6 +621,8 @@ axes.calcTicks = function calcTicks(ax, opts) {
620621
// %M: minute as a decimal number [00,59]
621622
// %X: the locale’s time, such as %-I:%M:%S %p
622623
) {
624+
resetDtick = false;
625+
} else {
623626
if(
624627
/%[HI]/.test(tickformat)
625628
// %H: hour (24-hour clock) as a decimal number [00,23]
@@ -777,12 +780,12 @@ axes.calcTicks = function calcTicks(ax, opts) {
777780
ax._inCalcTicks = true;
778781

779782
var ticksOut = [];
780-
var i;
783+
var i, t;
781784
for(i = 0; i < tickVals.length; i++) {
782785
var _minor = tickVals[i].minor;
783786
var _value = tickVals[i].value;
784787

785-
var t = axes.tickText(
788+
t = axes.tickText(
786789
ax,
787790
_value,
788791
false, // hover
@@ -873,6 +876,24 @@ axes.calcTicks = function calcTicks(ax, opts) {
873876
}
874877
}
875878

879+
if(isPeriod && resetDtick) {
880+
// join duplicate labels
881+
var prevText;
882+
var startX, endX;
883+
for(i = ticksOut.length - 1; i > -1; i--) {
884+
t = ticksOut[i];
885+
if(prevText === t.text) {
886+
endX = t.periodX;
887+
ticksOut[i].x = t.x;
888+
ticksOut[i].periodX = (startX + endX) / 2;
889+
ticksOut.splice(i + 1, 1); // remove previous item
890+
} else {
891+
startX = t.periodX;
892+
prevText = t.text;
893+
}
894+
}
895+
}
896+
876897
ax._inCalcTicks = false;
877898

878899
return ticksOut;
-368 Bytes
Loading
-41 Bytes
Loading

test/jasmine/tests/axes_test.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5630,23 +5630,23 @@ describe('Test axes', function() {
56305630
},
56315631
{
56325632
formatter: '%p',
5633-
positions: ['2019-12-31 22:30', '2020-01-01 01:30', '2020-01-01 04:30', '2020-01-01 07:30', '2020-01-01 10:30', '2020-01-01 13:30', '2020-01-01 16:30', '2020-01-01 19:30', '2020-01-01 22:30', '2020-01-02 01:30'],
5634-
labels: [' ', 'Wed-AM', 'Wed-AM', 'Wed-AM', 'Wed-AM', 'Wed-PM', 'Wed-PM', 'Wed-PM', 'Wed-PM', ' ']
5633+
positions: ['2019-12-31 22:30', '2020-01-01 06:00', '2020-01-01 18:00', '2020-01-02 01:30'],
5634+
labels: [' ', 'Wed-AM', 'Wed-PM', ' ']
56355635
},
56365636
{
5637-
formatter: '%M',
5638-
positions: ['2019-12-31 21:00', '2020-01-01', '2020-01-01 03:00', '2020-01-01 06:00', '2020-01-01 09:00', '2020-01-01 12:00', '2020-01-01 15:00', '2020-01-01 18:00', '2020-01-01 21:00', '2020-01-02'],
5639-
labels: [' ', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Thu-00']
5637+
formatter: '%H:%M',
5638+
positions: ['2019-12-31 21:00', '2020-01-01', '2020-01-01 03:00', '2020-01-01 06:00', '2020-01-01 09:00', '2020-01-01 12:00', '2020-01-01 15:00', '2020-01-01 18:00', '2020-01-01 21:00', '2020-01-02', ],
5639+
labels: [' ', 'Wed-00:00', 'Wed-03:00', 'Wed-06:00', 'Wed-09:00', 'Wed-12:00', 'Wed-15:00', 'Wed-18:00', 'Wed-21:00', 'Thu-00:00']
56405640
},
56415641
{
5642-
formatter: '%S',
5643-
positions: ['2019-12-31 21:00', '2020-01-01', '2020-01-01 03:00', '2020-01-01 06:00', '2020-01-01 09:00', '2020-01-01 12:00', '2020-01-01 15:00', '2020-01-01 18:00', '2020-01-01 21:00', '2020-01-02'],
5644-
labels: [' ', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Wed-00', 'Thu-00']
5642+
formatter: '%H:%M:%S',
5643+
positions: ['2019-12-31 21:00', '2020-01-01', '2020-01-01 03:00', '2020-01-01 06:00', '2020-01-01 09:00', '2020-01-01 12:00', '2020-01-01 15:00', '2020-01-01 18:00', '2020-01-01 21:00', '2020-01-02', ],
5644+
labels: [' ', 'Wed-00:00:00', 'Wed-03:00:00', 'Wed-06:00:00', 'Wed-09:00:00', 'Wed-12:00:00', 'Wed-15:00:00', 'Wed-18:00:00', 'Wed-21:00:00', 'Thu-00:00:00']
56455645
},
56465646
{
5647-
formatter: '%L',
5648-
positions: ['2019-12-31 21:00', '2020-01-01', '2020-01-01 03:00', '2020-01-01 06:00', '2020-01-01 09:00', '2020-01-01 12:00', '2020-01-01 15:00', '2020-01-01 18:00', '2020-01-01 21:00', '2020-01-02'],
5649-
labels: [' ', 'Wed-000', 'Wed-000', 'Wed-000', 'Wed-000', 'Wed-000', 'Wed-000', 'Wed-000', 'Wed-000', 'Thu-000']
5647+
formatter: '%H:%M:%S.%L',
5648+
positions: ['2019-12-31 21:00', '2020-01-01', '2020-01-01 03:00', '2020-01-01 06:00', '2020-01-01 09:00', '2020-01-01 12:00', '2020-01-01 15:00', '2020-01-01 18:00', '2020-01-01 21:00', '2020-01-02', ],
5649+
labels: [' ', 'Wed-00:00:00.000', 'Wed-03:00:00.000', 'Wed-06:00:00.000', 'Wed-09:00:00.000', 'Wed-12:00:00.000', 'Wed-15:00:00.000', 'Wed-18:00:00.000', 'Wed-21:00:00.000', 'Thu-00:00:00.000']
56505650
},
56515651
{
56525652
formatter: '%f',

0 commit comments

Comments
 (0)