NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Free time calculator (plan.polsl.pl)
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Calculate your free time from plan.polsl.pl timetable.
// @author Psilo
// @match *plan.polsl.pl/*
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
// ==/UserScript==
/* jshint -W097 */
'use strict';
(function() {
//
// Constants & variables
var currentFreeTime = 0; //minutes
var interval = 15; //minutes
//
// Functions
var setEvents = function () {
var isSelecting = false;
jq(".coursediv").css("pointer-events", "none");
jq(document).on("mousedown", function () {
isSelecting = true;
}).on("mouseup", function () {
isSelecting = false;
}).on("mousemove", function (e) {
e.preventDefault();
});
jq(".cdS")
.on("mousedown mouseover", function (e) {
if(e.type==="mousedown") {
isSelecting = true;
}
if(isSelecting) {
jq(this).css("background-color", "red").css("z-index", "100").css("overflow", "");
currentFreeTime += interval;
var minutes = (currentFreeTime % 60);
var hours = ((currentFreeTime - minutes) / 60);
jq("#freeTimeMin").val(minutes);
jq("#freeTimeHour").val(hours);
}
})
.on("mouseleave", function (e) {
if(isSelecting) {
//jq(this).css("background-color", "red");
}
});
};
var generateUI = function () {
var toWrap = jq('#weekBrowser');
toWrap.css("position", "relative");
toWrap.css("display", "inline");
toWrap.css("float", "left");
toWrap.css("top", "");
toWrap.css("left", "");
var newOuterNode = jq("<div style='position: absolute; top: 67px; left: 5px' />");
newOuterNode.insertAfter(toWrap);
toWrap.appendTo(newOuterNode);
var newNode = jq(
"<div class='wBBox' id='freeTimeCalc' style='float: left; width:250px; margin-left: 5px; height: 118px; display: inline;'>" +
"<div class='titleBar'>Wolny czas</div>" +
"<div class='wBParent' >" +
"<div style='text-align: center'>" +
"<input type='text' id='freeTimeHour' style='width: 50px; margin-top: 5px; text-align: left' readonly value='0'/> h " +
"<input type='text' id='freeTimeMin' style='width: 50px; margin-top: 5px; text-align: left' readonly value='0'/> min" +
"</div>" +
"</div>" +
"</div>"
);
newNode.appendTo(newOuterNode);
};
//
// Entry Point
var jq = jQuery.noConflict(true);
setEvents();
generateUI();
})();