fixed calendar time bug

This commit is contained in:
10001shh
2018-09-06 19:17:34 -05:00
parent 2869d12e9b
commit 093ba7da08
5 changed files with 9031 additions and 442 deletions

View File

@@ -12,4 +12,5 @@
<div id='calendar' style=" width: 75%; margin-left:auto; margin-right:auto;"></div> <div id='calendar' style=" width: 75%; margin-left:auto; margin-right:auto;"></div>
</body> </body>
<script src='js/calendar.js'></script> <script src='js/calendar.js'></script>
<script src='js/ics.min.js'></script>

View File

@@ -72,6 +72,33 @@ $(function () {
} else { } else {
$("#register").text("Register").css("background-color", "#4CAF50"); $("#register").text("Register").css("background-color", "#4CAF50");
} }
var cal = ics();
for (i in savedCourses) {
let course = savedCourses[i];
var dtmap = makeMap(course.datetimearr);
var timearr = Array.from(dtmap.keys());
var dayarr = Array.from(dtmap.values());
console.log(timearr);
console.log(dayarr);
for (var i = 0; i < dayarr.length; i++) {
var place = findLoc(dayarr[i], timearr[i], course.datetimearr);
var building = place.substring(0, place.search(/\d/) - 1);
if (building == "") {
building = "Undecided Location";
}
//cal.addEvent(subject, description, location, begin, end, rrule)
let rrurle = {
freq: "WEEKLY",
interval: 1,
byday: [""]
}
// cal.addEvent(course.coursename, `with${course.profname}`, building, '', '', '');
// output += `<p class='time'><span>${dayarr[i]}</span>: ${timearr[i].split(",")[0]} to ${timearr[i].split(",")[1]}<span style='float:right';><a target='_blank' href='https://maps.utexas.edu/buildings/UTM/${building}'>${place}</a></span></p>`;
}
}
cal.download();
} }
}); });
}); });
@@ -119,20 +146,8 @@ $(function () {
function makeLine(datetimearr) { function makeLine(datetimearr) {
$(".time").remove(); $(".time").remove();
//converted times back //converted times back
console.log(datetimearr);
var dtmap = new Map([]);
for (var i = 0; i < datetimearr.length; i++) {
datetimearr[i][1][0] = moment(datetimearr[i][1][0], ["HH:mm"]).format("h:mm A");
datetimearr[i][1][1] = moment(datetimearr[i][1][1], ["HH:mm"]).format("h:mm A");
}
for (var i = 0; i < datetimearr.length; i++) {
if (dtmap.has(String(datetimearr[i][1]))) {
dtmap.set(String(datetimearr[i][1]), dtmap.get(String(datetimearr[i][1])) + datetimearr[i][0]);
} else {
dtmap.set(String(datetimearr[i][1]), datetimearr[i][0]);
}
}
var output = ""; var output = "";
var dtmap = makeMap(datetimearr);
var timearr = Array.from(dtmap.keys()); var timearr = Array.from(dtmap.keys());
var dayarr = Array.from(dtmap.values()); var dayarr = Array.from(dtmap.values());
for (var i = 0; i < dayarr.length; i++) { for (var i = 0; i < dayarr.length; i++) {
@@ -146,6 +161,23 @@ $(function () {
return output; return output;
} }
function makeMap(datetimearr) {
var dtmap = new Map([]);
for (var i = 0; i < datetimearr.length; i++) {
console.log(datetimearr[i][1][0]);
datetimearr[i][1][0] = moment(datetimearr[i][1][0], ["HH:mm A"]).format("h:mm a");
datetimearr[i][1][1] = moment(datetimearr[i][1][1], ["HH:mm A"]).format("h:mm a");
}
for (var i = 0; i < datetimearr.length; i++) {
if (dtmap.has(String(datetimearr[i][1]))) {
dtmap.set(String(datetimearr[i][1]), dtmap.get(String(datetimearr[i][1])) + datetimearr[i][0]);
} else {
dtmap.set(String(datetimearr[i][1]), datetimearr[i][0]);
}
}
return dtmap
}
/*Close Modal when hit escape*/ /*Close Modal when hit escape*/
$(document).keydown((e) => { $(document).keydown((e) => {
if (e.keyCode == 27) { if (e.keyCode == 27) {
@@ -164,8 +196,8 @@ $(function () {
function findLoc(day, timearr, datetimearr) { function findLoc(day, timearr, datetimearr) {
for (let i = 0; i < datetimearr.length; i++) { for (let i = 0; i < datetimearr.length; i++) {
var dtl = datetimearr[i]; var dtl = datetimearr[i];
console.log(dtl[1]); // console.log(dtl[1]);
console.log(timearr); // console.log(timearr);
if (day.includes(dtl[0])) { if (day.includes(dtl[0])) {
if (JSON.stringify(timearr) == JSON.stringify(fixDtl1(dtl[1]))) { if (JSON.stringify(timearr) == JSON.stringify(fixDtl1(dtl[1]))) {
return dtl[2]; return dtl[2];

View File

@@ -23,7 +23,7 @@ const days = new Map([
["W", "Wednesday"], ["W", "Wednesday"],
["TH", "Thursday"], ["TH", "Thursday"],
["F", "Friday"] ["F", "Friday"]
]); ]);
const fadetime = 150; const fadetime = 150;
const butdelay = 75; const butdelay = 75;
//This extension may be super lit, but you know what's even more lit? //This extension may be super lit, but you know what's even more lit?
@@ -364,18 +364,18 @@ function openDialog(dep, cls, sem, professor, res) {
text: 'Grades' text: 'Grades'
}, },
categories: [ categories: [
'A', 'A',
'A-', 'A-',
'B+', 'B+',
'B', 'B',
'B-', 'B-',
'C+', 'C+',
'C', 'C',
'C-', 'C-',
'D+', 'D+',
'D', 'D',
'D-', 'D-',
'F' 'F'
], ],
crosshair: true crosshair: true
}, },
@@ -453,13 +453,13 @@ function openDialog(dep, cls, sem, professor, res) {
if (data.length == 0) { if (data.length == 0) {
//if no data, then show the message and hide the series //if no data, then show the message and hide the series
chart.renderer.text('Could not find distribution for this Instructor teaching this Course.', 100, 120) chart.renderer.text('Could not find distribution for this Instructor teaching this Course.', 100, 120)
.css({ .css({
fontSize: '20px', fontSize: '20px',
align: 'center', align: 'center',
width: '300px', width: '300px',
left: '160px' left: '160px'
}) })
.add(); .add();
$.each(chart.series, function (i, ser) { $.each(chart.series, function (i, ser) {
ser.hide(); ser.hide();
}); });
@@ -564,7 +564,7 @@ function loadBinaryFile(path, success) {
var data = new Uint8Array(xhr.response); var data = new Uint8Array(xhr.response);
var arr = new Array(); var arr = new Array();
for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]); for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
success(arr.join("")); success(arr.join(""));
}; };
xhr.send(); xhr.send();
}; };

File diff suppressed because it is too large Load Diff

231
js/ics.min.js vendored Normal file
View File

@@ -0,0 +1,231 @@
/*! ics.js Wed Aug 20 2014 17:23:02 */
var saveAs = saveAs || function (e) {
"use strict";
if (typeof e === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
return
}
var t = e.document,
n = function () {
return e.URL || e.webkitURL || e
},
r = t.createElementNS("http://www.w3.org/1999/xhtml", "a"),
o = "download" in r,
a = function (e) {
var t = new MouseEvent("click");
e.dispatchEvent(t)
},
i = /constructor/i.test(e.HTMLElement) || e.safari,
f = /CriOS\/[\d]+/.test(navigator.userAgent),
u = function (t) {
(e.setImmediate || e.setTimeout)(function () {
throw t
}, 0)
},
s = "application/octet-stream",
d = 1e3 * 40,
c = function (e) {
var t = function () {
if (typeof e === "string") {
n().revokeObjectURL(e)
} else {
e.remove()
}
};
setTimeout(t, d)
},
l = function (e, t, n) {
t = [].concat(t);
var r = t.length;
while (r--) {
var o = e["on" + t[r]];
if (typeof o === "function") {
try {
o.call(e, n || e)
} catch (a) {
u(a)
}
}
}
},
p = function (e) {
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)) {
return new Blob([String.fromCharCode(65279), e], {
type: e.type
})
}
return e
},
v = function (t, u, d) {
if (!d) {
t = p(t)
}
var v = this,
w = t.type,
m = w === s,
y, h = function () {
l(v, "writestart progress write writeend".split(" "))
},
S = function () {
if ((f || m && i) && e.FileReader) {
var r = new FileReader;
r.onloadend = function () {
var t = f ? r.result : r.result.replace(/^data:[^;]*;/, "data:attachment/file;");
var n = e.open(t, "_blank");
if (!n) e.location.href = t;
t = undefined;
v.readyState = v.DONE;
h()
};
r.readAsDataURL(t);
v.readyState = v.INIT;
return
}
if (!y) {
y = n().createObjectURL(t)
}
if (m) {
e.location.href = y
} else {
var o = e.open(y, "_blank");
if (!o) {
e.location.href = y
}
}
v.readyState = v.DONE;
h();
c(y)
};
v.readyState = v.INIT;
if (o) {
y = n().createObjectURL(t);
setTimeout(function () {
r.href = y;
r.download = u;
a(r);
h();
c(y);
v.readyState = v.DONE
});
return
}
S()
},
w = v.prototype,
m = function (e, t, n) {
return new v(e, t || e.name || "download", n)
};
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
return function (e, t, n) {
t = t || e.name || "download";
if (!n) {
e = p(e)
}
return navigator.msSaveOrOpenBlob(e, t)
}
}
w.abort = function () {};
w.readyState = w.INIT = 0;
w.WRITING = 1;
w.DONE = 2;
w.error = w.onwritestart = w.onprogress = w.onwrite = w.onabort = w.onerror = w.onwriteend = null;
return m
}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content);
if (typeof module !== "undefined" && module.exports) {
module.exports.saveAs = saveAs
} else if (typeof define !== "undefined" && define !== null && define.amd !== null) {
define("FileSaver.js", function () {
return saveAs
})
}
var ics = function (e, t) {
"use strict"; {
if (!(navigator.userAgent.indexOf("MSIE") > -1 && -1 == navigator.userAgent.indexOf("MSIE 10"))) {
void 0 === e && (e = "default"), void 0 === t && (t = "Calendar");
var r = -1 !== navigator.appVersion.indexOf("Win") ? "\r\n" : "\n",
n = [],
i = ["BEGIN:VCALENDAR", "PRODID:" + t, "VERSION:2.0"].join(r),
o = r + "END:VCALENDAR",
a = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"];
return {
events: function () {
return n
},
calendar: function () {
return i + r + n.join(r) + o
},
addEvent: function (t, i, o, l, u, s) {
if (void 0 === t || void 0 === i || void 0 === o || void 0 === l || void 0 === u) return !1;
if (s && !s.rrule) {
if ("YEARLY" !== s.freq && "MONTHLY" !== s.freq && "WEEKLY" !== s.freq && "DAILY" !== s.freq) throw "Recurrence rrule frequency must be provided and be one of the following: 'YEARLY', 'MONTHLY', 'WEEKLY', or 'DAILY'";
if (s.until && isNaN(Date.parse(s.until))) throw "Recurrence rrule 'until' must be a valid date string";
if (s.interval && isNaN(parseInt(s.interval))) throw "Recurrence rrule 'interval' must be an integer";
if (s.count && isNaN(parseInt(s.count))) throw "Recurrence rrule 'count' must be an integer";
if (void 0 !== s.byday) {
if ("[object Array]" !== Object.prototype.toString.call(s.byday)) throw "Recurrence rrule 'byday' must be an array";
if (s.byday.length > 7) throw "Recurrence rrule 'byday' array must not be longer than the 7 days in a week";
s.byday = s.byday.filter(function (e, t) {
return s.byday.indexOf(e) == t
});
for (var c in s.byday)
if (a.indexOf(s.byday[c]) < 0) throw "Recurrence rrule 'byday' values must include only the following: 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'"
}
}
var g = new Date(l),
d = new Date(u),
f = new Date,
S = ("0000" + g.getFullYear().toString()).slice(-4),
E = ("00" + (g.getMonth() + 1).toString()).slice(-2),
v = ("00" + g.getDate().toString()).slice(-2),
y = ("00" + g.getHours().toString()).slice(-2),
A = ("00" + g.getMinutes().toString()).slice(-2),
T = ("00" + g.getSeconds().toString()).slice(-2),
b = ("0000" + d.getFullYear().toString()).slice(-4),
D = ("00" + (d.getMonth() + 1).toString()).slice(-2),
N = ("00" + d.getDate().toString()).slice(-2),
h = ("00" + d.getHours().toString()).slice(-2),
I = ("00" + d.getMinutes().toString()).slice(-2),
R = ("00" + d.getMinutes().toString()).slice(-2),
M = ("0000" + f.getFullYear().toString()).slice(-4),
w = ("00" + (f.getMonth() + 1).toString()).slice(-2),
L = ("00" + f.getDate().toString()).slice(-2),
O = ("00" + f.getHours().toString()).slice(-2),
p = ("00" + f.getMinutes().toString()).slice(-2),
Y = ("00" + f.getMinutes().toString()).slice(-2),
U = "",
V = "";
y + A + T + h + I + R != 0 && (U = "T" + y + A + T, V = "T" + h + I + R);
var B, C = S + E + v + U,
j = b + D + N + V,
m = M + w + L + ("T" + O + p + Y);
if (s)
if (s.rrule) B = s.rrule;
else {
if (B = "rrule:FREQ=" + s.freq, s.until) {
var x = new Date(Date.parse(s.until)).toISOString();
B += ";UNTIL=" + x.substring(0, x.length - 13).replace(/[-]/g, "") + "000000Z"
}
s.interval && (B += ";INTERVAL=" + s.interval), s.count && (B += ";COUNT=" + s.count), s.byday && s.byday.length > 0 && (B += ";BYDAY=" + s.byday.join(","))
}(new Date).toISOString();
var H = ["BEGIN:VEVENT", "UID:" + n.length + "@" + e, "CLASS:PUBLIC", "DESCRIPTION:" + i, "DTSTAMP;VALUE=DATE-TIME:" + m, "DTSTART;VALUE=DATE-TIME:" + C, "DTEND;VALUE=DATE-TIME:" + j, "LOCATION:" + o, "SUMMARY;LANGUAGE=en-us:" + t, "TRANSP:TRANSPARENT", "END:VEVENT"];
return B && H.splice(4, 0, B), H = H.join(r), n.push(H), H
},
download: function (e, t) {
if (n.length < 1) return !1;
t = void 0 !== t ? t : ".ics", e = void 0 !== e ? e : "calendar";
var a, l = i + r + n.join(r) + o;
if (-1 === navigator.userAgent.indexOf("MSIE 10")) a = new Blob([l]);
else {
var u = new BlobBuilder;
u.append(l), a = u.getBlob("text/x-vCalendar;charset=" + document.characterSet)
}
return saveAs(a, e + t), l
},
build: function () {
return !(n.length < 1) && i + r + n.join(r) + o
}
}
}
console.log("Unsupported Browser")
}
};