mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-27 15:12:25 +00:00
Ajout des licenses des modules JS
This commit is contained in:
parent
5cd5af5b1f
commit
ee1dab9642
8 changed files with 499 additions and 2 deletions
19
static/js/handlebars/LICENSE
Normal file
19
static/js/handlebars/LICENSE
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (C) 2011-2017 by Yehuda Katz
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
21
static/js/konami/LICENSE.md
Normal file
21
static/js/konami/LICENSE.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 Snaptortoise
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
139
static/js/konami/konami.js
Normal file
139
static/js/konami/konami.js
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
/*
|
||||||
|
* Konami-JS ~
|
||||||
|
* :: Now with support for touch events and multiple instances for
|
||||||
|
* :: those situations that call for multiple easter eggs!
|
||||||
|
* Code: https://github.com/snaptortoise/konami-js
|
||||||
|
* Examples: http://www.snaptortoise.com/konami-js
|
||||||
|
* Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
|
||||||
|
* Version: 1.5.1 (9/4/2017)
|
||||||
|
* Licensed under the MIT License (http://opensource.org/licenses/MIT)
|
||||||
|
* Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Konami = function (callback) {
|
||||||
|
var konami = {
|
||||||
|
addEvent: function (obj, type, fn, ref_obj) {
|
||||||
|
if (obj.addEventListener)
|
||||||
|
obj.addEventListener(type, fn, false);
|
||||||
|
else if (obj.attachEvent) {
|
||||||
|
// IE
|
||||||
|
obj["e" + type + fn] = fn;
|
||||||
|
obj[type + fn] = function () {
|
||||||
|
obj["e" + type + fn](window.event, ref_obj);
|
||||||
|
}
|
||||||
|
obj.attachEvent("on" + type, obj[type + fn]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeEvent: function (obj, eventName, eventCallback) {
|
||||||
|
if (obj.removeEventListener) {
|
||||||
|
obj.removeEventListener(eventName, eventCallback);
|
||||||
|
} else if (obj.attachEvent) {
|
||||||
|
obj.detachEvent(eventName);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
input: "",
|
||||||
|
pattern: "38384040373937396665",
|
||||||
|
keydownHandler: function (e, ref_obj) {
|
||||||
|
if (ref_obj) {
|
||||||
|
konami = ref_obj;
|
||||||
|
} // IE
|
||||||
|
konami.input += e ? e.keyCode : event.keyCode;
|
||||||
|
if (konami.input.length > konami.pattern.length) {
|
||||||
|
konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
|
||||||
|
}
|
||||||
|
if (konami.input === konami.pattern) {
|
||||||
|
konami.code(this._currentlink);
|
||||||
|
konami.input = '';
|
||||||
|
e.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
load: function (link) {
|
||||||
|
this.addEvent(document, "keydown", this.keydownHandler, this);
|
||||||
|
this.iphone.load(link);
|
||||||
|
},
|
||||||
|
unload: function () {
|
||||||
|
this.removeEvent(document, 'keydown', this.keydownHandler);
|
||||||
|
this.iphone.unload();
|
||||||
|
},
|
||||||
|
code: function (link) {
|
||||||
|
window.location = link
|
||||||
|
},
|
||||||
|
iphone: {
|
||||||
|
start_x: 0,
|
||||||
|
start_y: 0,
|
||||||
|
stop_x: 0,
|
||||||
|
stop_y: 0,
|
||||||
|
tap: false,
|
||||||
|
capture: false,
|
||||||
|
orig_keys: "",
|
||||||
|
keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"],
|
||||||
|
input: [],
|
||||||
|
code: function (link) {
|
||||||
|
konami.code(link);
|
||||||
|
},
|
||||||
|
touchmoveHandler: function (e) {
|
||||||
|
if (e.touches.length === 1 && konami.iphone.capture === true) {
|
||||||
|
var touch = e.touches[0];
|
||||||
|
konami.iphone.stop_x = touch.pageX;
|
||||||
|
konami.iphone.stop_y = touch.pageY;
|
||||||
|
konami.iphone.tap = false;
|
||||||
|
konami.iphone.capture = false;
|
||||||
|
konami.iphone.check_direction();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toucheendHandler: function () {
|
||||||
|
if (konami.iphone.tap === true) {
|
||||||
|
konami.iphone.check_direction(this._currentLink);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
touchstartHandler: function (e) {
|
||||||
|
konami.iphone.start_x = e.changedTouches[0].pageX;
|
||||||
|
konami.iphone.start_y = e.changedTouches[0].pageY;
|
||||||
|
konami.iphone.tap = true;
|
||||||
|
konami.iphone.capture = true;
|
||||||
|
},
|
||||||
|
load: function (link) {
|
||||||
|
this.orig_keys = this.keys;
|
||||||
|
konami.addEvent(document, "touchmove", this.touchmoveHandler);
|
||||||
|
konami.addEvent(document, "touchend", this.toucheendHandler, false);
|
||||||
|
konami.addEvent(document, "touchstart", this.touchstartHandler);
|
||||||
|
},
|
||||||
|
unload: function () {
|
||||||
|
konami.removeEvent(document, 'touchmove', this.touchmoveHandler);
|
||||||
|
konami.removeEvent(document, 'touchend', this.toucheendHandler);
|
||||||
|
konami.removeEvent(document, 'touchstart', this.touchstartHandler);
|
||||||
|
},
|
||||||
|
check_direction: function () {
|
||||||
|
x_magnitude = Math.abs(this.start_x - this.stop_x);
|
||||||
|
y_magnitude = Math.abs(this.start_y - this.stop_y);
|
||||||
|
x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT";
|
||||||
|
y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP";
|
||||||
|
result = (x_magnitude > y_magnitude) ? x : y;
|
||||||
|
result = (this.tap === true) ? "TAP" : result;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typeof callback === "string" && konami.load(callback);
|
||||||
|
if (typeof callback === "function") {
|
||||||
|
konami.code = callback;
|
||||||
|
konami.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
return konami;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
|
||||||
|
module.exports = Konami;
|
||||||
|
} else {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
define([], function() {
|
||||||
|
return Konami;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
window.Konami = Konami;
|
||||||
|
}
|
||||||
|
}
|
297
static/js/sapphire.js
Normal file
297
static/js/sapphire.js
Normal file
|
@ -0,0 +1,297 @@
|
||||||
|
// Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
||||||
|
// se veut agnostique au réseau considéré, de manière à être installable en
|
||||||
|
// quelques clics.
|
||||||
|
//
|
||||||
|
// Copyright © 2017 Maël Kervella
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation; either version 2 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along
|
||||||
|
// with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
// General options
|
||||||
|
//=====================================
|
||||||
|
// Times the canvas is refreshed a second
|
||||||
|
var FPS = 30;
|
||||||
|
// Determine the length of the trail (0=instant disappear, maximum=window.innerHeight=no disappear)
|
||||||
|
var TRAIL_TIME = 5;
|
||||||
|
// The color of the characters
|
||||||
|
var RAIN_COLOR = "#00F";
|
||||||
|
// The characters displayed
|
||||||
|
var CHARACTERS = "田由甲申甴电甶男甸甹町画甼甽甾甿畀畁畂畃畄畅畆畇畈畉畊畋界畍畎畏畐畑".split("");
|
||||||
|
// The font size used to display the characters
|
||||||
|
var FONT_SIZE = 10;
|
||||||
|
// The maximum number of characters displayed by column
|
||||||
|
var MAX_CHAR = 7;
|
||||||
|
|
||||||
|
var Sapphire = function () {
|
||||||
|
var sapphire = {
|
||||||
|
triggerHandle: undefined,
|
||||||
|
activated: false,
|
||||||
|
runOnce: false,
|
||||||
|
|
||||||
|
getClass: function(elt, main, name) { elt.obj = main.getElementsByClassName(name); },
|
||||||
|
getTag: function(elt, main, name) { elt.obj = main.getElementsByTagName(name); },
|
||||||
|
|
||||||
|
getProp: function(elt) {
|
||||||
|
for (var i=0 ; i<elt.obj.length ; i++) {
|
||||||
|
for (var p in elt.prop) {
|
||||||
|
if ( p === "color" ) { elt.prop[p][i] = elt.obj[i].style.color; }
|
||||||
|
else if ( p === "bgColor" ) { elt.prop[p][i] = elt.obj[i].style.backgroundColor; }
|
||||||
|
else if ( p === "display" ) { elt.prop[p][i] = elt.obj[i].style.display; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
alterProp: function(elt) {
|
||||||
|
for (var i=0 ; i<elt.obj.length ; i++) {
|
||||||
|
for (var p in elt.prop) {
|
||||||
|
if ( p === "color" ) { elt.obj[i].style.color = "white"; }
|
||||||
|
else if ( p === "bgColor" ) { elt.obj[i].style.backgroundColor = "transparent"; }
|
||||||
|
else if ( p === "display" ) { elt.obj[i].style.display = "none"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
revertProp: function(elt) {
|
||||||
|
for (var i=0 ; i<elt.obj.length ; i++) {
|
||||||
|
for (var p in elt.prop) {
|
||||||
|
if ( p === "color" ) { elt.obj[i].style.color = elt.prop[p][i]; }
|
||||||
|
else if ( p === "bgColor" ) { elt.obj[i].style.backgroundColor = elt.prop[p][i]; }
|
||||||
|
else if ( p === "display" ) { elt.obj[i].style.display = elt.prop[p][i]; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
elts: {
|
||||||
|
alerts: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "alert"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
btns: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: [], bgColor: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "btn"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: []},
|
||||||
|
get: function(main) {
|
||||||
|
this.obj = document.body;
|
||||||
|
for (var p in this.prop) { if ( p === "color" ) { this.prop[p] = this.obj.style.color; } }
|
||||||
|
},
|
||||||
|
alter: function() { for (var p in this.prop) { if ( p === "color" ) { this.obj.style.color = "white"; } } },
|
||||||
|
revert: function() { for (var p in this.prop) { if ( p === "color" ) { this.obj.style.color = this.prop[p]; } } }
|
||||||
|
},
|
||||||
|
captions: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "caption"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
helps: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "help-block"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
hrs: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {display: []},
|
||||||
|
get: function(main) { sapphire.getTag(this, main, "hr"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
inputs: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: [], bgColor: []},
|
||||||
|
get: function(main) { sapphire.getTag(this, main, "input"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
listGroups: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: [], bgColor: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "list-group-item"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
paginations: {
|
||||||
|
obj: [],
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) {
|
||||||
|
var a = main.getElementsByClassName("pagination");
|
||||||
|
for (var i=0 ; i<a.length ; i++) {
|
||||||
|
this.obj[i] = []; this.prop.bgColor[i] = [];
|
||||||
|
for (var j=0 ; j<a[i].children.length ; j++) {
|
||||||
|
this.obj[i][j] = a[i].children[j].children[0];
|
||||||
|
this.prop.bgColor[i][j] = this.obj[i][j].style.backgroundColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
alter: function () {
|
||||||
|
for (var i=0 ; i<this.obj.length ; i++)
|
||||||
|
for (var j=0 ; j<this.obj[i].length ; j++)
|
||||||
|
for (var p in this.prop)
|
||||||
|
if ( p === "bgColor" ) { this.obj[i][j].style.backgroundColor = "transparent"; }
|
||||||
|
},
|
||||||
|
revert: function() {
|
||||||
|
for (var i=0 ; i<this.obj.length ; i++)
|
||||||
|
for (var j=0 ; j<this.obj[i].length ; j++)
|
||||||
|
for (var p in this.prop)
|
||||||
|
if ( p === "bgColor" ) { this.obj[i][j].style.backgroundColor = this.prop[p][i][j]; }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
panelHeadings: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: [], color: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "panel-heading"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
panels: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "panel"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
selects: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {color: [], bgColor: []},
|
||||||
|
get: function(main) { sapphire.getTag(this, main, "select"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
sidenavs: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "sidenav"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
tds: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) { sapphire.getTag(this, main, "td"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
thumbnails: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) { sapphire.getClass(this, main, "thumbnail"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
},
|
||||||
|
trs: {
|
||||||
|
obj: undefined,
|
||||||
|
prop: {bgColor: []},
|
||||||
|
get: function(main) { sapphire.getTag(this, main, "tr"); sapphire.getProp(this); },
|
||||||
|
alter: function() { sapphire.alterProp(this); },
|
||||||
|
revert: function() { sapphire.revertProp(this); }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
canvas: undefined,
|
||||||
|
|
||||||
|
init: function() {
|
||||||
|
var main = document.getElementById("main");
|
||||||
|
for (var e in sapphire.elts) { sapphire.elts[e].get(main); }
|
||||||
|
},
|
||||||
|
|
||||||
|
run: function() {
|
||||||
|
sapphire.canvas = document.createElement("canvas");
|
||||||
|
document.body.appendChild(sapphire.canvas);
|
||||||
|
sapphire.canvas.width = window.innerWidth;
|
||||||
|
sapphire.canvas.height = window.innerHeight;
|
||||||
|
sapphire.canvas.style.position = "fixed";
|
||||||
|
sapphire.canvas.style.zIndex = -1;
|
||||||
|
sapphire.canvas.style.left = 0;
|
||||||
|
sapphire.canvas.style.top = 0;
|
||||||
|
|
||||||
|
var ctx = sapphire.canvas.getContext("2d");
|
||||||
|
|
||||||
|
var columns = sapphire.canvas.width/FONT_SIZE;
|
||||||
|
var alpha = Math.max( 0, Math.min( 1, TRAIL_TIME / ( sapphire.canvas.height/FONT_SIZE ) ) );
|
||||||
|
var drops = [];
|
||||||
|
for(var x = 0; x < columns; x++)
|
||||||
|
{
|
||||||
|
drops[x] = [];
|
||||||
|
var nb = Math.floor(Math.random()*MAX_CHAR);
|
||||||
|
for (var y = 0; y < nb; y++)
|
||||||
|
drops[x][y] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attenuateBackground() {
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, "+alpha+")";
|
||||||
|
ctx.fillRect(0, 0, sapphire.canvas.width, sapphire.canvas.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawMatrixRainDrop() {
|
||||||
|
ctx.fillStyle = RAIN_COLOR;
|
||||||
|
ctx.font = FONT_SIZE + "px arial";
|
||||||
|
for(var i = 0; i < drops.length; i++) {
|
||||||
|
for (var j = 0; j < drops[i].length; j++) {
|
||||||
|
var text = CHARACTERS[Math.floor(Math.random()*CHARACTERS.length)];
|
||||||
|
ctx.fillText(text, i*FONT_SIZE, drops[i][j]*FONT_SIZE);
|
||||||
|
if(drops[i][j]*FONT_SIZE > sapphire.canvas.height && Math.random() > 0.975)
|
||||||
|
drops[i][j] = 0;
|
||||||
|
drops[i][j]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawEverything() {
|
||||||
|
attenuateBackground();
|
||||||
|
drawMatrixRainDrop();
|
||||||
|
}
|
||||||
|
|
||||||
|
sapphire.triggerHandle = setInterval(drawEverything, 1000/FPS);
|
||||||
|
},
|
||||||
|
stop: function() {
|
||||||
|
sapphire.canvas.parentNode.removeChild(sapphire.canvas);
|
||||||
|
clearInterval(sapphire.triggerHandle);
|
||||||
|
},
|
||||||
|
|
||||||
|
alterElts: function() { for (var e in sapphire.elts) { sapphire.elts[e].alter(main); } },
|
||||||
|
revertElts: function() { for (var e in sapphire.elts) { sapphire.elts[e].revert(main); } },
|
||||||
|
|
||||||
|
activate: function() {
|
||||||
|
if (!sapphire.runOnce) {
|
||||||
|
sapphire.runOnce = true;
|
||||||
|
sapphire.init();
|
||||||
|
}
|
||||||
|
if (!sapphire.activated) {
|
||||||
|
sapphire.activated = true;
|
||||||
|
sapphire.alterElts();
|
||||||
|
sapphire.run()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sapphire.activated = false;
|
||||||
|
sapphire.stop();
|
||||||
|
sapphire.revertElts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sapphire;
|
||||||
|
}
|
||||||
|
|
||||||
|
var s = Sapphire();
|
||||||
|
Konami(s.activate);
|
||||||
|
|
19
static/js/typeahead/LICENSE
Normal file
19
static/js/typeahead/LICENSE
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (c) 2013-2014 Twitter, Inc
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
|
@ -35,8 +35,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<link href="/static/css/typeaheadjs.css" rel="stylesheet">
|
<link href="/static/css/typeaheadjs.css" rel="stylesheet">
|
||||||
|
|
||||||
{% bootstrap_javascript %}
|
{% bootstrap_javascript %}
|
||||||
<script src="/static/js/typeahead.js"></script>
|
<script src="/static/js/typeahead/typeahead.js"></script>
|
||||||
<script src="/static/js/handlebars.js"></script>
|
<script src="/static/js/handlebars/handlebars.js"></script>
|
||||||
|
<script src="/static/js/konami/konami.js"></script>
|
||||||
|
<script src="/static/js/sapphire.js"> var s=Sapphire(); Konami(s.activate); </script>
|
||||||
<link rel="stylesheet" href="{% static "/css/base.css" %}">
|
<link rel="stylesheet" href="{% static "/css/base.css" %}">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>{{ site_name }} : {% block title %}Accueil{% endblock %}</title>
|
<title>{{ site_name }} : {% block title %}Accueil{% endblock %}</title>
|
||||||
|
|
Loading…
Reference in a new issue