Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: packages/charted/lib/core/time_interval.dart

Issue 1521693002: Roll Observatory deps (charted -> ^0.3.0) (Closed) Base URL: https://chromium.googlesource.com/external/github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // 1 //
2 // Copyright 2014 Google Inc. All rights reserved. 2 // Copyright 2014 Google Inc. All rights reserved.
3 // 3 //
4 // Use of this source code is governed by a BSD-style 4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at 5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd 6 // https://developers.google.com/open-source/licenses/bsd
7 // 7 //
8 8
9 library charted.core.time_intervals; 9 library charted.core.time_intervals;
10 10
11 typedef DateTime TimeFloorFunction(DateTime val); 11 typedef DateTime TimeFloorFunction(DateTime val);
12 typedef DateTime TimeStepFunction(DateTime val, int offset); 12 typedef DateTime TimeStepFunction(DateTime val, int offset);
13 typedef int TimeToNumberFunction(DateTime val); 13 typedef int TimeToNumberFunction(DateTime val);
14 14
15 class TimeInterval { 15 class TimeInterval {
16 TimeFloorFunction _floor; 16 TimeFloorFunction _floor;
17 TimeStepFunction _step; 17 TimeStepFunction _step;
18 TimeToNumberFunction _number; 18 TimeToNumberFunction _number;
19 19
20 TimeInterval(this._floor, this._step, this._number); 20 TimeInterval(this._floor, this._step, this._number);
21 21
22 DateTime floor(dynamic date) { 22 DateTime floor(dynamic date) {
23 assert(date is int || date is DateTime); 23 assert(date is int || date is DateTime);
24 if (date is int) { 24 if (date is int) {
25 date = new DateTime.fromMillisecondsSinceEpoch(date) ; 25 date = new DateTime.fromMillisecondsSinceEpoch(date);
26 } 26 }
27 return _floor(date); 27 return _floor(date);
28 } 28 }
29 29
30 DateTime round(dynamic date) { 30 DateTime round(dynamic date) {
31 DateTime d0 = floor(date), 31 DateTime d0 = floor(date), d1 = offset(d0, 1);
32 d1 = offset(d0, 1);
33 int ms = date is int ? date : date.millisecondsSinceEpoch; 32 int ms = date is int ? date : date.millisecondsSinceEpoch;
34 return (ms - d0.millisecondsSinceEpoch < d1.millisecondsSinceEpoch - ms) 33 return (ms - d0.millisecondsSinceEpoch < d1.millisecondsSinceEpoch - ms)
35 ? d0 34 ? d0
36 : d1; 35 : d1;
37 } 36 }
38 37
39 DateTime ceil(dynamic date) => offset(floor(date), 1); 38 DateTime ceil(dynamic date) => offset(floor(date), 1);
40 39
41 DateTime offset(DateTime date, int k) => _step(date, k); 40 DateTime offset(DateTime date, int k) => _step(date, k);
42 41
43 Iterable<DateTime> range(dynamic t0, dynamic t1, int dt) { 42 Iterable<DateTime> range(dynamic t0, dynamic t1, int dt) {
44 assert(t0 is int || t0 is DateTime); 43 assert(t0 is int || t0 is DateTime);
45 assert(t1 is int || t1 is DateTime); 44 assert(t1 is int || t1 is DateTime);
46 45
47 List<DateTime> values = []; 46 List<DateTime> values = [];
48 if (t1 is int) { 47 if (t1 is int) {
49 t1 = new DateTime.fromMillisecondsSinceEpoch(t1); 48 t1 = new DateTime.fromMillisecondsSinceEpoch(t1);
50 } 49 }
51 50
52 DateTime time = ceil(t0); 51 DateTime time = ceil(t0);
53 if (dt > 1) { 52 if (dt > 1) {
54 while (time.isBefore(t1)) { 53 while (time.isBefore(t1)) {
55 if ((_number(time) % dt) == 0) { 54 if ((_number(time) % dt) == 0) {
56 values.add( 55 values.add(new DateTime.fromMillisecondsSinceEpoch(
57 new DateTime.fromMillisecondsSinceEpoch( 56 time.millisecondsSinceEpoch));
58 time.millisecondsSinceEpoch));
59 } 57 }
60 time = _step(time, 1); 58 time = _step(time, 1);
61 } 59 }
62 } 60 } else {
63 else {
64 while (time.isBefore(t1)) { 61 while (time.isBefore(t1)) {
65 values.add( 62 values.add(new DateTime.fromMillisecondsSinceEpoch(
66 new DateTime.fromMillisecondsSinceEpoch( 63 time.millisecondsSinceEpoch));
67 time.millisecondsSinceEpoch));
68 time = _step(time, 1); 64 time = _step(time, 1);
69 } 65 }
70 } 66 }
71 return values; 67 return values;
72 } 68 }
73 69
74 static TimeInterval second = new TimeInterval( 70 static TimeInterval second = new TimeInterval(
75 (DateTime date) => 71 (DateTime date) => new DateTime.fromMillisecondsSinceEpoch(
76 new DateTime.fromMillisecondsSinceEpoch( 72 (date.millisecondsSinceEpoch ~/ 1000) * 1000),
77 (date.millisecondsSinceEpoch ~/ 1000) * 1000),
78 (DateTime date, int offset) => 73 (DateTime date, int offset) =>
79 date = new DateTime.fromMillisecondsSinceEpoch( 74 date = new DateTime.fromMillisecondsSinceEpoch(
80 date.millisecondsSinceEpoch + offset * 1000), 75 date.millisecondsSinceEpoch + offset * 1000),
81 (DateTime date) => date.second); 76 (DateTime date) => date.second);
82 77
83 static TimeInterval minute = new TimeInterval( 78 static TimeInterval minute = new TimeInterval(
84 (DateTime date) => 79 (DateTime date) => new DateTime.fromMillisecondsSinceEpoch(
85 new DateTime.fromMillisecondsSinceEpoch( 80 (date.millisecondsSinceEpoch ~/ 60000) * 60000),
86 (date.millisecondsSinceEpoch ~/ 60000) * 60000),
87 (DateTime date, int offset) => 81 (DateTime date, int offset) =>
88 date = new DateTime.fromMillisecondsSinceEpoch( 82 date = new DateTime.fromMillisecondsSinceEpoch(
89 date.millisecondsSinceEpoch + offset * 60000), 83 date.millisecondsSinceEpoch + offset * 60000),
90 (DateTime date) => date.minute); 84 (DateTime date) => date.minute);
91 85
92 static TimeInterval hour = new TimeInterval( 86 static TimeInterval hour = new TimeInterval(
93 (DateTime date) => 87 (DateTime date) => new DateTime.fromMillisecondsSinceEpoch(
94 new DateTime.fromMillisecondsSinceEpoch( 88 (date.millisecondsSinceEpoch ~/ 3600000) * 3600000),
95 (date.millisecondsSinceEpoch ~/ 3600000) * 3600000),
96 (DateTime date, int offset) => 89 (DateTime date, int offset) =>
97 date = new DateTime.fromMillisecondsSinceEpoch( 90 date = new DateTime.fromMillisecondsSinceEpoch(
98 date.millisecondsSinceEpoch + offset * 3600000), 91 date.millisecondsSinceEpoch + offset * 3600000),
99 (DateTime date) => date.hour); 92 (DateTime date) => date.hour);
100 93
101 static TimeInterval day = new TimeInterval( 94 static TimeInterval day = new TimeInterval(
102 (DateTime date) => 95 (DateTime date) => new DateTime(date.year, date.month, date.day),
103 new DateTime(date.year, date.month, date.day), 96 (DateTime date, int offset) => new DateTime(
104 (DateTime date, int offset) => 97 date.year,
105 new DateTime(date.year, date.month, date.day + offset, 98 date.month,
106 date.hour, date.minute, date.second, date.millisecond), 99 date.day + offset,
100 date.hour,
101 date.minute,
102 date.second,
103 date.millisecond),
107 (DateTime date) => date.day - 1); 104 (DateTime date) => date.day - 1);
108 105
109 static TimeInterval week = new TimeInterval( 106 static TimeInterval week = new TimeInterval(
110 (DateTime date) => 107 (DateTime date) =>
111 new DateTime(date.year, date.month, date.day - (date.weekday % 7)), 108 new DateTime(date.year, date.month, date.day - (date.weekday % 7)),
112 (DateTime date, int offset) => 109 (DateTime date, int offset) => new DateTime(
113 new DateTime(date.year, date.month, date.day + offset * 7, 110 date.year,
114 date.hour, date.minute, date.second, date.millisecond ), 111 date.month,
115 (DateTime date) { 112 date.day + offset * 7,
116 var day = year.floor(date).day; 113 date.hour,
117 return (dayOfYear(date) + day % 7) ~/ 7; 114 date.minute,
118 }); 115 date.second,
116 date.millisecond), (DateTime date) {
117 var day = year.floor(date).day;
118 return (dayOfYear(date) + day % 7) ~/ 7;
119 });
119 120
120 static TimeInterval month = new TimeInterval( 121 static TimeInterval month = new TimeInterval(
121 (DateTime date) => new DateTime(date.year, date.month, 1), 122 (DateTime date) => new DateTime(date.year, date.month, 1),
122 (DateTime date, num offset) => 123 (DateTime date, num offset) => new DateTime(
123 new DateTime(date.year, date.month + offset, date.day, 124 date.year,
124 date.hour, date.minute, date.second, date.millisecond), 125 date.month + offset,
126 date.day,
127 date.hour,
128 date.minute,
129 date.second,
130 date.millisecond),
125 (DateTime date) => date.month - 1); 131 (DateTime date) => date.month - 1);
126 132
127 static TimeInterval year = new TimeInterval( 133 static TimeInterval year = new TimeInterval(
128 (DateTime date) => new DateTime(date.year), 134 (DateTime date) => new DateTime(date.year),
129 (DateTime date, num offset) => 135 (DateTime date, num offset) => new DateTime(
130 new DateTime(date.year + offset, date.month, date.day, 136 date.year + offset,
131 date.hour, date.minute, date.second, date.millisecond), 137 date.month,
138 date.day,
139 date.hour,
140 date.minute,
141 date.second,
142 date.millisecond),
132 (DateTime date) => date.year); 143 (DateTime date) => date.year);
133 144
134 static int dayOfYear(DateTime date) => 145 static int dayOfYear(DateTime date) =>
135 date.difference(year.floor(date)).inDays; 146 date.difference(year.floor(date)).inDays;
136 } 147 }
OLDNEW
« no previous file with comments | « packages/charted/lib/core/text_metrics/segmentation_utils.dart ('k') | packages/charted/lib/core/timer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698