summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/js/urweb.js47
-rw-r--r--src/settings.sml10
2 files changed, 50 insertions, 7 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js
index 6830945a..cb9a94af 100644
--- a/lib/js/urweb.js
+++ b/lib/js/urweb.js
@@ -217,13 +217,13 @@ var Dt = {
var y = d.getFullYear();
var V = parseInt(Dt.formats.V(d), 10);
var W = parseInt(Dt.formats.W(d), 10);
-
+
if(W > V) {
y++;
} else if(W===0 && V>=52) {
y--;
}
-
+
return y;
},
H: ["getHours", "0"],
@@ -262,7 +262,7 @@ var Dt = {
{
idow = Dt.formats.V(new Date("" + (d.getFullYear()-1) + "/12/31"));
}
-
+
return xPad(idow, 0);
},
w: "getDay",
@@ -345,7 +345,40 @@ function strftime(fmt, thisTime)
var thisDate = new Date();
thisDate.setTime(Math.floor(thisTime / 1000));
return Dt.format(thisDate, fmt);
-};
+};
+
+function fromDatetime(year, month, date, hour, minute, second) {
+ console.log(arguments);
+ return (new Date(year, month, date, hour, minute, second)).getTime() * 1000;
+};
+
+function datetimeYear(t) {
+ return (new Date(t / 1000)).getYear() + 1900;
+};
+
+function datetimeMonth(t) {
+ return (new Date(t / 1000)).getMonth();
+};
+
+function datetimeDay(t) {
+ return (new Date(t / 1000)).getDate();
+};
+
+function datetimeHour(t) {
+ return (new Date(t / 1000)).getHours();
+};
+
+function datetimeMinute(t) {
+ return (new Date(t / 1000)).getMinutes();
+};
+
+function datetimeSecond(t) {
+ return (new Date(t / 1000)).getSeconds();
+};
+
+function datetimeDayOfWeek(t) {
+ return (new Date(t / 1000)).getDay();
+};
// Error handling
@@ -717,7 +750,7 @@ function runScripts(node) {
if (node.tagName == "SCRIPT") {
var savedScript = thisScript;
thisScript = node;
-
+
try {
eval(thisScript.text);
} catch (v) {
@@ -1102,7 +1135,7 @@ function dynClass(html, s_class, s_style) {
x.signal = s_class;
x.sources = null;
x.closures = htmlCls;
-
+
x.recreate = function(v) {
for (var ls = x.closures; ls != htmlCls; ls = ls.next)
freeClosure(ls.data);
@@ -1123,7 +1156,7 @@ function dynClass(html, s_class, s_style) {
x.signal = s_style;
x.sources = null;
x.closures = htmlCls2;
-
+
x.recreate = function(v) {
for (var ls = x.closures; ls != htmlCls2; ls = ls.next)
freeClosure(ls.data);
diff --git a/src/settings.sml b/src/settings.sml
index 020ca5a4..6282577d 100644
--- a/src/settings.sml
+++ b/src/settings.sml
@@ -331,6 +331,16 @@ val jsFuncsBase = basisM [("alert", "alert"),
("toMilliseconds", "toMilliseconds"),
("diffInMilliseconds", "diffInMilliseconds"),
+ ("fromDatetime", "fromDatetime"),
+ ("datetimeYear", "datetimeYear"),
+ ("datetimeMonth", "datetimeMonth"),
+ ("datetimeDay", "datetimeDay"),
+ ("datetimeHour", "datetimeHour"),
+ ("datetimeMinute", "datetimeMinute"),
+ ("datetimeSecond", "datetimeSecond"),
+ ("datetimeDayOfWeek", "datetimeDayOfWeek"),
+
+
("onClick", "uw_onClick"),
("onDblclick", "uw_onDblclick"),
("onKeydown", "uw_onKeydown"),