302 lines
12 KiB
JavaScript
302 lines
12 KiB
JavaScript
Type.registerNamespace("Sys.Extended.UI");
|
|
|
|
Sys.Extended.UI.TimeSpan = function() {
|
|
// Represents a period of time
|
|
if (arguments.length == 0) this._ctor$0.apply(this, arguments);
|
|
else if (arguments.length == 1) this._ctor$1.apply(this, arguments);
|
|
else if (arguments.length == 3) this._ctor$2.apply(this, arguments);
|
|
else if (arguments.length == 4) this._ctor$3.apply(this, arguments);
|
|
else if (arguments.length == 5) this._ctor$4.apply(this, arguments);
|
|
else throw Error.parameterCount();
|
|
}
|
|
Sys.Extended.UI.TimeSpan.prototype = {
|
|
|
|
_ctor$0 : function() {
|
|
this._ticks = 0;
|
|
},
|
|
_ctor$1 : function(ticks) {
|
|
this._ctor$0();
|
|
this._ticks = ticks;
|
|
},
|
|
_ctor$2 : function(hours, minutes, seconds) {
|
|
this._ctor$0();
|
|
this._ticks =
|
|
(hours * Sys.Extended.UI.TimeSpan.TicksPerHour) +
|
|
(minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
|
|
(seconds * Sys.Extended.UI.TimeSpan.TicksPerSecond);
|
|
},
|
|
_ctor$3 : function(days, hours, minutes, seconds) {
|
|
this._ctor$0();
|
|
this._ticks =
|
|
(days * Sys.Extended.UI.TimeSpan.TicksPerDay) +
|
|
(hours * Sys.Extended.UI.TimeSpan.TicksPerHour) +
|
|
(minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
|
|
(seconds * Sys.Extended.UI.TimeSpan.TicksPerSecond);
|
|
},
|
|
_ctor$4 : function(days, hours, minutes, seconds, milliseconds) {
|
|
this._ctor$0();
|
|
this._ticks =
|
|
(days * Sys.Extended.UI.TimeSpan.TicksPerDay) +
|
|
(hours * Sys.Extended.UI.TimeSpan.TicksPerHour) +
|
|
(minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
|
|
(seconds * Sys.Extended.UI.TimeSpan.TicksPerSecond) +
|
|
(milliseconds * Sys.Extended.UI.TimeSpan.TicksPerMillisecond);
|
|
},
|
|
|
|
getDays : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerDay);
|
|
},
|
|
getHours : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerHour) % 24;
|
|
},
|
|
getMinutes : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMinute) % 60;
|
|
},
|
|
getSeconds : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerSecond) % 60;
|
|
},
|
|
getMilliseconds : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMillisecond) % 1000;
|
|
},
|
|
getDuration : function() {
|
|
return new Sys.Extended.UI.TimeSpan(Math.abs(this._ticks));
|
|
},
|
|
getTicks : function() {
|
|
return this._ticks;
|
|
},
|
|
getTotalDays : function() {
|
|
Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerDay);
|
|
},
|
|
getTotalHours : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerHour);
|
|
},
|
|
getTotalMinutes : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMinute);
|
|
},
|
|
getTotalSeconds : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerSecond);
|
|
},
|
|
getTotalMilliseconds : function() {
|
|
return Math.floor(this._ticks / Sys.Extended.UI.TimeSpan.TicksPerMillisecond);
|
|
},
|
|
add : function(value) {
|
|
// Adds the supplied TimeSpan to this TimeSpan
|
|
return new Sys.Extended.UI.TimeSpan(this._ticks + value.getTicks());
|
|
},
|
|
subtract : function(value) {
|
|
// Subtracts the supplied TimeSpan to this TimeSpan
|
|
return new Sys.Extended.UI.TimeSpan(this._ticks - value.getTicks());
|
|
},
|
|
negate : function() {
|
|
// Negates the TimeSpan
|
|
return new Sys.Extended.UI.TimeSpan(-this._ticks);
|
|
},
|
|
equals : function(value) {
|
|
// Whether this TimeSpan equals another TimeSpan
|
|
return this._ticks == value.getTicks();
|
|
},
|
|
compareTo : function(value) {
|
|
// Whether this TimeSpan greater or less than another TimeSpan
|
|
if(this._ticks > value.getTicks())
|
|
return 1;
|
|
else if(this._ticks < value.getTicks())
|
|
return -1;
|
|
else
|
|
return 0;
|
|
},
|
|
toString : function() {
|
|
return this.format("F");
|
|
},
|
|
format : function(format) {
|
|
if (!format) {
|
|
format = "F";
|
|
}
|
|
if (format.length == 1) {
|
|
switch (format) {
|
|
case "t": format = Sys.Extended.UI.TimeSpan.ShortTimeSpanPattern; break;
|
|
case "T": format = Sys.Extended.UI.TimeSpan.LongTimeSpanPattern; break;
|
|
case "F": format = Sys.Extended.UI.TimeSpan.FullTimeSpanPattern; break;
|
|
default: throw Error.createError(String.format(Sys.Extended.UI.Resources.Common_DateTime_InvalidTimeSpan, format));
|
|
}
|
|
}
|
|
var regex = /dd|d|hh|h|mm|m|ss|s|nnnn|nnn|nn|n/g;
|
|
var builder = new Sys.StringBuilder();
|
|
var ticks = this._ticks;
|
|
if (ticks < 0) {
|
|
builder.append("-");
|
|
ticks = -ticks;
|
|
}
|
|
for (;;) {
|
|
var index = regex.lastIndex;
|
|
var ar = regex.exec(format);
|
|
builder.append(format.slice(index, ar ? ar.index : format.length));
|
|
if (!ar) break;
|
|
switch (ar[0]) {
|
|
case "dd":
|
|
case "d":
|
|
builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerDay, ar[0].length, '0')));
|
|
break;
|
|
case "hh":
|
|
case "h":
|
|
builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerHour) % 24, ar[0].length, '0'));
|
|
break;
|
|
case "mm":
|
|
case "m":
|
|
builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerMinute) % 60, ar[0].length, '0'));
|
|
break;
|
|
case "ss":
|
|
case "s":
|
|
builder.append($common.padLeft(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerSecond) % 60, ar[0].length, '0'));
|
|
break;
|
|
case "nnnn":
|
|
case "nnn":
|
|
case "nn":
|
|
case "n":
|
|
builder.append($common.padRight(Math.floor(ticks / Sys.Extended.UI.TimeSpan.TicksPerMillisecond) % 1000, ar[0].length, '0', true));
|
|
break;
|
|
default:
|
|
Sys.Debug.assert(false);
|
|
}
|
|
}
|
|
return builder.toString();
|
|
}
|
|
}
|
|
Sys.Extended.UI.TimeSpan.parse = function(text) {
|
|
// Parses a text value into a TimeSpan
|
|
var parts = text.split(":");
|
|
var d = 0;
|
|
var h = 0;
|
|
var m = 0;
|
|
var s = 0;
|
|
var n = 0;
|
|
var ticks = 0;
|
|
switch(parts.length) {
|
|
case 1:
|
|
if (parts[0].indexOf(".") != -1) {
|
|
var parts2 = parts[0].split(".");
|
|
s = parseInt(parts2[0]);
|
|
n = parseInt(parts2[1]);
|
|
} else {
|
|
ticks = parseInt(parts[0]);
|
|
}
|
|
break;
|
|
case 2:
|
|
h = parseInt(parts[0]);
|
|
m = parseInt(parts[1]);
|
|
break;
|
|
case 3:
|
|
h = parseInt(parts[0]);
|
|
m = parseInt(parts[1]);
|
|
if (parts[2].indexOf(".") != -1) {
|
|
var parts2 = parts[2].split(".");
|
|
s = parseInt(parts2[0]);
|
|
n = parseInt(parts2[1]);
|
|
} else {
|
|
s = parseInt(parts[2]);
|
|
}
|
|
break;
|
|
case 4:
|
|
d = parseInt(parts[0]);
|
|
h = parseInt(parts[1]);
|
|
m = parseInt(parts[2]);
|
|
if (parts[3].indexOf(".") != -1) {
|
|
var parts2 = parts[3].split(".");
|
|
s = parseInt(parts2[0]);
|
|
n = parseInt(parts2[1]);
|
|
} else {
|
|
s = parseInt(parts[3]);
|
|
}
|
|
break;
|
|
}
|
|
ticks += (d * Sys.Extended.UI.TimeSpan.TicksPerDay) +
|
|
(h * Sys.Extended.UI.TimeSpan.TicksPerHour) +
|
|
(m * Sys.Extended.UI.TimeSpan.TicksPerMinute) +
|
|
(s * Sys.Extended.UI.TimeSpan.TicksPerSecond) +
|
|
(n * Sys.Extended.UI.TimeSpan.TicksPerMillisecond);
|
|
if(!isNaN(ticks)) {
|
|
return new Sys.Extended.UI.TimeSpan(ticks);
|
|
}
|
|
throw Error.create(Sys.Extended.UI.Resources.Common_DateTime_InvalidFormat);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.fromTicks = function(ticks) {
|
|
// Creates a TimeSpan for the specified number of ticks
|
|
return new Sys.Extended.UI.TimeSpan(ticks);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.fromDays = function(days) {
|
|
// Creates a TimeSpan for the specified number of days
|
|
return new Sys.Extended.UI.TimeSpan(days * Sys.Extended.UI.TimeSpan.TicksPerDay);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.fromHours = function(hours) {
|
|
// Creates a TimeSpan for the specified number of hours
|
|
return new Sys.Extended.UI.TimeSpan(hours * Sys.Extended.UI.TimeSpan.TicksPerHour);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.fromMinutes = function(minutes) {
|
|
// Creates a TimeSpan for the specified number of minutes
|
|
return new Sys.Extended.UI.TimeSpan(minutes * Sys.Extended.UI.TimeSpan.TicksPerMinute);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.fromSeconds = function(seconds) {
|
|
// Creates a TimeSpan for the specified number of seconds
|
|
return new Sys.Extended.UI.TimeSpan(minutes * Sys.Extended.UI.TimeSpan.TicksPerSecond);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.fromMilliseconds = function(milliseconds) {
|
|
// Creates a TimeSpan for the specified number of milliseconds
|
|
return new Sys.Extended.UI.TimeSpan(minutes * Sys.Extended.UI.TimeSpan.TicksPerMillisecond);
|
|
}
|
|
Sys.Extended.UI.TimeSpan.TicksPerDay = 864000000000;
|
|
Sys.Extended.UI.TimeSpan.TicksPerHour = 36000000000;
|
|
Sys.Extended.UI.TimeSpan.TicksPerMinute = 600000000;
|
|
Sys.Extended.UI.TimeSpan.TicksPerSecond = 10000000;
|
|
Sys.Extended.UI.TimeSpan.TicksPerMillisecond = 10000;
|
|
Sys.Extended.UI.TimeSpan.FullTimeSpanPattern = "dd:hh:mm:ss.nnnn";
|
|
Sys.Extended.UI.TimeSpan.ShortTimeSpanPattern = "hh:mm";
|
|
Sys.Extended.UI.TimeSpan.LongTimeSpanPattern = "hh:mm:ss";
|
|
|
|
Date.prototype.getTimeOfDay = function Date$getTimeOfDay() {
|
|
// Gets a TimeSpan representing the current time of the Date
|
|
return new Sys.Extended.UI.TimeSpan(
|
|
0,
|
|
this.getHours(),
|
|
this.getMinutes(),
|
|
this.getSeconds(),
|
|
this.getMilliseconds());
|
|
}
|
|
Date.prototype.getDateOnly = function Date$getDateOnly() {
|
|
// Gets a Date representing the Date only part of the Date and Adjusts for DST switch at midnight.
|
|
var tempDate = new Date(this.getFullYear(), this.getMonth(), this.getDate());
|
|
|
|
if (!((this.getMonth() === tempDate.getMonth()) && (this.getDate() === tempDate.getDate()))) {
|
|
|
|
tempDate.setMinutes(120);
|
|
|
|
}
|
|
|
|
return tempDate;
|
|
}
|
|
Date.prototype.add = function Date$add(span) {
|
|
// Adds a TimeSpan to the current Date
|
|
// param "span"is the amount of time to add to the date
|
|
|
|
return new Date(this.getTime() + span.getTotalMilliseconds());
|
|
}
|
|
Date.prototype.subtract = function Date$subtract(span) {
|
|
// Subtracts a TimeSpan to the current Date
|
|
// param "span" is the amount of time to subtract from the date
|
|
return this.add(span.negate());
|
|
}
|
|
Date.prototype.getTicks = function Date$getTicks() {
|
|
return this.getTime() * Sys.Extended.UI.TimeSpan.TicksPerMillisecond;
|
|
}
|
|
|
|
Sys.Extended.UI.FirstDayOfWeek = function() {
|
|
}
|
|
Sys.Extended.UI.FirstDayOfWeek.prototype = {
|
|
Sunday : 0,
|
|
Monday : 1,
|
|
Tuesday : 2,
|
|
Wednesday : 3,
|
|
Thursday : 4,
|
|
Friday : 5,
|
|
Saturday : 6,
|
|
Default : 7
|
|
}
|
|
Sys.Extended.UI.FirstDayOfWeek.registerEnum("Sys.Extended.UI.FirstDayOfWeek"); |