From 1abc5506fc8fa824156a1c706eeb824598cef76c Mon Sep 17 00:00:00 2001 From: Pierrick Koch Date: Fri, 16 Sep 2016 16:12:14 +0200 Subject: [PATCH 1/5] [tickers] add milliseconds granularity --- src/dygraph-tickers.js | 60 ++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/src/dygraph-tickers.js b/src/dygraph-tickers.js index f152bf996..ef71975b7 100644 --- a/src/dygraph-tickers.js +++ b/src/dygraph-tickers.js @@ -220,29 +220,36 @@ export var dateTicker = function(a, b, pixels, opts, dygraph, vals) { // Time granularity enumeration export var Granularity = { - SECONDLY: 0, - TWO_SECONDLY: 1, - FIVE_SECONDLY: 2, - TEN_SECONDLY: 3, - THIRTY_SECONDLY : 4, - MINUTELY: 5, - TWO_MINUTELY: 6, - FIVE_MINUTELY: 7, - TEN_MINUTELY: 8, - THIRTY_MINUTELY: 9, - HOURLY: 10, - TWO_HOURLY: 11, - SIX_HOURLY: 12, - DAILY: 13, - TWO_DAILY: 14, - WEEKLY: 15, - MONTHLY: 16, - QUARTERLY: 17, - BIANNUAL: 18, - ANNUAL: 19, - DECADAL: 20, - CENTENNIAL: 21, - NUM_GRANULARITIES: 22 + MSLY: 0, + TWO_MSLY: 1, + FIVE_MSLY: 2, + TEN_MSLY: 3, + FIFTY_MSLY: 4, + HTH_MSLY: 5, + FHTH_MSLY: 6, + SECONDLY: 7, + TWO_SECONDLY: 8, + FIVE_SECONDLY: 9, + TEN_SECONDLY: 10, + THIRTY_SECONDLY: 11, + MINUTELY: 12, + TWO_MINUTELY: 13, + FIVE_MINUTELY: 14, + TEN_MINUTELY: 15, + THIRTY_MINUTELY: 16, + HOURLY: 17, + TWO_HOURLY: 18, + SIX_HOURLY: 19, + DAILY: 20, + TWO_DAILY: 21, + WEEKLY: 22, + MONTHLY: 23, + QUARTERLY: 24, + BIANNUAL: 25, + ANNUAL: 26, + DECADAL: 27, + CENTENNIAL: 28, + NUM_GRANULARITIES: 29, } // Date components enumeration (in the order of the arguments in Date) @@ -273,6 +280,13 @@ var DateField = { * @type {Array.<{datefield:number, step:number, spacing:number}>} */ var TICK_PLACEMENT = []; +TICK_PLACEMENT[Granularity.MSLY] = {datefield: DateField.DATEFIELD_MS, step: 1, spacing: 1}; +TICK_PLACEMENT[Granularity.TWO_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 2, spacing: 2}; +TICK_PLACEMENT[Granularity.FIVE_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 5, spacing: 5}; +TICK_PLACEMENT[Granularity.TEN_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 10, spacing: 10}; +TICK_PLACEMENT[Granularity.FIFTY_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 50, spacing: 50}; +TICK_PLACEMENT[Granularity.HTH_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 100, spacing: 100}; +TICK_PLACEMENT[Granularity.FHTH_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 500, spacing: 500}; TICK_PLACEMENT[Granularity.SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 1, spacing: 1000 * 1}; TICK_PLACEMENT[Granularity.TWO_SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 2, spacing: 1000 * 2}; TICK_PLACEMENT[Granularity.FIVE_SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 5, spacing: 1000 * 5}; From 283335ff04e0f7e838154707db2262a425920256 Mon Sep 17 00:00:00 2001 From: Pierrick Koch Date: Fri, 16 Sep 2016 16:53:19 +0200 Subject: [PATCH 2/5] [utils] manage granularity < SECONDLY and manage granularity > MINUTELY --- src/dygraph-utils.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/dygraph-utils.js b/src/dygraph-utils.js index 79215d4a5..f04c307a4 100644 --- a/src/dygraph-utils.js +++ b/src/dygraph-utils.js @@ -1229,6 +1229,11 @@ export function dateAxisLabelFormatter(date, granularity, opts) { if (frac === 0 || granularity >= DygraphTickers.Granularity.DAILY) { // e.g. '21 Jan' (%d%b) return zeropad(day) + ' ' + SHORT_MONTH_NAMES_[month]; + } else if (granularity < DygraphTickers.Granularity.SECONDLY) { + var str = "" + millis; + return zeropad(secs) + "." + ('000'+str).substring(str.length); + } else if (granularity > DygraphTickers.Granularity.MINUTELY) { + return hmsString_(hours, mins, secs, 0); } else { return hmsString_(hours, mins, secs, millis); } From 2648940668c6f895fe22ff548060dabe5bc8b142 Mon Sep 17 00:00:00 2001 From: Pierrick Koch Date: Fri, 16 Sep 2016 16:53:41 +0200 Subject: [PATCH 3/5] [auto_tests] todo test granularity < SECONDLY --- auto_tests/tests/date_ticker.js | 1 + 1 file changed, 1 insertion(+) diff --git a/auto_tests/tests/date_ticker.js b/auto_tests/tests/date_ticker.js index c02331dc7..9e347e33f 100644 --- a/auto_tests/tests/date_ticker.js +++ b/auto_tests/tests/date_ticker.js @@ -263,6 +263,7 @@ it('testAllDateTickers', function() { assert.deepEqual([{"v":1307908020000,"label":"19:47"},{"v":1307908050000,"label":"19:47:30"},{"v":1307908080000,"label":"19:48"},{"v":1307908110000,"label":"19:48:30"},{"v":1307908140000,"label":"19:49"},{"v":1307908170000,"label":"19:49:30"}], ticker(1307908000112, 1307908172259, 800, options)); assert.deepEqual([{"v":1307908020000,"label":"19:47"},{"v":1307908050000,"label":"19:47:30"},{"v":1307908080000,"label":"19:48"},{"v":1307908110000,"label":"19:48:30"},{"v":1307908140000,"label":"19:49"},{"v":1307908170000,"label":"19:49:30"}], ticker(1307908000112, 1307908173260, 800, options)); assert.deepEqual([{"v":978307200000,"label":"Jan 2001"},{"v":986083200000,"label":"Apr 2001"},{"v":993945600000,"label":"Jul 2001"},{"v":1001894400000,"label":"Oct 2001"}], ticker(978307200000, 1001894400000, 400, options)); + // TODO add millisecond test ? }); }); From 60b62628d99129ddf7f783512f393926e169c4e3 Mon Sep 17 00:00:00 2001 From: Pierrick Koch Date: Fri, 23 Sep 2016 11:27:53 +0200 Subject: [PATCH 4/5] [utils] fix Granularity millisecond naming --- src/dygraph-tickers.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dygraph-tickers.js b/src/dygraph-tickers.js index ef71975b7..5df619dbd 100644 --- a/src/dygraph-tickers.js +++ b/src/dygraph-tickers.js @@ -225,8 +225,8 @@ export var Granularity = { FIVE_MSLY: 2, TEN_MSLY: 3, FIFTY_MSLY: 4, - HTH_MSLY: 5, - FHTH_MSLY: 6, + HUNDRED_MSLY: 5, + FIVE_HUNDRED_MSLY: 6, SECONDLY: 7, TWO_SECONDLY: 8, FIVE_SECONDLY: 9, @@ -285,8 +285,8 @@ TICK_PLACEMENT[Granularity.TWO_MSLY] = {datefield: DateField.DATEFIELD_MS TICK_PLACEMENT[Granularity.FIVE_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 5, spacing: 5}; TICK_PLACEMENT[Granularity.TEN_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 10, spacing: 10}; TICK_PLACEMENT[Granularity.FIFTY_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 50, spacing: 50}; -TICK_PLACEMENT[Granularity.HTH_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 100, spacing: 100}; -TICK_PLACEMENT[Granularity.FHTH_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 500, spacing: 500}; +TICK_PLACEMENT[Granularity.HUNDRED_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 100, spacing: 100}; +TICK_PLACEMENT[Granularity.FIVE_HUNDRED_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 500, spacing: 500}; TICK_PLACEMENT[Granularity.SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 1, spacing: 1000 * 1}; TICK_PLACEMENT[Granularity.TWO_SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 2, spacing: 1000 * 2}; TICK_PLACEMENT[Granularity.FIVE_SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 5, spacing: 1000 * 5}; From c55509e606c2848d781ced6152db4101476827ac Mon Sep 17 00:00:00 2001 From: Pierrick Koch Date: Mon, 26 Sep 2016 10:27:29 +0200 Subject: [PATCH 5/5] [utils] fix Granularity millisecond naming (2) --- src/dygraph-tickers.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/dygraph-tickers.js b/src/dygraph-tickers.js index 5df619dbd..2ae92d8e1 100644 --- a/src/dygraph-tickers.js +++ b/src/dygraph-tickers.js @@ -220,13 +220,13 @@ export var dateTicker = function(a, b, pixels, opts, dygraph, vals) { // Time granularity enumeration export var Granularity = { - MSLY: 0, - TWO_MSLY: 1, - FIVE_MSLY: 2, - TEN_MSLY: 3, - FIFTY_MSLY: 4, - HUNDRED_MSLY: 5, - FIVE_HUNDRED_MSLY: 6, + MILLISECONDLY: 0, + TWO_MILLISECONDLY: 1, + FIVE_MILLISECONDLY: 2, + TEN_MILLISECONDLY: 3, + FIFTY_MILLISECONDLY: 4, + HUNDRED_MILLISECONDLY: 5, + FIVE_HUNDRED_MILLISECONDLY: 6, SECONDLY: 7, TWO_SECONDLY: 8, FIVE_SECONDLY: 9, @@ -280,13 +280,13 @@ var DateField = { * @type {Array.<{datefield:number, step:number, spacing:number}>} */ var TICK_PLACEMENT = []; -TICK_PLACEMENT[Granularity.MSLY] = {datefield: DateField.DATEFIELD_MS, step: 1, spacing: 1}; -TICK_PLACEMENT[Granularity.TWO_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 2, spacing: 2}; -TICK_PLACEMENT[Granularity.FIVE_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 5, spacing: 5}; -TICK_PLACEMENT[Granularity.TEN_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 10, spacing: 10}; -TICK_PLACEMENT[Granularity.FIFTY_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 50, spacing: 50}; -TICK_PLACEMENT[Granularity.HUNDRED_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 100, spacing: 100}; -TICK_PLACEMENT[Granularity.FIVE_HUNDRED_MSLY] = {datefield: DateField.DATEFIELD_MS, step: 500, spacing: 500}; +TICK_PLACEMENT[Granularity.MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 1, spacing: 1}; +TICK_PLACEMENT[Granularity.TWO_MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 2, spacing: 2}; +TICK_PLACEMENT[Granularity.FIVE_MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 5, spacing: 5}; +TICK_PLACEMENT[Granularity.TEN_MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 10, spacing: 10}; +TICK_PLACEMENT[Granularity.FIFTY_MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 50, spacing: 50}; +TICK_PLACEMENT[Granularity.HUNDRED_MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 100, spacing: 100}; +TICK_PLACEMENT[Granularity.FIVE_HUNDRED_MILLISECONDLY] = {datefield: DateField.DATEFIELD_MS, step: 500, spacing: 500}; TICK_PLACEMENT[Granularity.SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 1, spacing: 1000 * 1}; TICK_PLACEMENT[Granularity.TWO_SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 2, spacing: 1000 * 2}; TICK_PLACEMENT[Granularity.FIVE_SECONDLY] = {datefield: DateField.DATEFIELD_SS, step: 5, spacing: 1000 * 5};