// ==UserScript==
// @name Class Dojo Plus
// @namespace https://greasyfork.org/en/scripts/7873-class-dojo-plus
// @version 2015.02.10.003
// @description Useful hacks to the already excellent Class Dojo
// @author Ryan Meyers
// @match http://teach.classdojo.com/*
// @match https://teach.classdojo.com/*
// @grant none
// ==/UserScript==
/*!
* Class Dojo Plus
* https://github.com/
*
* Allows for class arrangements (saved per computer), hotkeys for students/behaviors,
* quick points via mouse wheel, and more!
*
*
* Copyright 2015, Ryan Meyers
* Dual licensed under the MIT or GPL Version 2 licenses.
*
*/
/*!
* Bowser - a browser detector
* https://github.com/ded/bowser
* MIT License | (c) Dustin Diaz 2014
*/
!function(e,t){typeof module!="undefined"&&module.exports?module.exports.browser=t():typeof define=="function"&&define.amd?define(t):this[e]=t()}("bowser",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||""}var r=n(/(ipod|iphone|ipad)/i).toLowerCase(),i=/like android/i.test(t),s=!i&&/android/i.test(t),o=n(/version\/(\d+(\.\d+)?)/i),u=/tablet/i.test(t),a=!u&&/[^-]mobi/i.test(t),f;/opera|opr/i.test(t)?f={name:"Opera",opera:e,version:o||n(/(?:opera|opr)[\s\/](\d+(\.\d+)?)/i)}:/windows phone/i.test(t)?f={name:"Windows Phone",windowsphone:e,msie:e,version:n(/iemobile\/(\d+(\.\d+)?)/i)}:/msie|trident/i.test(t)?f={name:"Internet Explorer",msie:e,version:n(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:/chrome|crios|crmo/i.test(t)?f={name:"Chrome",chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:r?(f={name:r=="iphone"?"iPhone":r=="ipad"?"iPad":"iPod"},o&&(f.version=o)):/sailfish/i.test(t)?f={name:"Sailfish",sailfish:e,version:n(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(t)?f={name:"SeaMonkey",seamonkey:e,version:n(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel/i.test(t)?(f={name:"Firefox",firefox:e,version:n(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(t)&&(f.firefoxos=e)):/silk/i.test(t)?f={name:"Amazon Silk",silk:e,version:n(/silk\/(\d+(\.\d+)?)/i)}:s?f={name:"Android",version:o}:/phantom/i.test(t)?f={name:"PhantomJS",phantom:e,version:n(/phantomjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(t)||/rim\stablet/i.test(t)?f={name:"BlackBerry",blackberry:e,version:o||n(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:/(web|hpw)os/i.test(t)?(f={name:"WebOS",webos:e,version:o||n(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(t)&&(f.touchpad=e)):/bada/i.test(t)?f={name:"Bada",bada:e,version:n(/dolfin\/(\d+(\.\d+)?)/i)}:/tizen/i.test(t)?f={name:"Tizen",tizen:e,version:n(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||o}:/safari/i.test(t)?f={name:"Safari",safari:e,version:o}:f={},/(apple)?webkit/i.test(t)?(f.name=f.name||"Webkit",f.webkit=e,!f.version&&o&&(f.version=o)):!f.opera&&/gecko\//i.test(t)&&(f.name=f.name||"Gecko",f.gecko=e,f.version=f.version||n(/gecko\/(\d+(\.\d+)?)/i)),s||f.silk?f.android=e:r&&(f[r]=e,f.ios=e);var l="";r?(l=n(/os (\d+([_\s]\d+)*) like mac os x/i),l=l.replace(/[_\s]/g,".")):s?l=n(/android[ \/-](\d+(\.\d+)*)/i):f.windowsphone?l=n(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):f.webos?l=n(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):f.blackberry?l=n(/rim\stablet\sos\s(\d+(\.\d+)*)/i):f.bada?l=n(/bada\/(\d+(\.\d+)*)/i):f.tizen&&(l=n(/tizen[\/\s](\d+(\.\d+)*)/i)),l&&(f.osversion=l);var c=l.split(".")[0];if(u||r=="ipad"||s&&(c==3||c==4&&!a)||f.silk)f.tablet=e;else if(a||r=="iphone"||r=="ipod"||s||f.blackberry||f.webos||f.bada)f.mobile=e;return f.msie&&f.version>=10||f.chrome&&f.version>=20||f.firefox&&f.version>=20||f.safari&&f.version>=6||f.opera&&f.version>=10||f.ios&&f.osversion&&f.osversion.split(".")[0]>=6||f.blackberry&&f.version>=10.1?f.a=e:f.msie&&f.version<10||f.chrome&&f.version<20||f.firefox&&f.version<20||f.safari&&f.version<6||f.opera&&f.version<10||f.ios&&f.osversion&&f.osversion.split(".")[0]<6?f.c=e:f.x=e,f}var e=!0,n=t(typeof navigator!="undefined"?navigator.userAgent:"");return n._detect=t,n})
if (bowser.chrome) {
console.log("Using Chrome");
// XHook - v1.3.0 - https://github.com/jpillora/xhook
// Jaime Pillora <[email protected]> - MIT Copyright 2014
(function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};r=a.document,d="before",c="after",l="readyState",k="addEventListener",j="removeEventListener",g="dispatchEvent",o="XMLHttpRequest",h="FormData",m=["load","loadend","loadstart"],e=["progress","abort","error","timeout"],u=parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase())||[])[1]),isNaN(u)&&(u=parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase())||[])[1])),(y=Array.prototype).indexOf||(y.indexOf=function(a){var b,c,d,e;for(b=d=0,e=this.length;e>d;b=++d)if(c=this[b],c===a)return b;return-1}),w=function(a,b){return Array.prototype.slice.call(a,b)},q=function(a){return"returnValue"===a||"totalSize"===a||"position"===a},t=function(a,b){var c,d;for(c in a)if(d=a[c],!q(c))try{b[c]=a[c]}catch(e){}return b},v=function(a,b,c){var d,e,f,h;for(e=function(a){return function(d){var e,f,h;e={};for(f in d)q(f)||(h=d[f],e[f]=h===b?c:h);return c[g](a,e)}},f=0,h=a.length;h>f;f++)d=a[f],b["on"+d]=e(d)},s=function(a){var b;if(null!=r.createEventObject)return b=r.createEventObject(),b.type=a,b;try{return new Event(a)}catch(c){return{type:a}}},f=function(a){var c,d,e;return d={},e=function(a){return d[a]||[]},c={},c[k]=function(a,c,f){d[a]=e(a),d[a].indexOf(c)>=0||(f=f===b?d[a].length:f,d[a].splice(f,0,c))},c[j]=function(a,c){var f;return a===b?void(d={}):(c===b&&(d[a]=[]),f=e(a).indexOf(c),void(-1!==f&&e(a).splice(f,1)))},c[g]=function(){var d,f,g,h,i,j,k,l;for(d=w(arguments),f=d.shift(),a||(d[0]=t(d[0],s(f))),h=c["on"+f],h&&h.apply(b,d),l=e(f).concat(e("*")),g=j=0,k=l.length;k>j;g=++j)i=l[g],i.apply(b,d)},a&&(c.listeners=function(a){return w(e(a))},c.on=c[k],c.off=c[j],c.fire=c[g],c.once=function(a,b){var d;return d=function(){return c.off(a,d),b.apply(null,arguments)},c.on(a,d)},c.destroy=function(){return d={}}),c},x=f(!0),x.EventEmitter=f,x[d]=function(a,b){if(a.length<1||a.length>2)throw"invalid hook";return x[k](d,a,b)},x[c]=function(a,b){if(a.length<2||a.length>3)throw"invalid hook";return x[k](c,a,b)},x.enable=function(){a[o]=n},x.disable=function(){a[o]=x[o]},p=x.headers=function(a,b){var c,d,e,f,g,h,i,j,k;switch(null==b&&(b={}),typeof a){case"object":d=[];for(e in a)g=a[e],f=e.toLowerCase(),d.push(""+f+": "+g);return d.join("\n");case"string":for(d=a.split("\n"),i=0,j=d.length;j>i;i++)c=d[i],/([^:]+):\s*(.+)/.test(c)&&(f=null!=(k=RegExp.$1)?k.toLowerCase():void 0,h=RegExp.$2,null==b[f]&&(b[f]=h));return b}},i=a[h],i&&(x[h]=i,a[h]=function(a){var b;this.fd=a?new i(a):new i,this.form=a,b=[],Object.defineProperty(this,"entries",{get:function(){var c;return c=a?w(a.querySelectorAll("input,select")).filter(function(a){var b;return"checkbox"!==(b=a.type)&&"radio"!==b||a.checked}).map(function(a){return[a.name,"file"===a.type?a.files:a.value]}):[],c.concat(b)}}),this.append=function(a){return function(){var c;return c=w(arguments),b.push(c),a.fd.append.apply(a.fd,c)}}(this)}),x[o]=a[o],n=a[o]=function(){var b,i,j,n,q,r,s,w,y,A,B,C,D,E,F,G,H;return b=-1,H=new x[o],A={},D=null,r=void 0,E=void 0,B=void 0,y=function(){var a,c,d,e;if(B.status=D||H.status,D===b&&10>u||(B.statusText=H.statusText),D!==b){e=p(H.getAllResponseHeaders());for(a in e)d=e[a],B.headers[a]||(c=a.toLowerCase(),B.headers[c]=d)}},w=function(){"responseText"in H&&(B.text=H.responseText),"responseXML"in H&&(B.xml=H.responseXML),"response"in H&&(B.data=H.response)},G=function(){q.status=B.status,q.statusText=B.statusText},F=function(){"text"in B&&(q.responseText=B.text),"xml"in B&&(q.responseXML=B.xml),"data"in B&&(q.response=B.data)},n=function(a){for(;a>i&&4>i;)q[l]=++i,1===i&&q[g]("loadstart",{}),2===i&&G(),4===i&&(G(),F()),q[g]("readystatechange",{}),4===i&&setTimeout(j,0)},j=function(){r||q[g]("load",{}),q[g]("loadend",{}),r&&(q[l]=0)},i=0,C=function(a){var b,d;return 4!==a?void n(a):(b=x.listeners(c),d=function(){var a;return b.length?(a=b.shift(),2===a.length?(a(A,B),d()):3===a.length&&A.async?a(A,B,d):d()):n(4)},void d())},q=A.xhr=f(),H.onreadystatechange=function(){try{2===H[l]&&y()}catch(a){}4===H[l]&&(E=!1,y(),w()),C(H[l])},s=function(){r=!0},q[k]("error",s),q[k]("timeout",s),q[k]("abort",s),q[k]("progress",function(){3>i?C(3):q[g]("readystatechange",{})}),v(e,H,q),("withCredentials"in H||x.addWithCredentials)&&(q.withCredentials=!1),q.status=0,q.open=function(a,b,c,d,e){i=0,r=!1,E=!1,A.headers={},A.headerNames={},A.status=0,B={},B.headers={},A.method=a,A.url=b,A.async=c!==!1,A.user=d,A.pass=e,C(1)},q.send=function(b){var c,e,f,g,i,j,k,l;for(l=["type","timeout","withCredentials"],j=0,k=l.length;k>j;j++)e=l[j],f="type"===e?"responseType":e,f in q&&(A[e]=q[f]);A.body=b,i=function(){var b,c,d,g,i,j;for(E=!0,H.open(A.method,A.url,A.async,A.user,A.pass),i=["type","timeout","withCredentials"],d=0,g=i.length;g>d;d++)e=i[d],f="type"===e?"responseType":e,e in A&&(H[f]=A[e]);j=A.headers;for(b in j)c=j[b],H.setRequestHeader(b,c);a[h]&&A.body instanceof a[h]&&(A.body=A.body.fd),H.send(A.body)},c=x.listeners(d),(g=function(){var a,b;return c.length?(a=function(a){return"object"!=typeof a||"number"!=typeof a.status&&"number"!=typeof B.status?void g():(t(a,B),z.call(a,"data")<0&&(a.data=a.response||a.text),void C(4))},a.head=function(a){return t(a,B),C(2)},a.progress=function(a){return t(a,B),C(3)},b=c.shift(),1===b.length?a(b(A)):2===b.length&&A.async?b(A,a):a()):i()})()},q.abort=function(){D=b,E?H.abort():q[g]("abort",{})},q.setRequestHeader=function(a,b){var c,d;c=null!=a?a.toLowerCase():void 0,d=A.headerNames[c]=A.headerNames[c]||a,A.headers[d]&&(b=A.headers[d]+", "+b),A.headers[d]=b},q.getResponseHeader=function(a){var b;return b=null!=a?a.toLowerCase():void 0,B.headers[b]},q.getAllResponseHeaders=function(){return p(B.headers)},H.overrideMimeType&&(q.overrideMimeType=function(){return H.overrideMimeType.apply(H,arguments)}),H.upload&&(q.upload=A.upload=f(),v(e.concat(m),H.upload,q.upload)),q},"function"==typeof this.define&&this.define.amd?define("xhook",[],function(){return x}):(this.exports||this).xhook=x}).call(this,window);
/*
xhook.before(function(request) {
// if(request.url.match(/^.*api\/award.*$/))
// console.trace();
// true;// request.body = request.body.replace(/-2/g,'0');
// if(request.body) request.body = request.body.replace(/poitns/g,'points');
});
*/
xhook.after(function(request, response) {
evalAjax(request.url, request.method, response.text);
if (!request.url.match(/^.*(time|api\/clientLog).*$/)) {
console.group("AJAX Event: %s", decodeURIComponent(request.url));
console.log(request);
console.log(request.method === "POST" || request.method === "PUT" ? response.text : response.text !== "" ? JSON.parse(response.text) : "No response");
console.groupEnd();
}
});
}
else if(bowser.firefox)
{
console.log("Using Firefox");
(function() {
var XHR = XMLHttpRequest.prototype;
// Remember references to original methods
var open = XHR.open;
var send = XHR.send;
// Overwrite native methods
// Collect data:
XHR.open = function(method, url) {
this._method = method;
this._url = url;
return open.apply(this, arguments);
};
// Implement "ajaxSuccess" functionality
XHR.send = function(postData) {
this.addEventListener('load', function() {
evalAjax(this._url, this._method, this.responseText);
});
return send.apply(this, arguments);
};
})();
}
var names = [];
var draggables = [];
var draggablesSelected = [];
var dragging = false;
var behaviors_visible = false;
var clickPositive = false;
var clickNegative = false;
var numStudents = 12999;
var navShowing = true;
var checkForBehaviors;
var checkForSelected;
var numSelected = 0;
var checkForPopup;
var oldZ = 0;
var entry;
var options = [];
var isPositive = false;
var isNegative = false;
function evalAjax(u, m, r){
if (u.match(/^https:\/\/teach\.classdojo\.com\/api\/dojoClass\/.+\/student\?.+$/)) {
var jsonData = JSON.parse(r);
numStudents = jsonData['_items'].length
} else if (u.match(/^https:\/\/teach\.classdojo\.com\/api\/dojoClass\?withPending.+$/)) {
var jsonData = JSON.parse(r);
numClasses = jsonData['_items'].length;
for (i = 0; i < numClasses; i++) {
var t = true;
}
} else if (u.match(/^https:\/\/teach\.classdojo\.com\/api\/dojoClass\/.+\/behavior\?.+$/)) {
var t = true;
} else if (u.match(/^https:\/\/classdojo\.pubnub\.com\/subscribe\/.+$/)) {
var jsonData = JSON.parse(r);
if (jsonData[0].length > 0) {
console.log("Greater than Zero!");
}
}
}
function dojoStudent(first, last, id) {
this.firstName = first;
this.lastName = last;
this._id = id;
this.name = function() {
return this.firstName + " " + this.lastName;
};
}
function dojoClass(id, title, studentCount) {
this._id = id;
this.name = title;
this.studentCount = studentCount;
}
function coord(x, y) {
this.x = x;
this.y = y;
this.left = function() {
return this.x;
};
this.top = function() {
return this.y;
};
}
function RGBcolor(r, g, b) {
this.r = r;
this.g = g;
this.b = b;
this.rgb = function() {
return "rgb(" + this.r + "," + this.g + "," + this.b + ")";
}
this.rgba = function(a) {
return "rgba(" + this.r + "," + this.g + "," + this.b + "," + a + ")";
}
}
function option(c, s, k, v) {
this._class = c;
this._student = s;
this.k = k;
this.v = v;
}
/*
* API calls:
*
* Get all students' information for a given class (using class-id)
* [GET] https://teach.classdojo.com/api/dojoClass/{class-id}/student
*
* Get individual student's information for a given class (using class-id & student-id)
* [GET] https://teach.classdojo.com/api/dojoClass/{class-id}/student/{student-id}
*
* Get class information (using class-id)
* [GET] https://teach.classdojo.com/api/dojoClass/{class-id}
*
* Get all classes' information
* [GET] https://teach.classdojo.com/api/dojoClass
*
* Get all awards given
* [GET] https://teach.classdojo.com/api/award?classId={class-id}
*
* Get all awards given within a date range * Add 6 to hours
* dateObj = new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
* dateObj.toJSON()
*
* [GET] https://teach.classdojo.com/api/award/?from={json-start-date}&to={json-end-date}&classId={class-id}
*
* Get all students in school
* [GET] https://teach.classdojo.com/api/dojoStudent/
*
* Get behaviors for a class (using class-id)
* [GET] https://teach.classdojo.com/api/dojoClass/{class-id}/behavior
*
*
*/
keyCodeToChar = {
8: "Backspace",
9: "Tab",
13: "Enter",
16: "Shift",
17: "Ctrl",
18: "Alt",
19: "Pause/Break",
20: "Caps Lock",
27: "Esc",
32: "Space",
33: "Page Up",
34: "Page Down",
35: "End",
36: "Home",
37: "Left",
38: "Up",
39: "Right",
40: "Down",
45: "Insert",
46: "Delete",
48: "0",
49: "1",
50: "2",
51: "3",
52: "4",
53: "5",
54: "6",
55: "7",
56: "8",
57: "9",
65: "A",
66: "B",
67: "C",
68: "D",
69: "E",
70: "F",
71: "G",
72: "H",
73: "I",
74: "J",
75: "K",
76: "L",
77: "M",
78: "N",
79: "O",
80: "P",
81: "Q",
82: "R",
83: "S",
84: "T",
85: "U",
86: "V",
87: "W",
88: "X",
89: "Y",
90: "Z",
91: "Windows",
93: "Right Click",
96: "Numpad 0",
97: "Numpad 1",
98: "Numpad 2",
99: "Numpad 3",
100: "Numpad 4",
101: "Numpad 5",
102: "Numpad 6",
103: "Numpad 7",
104: "Numpad 8",
105: "Numpad 9",
106: "Numpad *",
107: "Numpad +",
109: "Numpad -",
110: "Numpad .",
111: "Numpad /",
112: "F1",
113: "F2",
114: "F3",
115: "F4",
116: "F5",
117: "F6",
118: "F7",
119: "F8",
120: "F9",
121: "F10",
122: "F11",
123: "F12",
144: "Num Lock",
145: "Scroll Lock",
182: "My Computer",
183: "My Calculator",
186: ";",
187: "=",
188: ",",
189: "-",
190: ".",
191: "/",
192: "`",
219: "[",
220: "\\",
221: "]",
222: "'"
};
function addGlobalStyle(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) {
return;
}
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
var text = document.getElementsByClassName("t");
var toV = '';
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
entry = {
// mutation: mutation,
el: mutation.target.parentElement,
value: mutation.target.textContent,
oldValue: mutation.oldValue,
type: mutation.type
};
// console.log("Recording mutation:", entry);
});
console.log(toV);
console.log(parseInt(entry.value));
if (parseInt(entry.value) !== toV) {
var thisBubble = entry.el;
toV = isNaN(parseInt(entry.value)) ? 0 : parseInt(entry.value) * 1;
if (toV >= 10) {
oldZ = thisBubble.parentNode.parentNode.parentNode.style.zIndex;
thisBubble.parentNode.parentNode.parentNode.style.zIndex = "999999";
TweenMax.to(thisBubble, 1, {
scale: 8,
yoyo: true,
repeat: 1,
rotationX: "+=720deg",
onComplete: function() {
thisBubble.parentNode.parentNode.parentNode.style.zIndex = oldZ;
}
});
TweenMax.to(thisBubble, 1, {
backgroundColor: "rgb(170,0,255)"
});
// thisBubble.style.backgroundColor = "rgb(170,0,255)";
thisBubble.style.color = "white";
thisBubble.parentNode.parentNode.style.border = "rgba(170,0,255,0.5) solid 4px";
} else if (toV >= 5) {
thisBubble.style.backgroundColor = "rgb(0,170,255)";
thisBubble.style.color = "white";
thisBubble.parentNode.parentNode.style.border = "rgba(0,170,255,0.5) solid 4px";
} else if (toV >= 0) {
thisBubble.style.backgroundColor = "rgb(0,218,60)";
thisBubble.style.color = "white";
thisBubble.parentNode.parentNode.style.border = "rgba(0,218,60,0.5) solid 4px";
} else if (toV > -5) {
thisBubble.style.backgroundColor = "rgb(244,243,40)";
thisBubble.style.color = "black";
thisBubble.parentNode.parentNode.style.border = "rgba(244,243,40,0.5) solid 4px";
} else if (toV > -10) {
thisBubble.style.backgroundColor = "rgb(253,134,3)";
thisBubble.style.color = "black";
thisBubble.parentNode.parentNode.style.border = "rgba(253,134,3,0.5) solid 4px";
} else {
thisBubble.style.backgroundColor = "rgb(223,21,26)";
thisBubble.style.color = "black";
thisBubble.parentNode.parentNode.style.border = "rgba(223,21,26,0.5) solid 4px";
}
// entry.el.innerHTML = toV;
console.log(toV);
}
});
function mouseWheelHandler(e) {
var e = window.event || e; // old IE support
e.preventDefault();
e.stopPropagation;
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
if (delta > 0) {
clickPositive = true;
} else {
clickNegative = true;
}
this.click();
}
addGlobalStyle(' .hotKey {opacity: 0.05;} .hotKey:hover {opacity: 1.0;} .positive-behaviors-list, .negative-behaviors-list { display: visible; } .leaderboardStudentTile:hover {background-color: rgba(20,210,40,0.2);} .leaderboard-student-tile .bubble .student-number.zero {display:block; top:-16px; right:-16px;} span.student-number.negative::first-letter {font-size:0px;}');
var script = document.createElement("script");
script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/gsap/1.15.0/TweenMax.min.js");
script.addEventListener('load', function() {
var script2 = document.createElement("script");
script2.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/gsap/1.15.0/utils/Draggable.min.js");
script2.addEventListener('load', function() {
var checkExist = setInterval(function() {
if ($('.leaderboard-student-tile').length === numStudents) {
clearInterval(checkExist);
var li = document.createElement("a");
li.className = 'help-tab';
li.id = 'hide_stuff';
li.innerHTML = '<span class="glyphicon glyphicon-eye-close"></span>Hide Extras';
var t = document.getElementsByClassName("help-container").item(0);
t.appendChild(li);
li.addEventListener('click', function() {
$('div.navbar.navbar-static-top.mojette-navbar').toggle();
$('.help-tab[target=_blank]').toggle();
// $('div.help-container').toggle();
if (navShowing === true) {
document.getElementById('hide_stuff').innerHTML = '<span class="glyphicon glyphicon-eye-open"></span>';
navShowing = false;
} else {
document.getElementById('hide_stuff').innerHTML = '<span class="glyphicon glyphicon-eye-close"></span>Hide Extras';
navShowing = true;
}
});
$(".leaderboard-student-tile").wrap('<div class="leaderboardStudentTile" style="display:inline-block; position:absolute; border-radius:5px;"></div>');
// $('.first').hisResText();
// $('.last').hisResText();
var tiles = document.getElementsByClassName("leaderboard-student-tile");
// var tiles = document.getElementsByClassName("leaderboardStudentTile");
for (i = 0; i < tiles.length; i++) {
names[i] = tiles[i].children[1].textContent;
var thisBubble = tiles[i].children[3].children[0];
toVv = isNaN(parseInt(thisBubble.textContent)) ? 0 : parseInt(thisBubble.textContent) * 1;
if (toVv >= 10) {
thisBubble.style.backgroundColor = "rgb(170,0,255)";
thisBubble.style.color = "white";
thisBubble.parentNode.parentNode.style.border = "rgba(170,0,255,0.5) solid 4px";
} else if (toVv >= 5) {
thisBubble.style.backgroundColor = "rgb(0,170,255)";
thisBubble.style.color = "white";
thisBubble.parentNode.parentNode.style.border = "rgba(0,170,255,0.5) solid 4px";
} else if (toVv >= 0) {
thisBubble.style.backgroundColor = "rgb(0,218,60)";
thisBubble.style.color = "white";
thisBubble.parentNode.parentNode.style.border = "rgba(0,218,60,0.5) solid 4px";
} else if (toVv > -5) {
thisBubble.style.backgroundColor = "rgb(244,243,40)";
thisBubble.style.color = "black";
thisBubble.parentNode.parentNode.style.border = "rgba(244,243,40,0.5) solid 4px";
} else if (toVv > -10) {
thisBubble.style.backgroundColor = "rgb(253,134,3)";
thisBubble.style.color = "black";
thisBubble.parentNode.parentNode.style.border = "rgba(253,134,3,0.5) solid 4px";
} else {
thisBubble.style.backgroundColor = "rgb(223,21,26)";
thisBubble.style.color = "black";
thisBubble.parentNode.parentNode.style.border = "rgba(223,21,26,0.5) solid 4px";
}
observer.observe(thisBubble, {
characterData: true,
characterDataOldValue: true,
subtree: true
});
// names[i] = tiles[i].children[0][1].textContent;
}
for (i = 0; i < tiles.length; i++) {
var span = document.createElement("div");
if (i <= 11) {
span.innerHTML = "F" + (i + 1) + "";
} else if (i === 12) {
span.innerHTML = "PS";
} else if (i === 13) {
span.innerHTML = "SL";
} else if (i === 14) {
span.innerHTML = "PB";
}
span.style.bottom = "15px";
span.style.right = "15px";
span.style.position = "absolute";
span.style.border = "2px solid #333";
span.style.borderRadius = "5px";
span.style.background = "#ffe";
span.style.fontFamily = "monospace";
span.style.textAlign = "center";
span.style.lineHeight = "2.5";
span.style.height = "30px";
span.style.width = "30px";
span.style.fontSize = "80%";
span.className = "hotKey";
span.addEventListener('load', function() {
});
tiles[i].parentNode.appendChild(span);
// tiles[i].style.position="absolute";
// draggables[i] = Draggable.create(tiles[i], {type:"top,left", force3D:false, trigger:tiles[i].children[4],
draggables[i] = Draggable.create(tiles[i].parentNode, {
type: "top,left",
force3D: false,
//trigger:tiles[i].parentNode.children[1],
onDragEnd: function(e) {
e.preventDefault();
e.stopPropagation();
$('body').css('background-image', '');
var name = this.target.children[0].children[1].textContent;
var vX = name + "X";
var vY = name + "Y";
// var rect = getOffsetRect(this.target);
// var rect2 = document.getBoundingClientRect();
localStorage.setItem(vX, this.endX);
// localStorage.setItem(vX, this.target.style.left);
localStorage.setItem(vY, this.endY);
// localStorage.setItem(vY, this.target.style.top);
},
onClick: function(e) {
e.preventDefault();
e.stopPropagation;
// this.target.children[0].click();
return false;
},
onDragStart: function(e) {
$('body').css('background-image', 'url(//upload.wikimedia.org/wikipedia/commons/7/7c/Lightblue_empty_grid.svg)');
}
});
}
// console.log(tiles);
for (i = 0; i < tiles.length; i++) {
tiles[i].addEventListener("mousewheel", mouseWheelHandler, false);
}
for (i = 0; i < names.length; i++) {
var vX = names[i] + "X";
var vY = names[i] + "Y";
if (localStorage.getItem(vX) !== null && localStorage.getItem(vY) !== null) {
// TweenMax.to(tiles[i],5,{left:localStorage.getItem(vX), top:localStorage.getItem(vY)});
TweenMax.to(tiles[i].parentNode, 5, {
left: localStorage.getItem(vX),
top: localStorage.getItem(vY)
});
// console.log("values");
} else {
TweenMax.to(tiles[i].parentNode, 5, {
left: i * 20,
top: i * 20
});
}
}
/* $('.leaderboard-student-tile').bind('contextmenu', function (e) {
e.preventDefault();
});*/
$(document).keyup(function(e) {
if (!$('input[type=text]').length) {
if ($('.behavior-tile').length) {
var tiles = document.getElementsByClassName("behavior-tile");
if (e.which >= 49 && e.which <= 57) {
tiles.item(e.which - 49).click();
e.preventDefault();
} else if (e.which === 48) {
tiles.item(9).click();
e.preventDefault();
}
} else if ($('.leaderboard-student-tile').length) {
var tiles = document.getElementsByClassName("leaderboard-student-tile");
if (e.which >= 112 && e.which <= 123) {
tiles.item(e.which - 112).click();
e.preventDefault();
} else if (e.which === 44) {
tiles.item(12).click();
e.preventDefault();
} else if (e.which === 145) {
tiles.item(13).click();
e.preventDefault();
} else if (e.which === 19) {
tiles.item(14).click();
e.preventDefault();
} else if (e.which === 65) {
document.getElementById('award_multiple_trigger').click();
var checkExist2 = setInterval(function() {
if ($('#select_all').length) {
clearInterval(checkExist2);
document.getElementById('select_all').click();
var checkExist3 = setInterval(function() {
if ($('#give-multiple-awards-button').is(":disabled")) {
return false;
} else {
clearInterval(checkExist3);
document.getElementById('give-multiple-awards-button').click();
}
}, 200);
}
}, 200);
}
}
}
});
$(document).keydown(function(e) {
if (!$('input[type=text]').length)
e.preventDefault();
});
checkForBehaviors = setInterval(function() {
if ($('.behavior-tile').length) {
if (!behaviorsVisible) {
if (clickPositive) {
document.getElementsByClassName('positive-behaviors-list').item(0).getElementsByClassName('behavior-tile').item(1).click();
clickPositive = false;
} else if (clickNegative) {
document.getElementsByClassName('negative-behaviors-list').item(0).getElementsByClassName('behavior-tile').item(4).click();
clickNegative = false;
} else {
$('.behavior-tile').css('width', '10%');
$('.behavior-tile h4').css('font-size', '80%');
$('.positive-behaviors-list').show();
$('.positive-behaviors-list').prev().hide();
$('.negative-behaviors-list').show();
}
}
behaviorsVisible = true;
//clearInterval(checkforBehaviors);
} else {
behaviorsVisible = false;
}
}, 200);
checkForPopup = setInterval(function() {
if ($('.award-notification-view').length) {
if (!behaviorsVisible) {
if (isPositive) {
document.getElementsByClassName('positive-behaviors-list').item(0).getElementsByClassName('behavior-tile').item(1).click();
clickPositive = false;
} else if (isNegative) {
document.getElementsByClassName('negative-behaviors-list').item(0).getElementsByClassName('behavior-tile').item(4).click();
clickNegative = false;
} else {
$('.behavior-tile').css('width', '10%');
$('.behavior-tile h4').css('font-size', '80%');
$('.positive-behaviors-list').show();
$('.positive-behaviors-list').prev().hide();
$('.negative-behaviors-list').show();
}
}
behaviorsVisible = true;
//clearInterval(checkforBehaviors);
} else {
behaviorsVisible = false;
}
}, 200);
checkForSelected = setInterval(function() {
if ($('.leaderboard-student-tile.selected').length) {
if ($('.leaderboard-student-tile.selected').length !== numSelected) {
if (numSelected === 0) {
for (i = 0; i < draggables.length; i++) {
draggables[i][0].disable();
}
}
numSelected = $('.leaderboard-student-tile.selected').length;
var selectedTiles = document.getElementsByClassName('selected');
for (i = 0; i < draggablesSelected.length; i++) {
draggablesSelected[i][0].kill();
}
for (i = 0; i < numSelected; i++) {
draggablesSelected[i] = Draggable.create(selectedTiles[i].parentNode, {
type: "top,left",
force3D: false,
trigger: $('.leaderboardStudentTile').has('.leaderboard-student-tile.selected'),
onDragEnd: function(e) {
e.preventDefault();
e.stopPropagation();
$('body').css('background-image', '');
var name = this.target.children[0].children[1].textContent;
var vX = name + "X";
var vY = name + "Y";
// var rect = getOffsetRect(this.target);
// var rect2 = document.getBoundingClientRect();
localStorage.setItem(vX, this.endX);
// localStorage.setItem(vX, this.target.style.left);
localStorage.setItem(vY, this.endY);
// localStorage.setItem(vY, this.target.style.top);
},
onClick: function(e) {
e.preventDefault();
e.stopPropagation;
// this.target.children[0].click();
return false;
},
onDragStart: function(e) {
$('body').css('background-image', 'url(http://upload.wikimedia.org/wikipedia/commons/7/7c/Lightblue_empty_grid.svg)');
}
});
}
} else {
return false;
}
} else {
if (numSelected !== 0) {
for (i = 0; i < draggables.length; i++) {
draggables[i][0].enable();
}
for (i = 0; i < draggablesSelected.length; i++) {
draggablesSelected[i][0].kill();
}
}
numSelected = 0;
}
}, 200);
}
}, 1000);
}, false);
document.body.appendChild(script2);
}, false);
document.body.appendChild(script);