|
@ -4,8 +4,8 @@ |
|
|
* |
|
|
* |
|
|
* A dynamic, browser-based visualization library. |
|
|
* A dynamic, browser-based visualization library. |
|
|
* |
|
|
* |
|
|
* @version @@version |
|
|
|
|
|
* @date @@date |
|
|
|
|
|
|
|
|
* @version 0.7.4 |
|
|
|
|
|
* @date 2014-04-18 |
|
|
* |
|
|
* |
|
|
* @license |
|
|
* @license |
|
|
* Copyright (C) 2011-2014 Almende B.V, http://almende.com
|
|
|
* Copyright (C) 2011-2014 Almende B.V, http://almende.com
|
|
@ -16776,7 +16776,6 @@ Graph.prototype._create = function () { |
|
|
this.frame.className = 'graph-frame'; |
|
|
this.frame.className = 'graph-frame'; |
|
|
this.frame.style.position = 'relative'; |
|
|
this.frame.style.position = 'relative'; |
|
|
this.frame.style.overflow = 'hidden'; |
|
|
this.frame.style.overflow = 'hidden'; |
|
|
this.frame.style.zIndex = "1"; |
|
|
|
|
|
|
|
|
|
|
|
// create the graph canvas (HTML canvas element)
|
|
|
// create the graph canvas (HTML canvas element)
|
|
|
this.frame.canvas = document.createElement( 'canvas' ); |
|
|
this.frame.canvas = document.createElement( 'canvas' ); |
|
@ -19799,8 +19798,8 @@ else { |
|
|
} |
|
|
} |
|
|
})(this); |
|
|
})(this); |
|
|
},{}],4:[function(require,module,exports){ |
|
|
},{}],4:[function(require,module,exports){ |
|
|
//! moment.js
|
|
|
|
|
|
//! version : 2.5.1
|
|
|
|
|
|
|
|
|
var global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};//! moment.js
|
|
|
|
|
|
//! version : 2.6.0
|
|
|
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
|
|
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
|
|
//! license : MIT
|
|
|
//! license : MIT
|
|
|
//! momentjs.com
|
|
|
//! momentjs.com
|
|
@ -19812,8 +19811,10 @@ else { |
|
|
************************************/ |
|
|
************************************/ |
|
|
|
|
|
|
|
|
var moment, |
|
|
var moment, |
|
|
VERSION = "2.5.1", |
|
|
|
|
|
global = this, |
|
|
|
|
|
|
|
|
VERSION = "2.6.0", |
|
|
|
|
|
// the global-scope this is NOT the global object in Node.js
|
|
|
|
|
|
globalScope = typeof global !== 'undefined' ? global : this, |
|
|
|
|
|
oldGlobalMoment, |
|
|
round = Math.round, |
|
|
round = Math.round, |
|
|
i, |
|
|
i, |
|
|
|
|
|
|
|
@ -19842,7 +19843,7 @@ else { |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// check for nodeJS
|
|
|
// check for nodeJS
|
|
|
hasModule = (typeof module !== 'undefined' && module.exports && typeof require !== 'undefined'), |
|
|
|
|
|
|
|
|
hasModule = (typeof module !== 'undefined' && module.exports), |
|
|
|
|
|
|
|
|
// ASP.NET json date format regex
|
|
|
// ASP.NET json date format regex
|
|
|
aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, |
|
|
aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, |
|
@ -19853,7 +19854,7 @@ else { |
|
|
isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, |
|
|
isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, |
|
|
|
|
|
|
|
|
// format tokens
|
|
|
// format tokens
|
|
|
formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, |
|
|
|
|
|
|
|
|
formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, |
|
|
localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, |
|
|
localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, |
|
|
|
|
|
|
|
|
// parsing token regexes
|
|
|
// parsing token regexes
|
|
@ -19866,6 +19867,7 @@ else { |
|
|
parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
|
|
|
parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
|
|
|
parseTokenT = /T/i, // T (ISO separator)
|
|
|
parseTokenT = /T/i, // T (ISO separator)
|
|
|
parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
|
|
|
parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
|
|
|
|
|
|
parseTokenOrdinal = /\d{1,2}/, |
|
|
|
|
|
|
|
|
//strict parsing regexes
|
|
|
//strict parsing regexes
|
|
|
parseTokenOneDigit = /\d/, // 0 - 9
|
|
|
parseTokenOneDigit = /\d/, // 0 - 9
|
|
@ -19891,7 +19893,7 @@ else { |
|
|
|
|
|
|
|
|
// iso time formats and regexes
|
|
|
// iso time formats and regexes
|
|
|
isoTimes = [ |
|
|
isoTimes = [ |
|
|
['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/], |
|
|
|
|
|
|
|
|
['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], |
|
|
['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], |
|
|
['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], |
|
|
['HH:mm', /(T| )\d\d:\d\d/], |
|
|
['HH:mm', /(T| )\d\d:\d\d/], |
|
|
['HH', /(T| )\d\d/] |
|
|
['HH', /(T| )\d\d/] |
|
@ -19922,6 +19924,7 @@ else { |
|
|
w : 'week', |
|
|
w : 'week', |
|
|
W : 'isoWeek', |
|
|
W : 'isoWeek', |
|
|
M : 'month', |
|
|
M : 'month', |
|
|
|
|
|
Q : 'quarter', |
|
|
y : 'year', |
|
|
y : 'year', |
|
|
DDD : 'dayOfYear', |
|
|
DDD : 'dayOfYear', |
|
|
e : 'weekday', |
|
|
e : 'weekday', |
|
@ -20097,6 +20100,23 @@ else { |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function deprecate(msg, fn) { |
|
|
|
|
|
var firstTime = true; |
|
|
|
|
|
function printMsg() { |
|
|
|
|
|
if (moment.suppressDeprecationWarnings === false && |
|
|
|
|
|
typeof console !== 'undefined' && console.warn) { |
|
|
|
|
|
console.warn("Deprecation warning: " + msg); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return extend(function () { |
|
|
|
|
|
if (firstTime) { |
|
|
|
|
|
printMsg(); |
|
|
|
|
|
firstTime = false; |
|
|
|
|
|
} |
|
|
|
|
|
return fn.apply(this, arguments); |
|
|
|
|
|
}, fn); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function padToken(func, count) { |
|
|
function padToken(func, count) { |
|
|
return function (a) { |
|
|
return function (a) { |
|
|
return leftZeroFill(func.call(this, a), count); |
|
|
return leftZeroFill(func.call(this, a), count); |
|
@ -20137,6 +20157,7 @@ else { |
|
|
function Duration(duration) { |
|
|
function Duration(duration) { |
|
|
var normalizedInput = normalizeObjectUnits(duration), |
|
|
var normalizedInput = normalizeObjectUnits(duration), |
|
|
years = normalizedInput.year || 0, |
|
|
years = normalizedInput.year || 0, |
|
|
|
|
|
quarters = normalizedInput.quarter || 0, |
|
|
months = normalizedInput.month || 0, |
|
|
months = normalizedInput.month || 0, |
|
|
weeks = normalizedInput.week || 0, |
|
|
weeks = normalizedInput.week || 0, |
|
|
days = normalizedInput.day || 0, |
|
|
days = normalizedInput.day || 0, |
|
@ -20158,6 +20179,7 @@ else { |
|
|
// which months you are are talking about, so we have to store
|
|
|
// which months you are are talking about, so we have to store
|
|
|
// it separately.
|
|
|
// it separately.
|
|
|
this._months = +months + |
|
|
this._months = +months + |
|
|
|
|
|
quarters * 3 + |
|
|
years * 12; |
|
|
years * 12; |
|
|
|
|
|
|
|
|
this._data = {}; |
|
|
this._data = {}; |
|
@ -20220,34 +20242,23 @@ else { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// helper function for _.addTime and _.subtractTime
|
|
|
// helper function for _.addTime and _.subtractTime
|
|
|
function addOrSubtractDurationFromMoment(mom, duration, isAdding, ignoreUpdateOffset) { |
|
|
|
|
|
|
|
|
function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { |
|
|
var milliseconds = duration._milliseconds, |
|
|
var milliseconds = duration._milliseconds, |
|
|
days = duration._days, |
|
|
days = duration._days, |
|
|
months = duration._months, |
|
|
|
|
|
minutes, |
|
|
|
|
|
hours; |
|
|
|
|
|
|
|
|
months = duration._months; |
|
|
|
|
|
updateOffset = updateOffset == null ? true : updateOffset; |
|
|
|
|
|
|
|
|
if (milliseconds) { |
|
|
if (milliseconds) { |
|
|
mom._d.setTime(+mom._d + milliseconds * isAdding); |
|
|
mom._d.setTime(+mom._d + milliseconds * isAdding); |
|
|
} |
|
|
} |
|
|
// store the minutes and hours so we can restore them
|
|
|
|
|
|
if (days || months) { |
|
|
|
|
|
minutes = mom.minute(); |
|
|
|
|
|
hours = mom.hour(); |
|
|
|
|
|
} |
|
|
|
|
|
if (days) { |
|
|
if (days) { |
|
|
mom.date(mom.date() + days * isAdding); |
|
|
|
|
|
|
|
|
rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); |
|
|
} |
|
|
} |
|
|
if (months) { |
|
|
if (months) { |
|
|
mom.month(mom.month() + months * isAdding); |
|
|
|
|
|
|
|
|
rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); |
|
|
} |
|
|
} |
|
|
if (milliseconds && !ignoreUpdateOffset) { |
|
|
|
|
|
moment.updateOffset(mom); |
|
|
|
|
|
} |
|
|
|
|
|
// restore the minutes and hours after possibly changing dst
|
|
|
|
|
|
if (days || months) { |
|
|
|
|
|
mom.minute(minutes); |
|
|
|
|
|
mom.hour(hours); |
|
|
|
|
|
|
|
|
if (updateOffset) { |
|
|
|
|
|
moment.updateOffset(mom, days || months); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -20362,6 +20373,10 @@ else { |
|
|
return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); |
|
|
return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function weeksInYear(year, dow, doy) { |
|
|
|
|
|
return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function daysInYear(year) { |
|
|
function daysInYear(year) { |
|
|
return isLeapYear(year) ? 366 : 365; |
|
|
return isLeapYear(year) ? 366 : 365; |
|
|
} |
|
|
} |
|
@ -20752,6 +20767,8 @@ else { |
|
|
function getParseRegexForToken(token, config) { |
|
|
function getParseRegexForToken(token, config) { |
|
|
var a, strict = config._strict; |
|
|
var a, strict = config._strict; |
|
|
switch (token) { |
|
|
switch (token) { |
|
|
|
|
|
case 'Q': |
|
|
|
|
|
return parseTokenOneDigit; |
|
|
case 'DDDD': |
|
|
case 'DDDD': |
|
|
return parseTokenThreeDigits; |
|
|
return parseTokenThreeDigits; |
|
|
case 'YYYY': |
|
|
case 'YYYY': |
|
@ -20820,6 +20837,8 @@ else { |
|
|
case 'e': |
|
|
case 'e': |
|
|
case 'E': |
|
|
case 'E': |
|
|
return parseTokenOneOrTwoDigits; |
|
|
return parseTokenOneOrTwoDigits; |
|
|
|
|
|
case 'Do': |
|
|
|
|
|
return parseTokenOrdinal; |
|
|
default : |
|
|
default : |
|
|
a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); |
|
|
a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); |
|
|
return a; |
|
|
return a; |
|
@ -20841,6 +20860,12 @@ else { |
|
|
var a, datePartArray = config._a; |
|
|
var a, datePartArray = config._a; |
|
|
|
|
|
|
|
|
switch (token) { |
|
|
switch (token) { |
|
|
|
|
|
// QUARTER
|
|
|
|
|
|
case 'Q': |
|
|
|
|
|
if (input != null) { |
|
|
|
|
|
datePartArray[MONTH] = (toInt(input) - 1) * 3; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
// MONTH
|
|
|
// MONTH
|
|
|
case 'M' : // fall through to MM
|
|
|
case 'M' : // fall through to MM
|
|
|
case 'MM' : |
|
|
case 'MM' : |
|
@ -20865,6 +20890,11 @@ else { |
|
|
datePartArray[DATE] = toInt(input); |
|
|
datePartArray[DATE] = toInt(input); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
|
|
|
case 'Do' : |
|
|
|
|
|
if (input != null) { |
|
|
|
|
|
datePartArray[DATE] = toInt(parseInt(input, 10)); |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
// DAY OF YEAR
|
|
|
// DAY OF YEAR
|
|
|
case 'DDD' : // fall through to DDDD
|
|
|
case 'DDD' : // fall through to DDDD
|
|
|
case 'DDDD' : |
|
|
case 'DDDD' : |
|
@ -20875,7 +20905,7 @@ else { |
|
|
break; |
|
|
break; |
|
|
// YEAR
|
|
|
// YEAR
|
|
|
case 'YY' : |
|
|
case 'YY' : |
|
|
datePartArray[YEAR] = toInt(input) + (toInt(input) > 68 ? 1900 : 2000); |
|
|
|
|
|
|
|
|
datePartArray[YEAR] = moment.parseTwoDigitYear(input); |
|
|
break; |
|
|
break; |
|
|
case 'YYYY' : |
|
|
case 'YYYY' : |
|
|
case 'YYYYY' : |
|
|
case 'YYYYY' : |
|
@ -20964,9 +20994,9 @@ else { |
|
|
//compute day of the year from weeks and weekdays
|
|
|
//compute day of the year from weeks and weekdays
|
|
|
if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { |
|
|
if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { |
|
|
fixYear = function (val) { |
|
|
fixYear = function (val) { |
|
|
var int_val = parseInt(val, 10); |
|
|
|
|
|
|
|
|
var intVal = parseInt(val, 10); |
|
|
return val ? |
|
|
return val ? |
|
|
(val.length < 3 ? (int_val > 68 ? 1900 + int_val : 2000 + int_val) : int_val) : |
|
|
|
|
|
|
|
|
(val.length < 3 ? (intVal > 68 ? 1900 + intVal : 2000 + intVal) : intVal) : |
|
|
(config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]); |
|
|
(config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
@ -21202,7 +21232,7 @@ else { |
|
|
makeDateFromStringAndFormat(config); |
|
|
makeDateFromStringAndFormat(config); |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
config._d = new Date(string); |
|
|
|
|
|
|
|
|
moment.createFromInputFallback(config); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -21223,8 +21253,11 @@ else { |
|
|
config._d = new Date(+input); |
|
|
config._d = new Date(+input); |
|
|
} else if (typeof(input) === 'object') { |
|
|
} else if (typeof(input) === 'object') { |
|
|
dateFromObject(config); |
|
|
dateFromObject(config); |
|
|
} else { |
|
|
|
|
|
|
|
|
} else if (typeof(input) === 'number') { |
|
|
|
|
|
// from milliseconds
|
|
|
config._d = new Date(input); |
|
|
config._d = new Date(input); |
|
|
|
|
|
} else { |
|
|
|
|
|
moment.createFromInputFallback(config); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -21351,7 +21384,7 @@ else { |
|
|
var input = config._i, |
|
|
var input = config._i, |
|
|
format = config._f; |
|
|
format = config._f; |
|
|
|
|
|
|
|
|
if (input === null) { |
|
|
|
|
|
|
|
|
if (input === null || (format === undefined && input === '')) { |
|
|
return moment.invalid({nullInput: true}); |
|
|
return moment.invalid({nullInput: true}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -21397,6 +21430,17 @@ else { |
|
|
return makeMoment(c); |
|
|
return makeMoment(c); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
moment.suppressDeprecationWarnings = false; |
|
|
|
|
|
|
|
|
|
|
|
moment.createFromInputFallback = deprecate( |
|
|
|
|
|
"moment construction falls back to js Date. This is " + |
|
|
|
|
|
"discouraged and will be removed in upcoming major " + |
|
|
|
|
|
"release. Please refer to " + |
|
|
|
|
|
"https://github.com/moment/moment/issues/1407 for more info.", |
|
|
|
|
|
function (config) { |
|
|
|
|
|
config._d = new Date(config._i); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
// creating with utc
|
|
|
// creating with utc
|
|
|
moment.utc = function (input, format, lang, strict) { |
|
|
moment.utc = function (input, format, lang, strict) { |
|
|
var c; |
|
|
var c; |
|
@ -21493,6 +21537,10 @@ else { |
|
|
// default format
|
|
|
// default format
|
|
|
moment.defaultFormat = isoFormat; |
|
|
moment.defaultFormat = isoFormat; |
|
|
|
|
|
|
|
|
|
|
|
// Plugins that add properties should also add the key here (null value),
|
|
|
|
|
|
// so we can properly clone ourselves.
|
|
|
|
|
|
moment.momentProperties = momentProperties; |
|
|
|
|
|
|
|
|
// This function will be called whenever a moment is mutated.
|
|
|
// This function will be called whenever a moment is mutated.
|
|
|
// It is intended to keep the offset in sync with the timezone.
|
|
|
// It is intended to keep the offset in sync with the timezone.
|
|
|
moment.updateOffset = function () {}; |
|
|
moment.updateOffset = function () {}; |
|
@ -21556,8 +21604,12 @@ else { |
|
|
return m; |
|
|
return m; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
moment.parseZone = function (input) { |
|
|
|
|
|
return moment(input).parseZone(); |
|
|
|
|
|
|
|
|
moment.parseZone = function () { |
|
|
|
|
|
return moment.apply(null, arguments).parseZone(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
moment.parseTwoDigitYear = function (input) { |
|
|
|
|
|
return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
/************************************ |
|
|
/************************************ |
|
@ -21744,29 +21796,7 @@ else { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
month : function (input) { |
|
|
|
|
|
var utc = this._isUTC ? 'UTC' : '', |
|
|
|
|
|
dayOfMonth; |
|
|
|
|
|
|
|
|
|
|
|
if (input != null) { |
|
|
|
|
|
if (typeof input === 'string') { |
|
|
|
|
|
input = this.lang().monthsParse(input); |
|
|
|
|
|
if (typeof input !== 'number') { |
|
|
|
|
|
return this; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
dayOfMonth = this.date(); |
|
|
|
|
|
this.date(1); |
|
|
|
|
|
this._d['set' + utc + 'Month'](input); |
|
|
|
|
|
this.date(Math.min(dayOfMonth, this.daysInMonth())); |
|
|
|
|
|
|
|
|
|
|
|
moment.updateOffset(this); |
|
|
|
|
|
return this; |
|
|
|
|
|
} else { |
|
|
|
|
|
return this._d['get' + utc + 'Month'](); |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
month : makeAccessor('Month', true), |
|
|
|
|
|
|
|
|
startOf: function (units) { |
|
|
startOf: function (units) { |
|
|
units = normalizeUnits(units); |
|
|
units = normalizeUnits(units); |
|
@ -21776,6 +21806,7 @@ else { |
|
|
case 'year': |
|
|
case 'year': |
|
|
this.month(0); |
|
|
this.month(0); |
|
|
/* falls through */ |
|
|
/* falls through */ |
|
|
|
|
|
case 'quarter': |
|
|
case 'month': |
|
|
case 'month': |
|
|
this.date(1); |
|
|
this.date(1); |
|
|
/* falls through */ |
|
|
/* falls through */ |
|
@ -21802,6 +21833,11 @@ else { |
|
|
this.isoWeekday(1); |
|
|
this.isoWeekday(1); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// quarters are also special
|
|
|
|
|
|
if (units === 'quarter') { |
|
|
|
|
|
this.month(Math.floor(this.month() / 3) * 3); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return this; |
|
|
return this; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
@ -21835,7 +21871,17 @@ else { |
|
|
return other > this ? this : other; |
|
|
return other > this ? this : other; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
zone : function (input) { |
|
|
|
|
|
|
|
|
// keepTime = true means only change the timezone, without affecting
|
|
|
|
|
|
// the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200
|
|
|
|
|
|
// It is possible that 5:31:26 doesn't exist int zone +0200, so we
|
|
|
|
|
|
// adjust the time as needed, to be valid.
|
|
|
|
|
|
//
|
|
|
|
|
|
// Keeping the time actually adds/subtracts (one hour)
|
|
|
|
|
|
// from the actual represented time. That is why we call updateOffset
|
|
|
|
|
|
// a second time. In case it wants us to change the offset again
|
|
|
|
|
|
// _changeInProgress == true case, then we have to adjust, because
|
|
|
|
|
|
// there is no such time in the given timezone.
|
|
|
|
|
|
zone : function (input, keepTime) { |
|
|
var offset = this._offset || 0; |
|
|
var offset = this._offset || 0; |
|
|
if (input != null) { |
|
|
if (input != null) { |
|
|
if (typeof input === "string") { |
|
|
if (typeof input === "string") { |
|
@ -21847,7 +21893,14 @@ else { |
|
|
this._offset = input; |
|
|
this._offset = input; |
|
|
this._isUTC = true; |
|
|
this._isUTC = true; |
|
|
if (offset !== input) { |
|
|
if (offset !== input) { |
|
|
addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, true); |
|
|
|
|
|
|
|
|
if (!keepTime || this._changeInProgress) { |
|
|
|
|
|
addOrSubtractDurationFromMoment(this, |
|
|
|
|
|
moment.duration(offset - input, 'm'), 1, false); |
|
|
|
|
|
} else if (!this._changeInProgress) { |
|
|
|
|
|
this._changeInProgress = true; |
|
|
|
|
|
moment.updateOffset(this, true); |
|
|
|
|
|
this._changeInProgress = null; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
return this._isUTC ? offset : this._d.getTimezoneOffset(); |
|
|
return this._isUTC ? offset : this._d.getTimezoneOffset(); |
|
@ -21892,8 +21945,8 @@ else { |
|
|
return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); |
|
|
return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
quarter : function () { |
|
|
|
|
|
return Math.ceil((this.month() + 1.0) / 3.0); |
|
|
|
|
|
|
|
|
quarter : function (input) { |
|
|
|
|
|
return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
weekYear : function (input) { |
|
|
weekYear : function (input) { |
|
@ -21928,6 +21981,15 @@ else { |
|
|
return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); |
|
|
return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
isoWeeksInYear : function () { |
|
|
|
|
|
return weeksInYear(this.year(), 1, 4); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
weeksInYear : function () { |
|
|
|
|
|
var weekInfo = this._lang._week; |
|
|
|
|
|
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
get : function (units) { |
|
|
get : function (units) { |
|
|
units = normalizeUnits(units); |
|
|
units = normalizeUnits(units); |
|
|
return this[units](); |
|
|
return this[units](); |
|
@ -21954,33 +22016,68 @@ else { |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
// helper for adding shortcuts
|
|
|
|
|
|
function makeGetterAndSetter(name, key) { |
|
|
|
|
|
moment.fn[name] = moment.fn[name + 's'] = function (input) { |
|
|
|
|
|
var utc = this._isUTC ? 'UTC' : ''; |
|
|
|
|
|
if (input != null) { |
|
|
|
|
|
this._d['set' + utc + key](input); |
|
|
|
|
|
moment.updateOffset(this); |
|
|
|
|
|
|
|
|
function rawMonthSetter(mom, value) { |
|
|
|
|
|
var dayOfMonth; |
|
|
|
|
|
|
|
|
|
|
|
// TODO: Move this out of here!
|
|
|
|
|
|
if (typeof value === 'string') { |
|
|
|
|
|
value = mom.lang().monthsParse(value); |
|
|
|
|
|
// TODO: Another silent failure?
|
|
|
|
|
|
if (typeof value !== 'number') { |
|
|
|
|
|
return mom; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
dayOfMonth = Math.min(mom.date(), |
|
|
|
|
|
daysInMonth(mom.year(), value)); |
|
|
|
|
|
mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); |
|
|
|
|
|
return mom; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function rawGetter(mom, unit) { |
|
|
|
|
|
return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function rawSetter(mom, unit, value) { |
|
|
|
|
|
if (unit === 'Month') { |
|
|
|
|
|
return rawMonthSetter(mom, value); |
|
|
|
|
|
} else { |
|
|
|
|
|
return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function makeAccessor(unit, keepTime) { |
|
|
|
|
|
return function (value) { |
|
|
|
|
|
if (value != null) { |
|
|
|
|
|
rawSetter(this, unit, value); |
|
|
|
|
|
moment.updateOffset(this, keepTime); |
|
|
return this; |
|
|
return this; |
|
|
} else { |
|
|
} else { |
|
|
return this._d['get' + utc + key](); |
|
|
|
|
|
|
|
|
return rawGetter(this, unit); |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds)
|
|
|
|
|
|
for (i = 0; i < proxyGettersAndSetters.length; i ++) { |
|
|
|
|
|
makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear')
|
|
|
|
|
|
makeGetterAndSetter('year', 'FullYear'); |
|
|
|
|
|
|
|
|
moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); |
|
|
|
|
|
moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); |
|
|
|
|
|
moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); |
|
|
|
|
|
// Setting the hour should keep the time, because the user explicitly
|
|
|
|
|
|
// specified which hour he wants. So trying to maintain the same hour (in
|
|
|
|
|
|
// a new timezone) makes sense. Adding/subtracting hours does not follow
|
|
|
|
|
|
// this rule.
|
|
|
|
|
|
moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); |
|
|
|
|
|
// moment.fn.month is defined separately
|
|
|
|
|
|
moment.fn.date = makeAccessor('Date', true); |
|
|
|
|
|
moment.fn.dates = deprecate("dates accessor is deprecated. Use date instead.", makeAccessor('Date', true)); |
|
|
|
|
|
moment.fn.year = makeAccessor('FullYear', true); |
|
|
|
|
|
moment.fn.years = deprecate("years accessor is deprecated. Use year instead.", makeAccessor('FullYear', true)); |
|
|
|
|
|
|
|
|
// add plural methods
|
|
|
// add plural methods
|
|
|
moment.fn.days = moment.fn.day; |
|
|
moment.fn.days = moment.fn.day; |
|
|
moment.fn.months = moment.fn.month; |
|
|
moment.fn.months = moment.fn.month; |
|
|
moment.fn.weeks = moment.fn.week; |
|
|
moment.fn.weeks = moment.fn.week; |
|
|
moment.fn.isoWeeks = moment.fn.isoWeek; |
|
|
moment.fn.isoWeeks = moment.fn.isoWeek; |
|
|
|
|
|
moment.fn.quarters = moment.fn.quarter; |
|
|
|
|
|
|
|
|
// add aliased format methods
|
|
|
// add aliased format methods
|
|
|
moment.fn.toJSON = moment.fn.toISOString; |
|
|
moment.fn.toJSON = moment.fn.toISOString; |
|
@ -22156,45 +22253,36 @@ else { |
|
|
Exposing Moment |
|
|
Exposing Moment |
|
|
************************************/ |
|
|
************************************/ |
|
|
|
|
|
|
|
|
function makeGlobal(deprecate) { |
|
|
|
|
|
var warned = false, local_moment = moment; |
|
|
|
|
|
|
|
|
function makeGlobal(shouldDeprecate) { |
|
|
/*global ender:false */ |
|
|
/*global ender:false */ |
|
|
if (typeof ender !== 'undefined') { |
|
|
if (typeof ender !== 'undefined') { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
// here, `this` means `window` in the browser, or `global` on the server
|
|
|
|
|
|
// add `moment` as a global object via a string identifier,
|
|
|
|
|
|
// for Closure Compiler "advanced" mode
|
|
|
|
|
|
if (deprecate) { |
|
|
|
|
|
global.moment = function () { |
|
|
|
|
|
if (!warned && console && console.warn) { |
|
|
|
|
|
warned = true; |
|
|
|
|
|
console.warn( |
|
|
|
|
|
"Accessing Moment through the global scope is " + |
|
|
|
|
|
"deprecated, and will be removed in an upcoming " + |
|
|
|
|
|
"release."); |
|
|
|
|
|
} |
|
|
|
|
|
return local_moment.apply(null, arguments); |
|
|
|
|
|
}; |
|
|
|
|
|
extend(global.moment, local_moment); |
|
|
|
|
|
|
|
|
oldGlobalMoment = globalScope.moment; |
|
|
|
|
|
if (shouldDeprecate) { |
|
|
|
|
|
globalScope.moment = deprecate( |
|
|
|
|
|
"Accessing Moment through the global scope is " + |
|
|
|
|
|
"deprecated, and will be removed in an upcoming " + |
|
|
|
|
|
"release.", |
|
|
|
|
|
moment); |
|
|
} else { |
|
|
} else { |
|
|
global['moment'] = moment; |
|
|
|
|
|
|
|
|
globalScope.moment = moment; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// CommonJS module is defined
|
|
|
// CommonJS module is defined
|
|
|
if (hasModule) { |
|
|
if (hasModule) { |
|
|
module.exports = moment; |
|
|
module.exports = moment; |
|
|
makeGlobal(true); |
|
|
|
|
|
} else if (typeof define === "function" && define.amd) { |
|
|
} else if (typeof define === "function" && define.amd) { |
|
|
define("moment", function (require, exports, module) { |
|
|
define("moment", function (require, exports, module) { |
|
|
if (module.config && module.config() && module.config().noGlobal !== true) { |
|
|
|
|
|
// If user provided noGlobal, he is aware of global
|
|
|
|
|
|
makeGlobal(module.config().noGlobal === undefined); |
|
|
|
|
|
|
|
|
if (module.config && module.config() && module.config().noGlobal === true) { |
|
|
|
|
|
// release the global variable
|
|
|
|
|
|
globalScope.moment = oldGlobalMoment; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return moment; |
|
|
return moment; |
|
|
}); |
|
|
}); |
|
|
|
|
|
makeGlobal(true); |
|
|
} else { |
|
|
} else { |
|
|
makeGlobal(); |
|
|
makeGlobal(); |
|
|
} |
|
|
} |
|
|