diff --git a/app/www/etc/server_mock/_home.html b/app/www/etc/server_mock/_home.html new file mode 100644 index 000000000..5216a7cee --- /dev/null +++ b/app/www/etc/server_mock/_home.html @@ -0,0 +1 @@ +

Penis

\ No newline at end of file diff --git a/app/www/etc/server_mock/events.json b/app/www/etc/server_mock/events.json new file mode 100644 index 000000000..4dd13662c --- /dev/null +++ b/app/www/etc/server_mock/events.json @@ -0,0 +1,40 @@ +{ + "events": [ + { + "title": "Bachelor Seminar \"Räumliche Informationssysteme\"", + "description": "Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.", + "registrationUrl": "/app/www/events.html", + "registrationLabel": "Zentralanmeldung" + }, + { + "title": "Bachelor Seminar \"Räumliche Informationssysteme\"", + "description": "Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.", + "registrationUrl": "/app/www/events.html", + "registrationLabel": "Zentralanmeldung" + }, + { + "title": "Bachelor Seminar \"Räumliche Informationssysteme\"", + "description": "Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.", + "registrationUrl": "/app/www/events.html", + "registrationLabel": "Zentralanmeldung" + }, + { + "title": "Bachelor Seminar \"Räumliche Informationssysteme\"", + "description": "Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.", + "registrationUrl": "/app/www/events.html", + "registrationLabel": "Zentralanmeldung" + }, + { + "title": "Bachelor Seminar \"Räumliche Informationssysteme\"", + "description": "Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.", + "registrationUrl": "/app/www/events.html", + "registrationLabel": "Zentralanmeldung" + }, + { + "title": "Bachelor Seminar \"Räumliche Informationssysteme\"", + "description": "Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.", + "registrationUrl": "/app/www/events.html", + "registrationLabel": "Zentralanmeldung" + } + ] +} \ No newline at end of file diff --git a/app/www/etc/server_mock/server.js b/app/www/etc/server_mock/server.js new file mode 100644 index 000000000..6d15e165f --- /dev/null +++ b/app/www/etc/server_mock/server.js @@ -0,0 +1,47 @@ +var http = require('http'); +var fs = require('fs'); + +//create a server object: +http.createServer(function (req, res) { + let data = "wurst"; + console.log(req.url); + + res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500'); + res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); + res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); + res.setHeader('Access-Control-Allow-Credentials', true); + + switch(req.url) { + case "/events": + fs.readFile('events.json', function(err, data) { + if (err) { + res.writeHead(404); + res.write(err); + } else { + res.writeHead(200, {'Content-Type': 'application/json'}); + res.write(data); + } + res.end(); + }); + break; + case '/home': + fs.readFile('_home.html', function(err, data) { + if (err) { + res.writeHead(404); + res.write(err); + } else { + res.writeHead(200, {'Content-Type': 'text/html'}); + res.write(data); + } + res.end(); + }); + break; + default: + res.writeHead(200, {'Content-Type': 'text/html'}); + res.write("käse"); + res.end(); + break; + } +}).listen(8080); //the server object listens on port 8080 + +// start with `supervisor server.js` \ No newline at end of file diff --git a/app/www/events.html b/app/www/events.html new file mode 100644 index 000000000..a440be500 --- /dev/null +++ b/app/www/events.html @@ -0,0 +1,111 @@ + + + + UniWorX + + + + + + +
+
+ + +
+ + + +
+
+
Aktuelle Veranstaltungen
+
Wintersemester 2017 / 2018 (WS17/18)
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+
Bachelor Seminar "Räumliche Informationssysteme"
+
Dieses Seminar dient der Hinführung zum wissenschatlichen Arbeiten in zweifacher Hinsicht. Esse incididunt dolore deserunt id non veniam.
+
Zentralanmeldung
+
+
+ + +
+ + \ No newline at end of file diff --git a/app/www/index.html b/app/www/index.html new file mode 100644 index 000000000..1d490f9fe --- /dev/null +++ b/app/www/index.html @@ -0,0 +1,98 @@ + + + + UniWorX + + + + + + + + +
+
+ + +
+ + + + +
+
+
Aktuelles
+
Id ipsum Lorem esse cillum Lorem cillum. Cillum proident culpa id incididunt voluptate esse amet est cillum velit. Mollit nisi labore velit nulla proident do elit exercitation veniam labore sint. Proident non eu nostrud sint laborum commodo voluptate deserunt anim occaecat eu.
+
Excepteur duis nulla reprehenderit ullamco aute elit laboris dolor. Duis aliquip est voluptate Lorem sunt aute cupidatat aute labore cupidatat pariatur mollit consequat elit. Voluptate enim pariatur elit consectetur aliqua ullamco. Laborum irure sit duis enim sunt pariatur cupidatat nisi nostrud duis. Nostrud ex incididunt sit velit veniam cupidatat ullamco nisi sit.
+
Irure ad veniam quis sint elit veniam commodo laborum cupidatat id enim. Pariatur minim qui labore labore. Nisi anim in incididunt exercitation sunt. Qui culpa adipisicing in Lorem aute ex. Consequat quis esse ipsum id ex officia nisi aute exercitation elit. Ea fugiat proident nulla aliqua exercitation elit adipisicing enim. Aliqua aute consequat minim fugiat exercitation ipsum irure esse sit amet eiusmod quis nulla.
+
Proident esse ipsum ad enim fugiat. Et elit voluptate do ullamco laboris consectetur deserunt officia adipisicing. Minim laboris laborum ut non sint ullamco excepteur non mollit laborum irure.
+
Est fugiat incididunt enim veniam aute. Aliqua ad incididunt in eu fugiat irure reprehenderit fugiat magna qui fugiat ullamco laborum. Aute cupidatat id culpa aute irure aliquip eu velit adipisicing. Proident sint et deserunt tempor irure ea duis velit. Sint occaecat consectetur commodo sit eiusmod exercitation enim pariatur amet in. Irure quis aliquip ea deserunt eu consequat consequat ullamco duis. Consequat proident amet mollit quis Lorem cillum mollit enim commodo.
+
Do id minim ex eiusmod labore et nulla est incididunt qui laborum. Consectetur et cupidatat voluptate eiusmod magna laborum enim cupidatat esse id do consequat est. Aliqua sunt laborum deserunt in. Officia dolore excepteur dolore Lorem culpa.
+
+
+
Mehr Aktuelles...
+
Id ipsum Lorem esse cillum Lorem cillum. Cillum proident culpa id incididunt voluptate esse amet est cillum velit. Mollit nisi labore velit nulla proident do elit exercitation veniam labore sint. Proident non eu nostrud sint laborum commodo voluptate deserunt anim occaecat eu.
+
Excepteur duis nulla reprehenderit ullamco aute elit laboris dolor. Duis aliquip est voluptate Lorem sunt aute cupidatat aute labore cupidatat pariatur mollit consequat elit. Voluptate enim pariatur elit consectetur aliqua ullamco. Laborum irure sit duis enim sunt pariatur cupidatat nisi nostrud duis. Nostrud ex incididunt sit velit veniam cupidatat ullamco nisi sit.
+
Irure ad veniam quis sint elit veniam commodo laborum cupidatat id enim. Pariatur minim qui labore labore. Nisi anim in incididunt exercitation sunt. Qui culpa adipisicing in Lorem aute ex. Consequat quis esse ipsum id ex officia nisi aute exercitation elit. Ea fugiat proident nulla aliqua exercitation elit adipisicing enim. Aliqua aute consequat minim fugiat exercitation ipsum irure esse sit amet eiusmod quis nulla.
+
+
+ + + + +
+ + \ No newline at end of file diff --git a/app/www/lib/require.js b/app/www/lib/require.js new file mode 100644 index 000000000..a3ca583b9 --- /dev/null +++ b/app/www/lib/require.js @@ -0,0 +1,5 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.3.5 Copyright jQuery Foundation and other contributors. + * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE + */ +var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h=i&&i.split("/"),m=y.map,g=m&&m["*"];if(e&&(c=(e=e.split("/")).length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[c])&&(e[c]=e[c].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),t(e),e=e.join("/")),r&&m&&(h||g)){e:for(a=(o=e.split("/")).length;a>0;a-=1){if(u=o.slice(0,a).join("/"),h)for(s=h.length;s>0;s-=1)if((n=getOwn(m,h.slice(0,s).join("/")))&&(n=getOwn(n,u))){d=n,p=a;break e}!f&&g&&getOwn(g,u)&&(f=getOwn(g,u),l=a)}!d&&f&&(d=f,p=l),d&&(o.splice(0,p,d),e=o.join("/"))}return getOwn(y.pkgs,e)||e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):-1===e.indexOf("!")?i(e,p,n):e:(d=(c=o(h=i(e,p,n)))[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e)).error&&"error"===t?i(n.error):n.on(t,i):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;for(d();O.length;){if(null===(e=O.shift())[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&((t=this.module)?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),void((d=getOwn(S,o.id))&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):((n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})})).error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(-1===i.indexOf("?")?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t;t=(e="string"==typeof e?{name:e}:e).name,e.location&&(y.paths[t]=e.location),y.pkgs[t]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){return function(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),(f=s(a(null,t))).skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return-1!==n&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){getOwn(S,e.id)&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(null===(i=O.shift())[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,o=(n=e.split("/")).length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s=("/"===(s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js")).charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.5",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if(void 0===define){if(void 0!==requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}void 0===require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),(n=getOwn(contexts,a))||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick=void 0!==setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],(baseElement=document.getElementsByTagName("base")[0])&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return(r=req.createNode(n,t,i)).setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript())&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")]),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout); \ No newline at end of file diff --git a/app/www/lib/velocity.min.js b/app/www/lib/velocity.min.js new file mode 100644 index 000000000..df2266667 --- /dev/null +++ b/app/www/lib/velocity.min.js @@ -0,0 +1,4 @@ +/*! VelocityJS.org (1.5.0). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ +/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ +!function(a){"use strict";function b(a){var b=a.length,d=c.type(a);return"function"!==d&&!c.isWindow(a)&&(!(1!==a.nodeType||!b)||("array"===d||0===b||"number"==typeof b&&b>0&&b-1 in a))}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return a&&a===a.window},c.type=function(a){return a?"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a:a+""},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return b===undefined||f.call(a,b)},c.each=function(a,c,d){var e=0,f=a.length,g=b(a);if(d){if(g)for(;e0?e=g:c=g}while(Math.abs(f)>r&&++h=q?k(b,h):0===i?h:m(b,c,c+u)}function o(){y=!0,a===c&&d===e||l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;w<4;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function l(a,b){var c=a;return u.isString(a)?y.Easings[a]||(c=!1):c=u.isArray(a)&&1===a.length?j.apply(null,a):u.isArray(a)&&2===a.length?z.apply(null,a.concat([b])):!(!u.isArray(a)||4!==a.length)&&k.apply(null,a),c===!1&&(c=y.Easings[y.defaults.easing]?y.defaults.easing:x),c}function m(a){if(a){var b=y.timestamp&&a!==!0?a:r.now(),c=y.State.calls.length;c>1e4&&(y.State.calls=e(y.State.calls),c=y.State.calls.length);for(var f=0;f4;a--){var b=c.createElement("div");if(b.innerHTML="",b.getElementsByTagName("span").length)return b=null,a}return d}(),q=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),r=function(){var a=b.performance||{};if("function"!=typeof a.now){var c=a.timing&&a.timing.navigationStart?a.timing.navigationStart:(new Date).getTime();a.now=function(){return(new Date).getTime()-c}}return a}(),s=function(){var a=Array.prototype.slice;try{return a.call(c.documentElement),a}catch(b){return function(b,c){var d=this.length;if("number"!=typeof b&&(b=0),"number"!=typeof c&&(c=d),this.slice)return a.call(this,b,c);var e,f=[],g=b>=0?b:Math.max(0,d+b),h=c<0?d+c:Math.min(c,d),i=h-g;if(i>0)if(f=new Array(i),this.charAt)for(e=0;e=0}:function(a,b){for(var c=0;c1e-4&&Math.abs(h.v)>1e-4))break;return f?function(a){return j[a*(j.length-1)|0]}:k}}();y.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},o.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){y.Easings[b[0]]=k.apply(null,b[1])});var A=y.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"],units:["%","em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","Q","in","pc","pt","px","deg","grad","rad","turn","s","ms"],colorNames:{aliceblue:"240,248,255",antiquewhite:"250,235,215",aquamarine:"127,255,212",aqua:"0,255,255",azure:"240,255,255",beige:"245,245,220",bisque:"255,228,196",black:"0,0,0",blanchedalmond:"255,235,205",blueviolet:"138,43,226",blue:"0,0,255",brown:"165,42,42",burlywood:"222,184,135",cadetblue:"95,158,160",chartreuse:"127,255,0",chocolate:"210,105,30",coral:"255,127,80",cornflowerblue:"100,149,237",cornsilk:"255,248,220",crimson:"220,20,60",cyan:"0,255,255",darkblue:"0,0,139",darkcyan:"0,139,139",darkgoldenrod:"184,134,11",darkgray:"169,169,169",darkgrey:"169,169,169",darkgreen:"0,100,0",darkkhaki:"189,183,107",darkmagenta:"139,0,139",darkolivegreen:"85,107,47",darkorange:"255,140,0",darkorchid:"153,50,204",darkred:"139,0,0",darksalmon:"233,150,122",darkseagreen:"143,188,143",darkslateblue:"72,61,139",darkslategray:"47,79,79",darkturquoise:"0,206,209",darkviolet:"148,0,211",deeppink:"255,20,147",deepskyblue:"0,191,255",dimgray:"105,105,105",dimgrey:"105,105,105",dodgerblue:"30,144,255",firebrick:"178,34,34",floralwhite:"255,250,240",forestgreen:"34,139,34",fuchsia:"255,0,255",gainsboro:"220,220,220",ghostwhite:"248,248,255",gold:"255,215,0",goldenrod:"218,165,32",gray:"128,128,128",grey:"128,128,128",greenyellow:"173,255,47",green:"0,128,0",honeydew:"240,255,240",hotpink:"255,105,180",indianred:"205,92,92",indigo:"75,0,130",ivory:"255,255,240",khaki:"240,230,140",lavenderblush:"255,240,245",lavender:"230,230,250",lawngreen:"124,252,0",lemonchiffon:"255,250,205",lightblue:"173,216,230",lightcoral:"240,128,128",lightcyan:"224,255,255",lightgoldenrodyellow:"250,250,210",lightgray:"211,211,211",lightgrey:"211,211,211",lightgreen:"144,238,144",lightpink:"255,182,193",lightsalmon:"255,160,122",lightseagreen:"32,178,170",lightskyblue:"135,206,250",lightslategray:"119,136,153",lightsteelblue:"176,196,222",lightyellow:"255,255,224",limegreen:"50,205,50",lime:"0,255,0",linen:"250,240,230",magenta:"255,0,255",maroon:"128,0,0",mediumaquamarine:"102,205,170",mediumblue:"0,0,205",mediumorchid:"186,85,211",mediumpurple:"147,112,219",mediumseagreen:"60,179,113",mediumslateblue:"123,104,238",mediumspringgreen:"0,250,154",mediumturquoise:"72,209,204",mediumvioletred:"199,21,133",midnightblue:"25,25,112",mintcream:"245,255,250",mistyrose:"255,228,225",moccasin:"255,228,181",navajowhite:"255,222,173",navy:"0,0,128",oldlace:"253,245,230",olivedrab:"107,142,35",olive:"128,128,0",orangered:"255,69,0",orange:"255,165,0",orchid:"218,112,214",palegoldenrod:"238,232,170",palegreen:"152,251,152",paleturquoise:"175,238,238",palevioletred:"219,112,147",papayawhip:"255,239,213",peachpuff:"255,218,185",peru:"205,133,63",pink:"255,192,203",plum:"221,160,221",powderblue:"176,224,230",purple:"128,0,128",red:"255,0,0",rosybrown:"188,143,143",royalblue:"65,105,225",saddlebrown:"139,69,19",salmon:"250,128,114",sandybrown:"244,164,96",seagreen:"46,139,87",seashell:"255,245,238",sienna:"160,82,45",silver:"192,192,192",skyblue:"135,206,235",slateblue:"106,90,205",slategray:"112,128,144",snow:"255,250,250",springgreen:"0,255,127",steelblue:"70,130,180",tan:"210,180,140",teal:"0,128,128",thistle:"216,191,216",tomato:"255,99,71",turquoise:"64,224,208",violet:"238,130,238",wheat:"245,222,179",whitesmoke:"245,245,245",white:"255,255,255",yellowgreen:"154,205,50",yellow:"255,255,0"}},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){function a(a,b,c){if("border-box"===A.getPropertyValue(b,"boxSizing").toString().toLowerCase()===(c||!1)){var d,e,f=0,g="width"===a?["Left","Right"]:["Top","Bottom"],h=["padding"+g[0],"padding"+g[1],"border"+g[0]+"Width","border"+g[1]+"Width"];for(d=0;d9)||y.State.isGingerbread||(A.Lists.transformsBase=A.Lists.transformsBase.concat(A.Lists.transforms3D));for(var c=0;c8)&&3===f.split(" ").length&&(f+=" 1"),f;case"inject":return/^rgb/.test(e)?e:(p<=8?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(p<=8?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")")}}}();A.Normalizations.registered.innerWidth=b("width",!0),A.Normalizations.registered.innerHeight=b("height",!0),A.Normalizations.registered.outerWidth=b("width"),A.Normalizations.registered.outerHeight=b("height")}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(p||y.State.isAndroid&&!y.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(y.State.prefixMatches[a])return[y.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;c=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(A.Normalizations.registered[c]&&"transform"===A.Normalizations.registered[c]("name",a))A.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(A.Hooks.registered[c]){var i=c,j=A.Hooks.getRoot(c);e=e||A.getPropertyValue(a,j),d=A.Hooks.injectValue(i,d,e),c=j}if(A.Normalizations.registered[c]&&(d=A.Normalizations.registered[c]("inject",a,d),c=A.Normalizations.registered[c]("name",a)),h=A.Names.prefixCheck(c)[0],p<=8)try{a.style[h]=d}catch(l){y.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else{var k=g(a);k&&k.isSVG&&A.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d}y.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){var b="",c=g(a);if((p||y.State.isAndroid&&!y.State.isChrome)&&c&&c.isSVG){var d=function(b){return parseFloat(A.getPropertyValue(a,b))},e={translate:[d("translateX"),d("translateY")],skewX:[d("skewX")],skewY:[d("skewY")],scale:1!==d("scale")?[d("scale"),d("scale")]:[d("scaleX"),d("scaleY")],rotate:[d("rotateZ"),0,0]};o.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),e[a]&&(b+=a+"("+e[a].join(" ")+") ",delete e[a])})}else{var f,h;o.each(g(a).transformCache,function(c){if(f=g(a).transformCache[c],"transformPerspective"===c)return h=f,!0;9===p&&"rotateZ"===c&&(c="rotate"),b+=c+f+" "}),h&&(b="perspective"+h+" "+b)}A.setPropertyValue(a,"transform",b)}};A.Hooks.register(),A.Normalizations.register(),y.hook=function(a,b,c){var e;return a=f(a),o.each(a,function(a,f){if(g(f)===d&&y.init(f),c===d)e===d&&(e=A.getPropertyValue(f,b));else{var h=A.setPropertyValue(f,b,c);"transform"===h[0]&&y.CSS.flushTransformCache(f),e=h}}),e};var B=function(){function a(){return k?z.promise||null:p}function e(a,e){function f(f){var k,n;if(i.begin&&0===D)try{i.begin.call(r,r)}catch(V){setTimeout(function(){throw V},1)}if("scroll"===G){var p,q,w,x=/^x$/i.test(i.axis)?"Left":"Top",B=parseFloat(i.offset)||0;i.container?u.isWrapped(i.container)||u.isNode(i.container)?(i.container=i.container[0]||i.container,p=i.container["scroll"+x],w=p+o(a).position()[x.toLowerCase()]+B):i.container=null:(p=y.State.scrollAnchor[y.State["scrollProperty"+x]],q=y.State.scrollAnchor[y.State["scrollProperty"+("Left"===x?"Top":"Left")]],w=o(a).offset()[x.toLowerCase()]+B),j={scroll:{rootPropertyValue:!1,startValue:p,currentValue:p,endValue:w,unitType:"",easing:i.easing,scrollData:{container:i.container,direction:x,alternateValue:q}},element:a},y.debug&&console.log("tweensContainer (scroll): ",j.scroll,a)}else if("reverse"===G){if(!(k=g(a)))return;if(!k.tweensContainer)return void o.dequeue(a,i.queue);"none"===k.opts.display&&(k.opts.display="auto"),"hidden"===k.opts.visibility&&(k.opts.visibility="visible"),k.opts.loop=!1,k.opts.begin=null,k.opts.complete=null,v.easing||delete i.easing,v.duration||delete i.duration,i=o.extend({},k.opts,i),n=o.extend(!0,{},k?k.tweensContainer:null);for(var E in n)if(n.hasOwnProperty(E)&&"element"!==E){var F=n[E].startValue;n[E].startValue=n[E].currentValue=n[E].endValue,n[E].endValue=F,u.isEmptyObject(v)||(n[E].easing=i.easing),y.debug&&console.log("reverse tweensContainer ("+E+"): "+JSON.stringify(n[E]),a)}j=n}else if("start"===G){k=g(a),k&&k.tweensContainer&&k.isAnimating===!0&&(n=k.tweensContainer);var H=function(e,f){var g,l=A.Hooks.getRoot(e),m=!1,p=f[0],q=f[1],r=f[2] + ;if(!(k&&k.isSVG||"tween"===l||A.Names.prefixCheck(l)[1]!==!1||A.Normalizations.registered[l]!==d))return void(y.debug&&console.log("Skipping ["+l+"] due to a lack of browser support."));(i.display!==d&&null!==i.display&&"none"!==i.display||i.visibility!==d&&"hidden"!==i.visibility)&&/opacity|filter/.test(e)&&!r&&0!==p&&(r=0),i._cacheValues&&n&&n[e]?(r===d&&(r=n[e].endValue+n[e].unitType),m=k.rootPropertyValueCache[l]):A.Hooks.registered[e]?r===d?(m=A.getPropertyValue(a,l),r=A.getPropertyValue(a,e,m)):m=A.Hooks.templates[l][1]:r===d&&(r=A.getPropertyValue(a,e));var s,t,v,w=!1,x=function(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=A.Values.getUnitType(a)),[d,c]};if(r!==p&&u.isString(r)&&u.isString(p)){g="";var z=0,B=0,C=[],D=[],E=0,F=0,G=0;for(r=A.Hooks.fixColors(r),p=A.Hooks.fixColors(p);z=4&&"("===H?E++:(E&&E<5||E>=4&&")"===H&&--E<5)&&(E=0),0===F&&"r"===H||1===F&&"g"===H||2===F&&"b"===H||3===F&&"a"===H||F>=3&&"("===H?(3===F&&"a"===H&&(G=1),F++):G&&","===H?++G>3&&(F=G=0):(G&&F<(G?5:4)||F>=(G?4:3)&&")"===H&&--F<(G?5:4))&&(F=G=0)}}z===r.length&&B===p.length||(y.debug&&console.error('Trying to pattern match mis-matched strings ["'+p+'", "'+r+'"]'),g=d),g&&(C.length?(y.debug&&console.log('Pattern found "'+g+'" -> ',C,D,"["+r+","+p+"]"),r=C,p=D,t=v=""):g=d)}g||(s=x(e,r),r=s[0],v=s[1],s=x(e,p),p=s[0].replace(/^([+-\/*])=/,function(a,b){return w=b,""}),t=s[1],r=parseFloat(r)||0,p=parseFloat(p)||0,"%"===t&&(/^(fontSize|lineHeight)$/.test(e)?(p/=100,t="em"):/^scale/.test(e)?(p/=100,t=""):/(Red|Green|Blue)$/i.test(e)&&(p=p/100*255,t="")));if(/[\/*]/.test(w))t=v;else if(v!==t&&0!==r)if(0===p)t=v;else{h=h||function(){var d={myParent:a.parentNode||c.body,position:A.getPropertyValue(a,"position"),fontSize:A.getPropertyValue(a,"fontSize")},e=d.position===M.lastPosition&&d.myParent===M.lastParent,f=d.fontSize===M.lastFontSize;M.lastParent=d.myParent,M.lastPosition=d.position,M.lastFontSize=d.fontSize;var g={};if(f&&e)g.emToPx=M.lastEmToPx,g.percentToPxWidth=M.lastPercentToPxWidth,g.percentToPxHeight=M.lastPercentToPxHeight;else{var h=k&&k.isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");y.init(h),d.myParent.appendChild(h),o.each(["overflow","overflowX","overflowY"],function(a,b){y.CSS.setPropertyValue(h,b,"hidden")}),y.CSS.setPropertyValue(h,"position",d.position),y.CSS.setPropertyValue(h,"fontSize",d.fontSize),y.CSS.setPropertyValue(h,"boxSizing","content-box"),o.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){y.CSS.setPropertyValue(h,b,"100%")}),y.CSS.setPropertyValue(h,"paddingLeft","100em"),g.percentToPxWidth=M.lastPercentToPxWidth=(parseFloat(A.getPropertyValue(h,"width",null,!0))||1)/100,g.percentToPxHeight=M.lastPercentToPxHeight=(parseFloat(A.getPropertyValue(h,"height",null,!0))||1)/100,g.emToPx=M.lastEmToPx=(parseFloat(A.getPropertyValue(h,"paddingLeft"))||1)/100,d.myParent.removeChild(h)}return null===M.remToPx&&(M.remToPx=parseFloat(A.getPropertyValue(c.body,"fontSize"))||16),null===M.vwToPx&&(M.vwToPx=parseFloat(b.innerWidth)/100,M.vhToPx=parseFloat(b.innerHeight)/100),g.remToPx=M.remToPx,g.vwToPx=M.vwToPx,g.vhToPx=M.vhToPx,y.debug>=1&&console.log("Unit ratios: "+JSON.stringify(g),a),g}();var S=/margin|padding|left|right|width|text|word|letter/i.test(e)||/X$/.test(e)||"x"===e?"x":"y";switch(v){case"%":r*="x"===S?h.percentToPxWidth:h.percentToPxHeight;break;case"px":break;default:r*=h[v+"ToPx"]}switch(t){case"%":r*=1/("x"===S?h.percentToPxWidth:h.percentToPxHeight);break;case"px":break;default:r*=1/h[t+"ToPx"]}}switch(w){case"+":p=r+p;break;case"-":p=r-p;break;case"*":p*=r;break;case"/":p=r/p}j[e]={rootPropertyValue:m,startValue:r,currentValue:r,endValue:p,unitType:t,easing:q},g&&(j[e].pattern=g),y.debug&&console.log("tweensContainer ("+e+"): "+JSON.stringify(j[e]),a)};for(var I in s)if(s.hasOwnProperty(I)){var J=A.Names.camelCase(I),K=function(b,c){var d,f,g;return u.isFunction(b)&&(b=b.call(a,e,C)),u.isArray(b)?(d=b[0],!u.isArray(b[1])&&/^[\d-]/.test(b[1])||u.isFunction(b[1])||A.RegEx.isHex.test(b[1])?g=b[1]:u.isString(b[1])&&!A.RegEx.isHex.test(b[1])&&y.Easings[b[1]]||u.isArray(b[1])?(f=c?b[1]:l(b[1],i.duration),g=b[2]):g=b[1]||b[2]):d=b,c||(f=f||i.easing),u.isFunction(d)&&(d=d.call(a,e,C)),u.isFunction(g)&&(g=g.call(a,e,C)),[d||0,f,g]}(s[I]);if(t(A.Lists.colors,J)){var L=K[0],O=K[1],P=K[2];if(A.RegEx.isHex.test(L)){for(var Q=["Red","Green","Blue"],R=A.Values.hexToRgb(L),S=P?A.Values.hexToRgb(P):d,T=0;T header { + grid-column: span 12; +} + +.grid > .sidebar { + grid-column: 2 / span 2; + grid-row-start: 2; +} + +.grid > .sidebar-right { + display: none; + grid-column: span 2; + grid-row-start: 2; +} + +.grid > section { + grid-column: 4 / span 8; + grid-row-start: 2; +} + +.grid > footer { + grid-column: span 12; + grid-row-start: 3; +} + +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + margin: 0; +} + +body { + background-color: #1d1c1d; + color: #fff; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 400; + font-size: 18px; + overflow-y: scroll; +} + +a, +a:visited, +a:link { + color: inherit; + text-decoration: none; + font-weight: 600; + -webkit-transition: color .2s ease, background-color .2s ease; + transition: color .2s ease, background-color .2s ease; +} + +a:hover { + color: #72a85b; +} + +ul { + list-style-type: none; +} + +ul.flat > li { + display: inline-block; +} + +h1 { + font-size: 48px; + line-height: 48px; + font-weight: 300; + margin: 20px 0 40px; +} + +.text, .event-desc { + margin-bottom: 20px; + line-height: 1.4; +} + +header { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 12px 24px; + height: var(--header-height); + line-height: var(--header-height); + background-color: #72a85b; + width: 100%; + overflow: hidden; + z-index: 100; + -webkit-transition: height .2s ease, line-height .2s ease; + transition: height .2s ease, line-height .2s ease; +} + +header.sticky { + position: fixed; + top: 0; +} + +header.collapsed { + height: var(--header-height-collapsed); + line-height: var(--header-height-collapsed); +} + +header.collapsed:before { + height: 30px; +} + +header > nav.horizontal li a { + padding: 0 13px 0; + position: relative; + height: 100%; + display: inline-block; + color: #fff; +} + +header > nav.horizontal li a:hover { + background-color: white; +} + +footer { + text-align: right; + padding: 7px 24px; + overflow: hidden; + background-color: #72a85b; +} + +.box { + background-color: #3c3c3c; + position: relative; + padding: 24px; + padding-top: 60px; + -webkit-box-shadow: 0 1px 2px #656565; + box-shadow: 0 1px 2px #656565; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-bottom: 20px; +} + +.box .box-title { + content: attr(data-title); + position: absolute; + color: #fff; + top: -3px; + left: -3px; + width: calc(100% + 6px); + background-color: #72a85b; + padding: 7px 23px; + font-size: 20px; + font-weight: 600; + overflow: hidden; + display: block; +} + +.box.event-box { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + margin-bottom: 20px; +} + +.event-desc { + padding: 0 13px; +} + +.button, .event-registration { + background-color: #72a85b; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding: 3px 13px; + cursor: pointer; + font-weight: 600; + -webkit-transition: background-color .2s ease, -webkit-transform .1s; + transition: background-color .2s ease, -webkit-transform .1s; + transition: transform .1s, background-color .2s ease; + transition: transform .1s, background-color .2s ease, -webkit-transform .1s; +} + +.button:hover, .event-registration:hover { + background-color: #5b8848; + -webkit-transform: scale(1.01); + transform: scale(1.01); +} + +.has-diagonal:before, header:before, .box .box-title:before { + content: ''; + position: absolute; + top: -10px; + right: -25px; + height: 60px; + width: 310px; + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + background-color: rgba(255, 255, 255, 0.4); + display: block; + -webkit-transition: height .2s; + transition: height .2s; + -webkit-transform-origin: top right; + transform-origin: top right; +} +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/app/www/src/css/main.css.map b/app/www/src/css/main.css.map new file mode 100644 index 000000000..7d9868885 --- /dev/null +++ b/app/www/src/css/main.css.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "mappings": "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", + "sources": [ + "../scss/main.scss" + ], + "names": [], + "file": "main.css" +} \ No newline at end of file diff --git a/app/www/src/js/api.js b/app/www/src/js/api.js new file mode 100644 index 000000000..874e9e421 --- /dev/null +++ b/app/www/src/js/api.js @@ -0,0 +1,26 @@ +define(function (require) { + var serverUrl = "http://localhost:8080"; + + return { + getEvents: function(cb) { + this.getJson('events', cb); + }, + getJson: function(req, cb) { + console.log('requesting %s', req); + // TODO: sanitize url + fetch(serverUrl + req).then(function(res) { + return res.json(); + }).then(function(res){ + cb(res); + }); + }, + getHtml: function(req, cb) { + fetch(serverUrl + req).then(function(res) { + console.log(res); + return res.text(); + }).then(function(res){ + cb(res); + }); + } + } +}); \ No newline at end of file diff --git a/app/www/src/js/helper/async_content.js b/app/www/src/js/helper/async_content.js new file mode 100644 index 000000000..bfe66ce4f --- /dev/null +++ b/app/www/src/js/helper/async_content.js @@ -0,0 +1,99 @@ +define(["../api"], function (api) { + + var mainContentElement = document.querySelector('.main-content'); + + function replaceMainContent(elements) { + var element = document.querySelector('.main-content'); + + Velocity(element, { + opacity: 0 + }, { + duration: 100, + complete: function(animatedElements) { + // actually remove content + mainContentElement.innerHTML = ""; + elements.forEach(function(el) { + // and add new one + mainContentElement.appendChild(el); + }); + Velocity(element, { + opacity: 1 + }, { + duration: 70 + }); + } + }); + } + + function renderHtml(result) { + console.log(result); + var box = document.createElement('div'); + box.classList.add('box'); + box.innerHTML = result; + + var boxTitleEl = document.createElement('div'); + boxTitleEl.classList.add('box-title'); + boxTitleEl.innerHTML = 'Wurst'; + box.appendChild(boxTitleEl); + + replaceMainContent([box]); + } + + function renderEvents(result) { + var els = []; + var introBox = document.createElement('div'); + introBox.classList.add('box'); + introBox.innerHTML = '
Aktuelle Veranstaltungen
Wintersemester 2017 / 2018 (WS17/18)
'; + els.push(introBox); + for (var i = 0; i < result.events.length; i++) { + var event = result.events[i]; + + var eventEl = document.createElement('div'); + eventEl.classList.add('box', 'event-box'); + + var eventTitleEl = document.createElement('div'); + eventTitleEl.classList.add('box-title'); + eventTitleEl.innerHTML = event.title; + + var eventDescEl = document.createElement('div'); + eventDescEl.classList.add('event-desc'); + eventDescEl.innerHTML = event.description; + + var eventRegistrationEl = document.createElement('div'); + eventRegistrationEl.classList.add('event-registration'); + eventRegistrationEl.innerHTML = event.registrationLabel; + + eventEl.appendChild(eventTitleEl); + eventEl.appendChild(eventDescEl); + eventEl.appendChild(eventRegistrationEl); + els.push(eventEl); + } + replaceMainContent(els); + // TODO: reattach handlers, load js and stuff + } + + return { + init: function() { + var linkElements = document.querySelectorAll('a[async]'); + + [].slice.call(linkElements).forEach((el, i) => { + var mainElement = document.querySelector('.main-content'); + + el.addEventListener('click', function(event) { + var req = el.getAttribute('href'); + event.preventDefault(); + var type = el.dataset.type || 'html'; + switch(type) { + case 'json': + api.getJson(req, renderEvents); + break; + case 'html': + default: + api.getHtml(req, renderHtml); + break; + } + }); + }); + } + } +}); \ No newline at end of file diff --git a/app/www/src/js/helper/sticky_menu.js b/app/www/src/js/helper/sticky_menu.js new file mode 100644 index 000000000..7e88791ac --- /dev/null +++ b/app/www/src/js/helper/sticky_menu.js @@ -0,0 +1,28 @@ +define(function (require) { + + return { + init: function() { + var last_known_scroll_position = 0; + var ticking = false; + + window.addEventListener('scroll', function(e) { + if (!ticking) { + window.requestAnimationFrame(function() { + checkScroll(); + }); + ticking = true; + } + }); + + function checkScroll() { + var collapsed = (window.scrollY > 0 && last_known_scroll_position <= window.scrollY) + var sticky = window.scrollY > 0; + document.querySelector('header').classList.toggle('collapsed', collapsed); + document.querySelector('header').classList.toggle('sticky', sticky); + ticking = false; + last_known_scroll_position = window.scrollY; + } + checkScroll(); + } + } +}); \ No newline at end of file diff --git a/app/www/src/js/main.js b/app/www/src/js/main.js new file mode 100644 index 000000000..902bc879e --- /dev/null +++ b/app/www/src/js/main.js @@ -0,0 +1,4 @@ +requirejs(["helper/sticky_menu", "helper/async_content", "api"], function(sticky_menu, async_content, api) { + sticky_menu.init(); + async_content.init(); +}); diff --git a/app/www/src/scss/main.scss b/app/www/src/scss/main.scss new file mode 100644 index 000000000..695a7f9c1 --- /dev/null +++ b/app/www/src/scss/main.scss @@ -0,0 +1,235 @@ +// THEME 1 +$base00: #72a85b; +$base-bg-color: #1d1c1d; +$base-font-color: #fff; +$sec-font-color: #fff; +$box-bg-color: #3c3c3c; +// THEME 2 +// $base00: #639ac7; +// $base-bg-color: #f3f3f3; +// $base-font-color: rgb(53, 53, 53); +// $sec-font-color: #eaf2ff; +// $box-bg-color: #dddddd; + +// VARIABLES +:root { + --header-height: 60px; + --header-height-collapsed: 40px; + --footer-height: 50px; +} + +// GRID SETUP +.grid { + display: grid; + height: 100%; + grid-template-columns: repeat(12, 1fr); + grid-template-rows: var(--header-height) auto var(--footer-height); + grid-gap: 40px; + + > header { + grid-column: span 12; + } + + > .sidebar { + grid-column: 2 / span 2; + grid-row-start: 2; + } + + > .sidebar-right { + display: none; + grid-column: span 2; + grid-row-start: 2; + } + + > section { + grid-column: 4 / span 8; + grid-row-start: 2; + } + + > footer { + grid-column: span 12; + grid-row-start: 3; + } +} + + +// BASIC SETUP +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +body { + background-color: $base-bg-color; + color: $base-font-color; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 400; + font-size: 18px; + overflow-y: scroll; +} + +a, +a:visited, +a:link { + color: inherit; + text-decoration: none; + font-weight: 600; + transition: color .2s ease, background-color .2s ease; +} +a:hover { + color: $base00; +} + +ul { + list-style-type: none; + + &.flat > li { + display: inline-block; + } +} + +h1 { + font-size: 48px; + line-height: 48px; + font-weight: 300; + margin: 20px 0 40px; +} + +.text { + margin-bottom: 20px; + line-height: 1.4; +} + +// MACRO DESIGN +header { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: 12px 24px; + height: var(--header-height); + line-height: var(--header-height); + background-color: $base00; + width: 100%; + overflow: hidden; + z-index: 100; + // box-shadow: 0 0 40px 40px rgba(0, 0, 0, 0.1); + transition: height .2s ease, line-height .2s ease; + @extend .has-diagonal; + + &.sticky { + position: fixed; + top: 0; + } + + &.collapsed { + height: var(--header-height-collapsed); + line-height: var(--header-height-collapsed); + + &:before { + height: 30px; + } + } + + > nav.horizontal li a { + padding: 0 13px 0; + position: relative; + height: 100%; + display: inline-block; + color: $sec-font-color; + + &:hover { + background-color: white; + } + } +} + +.main-content { + // padding: 24px; +} + +footer { + text-align: right; + padding: 7px 24px; + overflow: hidden; + background-color: $base00; +} + +.box { + background-color: $box-bg-color; + position: relative; + padding: 24px; + padding-top: 60px; + box-shadow: 0 1px 2px #656565; + display: flex; + flex-direction: column; + margin-bottom: 20px; + + .box-title { + content: attr(data-title); + position: absolute; + color: $sec-font-color; + top: -3px; + left: -3px; + width: calc(100% + 6px); + background-color: $base00; + padding: 7px 23px; + font-size: 20px; + font-weight: 600; + overflow: hidden; + display: block; + @extend .has-diagonal; + } + + &.event-box { + // background-color: white; + // color: $base-bg-color; + flex-direction: row; + margin-bottom: 20px; + + } +} + +.event-registration { + @extend .button; +} +.event-desc { + @extend .text; + padding: 0 13px; +} + +// HELPERS +.button { + background-color: $base00; + display: flex; + align-items: center; + justify-content: center; + padding: 3px 13px; + cursor: pointer; + font-weight: 600; + transition: transform .1s, background-color .2s ease; + + &:hover { + background-color: darken($base00, 10%); + transform: scale(1.01); + } +} + +.has-diagonal { + + &:before { + content: ''; + position: absolute; + top: -10px; + right: -25px; + height: 60px; + width: 310px; + transform: rotate(12deg); + background-color: rgba(255, 255, 255, 0.4); + display: block; + transition: height .2s; + transform-origin: top right; + } +} \ No newline at end of file