aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/js/strftime.js
diff options
context:
space:
mode:
authorPim van den Berg2013-05-10 21:36:54 +0200
committerPim van den Berg2013-05-10 21:36:54 +0200
commit0163faefef02207ad0ea3330af688103633293ff (patch)
treec407fca93a3418af59c4c7133327f5bc1630fba5 /js/strftime.js
parentMerge pull request #5 from mce35/nut (diff)
downloadapt-panopticon_cgp-0163faefef02207ad0ea3330af688103633293ff.zip
apt-panopticon_cgp-0163faefef02207ad0ea3330af688103633293ff.tar.gz
apt-panopticon_cgp-0163faefef02207ad0ea3330af688103633293ff.tar.bz2
apt-panopticon_cgp-0163faefef02207ad0ea3330af688103633293ff.tar.xz
import js directory from jsrrdgraph for client side graph rendering
Source: https://github.com/manuelluis/jsrrdgraph@276b880
Diffstat (limited to 'js/strftime.js')
-rw-r--r--js/strftime.js146
1 files changed, 146 insertions, 0 deletions
diff --git a/js/strftime.js b/js/strftime.js
new file mode 100644
index 0000000..0933c27
--- /dev/null
+++ b/js/strftime.js
@@ -0,0 +1,146 @@
1/**
2 *
3 * This program is free software; you can redistribute it and/or modify it
4 * under the terms of the GNU General Public License as published by the Free
5 * Software Foundation; either version 2 of the License, or (at your option)
6 * any later version.
7 *
8 * This program is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11 * more details.
12
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
16
17 **/
18
19"use strict";
20
21function strftime (fmt, time)
22{
23 var d = new Date(time*1000);
24
25 var days = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ];
26 var fdays = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
27 var months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ];
28 var fmonths = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
29
30 function pad2 (number)
31 {
32 return (number < 10 ? '0' : '') + number
33 };
34
35 function pad3(number)
36 {
37 return (number < 10 ? '00' : number < 100 ? '0' : '') + number
38 };
39
40 function lpad (str, padString, length)
41 {
42 while (str.length < length)
43 str = padString + str;
44 return str;
45 };
46
47 function format(match, opt)
48 {
49 if (match === '%%') return '%';
50
51 switch (opt) {
52 case 'a':
53 return days[d.getDay()];
54 break;
55 case 'A':
56 return fdays[d.getDay()];
57 break;
58 case 'b':
59 return months[d.getMonth()];
60 break;
61 case 'B':
62 return fmonths[d.getMonth()];
63 break;
64 case 'c':
65 return d.toLocaleString();
66 break;
67 case 'd':
68 return pad2(d.getDate());
69 break;
70 case 'H':
71 return pad2(d.getHours());
72 break;
73 case 'I':
74 var hours = d.getHours()%12;
75 return pad2(hours === 0 ? 12 : hours);
76 break;
77 case 'j':
78 var d01 = new Date (d.getFullYear(), 0, 1);
79 return pad3(Math.ceil((d.getTime()-d01.getTime())/86400000)+1);
80 break;
81 case 'm':
82 return pad2(d.getMonth());
83 break;
84 case 'M':
85 return pad2(d.getMinutes());
86 break;
87 case 'p':
88 return d.getHours() >= 12 ? 'PM' : 'AM';
89 break;
90 case 's':
91 return pad2(d.getSeconds());
92 break;
93 case 'S':
94 return d.getTime()/1000;
95 break;
96 case 'u':
97 return d.getDay() === 0 ? 7 : d.getDay();
98 break;
99 case 'U':
100 var d01 = new Date(d.getFullYear(),0,1);
101 return pad2(Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 6 - d.getDay())/7));
102 break;
103 case 'V':
104 var d01 = new Date(d.getFullYear(), 0, 1);
105 var w = Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 7 - (d.getDay() === 0 ? 7 : d.getDay()))/7);
106 var d31 = new Date(d.getFullYear(), 11, 31);
107 if (d01.getDay() < 4 && d01.getDay() > 1) w++;
108 if (w === 53 && d31.getDay() < 4) {
109 w = 1;
110 } else if (w === 0) {
111 d31 = new Date(d.getFullYear()-1, 11, 31);
112 d01 = new Date(d31.getFullYear(), 0, 1);
113 w = Math.round((Math.ceil((d31.getTime()-d01.getTime())/86400000)+1 + 7 - (d31.getDay() === 0 ? 7 : d31.getDay()))/7);
114 if (d01.getDay() < 4 && d01.getDay() > 1) w++;
115 if (w === 53 && d31.getDay() < 4) w = 1;
116 }
117 return pad2(w);
118 break;
119 case 'w':
120 return d.getDay();
121 break;
122 case 'W':
123 var d01 = new Date(d.getFullYear(),0,1);
124 return pad2(Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 7 - (d.getDay() === 0 ? 7 : d.getDay()))/7));
125 break;
126 case 'x':
127 return pad2(d.getDate())+'/'+pad2(d.getMonth())+'/'+d.getFullYear()
128 break;
129 case 'X':
130 return pad2(d.getHours())+':'+pad2(d.getMinutes())+':'+pad2(d.getSeconds());
131 break;
132 case 'y':
133 return pad2(d.getFullYear()%100);
134 break;
135 case 'Y':
136 return d.getFullYear();
137 break;
138 case 'Z':
139 return d.toString().replace(/^.*\(([^)]+)\)$/, '$1');
140 break;
141 default:
142 return match;
143 }
144 };
145 return fmt.replace(/%([aAbBcdHIjmMpsSUVwWxXyYZ%])/g, format);
146};