-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi-date.js
107 lines (100 loc) · 2.36 KB
/
api-date.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
"use strict";
Plugins.date = function(params, language) {
return {
create: function(data, callback, allData) {
let div = $("<div>");
let input = $("<input>");
if (data !== undefined) {
input.val(data.value);
}
let divs = $("<div>").addClass("buttons");
let validateButton = $("<div>").addClass("button");
i18n(validateButton, language.validate);
let setButton = $("<div>").addClass("button");
i18n(setButton, language.set);
let explanation = $("<div>").addClass("explanation");
divs.append(validateButton);
divs.append(setButton);
input.on("input", function() {
validateButton.show();
setButton.hide();
explanation.text("").removeClass("invalid").removeClass("check");
});
validateButton.show();
setButton.hide();
let date = null;
validateButton.click(function() {
let v = input.val().trim();
if (v === "") {
return;
}
let year;
let month;
let day;
explanation.text("").removeClass("invalid").removeClass("check");
let s = [];
for (let ss of v.split(/[^0-9]/g)) {
ss = ss.trim();
if (ss === "") {
continue;
}
s.push(ss);
}
console.log(s);
if (s.length === 2) {
s.push(new Date().getFullYear());
}
if (s.length !== 3) {
i18n(explanation.addClass("invalid"), language.invaliddate);
return;
} else {
try {
let a = parseInt(s[0]);
let b = parseInt(s[1]);
let c = parseInt(s[2]);
if (a > 31) {
year = a;
month = b;
day = c;
if (month > 12) {
month = c;
day = b;
}
} else if (c > 31) {
year = c;
month = b;
day = a;
if (month > 12) {
month = a;
day = b;
}
} else {
throw "invalid";
}
if (year < 1900) {
year += 1900;
}
} catch (e) {
i18n(explanation.addClass("invalid"), language.invaliddate);
return;
}
}
date = year + "/" + ((month < 10) ? "0" : "") + month + "/" + ((day < 10) ? "0" : "") + day;
explanation.addClass("valid").text(new Date(date).toDateString());
validateButton.hide();
setButton.show();
});
setButton.click(function() {
callback({
value: date
});
});
div.append(input);
div.append(explanation);
div.append(divs);
return div;
},
destroy: function() {
}
};
};