diff options
| author | Pim van den Berg | 2013-05-10 21:36:54 +0200 |
|---|---|---|
| committer | Pim van den Berg | 2013-05-10 21:36:54 +0200 |
| commit | 0163faefef02207ad0ea3330af688103633293ff (patch) | |
| tree | c407fca93a3418af59c4c7133327f5bc1630fba5 /js/strftime.js | |
| parent | Merge pull request #5 from mce35/nut (diff) | |
| download | apt-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.js | 146 |
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 | |||
| 21 | function 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 | }; | ||
