|
|
@@ -1,57 +0,0 @@
|
|
|
-define([
|
|
|
- 'kbn'
|
|
|
-],
|
|
|
-function (kbn) {
|
|
|
- 'use strict';
|
|
|
-
|
|
|
- /**
|
|
|
- * manages the interval logic
|
|
|
- * @param {[type]} interval_string An interval string in the format '1m', '1y', etc
|
|
|
- */
|
|
|
- function Interval(interval_string) {
|
|
|
- this.string = interval_string;
|
|
|
-
|
|
|
- var info = kbn.describe_interval(interval_string);
|
|
|
- this.type = info.type;
|
|
|
- this.ms = info.sec * 1000 * info.count;
|
|
|
-
|
|
|
- // does the length of the interval change based on the current time?
|
|
|
- if (this.type === 'y' || this.type === 'M') {
|
|
|
- // we will just modify this time object rather that create a new one constantly
|
|
|
- this.get = this.get_complex;
|
|
|
- this.date = new Date(0);
|
|
|
- } else {
|
|
|
- this.get = this.get_simple;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Interval.prototype = {
|
|
|
- toString: function () {
|
|
|
- return this.string;
|
|
|
- },
|
|
|
- after: function(current_ms) {
|
|
|
- return this.get(current_ms, 1);
|
|
|
- },
|
|
|
- before: function (current_ms) {
|
|
|
- return this.get(current_ms, -1);
|
|
|
- },
|
|
|
- get_complex: function (current, delta) {
|
|
|
- this.date.setTime(current);
|
|
|
- switch(this.type) {
|
|
|
- case 'M':
|
|
|
- this.date.setUTCMonth(this.date.getUTCMonth() + delta);
|
|
|
- break;
|
|
|
- case 'y':
|
|
|
- this.date.setUTCFullYear(this.date.getUTCFullYear() + delta);
|
|
|
- break;
|
|
|
- }
|
|
|
- return this.date.getTime();
|
|
|
- },
|
|
|
- get_simple: function (current, delta) {
|
|
|
- return current + (delta * this.ms);
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- return Interval;
|
|
|
-
|
|
|
-});
|