A simple HTML Page that runs all your unit tests (Only Is.Equal is implemented but more are coming).The web app should be build as MVC or at least have a distinct Model (set of .js files).
A simple HTML Page that runs all your unit tests (Only Is.Equal is implemented but more are coming).function Person(oInit) {
this.Clear();
if (typeof oInit === "object") { this.Init(oInit); }
this.Init(oInit)
}
Person.sId = "Party";
Person.sColor = "#00f";
Person.sIcon = "../img/user_suit.png";
Person.prototype.Clear = function () {
this.nkPer = 0;
this.rvPer = 0;
this.sPerLNm = "";
this.sPerEml = "";
};
String.prototype.PadLeft = function (nLen, sPad) {
if (typeof sPad !== "string") sPad = " ";
if (typeof nLen !== "number") nLen = 2;
var sResult = this;
while (sResult.length < nLen) sResult = sPad + sResult;
return sResult;
};
String.prototype.PadRight = function(sPad, nLen) {
if (typeof sPad !== "string") sPad = " ";
if (typeof nLen !== "number") nLen = 2;
var sResult = this;
while (sResult.length < nLen) sResult += sPad;
return sResult;
};
String.prototype.Trim = function () {
return this.replace(/^\s+|\s+$/g, "");
};
String.prototype.TrimLeft = function () {
return this.replace(/^\s+/, "");
};
String.prototype.TrimRight = function () {
return this.replace(/\s+$/, "");
};
Date.prototype.Format = function (sFormat) {
if (typeof sFormat !== "string")
return this.getFullYear().toString() +
(this.getMonth() + 1).toString().PadLeft("0", 2) +
this.getDate().toString().PadLeft("0", 2);
var that = this;
return sFormat.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?/g,
function (sFormat) {
switch (sFormat) {
case "yyyy": return that.getFullYear().toString();
case "yy": return that.getFullYear().toString().substring(2, 4);
case "MM": return (that.getMonth() + 1).toString().PadLeft(2, "0");
case "dd": return that.getDate().toString().PadLeft(2, "0");
case "hh": return (that.getHours() <= 12 ? that.getHours() :
(that.getHours() - 12)).toString().PadLeft(2, "0");
case "HH": return that.getHours().toString().PadLeft(2, "0");
case "mm": return that.getMinutes().toString().PadLeft(2, "0");
case "ss": return that.getSeconds().toString().PadLeft(2, "0");
case "M": return (that.getMonth() + 1).toString();
case "d": return that.getDate().toString();
case "h": return (that.getHours() <= 12 ? that.getHours() :
(that.getHours() - 12)).toString();
case "H": return that.getHours().toString();
case "m": return tht.getMinutes().toString();
case "s": return that.getSeconds().toString();
}
});
};
addEventListener and IE7's market share is diminishing (goodle analytics tell me that ie7 and older is at 14% and loses 2% per month).ins.oUser.eUsrLangStopwatch class (click "Start", wait some seconds, click "Stop":
"use strict";
ins.Stopwatch = function () {
var dFr, dTo, that = this;
this.nMilliseconds;
this.nSeconds;
this.nMinutes;
this.nHours;
this.nDays;
var _bRun = false;
this.bRun = function () { return _bRun; };
this.Start = function () {
_bRun = true;
this.Reset();
dFr = new Date();
};
this.Stop = function () {
_bRun = false;
if (!dFr) {
return Reset();
} else {
dTo = new Date();
return Calc();
}
};
this.Reset = function () {
dFr = dTo = null;
this.nMilliseconds =
this.nSeconds =
this.nMinutes =
this.nHours =
this.nDays = 0;
return 0;
};
this.toString = function (sFormat) {
if (typeof sFormat !== "string") sFormat = "m:s.f";
return sFormat.replace(/d/g, this.nDays.toString()).
replace(/h/g, this.nHours.toString().PadLeft(2, "0")).
replace(/m/g, this.nMinutes.toString().PadLeft(2, "0")).
replace(/s/g, this.nSeconds.toString().PadLeft(2, "0")).
replace(/f/g, this.nMilliseconds.toString().PadLeft(3,"0"));
};
var Calc = function () {
if (dFr && dTo && dFr.getTime() < dTo.getTime()) {
var nTime = dTo.getTime() - dFr.getTime()
that.nMilliseconds = Math.round(nTime);
that.nSeconds = Math.floor(that.nMilliseconds / 1000);
that.nMilliseconds -= that.nSeconds * 1000;
that.nMinutes = Math.floor(that.nSeconds / 60);
that.nSeconds -= that.nMinutes * 60;
that.nHours = Math.floor(that.nMinutes / 60);
that.nMinutes -= that.nHours * 60;
that.nDays = Math.floor(that.nHours / 24);
that.nHours -= that.nDays * 24;
return nTime;
} else {
return that.Reset();
}
};
this.Reset();
};
if (typeof String.prototype.PadLeft != "function") {
String.prototype.PadLeft = function (nLen, sPad) {
if (typeof sPad !== "string") sPad = " ";
if (typeof nLen !== "number") nLen = 2;
var sResult = this;
while (sResult.length < nLen) sResult = sPad + sResult;
return sResult;
};
}
Usage:
var oSW = new i.Stopwatch();
var oBtn, oDiv;
window.onload = function () {
oBtn = document.getElementById("btnFr");
oDiv = document.getElementById("divResults");
oBtn.onclick = ToggleSW;
};
var ToggleSW = function () {
oBtn.disabled = true;
if (oSW.bRun()) {
oSW.Stop();
} else {
oSW.Start();
}
oBtn.innerHTML = oSW.bRun() ? "Stop" : "Start";
oDiv.innerHTML = oSW.bRun() ? "" : oSW.toString("m:s:f");
oBtn.removeAttribute("disabled");
};