Compare commits
34 Commits
cb36396efa
...
f5311ad861
| Author | SHA1 | Date | |
|---|---|---|---|
| f5311ad861 | |||
| b50c31044a | |||
| e0f725fdb0 | |||
| 6fabea3793 | |||
| c59030584f | |||
| 7b287b57cd | |||
|
|
47ce5c4d37 | ||
|
|
c5af587d38 | ||
|
|
8896a0ed62 | ||
|
|
004d262004 | ||
|
|
7e379b97c9 | ||
|
|
5ac253c712 | ||
|
|
ad3e494d47 | ||
|
|
2f23dd9b46 | ||
|
|
86ca425af0 | ||
|
|
f61c37a662 | ||
|
|
452930be5d | ||
|
|
c2bf2d9117 | ||
|
|
dc57068ad3 | ||
|
|
8c1f6bba22 | ||
|
|
3720e2a283 | ||
|
|
1785e2da6f | ||
|
|
4ad25c71cc | ||
|
|
96d1dd2883 | ||
|
|
21370661f7 | ||
|
|
5a94d619d5 | ||
|
|
c14e1c08c2 | ||
|
|
308d847dfc | ||
|
|
7f8efb6580 | ||
|
|
4f620c860b | ||
|
|
6edfb590e5 | ||
|
|
5a4e35d4bc | ||
|
|
a3b3a3d7f4 | ||
|
|
b027ca341a |
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package-lock.json
|
||||||
|
venv/
|
||||||
|
node_modules/
|
||||||
|
*~
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
6
Makefile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
all: dist/app.js
|
||||||
|
|
||||||
|
dist/app.js: src/*.js
|
||||||
|
# node_modules/.bin/rollup src/index.js --file dist/index.js --format iife
|
||||||
|
node_modules/.bin/rollup -c
|
||||||
12
README.md
@@ -1,3 +1,15 @@
|
|||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Development
|
||||||
|
===============
|
||||||
|
|
||||||
|
To rebuild the javascript, you need to use node + rollup.
|
||||||
|
|
||||||
|
npm install
|
||||||
|
=======
|
||||||
# map
|
# map
|
||||||
|
|
||||||
La carte intéractive du site de l'erg. Dévellopper en jquery, utilisant leaflet.
|
La carte intéractive du site de l'erg. Dévellopper en jquery, utilisant leaflet.
|
||||||
|
>>>>>>> cb36396efa5e9c161aff3dd7cc9cc3f751b04a51
|
||||||
|
|||||||
37
custom_delo.css
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#page {
|
||||||
|
left:40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wikiframediv {
|
||||||
|
right: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.page text {
|
||||||
|
font-size: 2pt;
|
||||||
|
fill: rgba(255,255,255,0.9);
|
||||||
|
font-family: monospace;
|
||||||
|
stroke: rgba(0,0,0,0.3);
|
||||||
|
stroke-width: 0.5px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.active2 text {
|
||||||
|
font-size: 4pt;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.active text {
|
||||||
|
font-size: 8pt;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links .page, .nodes .page{
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.page.active, .page.active2 {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
257
data/cats.json
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2013)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2013)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2014)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2014)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2015)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2015)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2016)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2016)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2017)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2017)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2018)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2018)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Actualit\u00e9s (2019)",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Actualit\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Actualit\u00e9s (2019)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Ateliers pluridisciplinaires",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Ateliers pluridisciplinaires"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Ateliers pluridisciplinaires (BA)",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Ateliers pluridisciplinaires (BA)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Ateliers pluridisciplinaires (MA)",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Ateliers pluridisciplinaires (MA)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "B1",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:B1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "B2",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:B2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "B3",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:B3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Bachelors",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Bachelors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Cours de soutien sp\u00e9cifique",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Cours de soutien sp\u00e9cifique"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Cours techniques",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Cours techniques"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Cours th\u00e9oriques",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Cours th\u00e9oriques"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Critique du f\u00e9minisme",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Critique du f\u00e9minisme"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "English",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:English"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "\u00c9quipes",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:\u00c9quipes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Conseil de gestion p\u00e9dagogique",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "\u00c9quipes",
|
||||||
|
"name": "Cat\u00e9gorie:Conseil de gestion p\u00e9dagogique"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Conseil \u00e9tudiant",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "\u00c9quipes",
|
||||||
|
"name": "Cat\u00e9gorie:Conseil \u00e9tudiant"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Enseignants",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "\u00c9quipes",
|
||||||
|
"name": "Cat\u00e9gorie:Enseignants"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "\u00c9quipe administrative",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "\u00c9quipes",
|
||||||
|
"name": "Cat\u00e9gorie:\u00c9quipe administrative"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Essai paru en 1984",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Essai paru en 1984"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "\u00c9tudes de genre",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:\u00c9tudes de genre"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Index",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Index"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "International",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:International"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Les lieux de production et d'exp\u00e9rimentation",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Les lieux de production et d'exp\u00e9rimentation"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Livre sur le f\u00e9minisme",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Livre sur le f\u00e9minisme"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Masters",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Masters"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Cours de soutien \u00e0 l'orientation",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Masters",
|
||||||
|
"name": "Cat\u00e9gorie:Cours de soutien \u00e0 l'orientation"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "M1",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Masters",
|
||||||
|
"name": "Cat\u00e9gorie:M1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "M2",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Masters",
|
||||||
|
"name": "Cat\u00e9gorie:M2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Masters sp\u00e9cialis\u00e9s",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Masters sp\u00e9cialis\u00e9s"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Orientations",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Orientations"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Outils collectifs",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Outils collectifs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Pages avec des erreurs de coloration syntaxique",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Pages avec des erreurs de coloration syntaxique"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Pages avec des liens de fichiers bris\u00e9s",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Pages avec des liens de fichiers bris\u00e9s"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Page web",
|
||||||
|
"depth": 1,
|
||||||
|
"parent": "Pages avec des liens de fichiers bris\u00e9s",
|
||||||
|
"name": "Cat\u00e9gorie:Page web"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Pages d\u00e9passant la profondeur d'expansion maximale",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Pages d\u00e9passant la profondeur d'expansion maximale"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Provenance web",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Provenance web"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Selection",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Selection"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Sites satellites",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Sites satellites"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Sites sattelites",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Sites sattelites"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Stages",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Stages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Wiki only",
|
||||||
|
"depth": 0,
|
||||||
|
"name": "Cat\u00e9gorie:Wiki only"
|
||||||
|
}
|
||||||
|
]
|
||||||
6116
data/sitemap.json
Normal file
5555
dist/app.00.js
vendored
Normal file
5896
dist/app.js
vendored
Normal file
101
dist/custom_scroller_menu.js
vendored
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
function custom_scroller_menu (selt, menuelt, debug) {
|
||||||
|
function log () {
|
||||||
|
if (!debug) return;
|
||||||
|
console.log.apply(null, arguments);
|
||||||
|
var msg = "";
|
||||||
|
for (var i=0, l=arguments.length; i<l; i++) {
|
||||||
|
msg += arguments[i] + " ";
|
||||||
|
}
|
||||||
|
debug.innerHTML += "\n"+ msg;
|
||||||
|
}
|
||||||
|
// console.log("selt", selt);
|
||||||
|
// document.addEventListener("scroll", function (e) {
|
||||||
|
// var sm = selt.scrollHeight - selt.clientHeight;
|
||||||
|
// console.log("scroll", selt.scrollTop, sm, selt.scrollHeight);
|
||||||
|
// })
|
||||||
|
var dragging = false,
|
||||||
|
drag_ref_y = 0,
|
||||||
|
scroll_ref_y = 0,
|
||||||
|
last_y = 0,
|
||||||
|
starttime = null;
|
||||||
|
|
||||||
|
var hc = menuelt;
|
||||||
|
|
||||||
|
function touchstart (e) {
|
||||||
|
if (dragging) { return; }
|
||||||
|
var nn = e.target.nodeName.toLowerCase(),
|
||||||
|
touch = e;
|
||||||
|
if (e.touches) {
|
||||||
|
if (e.touches.length != 1) { return; }
|
||||||
|
touch = e.touches[0];
|
||||||
|
}
|
||||||
|
log("touchstart", nn);
|
||||||
|
if (nn == "img" || nn == "input") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (nn !== "a") {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
drag_ref_y = touch.screenY;
|
||||||
|
last_y = touch.screenY;
|
||||||
|
scroll_ref_y = selt.scrollTop;
|
||||||
|
dragging = true;
|
||||||
|
starttime = new Date().getTime();
|
||||||
|
log("start drag", drag_ref_y, starttime);
|
||||||
|
} else {
|
||||||
|
log("headtouch", nn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function touchmove (e) {
|
||||||
|
if (dragging) {
|
||||||
|
var touch = e;
|
||||||
|
if (e.touches) {
|
||||||
|
touch = e.touches[0];
|
||||||
|
}
|
||||||
|
last_y = touch.screenY;
|
||||||
|
var dy = touch.screenY - drag_ref_y;
|
||||||
|
selt.scrollTop = scroll_ref_y - dy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function touchend (e) {
|
||||||
|
if (dragging) {
|
||||||
|
log("touchend");
|
||||||
|
dragging = false;
|
||||||
|
var elapsed_time = new Date().getTime() - starttime;
|
||||||
|
// log("end of drag", elapsed_time);
|
||||||
|
if (elapsed_time <= 500) {
|
||||||
|
var open = false,
|
||||||
|
scrollMax = selt.scrollHeight - selt.clientHeight;
|
||||||
|
// do a snap / throw ... direction ??
|
||||||
|
if (last_y == drag_ref_y) {
|
||||||
|
// console.log("no change, guessing state");
|
||||||
|
// toggle current state
|
||||||
|
var sp = selt.scrollTop;
|
||||||
|
log("guess", sp/scrollMax);
|
||||||
|
open = ((sp / scrollMax) < 0.5);
|
||||||
|
} else {
|
||||||
|
log("end/drag", last_y, drag_ref_y);
|
||||||
|
open = (last_y < drag_ref_y);
|
||||||
|
}
|
||||||
|
log("THROW", open ? "open" : "closed");
|
||||||
|
if (open) {
|
||||||
|
selt.scrollTop = scrollMax;
|
||||||
|
} else {
|
||||||
|
selt.scrollTop = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log("long", elapsed_time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
menuelt.addEventListener("touchstart", touchstart);
|
||||||
|
menuelt.addEventListener("touchmove", touchmove);
|
||||||
|
menuelt.addEventListener("touchend", touchend);
|
||||||
|
menuelt.addEventListener("touchcancel", touchend);
|
||||||
|
menuelt.addEventListener("mousedown", touchstart);
|
||||||
|
menuelt.addEventListener("mousemove", touchmove);
|
||||||
|
menuelt.addEventListener("mouseup", touchend);
|
||||||
|
menuelt.addEventListener("mouseleave", touchend);
|
||||||
|
|
||||||
|
}
|
||||||
127
dist/index.00.js
vendored
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
// custom_scroller_menu(
|
||||||
|
// document.scrollingElement,
|
||||||
|
// document.getElementById("menubar"),
|
||||||
|
// document.getElementById("debug"));
|
||||||
|
|
||||||
|
var svg = document.querySelector("#svg"),
|
||||||
|
iframe = document.querySelector("iframe#wikiframe"),
|
||||||
|
cats = document.querySelector("#cats"),
|
||||||
|
cats_contents = document.querySelector("#cats .body"),
|
||||||
|
cats_thumb = document.querySelector("#cats .thumb"),
|
||||||
|
allcatscb = document.querySelector("input#allcats"),
|
||||||
|
historycb = document.querySelector("input#history"),
|
||||||
|
current_title = null,
|
||||||
|
loaded = false,
|
||||||
|
wikibaseurl,
|
||||||
|
wikibasepat;
|
||||||
|
|
||||||
|
|
||||||
|
window.addEventListener("resize", resize);
|
||||||
|
function resize() {
|
||||||
|
var w = window,
|
||||||
|
d = document,
|
||||||
|
e = d.documentElement,
|
||||||
|
g = d.getElementsByTagName('body')[0],
|
||||||
|
x = w.innerWidth || e.clientWidth || g.clientWidth,
|
||||||
|
y = w.innerHeight|| e.clientHeight|| g.clientHeight;
|
||||||
|
svg.setAttribute("width", x);
|
||||||
|
svg.setAttribute("height", y);
|
||||||
|
//console.log("resize", x, y);
|
||||||
|
}
|
||||||
|
resize();
|
||||||
|
|
||||||
|
// console.log("mediawikiapi", mediawikiapi);
|
||||||
|
var symbols = {
|
||||||
|
"Orientations": "symbols.svg#Orientations",
|
||||||
|
"Ateliers pluridisciplinaires": "symbols.svg#Ateliers_pluridisciplinaires",
|
||||||
|
"Cours de soutien à l'orientation": "symbols.svg#Cours_de_soutien_a_l'orientation",
|
||||||
|
"Cours de soutien spécifique": "symbols.svg#Cours_de_soutien_specifique",
|
||||||
|
"Cours techniques": "symbols.svg#Cours_techniques",
|
||||||
|
"Cours théoriques": "symbols.svg#Cours_theoriques",
|
||||||
|
"Enseignants": "symbols.svg#Enseignants",
|
||||||
|
"default": "symbols.svg#Main"
|
||||||
|
};
|
||||||
|
var map = new app.Map(symbols);
|
||||||
|
|
||||||
|
map.init_svg("#svg");
|
||||||
|
async function doload () {
|
||||||
|
console.log("loading map");
|
||||||
|
await map.load_json("data/sitemap.json");
|
||||||
|
// console.log("loading categories");
|
||||||
|
// await map.load_cats("cats.json", cats_contents);
|
||||||
|
console.log("LOADED!");
|
||||||
|
loaded = true;
|
||||||
|
if (current_title) {
|
||||||
|
map.set_active_title(current_title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
map.on("page", function (title) {
|
||||||
|
console.log("map.page", title);
|
||||||
|
var url = wiki_title_to_url(title);
|
||||||
|
iframe.src = url;
|
||||||
|
})
|
||||||
|
// async function doload() {
|
||||||
|
// map.set_active_node(startpage.value);
|
||||||
|
// }
|
||||||
|
|
||||||
|
function strip_fragment (href) {
|
||||||
|
var spos = href.indexOf("#");
|
||||||
|
if (spos >= 0) {
|
||||||
|
return href.substr(0, href.indexOf("#"))
|
||||||
|
}
|
||||||
|
return href;
|
||||||
|
}
|
||||||
|
function url_to_wiki_title (href) {
|
||||||
|
href = strip_fragment(href);
|
||||||
|
var m = wikibasepat.exec(href);
|
||||||
|
if (m !== null) {
|
||||||
|
return decodeURI(m[1]).replace(/_/g, " ");
|
||||||
|
}
|
||||||
|
console.log("m", m);
|
||||||
|
}
|
||||||
|
function wiki_title_to_url (title) {
|
||||||
|
return wikibaseurl+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
window.addEventListener("DOMContentLoaded", doload);
|
||||||
|
function strip_title_from_wiki_url (url) {
|
||||||
|
return url.substr(0, url.lastIndexOf("/")+1);
|
||||||
|
}
|
||||||
|
iframe.addEventListener("load", function () {
|
||||||
|
var href = strip_fragment(iframe.contentWindow.location.href);
|
||||||
|
if (!wikibaseurl) {
|
||||||
|
wikibaseurl = strip_title_from_wiki_url(href);
|
||||||
|
wikibasepat = new RegExp(wikibaseurl+"(.+)");
|
||||||
|
}
|
||||||
|
console.log("iframe loaded", href);
|
||||||
|
var title = url_to_wiki_title(href);
|
||||||
|
console.log("title", title);
|
||||||
|
if (title) {
|
||||||
|
current_title = title;
|
||||||
|
if (loaded) {
|
||||||
|
map.set_active_title(title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// attempt to map url to wiki page title and update the map if it is one
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
cats_thumb.addEventListener("click", function () {
|
||||||
|
cats.classList.toggle("expanded");
|
||||||
|
});
|
||||||
|
// allcats checkbox
|
||||||
|
// match current state & respond to change events
|
||||||
|
// console.log("setting checked to", cats.classList.contains("showall"))
|
||||||
|
allcatscb.checked = cats.classList.contains("showall");
|
||||||
|
allcatscb.addEventListener("change", function () {
|
||||||
|
// console.log("allcats", allcatscb);
|
||||||
|
if (allcatscb.checked) {
|
||||||
|
cats.classList.add("showall")
|
||||||
|
} else {
|
||||||
|
cats.classList.remove("showall")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
historycb.addEventListener("change", function () {
|
||||||
|
// console.log("history", historycb.checked);
|
||||||
|
map.set_show_history(historycb.checked);
|
||||||
|
})
|
||||||
112
dist/index.js
vendored
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
|
||||||
|
var svg = document.querySelector("#svg"),
|
||||||
|
iframe = document.querySelector("iframe#wikiframe"),
|
||||||
|
map = new app.Map({
|
||||||
|
apiurl: "/mw/api.php",
|
||||||
|
symbols: "src/legend.json",
|
||||||
|
svg: "#svg",
|
||||||
|
categorylabel: "Catégorie",
|
||||||
|
categorydiv: "#cats .body",
|
||||||
|
// permet de controler le niveau de zoom de la carte
|
||||||
|
zoom: 3,
|
||||||
|
}),
|
||||||
|
zoom_in = document.querySelector(".leaflet-control-zoom-in"),
|
||||||
|
zoom_out = document.querySelector(".leaflet-control-zoom-out"),
|
||||||
|
cats = document.querySelector("#cats");
|
||||||
|
|
||||||
|
window.addEventListener("resize", resize);
|
||||||
|
function resize() {
|
||||||
|
var w = window,
|
||||||
|
d = document,
|
||||||
|
e = d.documentElement,
|
||||||
|
g = d.getElementsByTagName('body')[0],
|
||||||
|
x = w.innerWidth || e.clientWidth || g.clientWidth,
|
||||||
|
y = w.innerHeight|| e.clientHeight|| g.clientHeight;
|
||||||
|
// svg.setAttribute("width", x);
|
||||||
|
// svg.setAttribute("height", y);
|
||||||
|
//console.log("resize", x, y);
|
||||||
|
|
||||||
|
// Match size of parent
|
||||||
|
svg.setAttribute("width", page.clientWidth);
|
||||||
|
svg.setAttribute("height", page.clientHeight);
|
||||||
|
|
||||||
|
// Checks if narrow device
|
||||||
|
if (x>600){ g.querySelector("#cats").classList.add("expanded")}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function doload () {
|
||||||
|
resize();
|
||||||
|
console.log("map.init");
|
||||||
|
await map.init();
|
||||||
|
console.log("map.init: done");
|
||||||
|
|
||||||
|
map.on("page", function (page) {
|
||||||
|
// console.log("map.page", page.title);
|
||||||
|
var url = page.url();
|
||||||
|
if (iframe.src !== url) {
|
||||||
|
// console.log("setting iframe src to", url);
|
||||||
|
iframe.src = url;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
zoom_in.addEventListener("click", (e) => {
|
||||||
|
map.zoom_in();
|
||||||
|
})
|
||||||
|
zoom_out.addEventListener("click", (e) => {
|
||||||
|
map.zoom_out();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
window.addEventListener("DOMContentLoaded", doload);
|
||||||
|
iframe.addEventListener("load", function () {
|
||||||
|
map.set_active_url(iframe.contentWindow.location.href);
|
||||||
|
});
|
||||||
|
|
||||||
|
cats.addEventListener("click", e => {
|
||||||
|
cats.classList.toggle("expanded");
|
||||||
|
});
|
||||||
|
|
||||||
|
var specialselect = document.querySelector("select#special"),
|
||||||
|
// specialselectdiv = document.getElementById("specialselectdiv"),
|
||||||
|
specialiframediv = document.getElementById("specialiframediv"),
|
||||||
|
specialiframe = null,
|
||||||
|
specialsrc = null,
|
||||||
|
specialclosediv = document.getElementById("specialclosediv"),
|
||||||
|
specialclosebutton = document.getElementById("specialclosebutton");
|
||||||
|
|
||||||
|
function set_special (v) {
|
||||||
|
if (specialsrc !== v) {
|
||||||
|
specialsrc = v;
|
||||||
|
specialselect.value = v;
|
||||||
|
if (specialsrc !== "") {
|
||||||
|
if (specialiframe == null) {
|
||||||
|
// <iframe id="specialframe" name="specialframe" src="/m/special/recentfiles/recentfiles.html"></iframe>
|
||||||
|
specialiframe = document.createElement('iframe');
|
||||||
|
specialiframediv.appendChild(specialiframe);
|
||||||
|
}
|
||||||
|
// console.log("specialiframe.src", specialiframe.src)
|
||||||
|
if (specialiframe.getAttribute("src") != specialsrc) {
|
||||||
|
console.log("setAttribute iframe src", specialsrc);
|
||||||
|
specialiframe.setAttribute("src", specialsrc);
|
||||||
|
}
|
||||||
|
specialiframediv.style.display = "block";
|
||||||
|
specialclosediv.style.display = "block";
|
||||||
|
} else {
|
||||||
|
// show map
|
||||||
|
// if (specialiframe) {
|
||||||
|
// specialiframe.src = "";
|
||||||
|
// specialiframediv.removeChild(specialiframe);
|
||||||
|
// specialiframe = null;
|
||||||
|
// }
|
||||||
|
specialiframediv.style.display = "none";
|
||||||
|
specialclosediv.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set_special(specialselect.value);
|
||||||
|
specialclosebutton.addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
set_special("");
|
||||||
|
});
|
||||||
|
specialselect.addEventListener("input", function (e) {
|
||||||
|
console.log("specialselect", specialselect.value);
|
||||||
|
set_special(specialselect.value);
|
||||||
|
});
|
||||||
BIN
img/Actualites.png
Normal file
|
After Width: | Height: | Size: 841 B |
BIN
img/Ateliers_pluridisciplinaires.png
Normal file
|
After Width: | Height: | Size: 886 B |
BIN
img/Cours_de_soutien_a_l_orientation.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
img/Cours_de_soutien_a_lorientation.png
Normal file
|
After Width: | Height: | Size: 480 B |
BIN
img/Cours_de_soutien_specifique.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
img/Cours_techniques.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
img/Cours_theoriques.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
img/Enseignants.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
img/Main.png
Normal file
|
After Width: | Height: | Size: 462 B |
BIN
img/Orientations.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
img/downarrows.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
img/hamburger.png
Normal file
|
After Width: | Height: | Size: 223 B |
BIN
img/search.png
Normal file
|
After Width: | Height: | Size: 637 B |
198
img/symbols.orig.svg
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="symbols.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8284271"
|
||||||
|
inkscape:cx="216.47094"
|
||||||
|
inkscape:cy="1066.4499"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1366"
|
||||||
|
inkscape:window-height="704"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g4669"
|
||||||
|
inkscape:export-xdpi="101.24"
|
||||||
|
inkscape:export-ydpi="101.24">
|
||||||
|
<g
|
||||||
|
style="stroke:#606060;stroke-opacity:1"
|
||||||
|
transform="matrix(0.42450461,0,0,0.42450461,19.61278,7.9970163)"
|
||||||
|
id="g4600">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 78.937409,12.378389 h 12.06565"
|
||||||
|
id="path4572"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 78.937409,15.438998 h 12.06565"
|
||||||
|
id="path4572-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 78.859443,18.646139 h 12.06565"
|
||||||
|
id="path4572-2"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
y="10.81856"
|
||||||
|
x="51.903004"
|
||||||
|
height="7.5269685"
|
||||||
|
width="7.5269685"
|
||||||
|
id="rect4602"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4676"
|
||||||
|
inkscape:export-xdpi="101.24"
|
||||||
|
inkscape:export-ydpi="101.24">
|
||||||
|
<g
|
||||||
|
inkscape:transform-center-y="-1.5700831"
|
||||||
|
inkscape:transform-center-x="-1.6012813"
|
||||||
|
inkscape:export-ydpi="71.145638"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
transform="matrix(0.43229192,0,0,0.43229192,17.802805,7.5991505)"
|
||||||
|
id="g4513-7">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 98.928194,14.954166 6.198716,-3.578827 5.9449,3.432289"
|
||||||
|
id="path4487-5"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
inkscape:export-ydpi="71.145638" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 98.928194,18.014776 6.198716,-3.578828 5.9449,3.432289"
|
||||||
|
id="path4487-3-3"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
inkscape:export-ydpi="71.145638" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 98.928194,21.075378 6.198716,-3.578827 5.9449,3.432289"
|
||||||
|
id="path4487-6-5"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
inkscape:export-ydpi="71.145638" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
y="10.81856"
|
||||||
|
x="59.429974"
|
||||||
|
height="7.5269685"
|
||||||
|
width="7.5269685"
|
||||||
|
id="rect4602-9"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4689"
|
||||||
|
inkscape:export-xdpi="101.24"
|
||||||
|
inkscape:export-ydpi="101.24">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.41838874,0,0,0.41838874,27.098315,8.7927188)"
|
||||||
|
id="g4547">
|
||||||
|
<circle
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#606060;stroke-width:0.77449554;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4539"
|
||||||
|
cx="121.70833"
|
||||||
|
cy="13.366666"
|
||||||
|
r="4.6106687" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 124.78814,16.46054 2.66602,2.478925"
|
||||||
|
id="path4541"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
y="10.81856"
|
||||||
|
x="74.48391"
|
||||||
|
height="7.5269685"
|
||||||
|
width="7.5269685"
|
||||||
|
id="rect4602-1-2"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4683"
|
||||||
|
inkscape:export-xdpi="101.24"
|
||||||
|
inkscape:export-ydpi="101.24">
|
||||||
|
<rect
|
||||||
|
y="10.81856"
|
||||||
|
x="66.95694"
|
||||||
|
height="7.5269685"
|
||||||
|
width="7.5269685"
|
||||||
|
id="rect4602-1"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<g
|
||||||
|
inkscape:transform-center-y="1.5700833"
|
||||||
|
inkscape:transform-center-x="1.6012835"
|
||||||
|
inkscape:export-ydpi="71.145638"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
transform="matrix(-0.43229191,0,0,-0.43229191,116.11108,21.564937)"
|
||||||
|
id="g4513-7-7">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 98.928194,14.954166 6.198716,-3.578827 5.9449,3.432289"
|
||||||
|
id="path4487-5-0"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
inkscape:export-ydpi="71.145638" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 98.928194,18.014776 6.198716,-3.578828 5.9449,3.432289"
|
||||||
|
id="path4487-3-3-9"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
inkscape:export-ydpi="71.145638" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#606060;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 98.928194,21.075378 6.198716,-3.578827 5.9449,3.432289"
|
||||||
|
id="path4487-6-5-3"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="71.145638"
|
||||||
|
inkscape:export-ydpi="71.145638" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.7 KiB |
289
img/symbols.svg
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="32.387501mm"
|
||||||
|
height="32.356251mm"
|
||||||
|
viewBox="0 0 32.3875 32.356251"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5507"
|
||||||
|
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)"
|
||||||
|
sodipodi:docname="symbols.svg"
|
||||||
|
enable-background="new"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs5501" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.968516"
|
||||||
|
inkscape:cx="16.674999"
|
||||||
|
inkscape:cy="41.434845"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer2"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1362"
|
||||||
|
inkscape:window-height="718"
|
||||||
|
inkscape:window-x="2"
|
||||||
|
inkscape:window-y="48"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:snap-bbox-midpoints="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="true"
|
||||||
|
inkscape:snap-intersection-paths="true"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
inkscape:snap-midpoints="true"
|
||||||
|
inkscape:snap-smooth-nodes="true"
|
||||||
|
inkscape:snap-center="true"
|
||||||
|
inkscape:snap-object-midpoints="true"
|
||||||
|
showguides="false"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1">
|
||||||
|
<sodipodi:guide
|
||||||
|
position="1.2695302,37.647915"
|
||||||
|
orientation="0,1"
|
||||||
|
id="guide994"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
<sodipodi:guide
|
||||||
|
position="4.0424514,24.568452"
|
||||||
|
orientation="0,1"
|
||||||
|
id="guide996"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata5504">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Main"
|
||||||
|
style="display:inline">
|
||||||
|
<path
|
||||||
|
id="Main"
|
||||||
|
d="m 0.00702812,-2.920128 c -0.40161335,0 -0.78453276,0.088375 -1.13252892,0.2355662 -0.3479978,0.1471904 -0.660957,0.3619688 -0.9241446,0.6251563 -0.2631876,0.2631876 -0.4779659,0.576147 -0.6251569,0.9241442 -0.1471898,0.34799704 -0.2265059,0.73091595 -0.2265059,1.1325292 0,0.4016138 0.079315,0.7754723 0.2265059,1.1234696 0.147191,0.3479971 0.3619693,0.6700169 0.6251569,0.9332041 0.2631876,0.2631876 0.5761468,0.4689057 0.9241446,0.6160961 0.34799616,0.1471907 0.73091557,0.2355662 1.13252892,0.2355662 0.40161346,0 0.78453263,-0.088375 1.13252898,-0.2355662 C 1.487555,2.5228473 1.800514,2.3171292 2.0637016,2.0539416 2.3268892,1.7907544 2.5416675,1.4687346 2.6888586,1.1207375 2.8360483,0.7727402 2.9153647,0.3988817 2.9153647,-0.0027321 c 0,-0.40161325 -0.079316,-0.78453216 -0.2265061,-1.1325292 C 2.5416675,-1.4832585 2.3268892,-1.7962179 2.0637016,-2.0594055 1.800514,-2.322593 1.487555,-2.5373714 1.1395571,-2.6845618 0.79156075,-2.8317522 0.40864158,-2.920128 0.00702812,-2.920128 Z"
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.927768;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:label="#path6386-5-5" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Orientations"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Orientations"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.40423298,0,0,0.40423298,35.516699,-0.22522322)">
|
||||||
|
<path
|
||||||
|
id="Orientations-0"
|
||||||
|
d="m -87.8577,-14.01912 c -8.05454,0 -14.59375,6.50796 -14.59375,14.5625 0,8.05454 6.53921,14.59375 14.59375,14.59375 8.05454,0 14.59375,-6.53921 14.59375,-14.59375 0,-8.05454 -6.53921,-14.5625 -14.59375,-14.5625 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6386"
|
||||||
|
d="m -87.7327,-7.2465492 c -1.058962,0 -2.068631,0.2330264 -2.986219,0.6211335 -0.917588,0.3881071 -1.742789,0.9544279 -2.436754,1.6483926 -0.693965,0.6939647 -1.260285,1.5191664 -1.648393,2.4367544 -0.388107,0.917588 -0.597243,1.92725673 -0.597243,2.98621857 0,1.05896183 0.209136,2.04474083 0.597243,2.96232883 0.388108,0.917588 0.954428,1.7666794 1.648393,2.4606441 0.693965,0.6939647 1.519166,1.2363958 2.436754,1.6245029 0.917588,0.3881071 1.927257,0.6211335 2.986219,0.6211335 1.058962,0 2.068631,-0.2330264 2.986219,-0.6211335 0.917588,-0.3881071 1.742789,-0.9305382 2.436754,-1.6245029 0.693965,-0.6939647 1.260285,-1.5430561 1.648393,-2.4606441 0.388107,-0.917588 0.597243,-1.903367 0.597243,-2.96232883 0,-1.05896184 -0.209136,-2.06863057 -0.597243,-2.98621857 -0.388108,-0.917588 -0.954428,-1.7427897 -1.648393,-2.4367544 -0.693965,-0.6939647 -1.519166,-1.2602855 -2.436754,-1.6483926 -0.917588,-0.3881071 -1.927257,-0.6211335 -2.986219,-0.6211335 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.44631028;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="Ateliers_pluridisciplinaires"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.65256016,0,0,0.65256016,58.839197,-28.341992)"
|
||||||
|
id="Ateliers_pluridisciplinaires"
|
||||||
|
style="fill:none;stroke:#000000">
|
||||||
|
<circle
|
||||||
|
r="19.208878"
|
||||||
|
cy="40.264759"
|
||||||
|
cx="116.73087"
|
||||||
|
transform="matrix(0.36441483,0,0,0.36441483,-132.69908,28.796006)"
|
||||||
|
id="path6780"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:16.4647522;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none" />
|
||||||
|
<g
|
||||||
|
id="g8172"
|
||||||
|
transform="matrix(2.1333332,0,0,-2.1333332,13.499857,367.42774)"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-opacity:0.98846154">
|
||||||
|
<path
|
||||||
|
transform="matrix(0.05856667,0,0,-0.05856667,-55.427399,154.21379)"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98846154;marker-start:none"
|
||||||
|
d="M 135.93975,40.264759 A 19.208878,19.208878 0 0 1 116.73087,59.473637 19.208878,19.208878 0 0 1 97.521996,40.264759 19.208878,19.208878 0 0 1 116.73087,21.055882 19.208878,19.208878 0 0 1 135.93975,40.264759 Z"
|
||||||
|
id="path8174"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer4"
|
||||||
|
inkscape:label="Cours_de_soutien_a_l_orientation"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_a_l_orientation"
|
||||||
|
style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.40423297,0,0,0.40423297,35.552134,-0.25339243)"
|
||||||
|
inkscape:label="#Cours_de_soutien_a_l'orientation">
|
||||||
|
<path
|
||||||
|
id="Orientations-0-7"
|
||||||
|
d="m -87.940348,-13.895148 c -8.05454,0 -14.593742,6.5079588 -14.593742,14.56249871 0,8.05454009 6.539202,14.59375129 14.593742,14.59375129 8.05454,0 14.59375,-6.5392112 14.59375,-14.59375129 0,-8.05453991 -6.53921,-14.56249871 -14.59375,-14.56249871 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6386-5"
|
||||||
|
d="m -87.815348,-5.0851598 c -0.778051,0 -1.519886,0.1712117 -2.194064,0.4563657 -0.674181,0.285154 -1.280481,0.7012471 -1.790358,1.2111239 -0.509877,0.509877 -0.92597,1.1161775 -1.211125,1.7903572 -0.285153,0.67417963 -0.438813,1.41601363 -0.438813,2.19406488 0,0.77805152 0.15366,1.50233312 0.438813,2.17651272 0.285155,0.6741797 0.701248,1.2980328 1.211125,1.8079096 0.509877,0.5098769 1.116177,0.9084175 1.790358,1.1935714 0.674178,0.2851541 1.416013,0.4563658 2.194064,0.4563658 0.778051,0 1.519886,-0.1712117 2.194064,-0.4563658 0.674181,-0.2851539 1.280481,-0.6836945 1.790358,-1.1935714 0.509877,-0.5098768 0.92597,-1.1337299 1.211125,-1.8079096 0.285153,-0.6741796 0.438813,-1.3984612 0.438813,-2.17651272 0,-0.77805125 -0.15366,-1.51988525 -0.438813,-2.19406488 -0.285155,-0.6741797 -0.701248,-1.2804802 -1.211125,-1.7903572 -0.509877,-0.5098768 -1.116177,-0.9259699 -1.790358,-1.2111239 -0.674178,-0.285154 -1.416013,-0.4563657 -2.194064,-0.4563657 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.79737806;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer5"
|
||||||
|
inkscape:label="Cours_de_soutien_specifique"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_specifique"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.40361541,0,0,0.40361541,36.375644,34.076526)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6358"
|
||||||
|
d="m 356.1875,401.09375 c -8.05454,0 -14.59375,6.53921 -14.59375,14.59375 0,8.05454 6.53921,14.5625 14.59375,14.5625 8.05454,0 14.5625,-6.50796 14.5625,-14.5625 0,-8.05454 -6.50796,-14.59375 -14.5625,-14.59375 z"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6329"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6327"
|
||||||
|
d="m 356.3125,413.9375 c 0.44744,0 0.83178,0.17553 1.125,0.46875 0.29322,0.29322 0.46875,0.70881 0.46875,1.15625 0,0.44744 -0.17553,0.83178 -0.46875,1.125 -0.29322,0.29322 -0.67756,0.46875 -1.125,0.46875 -0.44744,0 -0.86303,-0.17553 -1.15625,-0.46875 -0.29322,-0.29322 -0.46875,-0.67756 -0.46875,-1.125 0,-0.44744 0.17553,-0.86303 0.46875,-1.15625 0.29322,-0.29322 0.70881,-0.46875 1.15625,-0.46875 z"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6324"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill:none;fill-opacity:0.99615389;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer6"
|
||||||
|
inkscape:label="Cours_techniques"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_techniques"
|
||||||
|
transform="matrix(0.41014612,0,0,-0.41014612,-14.018646,81.774592)"
|
||||||
|
inkscape:label="#g3142"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||||
|
<title
|
||||||
|
id="title3278">template</title>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path87"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.12598443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23606801;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 49.067296,199.32385 c 0,-8.21904 -6.662847,-14.88189 -14.881888,-14.88189 -8.219041,0 -14.881889,6.66285 -14.881889,14.88189 0,8.21904 6.662848,14.88189 14.881889,14.88189 8.219041,0 14.881888,-6.66285 14.881888,-14.88189 z" />
|
||||||
|
<g
|
||||||
|
id="g3119"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
d="m 44.815326,199.32385 c 0,-5.87075 -4.759174,-10.62992 -10.629918,-10.62992 -5.870744,0 -10.629921,4.75917 -10.629921,10.62992 0,5.87074 4.759177,10.62992 10.629921,10.62992 5.870744,0 10.629918,-4.75918 10.629918,-10.62992 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.12598443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23606801;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path85"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer7"
|
||||||
|
inkscape:label="Actualites"
|
||||||
|
style="display:none">
|
||||||
|
<path
|
||||||
|
d="m 1.2870113,0.02268952 c 0,0.71080369 -0.57622035,1.28702328 -1.287023574708,1.28702328 C -0.71081588,1.3097128 -1.2870354,0.73349321 -1.2870354,0.02268952 c 0,-0.71080371 0.57621952,-1.28702332 1.287023125292,-1.28702332 C 0.71079095,-1.2643338 1.2870113,-0.68811419 1.2870113,0.02268952 Z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.162155;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:2.23607;stroke-dasharray:0.486463, 0.486463;stroke-dashoffset:0;stroke-opacity:1;marker-start:none;marker-mid:none;marker-end:none"
|
||||||
|
id="Actualites"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:label="#path87-1"
|
||||||
|
mask="none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer9"
|
||||||
|
inkscape:label="Cours_theoriques"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_theoriques"
|
||||||
|
style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.40423298,0,0,0.40423298,35.552135,-0.25339326)"
|
||||||
|
inkscape:label="#Cours_theoriques">
|
||||||
|
<path
|
||||||
|
id="Orientations-0-7-6"
|
||||||
|
d="m -87.940348,-13.895148 c -8.05454,0 -14.593742,6.5079588 -14.593742,14.56249871 0,8.05454009 6.539202,14.59375129 14.593742,14.59375129 8.05454,0 14.59375,-6.5392112 14.59375,-14.59375129 0,-8.05453991 -6.53921,-14.56249871 -14.59375,-14.56249871 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6386-5-7"
|
||||||
|
d="m -87.815348,-5.0851598 c -0.778051,0 -1.519886,0.1712117 -2.194064,0.4563657 -0.674181,0.285154 -1.280481,0.7012471 -1.790358,1.2111239 -0.509877,0.509877 -0.92597,1.1161775 -1.211125,1.7903572 -0.285153,0.67417963 -0.438813,1.41601363 -0.438813,2.19406488 0,0.77805152 0.15366,1.50233312 0.438813,2.17651272 0.285155,0.6741797 0.701248,1.2980328 1.211125,1.8079096 0.509877,0.5098769 1.116177,0.9084175 1.790358,1.1935714 0.674178,0.2851541 1.416013,0.4563658 2.194064,0.4563658 0.778051,0 1.519886,-0.1712117 2.194064,-0.4563658 0.674181,-0.2851539 1.280481,-0.6836945 1.790358,-1.1935714 0.509877,-0.5098768 0.92597,-1.1337299 1.211125,-1.8079096 0.285153,-0.6741796 0.438813,-1.3984612 0.438813,-2.17651272 0,-0.77805125 -0.15366,-1.51988525 -0.438813,-2.19406488 -0.285155,-0.6741797 -0.701248,-1.2804802 -1.211125,-1.7903572 -0.509877,-0.5098768 -1.116177,-0.9259699 -1.790358,-1.2111239 -0.674178,-0.285154 -1.416013,-0.4563657 -2.194064,-0.4563657 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.79737806;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer8"
|
||||||
|
inkscape:label="Enseignants"
|
||||||
|
style="display:none">
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.973914;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="Enseignants"
|
||||||
|
sodipodi:sides="3"
|
||||||
|
sodipodi:cx="0.0018145076"
|
||||||
|
sodipodi:cy="0.13116495"
|
||||||
|
sodipodi:r1="6.7946506"
|
||||||
|
sodipodi:r2="3.397325"
|
||||||
|
sodipodi:arg1="0.52606642"
|
||||||
|
sodipodi:arg2="1.573264"
|
||||||
|
inkscape:flatsided="true"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 5.8777532,3.5430003 -5.8908909,3.5139594 0.01858127,-6.6634649 Z"
|
||||||
|
inkscape:transform-center-x="-0.0012016352"
|
||||||
|
inkscape:transform-center-y="0.24243705"
|
||||||
|
inkscape:label="#path3225-6-7-7" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 18 KiB |
BIN
img/symhamburger.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
img/symsearch.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
img/symup.png
Normal file
|
After Width: | Height: | Size: 976 B |
BIN
img/syndown.png
Normal file
|
After Width: | Height: | Size: 1006 B |
BIN
img/uparrows.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
43
index.00.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>école de recherche graphique</title>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="page">
|
||||||
|
<svg id="svg"></svg>
|
||||||
|
<pre id="debug"></pre>
|
||||||
|
<div id="bottompane">
|
||||||
|
<div id="bottompage">
|
||||||
|
<div id="menubar">
|
||||||
|
<span id="menu"><img src="img/symhamburger.png"></span>
|
||||||
|
<input id="searchinput" type="input" placeholder="école de recherche graphique" />
|
||||||
|
<label for="searchinput" id="search"><img src="img/symsearch.png"></label>
|
||||||
|
<img src="img/symup.png" />
|
||||||
|
</div>
|
||||||
|
<div id="wikiframediv">
|
||||||
|
<iframe id="wikiframe" src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="cats" class="expanded">
|
||||||
|
<div class="ocontents">
|
||||||
|
<div class="contents">
|
||||||
|
<div class="head">Liste des catégories</div>
|
||||||
|
<div class="body"></div>
|
||||||
|
<div class="foot"><input id="allcats" type="checkbox"><label for="allcats">Afficher tous</label></div>
|
||||||
|
<hr>
|
||||||
|
<div class="history"><input id="history" type="checkbox"><label for="history">Histoire</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="botright"><div class="thumb"></div></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script src="dist/custom_scroller_menu.js"></script>
|
||||||
|
<script type="text/javascript" src="dist/app.js"></script>
|
||||||
|
<script src="dist/index.js"></script>
|
||||||
|
</html>
|
||||||
98
index.html
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>école de recherche graphique</title>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
|
||||||
|
<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; user-scalable=no;"/>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="custom_delo.css">A
|
||||||
|
<style type="text/css">
|
||||||
|
#quit {
|
||||||
|
position:fixed;
|
||||||
|
top:15px;
|
||||||
|
right:15px;
|
||||||
|
visibility:visible;
|
||||||
|
}
|
||||||
|
@media (max-width: 800px) and (-webkit-min-device-pixel-ratio: 1) {
|
||||||
|
script {
|
||||||
|
display:none !important;
|
||||||
|
}
|
||||||
|
#page {
|
||||||
|
display:none !important;
|
||||||
|
}
|
||||||
|
#wikiframediv {
|
||||||
|
right:0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<link rel="icon" type="image/x-icon" href="/Favicon_V1.png">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="vbody">
|
||||||
|
<div id="page">
|
||||||
|
<div id="handle"></div>
|
||||||
|
<svg id="svg"></svg>
|
||||||
|
<div id="cats">
|
||||||
|
<div class="body"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
</div>
|
||||||
|
<div class="zoom-controls">
|
||||||
|
<div class="leaflet-control-zoom leaflet-bar leaflet-control">
|
||||||
|
<a class="leaflet-control-zoom-in" href="#" title="Zoom in" role="button" aria-label="Zoom in">+</a>
|
||||||
|
<a class="leaflet-control-zoom-out" href="#" title="Zoom out" role="button" aria-label="Zoom out">–</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="specialclosediv">
|
||||||
|
<a id="specialclosebutton" href="#" title="Zoom in" role="button" aria-label="Zoom in">×</a>
|
||||||
|
</div>
|
||||||
|
<div id="specialselectdiv">
|
||||||
|
<select id="special">
|
||||||
|
<!--<option value="/m/special/recentnews">news</option>-->
|
||||||
|
<!--<option value="/m/special/ergtv/">erg tv !</option>-->
|
||||||
|
<option value="">Carte</option>
|
||||||
|
<option value="/m/special/recentfiles/">Nouveaux fichiers</option>
|
||||||
|
<option value="/m/special/recentchanges/">Modifications récentes</option>
|
||||||
|
<!--<option value="/m/special/jpo2021-live/">JPO 2021</option>-->
|
||||||
|
</select>
|
||||||
|
<a href="#" id="quit" class="button-style">fermer [x]</a>
|
||||||
|
</div>
|
||||||
|
<div id="specialiframediv"></div>
|
||||||
|
</div>
|
||||||
|
<div id="wikiframediv">
|
||||||
|
<iframe id="wikiframe" name="wikiframe" src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var map = document.getElementById("page");
|
||||||
|
document.getElementById("quit").addEventListener("click", function() {
|
||||||
|
if(document.getElementById("quit").textContent === "fermer [x]") {
|
||||||
|
|
||||||
|
console.log("quit map");
|
||||||
|
document.getElementById("page").style.visibility = "hidden";
|
||||||
|
document.getElementById("wikiframediv").style.right = "0";
|
||||||
|
|
||||||
|
document.getElementById("quit").textContent = "🌐 carte";
|
||||||
|
document.getElementById("quit").style.setProperty('top', 'initial');
|
||||||
|
document.getElementById("quit").style.bottom = "15px";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
document.getElementById("page").style.visibility = "visible";
|
||||||
|
document.getElementById("wikiframediv").style.right = "60%";
|
||||||
|
|
||||||
|
document.getElementById("page").style.visibility = "visible";
|
||||||
|
document.getElementById("wikiframediv").style.right = "60%";
|
||||||
|
document.getElementById("quit").textContent = "fermer [x]";
|
||||||
|
document.getElementById("quit").style.setProperty('bottom', 'initial');
|
||||||
|
document.getElementById("quit").style.top = "15px";
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="dist/app.js"></script>
|
||||||
|
<script src="dist/index.js"></script>
|
||||||
|
</html>
|
||||||
30
package.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "plum",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-fetch": "^1.1.2",
|
||||||
|
"d3-force": "^2.0.1",
|
||||||
|
"d3-zoom": "^1.7.3",
|
||||||
|
"eventemitter3": "^3.1.2",
|
||||||
|
"fetch-jsonp": "^1.1.3",
|
||||||
|
"jsonp": "^0.2.1",
|
||||||
|
"jsonp-p": "^2.0.0",
|
||||||
|
"rollup": "^1.12.3",
|
||||||
|
"webpack": "^4.32.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"d3-collection": "^1.0.7",
|
||||||
|
"d3-drag": "^1.2.3",
|
||||||
|
"d3-selection": "^1.4.0",
|
||||||
|
"rollup-plugin-commonjs": "^10.0.0",
|
||||||
|
"rollup-plugin-node-resolve": "^5.0.0",
|
||||||
|
"webpack-cli": "^3.3.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
rollup.config.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// rollup.config.js
|
||||||
|
// https://github.com/rollup/rollup-plugin-commonjs
|
||||||
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
|
|
||||||
|
export default [{
|
||||||
|
input: 'src/app.js',
|
||||||
|
output: {
|
||||||
|
file: 'dist/app.js',
|
||||||
|
format: 'iife',
|
||||||
|
name: 'app'
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
resolve(),
|
||||||
|
commonjs()
|
||||||
|
]
|
||||||
|
}];
|
||||||
33
scripts/build_html_with_svg.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import argparse, sys, json, time, os
|
||||||
|
from jinja2 import Template, DictLoader, Environment, FileSystemLoader
|
||||||
|
|
||||||
|
ap = argparse.ArgumentParser("template + svg = interface")
|
||||||
|
ap.add_argument("template")
|
||||||
|
ap.add_argument("svg")
|
||||||
|
ap.add_argument("--output", type=argparse.FileType('w'), default=sys.stdout)
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
tpath, tname = os.path.split(args.template)
|
||||||
|
env = Environment(loader=FileSystemLoader(tpath))
|
||||||
|
import jinjafilters
|
||||||
|
for name, fn in jinjafilters.all.items():
|
||||||
|
env.filters[name] = fn
|
||||||
|
|
||||||
|
from xml.etree import ElementTree as ET
|
||||||
|
|
||||||
|
ET.register_namespace("","http://www.w3.org/2000/svg")
|
||||||
|
ET.register_namespace("xlink","http://www.w3.org/1999/xlink")
|
||||||
|
with open(args.svg) as f:
|
||||||
|
svgt = ET.parse(f)
|
||||||
|
# print ("svgt", svgt)
|
||||||
|
svg_root = svgt.getroot()
|
||||||
|
svg_root.attrib['xmlns:xlink'] = 'http://www.w3.org/1999/xlink'
|
||||||
|
del svg_root.attrib['viewBox']
|
||||||
|
svg = ET.tostring(svgt.getroot(), method="xml")
|
||||||
|
|
||||||
|
tvars = {'svg': svg}
|
||||||
|
template = env.get_template(tname)
|
||||||
|
print (template.render(**tvars).encode("utf-8"), file=args.output)
|
||||||
105
scripts/buildsitemap.py
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
from mwclient import Site, APIError
|
||||||
|
from mwclient.page import Page
|
||||||
|
import argparse, json, sys
|
||||||
|
|
||||||
|
ap = argparse.ArgumentParser("")
|
||||||
|
ap.add_argument("--wikiprotocol", default="http")
|
||||||
|
ap.add_argument("--wikihost", default="localhost")
|
||||||
|
ap.add_argument("--wikipath", default="/mw/")
|
||||||
|
ap.add_argument("--limit", default=None)
|
||||||
|
ap.add_argument("--output", default=sys.stdout, type=argparse.FileType('w'))
|
||||||
|
# ap.add_argument("--user", default=None)
|
||||||
|
# ap.add_argument("--password", default=None)
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
site = Site((args.wikiprotocol, args.wikihost), path=args.wikipath)
|
||||||
|
|
||||||
|
|
||||||
|
def category_subcats (site, cattitle, objects=True):
|
||||||
|
cmcontinue = None
|
||||||
|
ret = []
|
||||||
|
while True:
|
||||||
|
if cmcontinue == None:
|
||||||
|
resp = site.api("query", list="categorymembers", cmtitle=cattitle, cmtype="subcat", cmlimit=50)
|
||||||
|
else:
|
||||||
|
resp = site.api("query", list="categorymembers", cmtitle=cattitle, cmtype="subcat", cmlimit=50, cmcontinue=cmcontinue)
|
||||||
|
ret.extend([x['title'] for x in resp['query']['categorymembers']])
|
||||||
|
if 'continue' in resp:
|
||||||
|
cmcontinue = resp['continue']['cmcontinue']
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
if objects:
|
||||||
|
# print "converting to page objects ({0})".format(len(ret))
|
||||||
|
ret = [site.pages[x] for x in ret]
|
||||||
|
return ret
|
||||||
|
|
||||||
|
"""
|
||||||
|
>>> c.page_title
|
||||||
|
'Équipes'
|
||||||
|
>>> c.name
|
||||||
|
'Catégorie:Équipes'
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
graph = {
|
||||||
|
nodes: [
|
||||||
|
{name: "Bienvenue"}
|
||||||
|
]
|
||||||
|
links: [
|
||||||
|
{source: "name", target: "name2"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
redirects = {}
|
||||||
|
pages = []
|
||||||
|
count = 0
|
||||||
|
all_links = set()
|
||||||
|
page_exists = {}
|
||||||
|
|
||||||
|
def resolve (x):
|
||||||
|
while x in redirects:
|
||||||
|
x = redirects[x]
|
||||||
|
return x
|
||||||
|
|
||||||
|
print ("Pass 1")
|
||||||
|
for p in site.allpages():
|
||||||
|
r = p.redirects_to()
|
||||||
|
if (r):
|
||||||
|
redirects[p.name] = r.name
|
||||||
|
else:
|
||||||
|
page_exists[p.name] = True
|
||||||
|
|
||||||
|
print ("Pass 2")
|
||||||
|
# pages_by_title = {}
|
||||||
|
for p in site.allpages():
|
||||||
|
if (p.name in redirects):
|
||||||
|
continue
|
||||||
|
pd = {}
|
||||||
|
pd['title'] = p.page_title
|
||||||
|
pd['ns'] = 0
|
||||||
|
print ("Page {0}".format(p.name), file=sys.stderr)
|
||||||
|
|
||||||
|
# categories
|
||||||
|
cats = [c.page_title for c in p.categories()]
|
||||||
|
pd['cats'] = cats
|
||||||
|
|
||||||
|
# links
|
||||||
|
links = [x for x in p.links() if x.namespace == 0]
|
||||||
|
links = [resolve(x.name) for x in links]
|
||||||
|
links = [x for x in links if x in page_exists]
|
||||||
|
for l in links:
|
||||||
|
if p.name < l:
|
||||||
|
link = (p.name, l)
|
||||||
|
else:
|
||||||
|
link = (l, p.name)
|
||||||
|
all_links.add(link)
|
||||||
|
|
||||||
|
pages.append(pd)
|
||||||
|
count += 1
|
||||||
|
if args.limit and count >= args.limit:
|
||||||
|
break
|
||||||
|
|
||||||
|
graph = {}
|
||||||
|
graph['nodes'] = pages
|
||||||
|
graph['links'] = [{'source': a, 'target': b} for a, b in all_links]
|
||||||
|
graph['redirects'] = redirects
|
||||||
|
print (json.dumps(graph, indent=2), file=args.output)
|
||||||
91
scripts/categories.py
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
from mwclient import Site, APIError
|
||||||
|
from mwclient.page import Page
|
||||||
|
import argparse, json, sys
|
||||||
|
|
||||||
|
import unidecode
|
||||||
|
# unaccented_string = unidecode.unidecode(accented_string)
|
||||||
|
|
||||||
|
ap = argparse.ArgumentParser("")
|
||||||
|
ap.add_argument("--wikiprotocol", default="http")
|
||||||
|
ap.add_argument("--wikihost", default="localhost")
|
||||||
|
ap.add_argument("--wikipath", default="/mw/")
|
||||||
|
ap.add_argument("--limit", default=None)
|
||||||
|
ap.add_argument("--output", default=sys.stdout, type=argparse.FileType('w'))
|
||||||
|
# ap.add_argument("--user", default=None)
|
||||||
|
# ap.add_argument("--password", default=None)
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
site = Site((args.wikiprotocol, args.wikihost), path=args.wikipath)
|
||||||
|
|
||||||
|
def category_subcats (site, cattitle, objects=True):
|
||||||
|
cmcontinue = None
|
||||||
|
ret = []
|
||||||
|
while True:
|
||||||
|
if cmcontinue == None:
|
||||||
|
resp = site.api("query", list="categorymembers", cmtitle=cattitle, cmtype="subcat", cmlimit=50)
|
||||||
|
else:
|
||||||
|
resp = site.api("query", list="categorymembers", cmtitle=cattitle, cmtype="subcat", cmlimit=50, cmcontinue=cmcontinue)
|
||||||
|
ret.extend([x['title'] for x in resp['query']['categorymembers']])
|
||||||
|
if 'continue' in resp:
|
||||||
|
cmcontinue = resp['continue']['cmcontinue']
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
if objects:
|
||||||
|
# print "converting to page objects ({0})".format(len(ret))
|
||||||
|
ret = [site.pages[x] for x in ret]
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def strip_namespace (x):
|
||||||
|
if ":" in x:
|
||||||
|
return x.split(":", 1)[1]
|
||||||
|
return x
|
||||||
|
|
||||||
|
cats = list(site.allcategories())
|
||||||
|
cats.sort(key=lambda x: unidecode.unidecode(x.name))
|
||||||
|
# cats_by_name = {}
|
||||||
|
cats = [{ 'title': cat.page_title, 'name': cat.name } for cat in cats]
|
||||||
|
index = {}
|
||||||
|
for c in cats:
|
||||||
|
index[c['title']] = c
|
||||||
|
|
||||||
|
for c in cats:
|
||||||
|
sc = category_subcats(site, c['name'], objects=False)
|
||||||
|
sc = [strip_namespace(x) for x in sc]
|
||||||
|
if sc:
|
||||||
|
for subcat in sc:
|
||||||
|
subcat = index[subcat]
|
||||||
|
if 'parent' not in subcat:
|
||||||
|
subcat['parent'] = c
|
||||||
|
|
||||||
|
def make_hierarchy (items):
|
||||||
|
root = {'children': []}
|
||||||
|
for item in items:
|
||||||
|
if 'parent' in item:
|
||||||
|
if 'children' not in item['parent']:
|
||||||
|
item['parent']['children'] = []
|
||||||
|
item['parent']['children'].append(item)
|
||||||
|
item['parent'] = item['parent']['title']
|
||||||
|
# del item['parent']
|
||||||
|
else:
|
||||||
|
root['children'].append(item)
|
||||||
|
return root
|
||||||
|
|
||||||
|
def flatten (root, depth=0):
|
||||||
|
for x in root['children']:
|
||||||
|
r = {'title': x['title'], 'name': x['name'], 'depth': depth}
|
||||||
|
if 'parent' in x:
|
||||||
|
r['parent'] = x['parent']
|
||||||
|
yield(r)
|
||||||
|
if 'children' in x:
|
||||||
|
for item in flatten(x, depth+1):
|
||||||
|
yield item
|
||||||
|
|
||||||
|
import json
|
||||||
|
root = make_hierarchy(cats)
|
||||||
|
#print (json.dumps(root, indent=2), file=args.output)
|
||||||
|
|
||||||
|
flat = list(flatten(root))
|
||||||
|
print (json.dumps(flat, indent=2), file=args.output)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
80
special/ergtv/index.html
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<!doctype>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>erg ~ Portes ouvertes 2021</title>
|
||||||
|
<style>
|
||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Vega";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.otf');
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.ttf') format("truetype");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular-Webfont.svg") format("svg");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff") format("woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff2") format("woff2");
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: thistle;
|
||||||
|
height: 100%;
|
||||||
|
font-family: Vega;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-family: Combined;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
display: contents;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
display: flex;
|
||||||
|
margin: 1.2em 0;
|
||||||
|
padding: 0;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 0.25em 0.5em;
|
||||||
|
flex-basis: 10%;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>erg tv</h1>
|
||||||
|
<h2>winterschool 2024</h2>
|
||||||
|
|
||||||
|
<iframe src="https://www.youtube.com/embed/3sThYW6bhEQ?si=DkvK7zpCHKEza81f" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
49
special/ergtv/welcome.html
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<!doctype>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>erg ~ Portes ouvertes 2021</title>
|
||||||
|
<style>
|
||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Vega";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.otf');
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.ttf') format("truetype");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular-Webfont.svg") format("svg");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff") format("woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff2") format("woff2");
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: thistle;
|
||||||
|
font-family: Vega;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
line-height: 1.2em;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-family: Combined;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
border: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="https://wiki.erg.be/mw/images/c/cb/Affiche_Jury_2021_%2B_PO_FINAL.jpg">
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
783
special/jpo2020-live/pad.html
Normal file
@@ -0,0 +1,783 @@
|
|||||||
|
<html lang="en"><head><style type="text/css">.disclaimer{text-align:right;font-size:x-small}.banner{background-color:#fff;text-align:left}.cacheContent{position:relative}.b_vPanel>div{padding-bottom:10px}.b_vPanel>div:last-child{padding:0}.banner a{color:#000080}</style><!-- base href="http://wiki.erg.be/m/special/jpo2020-live/pad.html" --><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!-- Banner:Start --><!--LocalizedDate:12/10/2020--><!--InvariantDate:10/12/2020--></head><body><div class="banner"><div class="b_vPanel"><div><!-- Title:Start -->You have reached the cached page for <strong><a target="_blank" href="http://wiki.erg.be/m/special/jpo2020-live/pad.html" h="ID=SERP,5003.1">http://wiki.erg.be/m/special/jpo2020-live/pad.html</a></strong><!-- Title:End --></div><div><!-- Content:Start -->Below is a snapshot of the Web page as it appeared on <strong>12/10/2020</strong>
|
||||||
|
(the last time our crawler visited it). This is the version of the page
|
||||||
|
that was used for ranking your search results. The page may have
|
||||||
|
changed since we last cached it. To see what might have changed (without
|
||||||
|
the highlights), <a target="_blank" href="http://wiki.erg.be/m/special/jpo2020-live/pad.html" h="ID=SERP,5003.2">go to the current page</a>.<!-- Content:End --></div><div><!-- Disclaimer:Start --><div class="disclaimer">Bing is not responsible for the content of this page.</div><!-- Disclaimer:End --></div><!-- Banner:End --></div></div><div class="cacheContent">
|
||||||
|
|
||||||
|
|
||||||
|
<title>erg-jpo-2020-vos-questions-9hd0</title>
|
||||||
|
<meta name="generator" content="Etherpad">
|
||||||
|
<meta name="author" content="Etherpad">
|
||||||
|
<meta name="changedby" content="Etherpad">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style>
|
||||||
|
ul.indent {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
ol {
|
||||||
|
list-style-type: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
body > ol {
|
||||||
|
counter-reset: first second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth thirteenth fourteenth fifteenth sixteenth;
|
||||||
|
}
|
||||||
|
ol > li:before {
|
||||||
|
content: counter(first) ". ";
|
||||||
|
counter-increment: first;
|
||||||
|
}
|
||||||
|
ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) ". ";
|
||||||
|
counter-increment: second;
|
||||||
|
}
|
||||||
|
ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) ". ";
|
||||||
|
counter-increment: third;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) ". ";
|
||||||
|
counter-increment: fourth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) ". ";
|
||||||
|
counter-increment: fifth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) ". ";
|
||||||
|
counter-increment: sixth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) ". ";
|
||||||
|
counter-increment: seventh;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) ". ";
|
||||||
|
counter-increment: eighth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) ". ";
|
||||||
|
counter-increment: ninth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) ". ";
|
||||||
|
counter-increment: tenth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) ". ";
|
||||||
|
counter-increment: eleventh;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelfth) ". ";
|
||||||
|
counter-increment: twelfth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelfth) "." counter(thirteenth) ". ";
|
||||||
|
counter-increment: thirteenth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelfth) "." counter(thirteenth) "." counter(fourteenth) ". ";
|
||||||
|
counter-increment: fourteenth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelfth) "." counter(thirteenth) "." counter(fourteenth) "." counter(fifteenth) ". ";
|
||||||
|
counter-increment: fifteenth;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {
|
||||||
|
content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eighth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelfth) "." counter(thirteenth) "." counter(fourteenth) "." counter(fifteenth) "." counter(sixteenth) ". ";
|
||||||
|
counter-increment: sixteenth;
|
||||||
|
}
|
||||||
|
ol {
|
||||||
|
text-indent: 0px;
|
||||||
|
}
|
||||||
|
ol > ol {
|
||||||
|
text-indent: 10px;
|
||||||
|
}
|
||||||
|
ol > ol > ol {
|
||||||
|
text-indent: 20px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol {
|
||||||
|
text-indent: 30px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 40px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 50px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 60px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 70px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 80px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 90px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 100px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 110px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 120px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 130px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 140px;
|
||||||
|
}
|
||||||
|
ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol {
|
||||||
|
text-indent: 150px;
|
||||||
|
}
|
||||||
|
sub{vertical-align:sub;font-size:smaller}sub{vertical-align:sup;font-size:smaller}h1{font-size: 2.0em;line-height: 120%;} h2{font-size: 1.5em;line-height: 120%;} h3{font-size: 1.17em;line-height: 120%;} h4{line-height: 120%;} h5{font-size: 0.83em;line-height: 120%;} h6{font-size: 0.75em;line-height: 120%;} code{font-family: monospace;}[data-color="black"], .color\:black { color:black; }
|
||||||
|
[data-color="red"], .color\:red { color:red; }
|
||||||
|
[data-color="green"], .color\:green { color:green; }
|
||||||
|
[data-color="blue"], .color\:blue { color:blue; }
|
||||||
|
[data-color="yellow"], .color\:yellow { color:yellow; }
|
||||||
|
[data-color="orange"], .color\:orange { color:orange; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style type="text/css" media="screen">
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Vega";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.otf');
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.ttf') format("truetype");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular-Webfont.svg") format("svg");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff") format("woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff2") format("woff2");
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: Vega;
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 1.5em;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
/*color: #a700ff;*/
|
||||||
|
font-family: Combined;
|
||||||
|
font-size: 1em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 2em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
padding-top: 1em;
|
||||||
|
border-top: 2px solid white;
|
||||||
|
color: #A700FF;
|
||||||
|
}
|
||||||
|
strong {
|
||||||
|
color: #A700FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
border-image: linear-gradient(to right, #A700FF, #00ab6b);
|
||||||
|
border-bottom-width: 2px;
|
||||||
|
border-image-slice: 1;
|
||||||
|
color: inherit;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
padding: 3px 5px 1px;
|
||||||
|
}
|
||||||
|
video {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
sup {
|
||||||
|
font-size: 0.55em;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: 0.55em;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 500px;
|
||||||
|
border: 0;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="http://wiki.erg.be/w/Bienvenue_%C3%A0_l%E2%80%99erg">Retour au site de l'erg.</a>
|
||||||
|
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
Organisation du pad
|
||||||
|
</h1>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#questions-profs">Questions pour les profs</a></li>
|
||||||
|
<li><a href="#questions-admin">Questions pour l'administration</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1 id="questions-profs">Questions pour les enseignant·e·s</h1>
|
||||||
|
|
||||||
|
<strong>1/ Pour le dossier d'inscription (Cas 4) je ne comprends pas
|
||||||
|
précisement quel est le papier "composition de famille recente et
|
||||||
|
originale" </strong><br><ul class="indent"><li>=>voir <strong>questions admin ci-dessous</strong></li></ul><strong><br><strong>2/A
|
||||||
|
quoi faut il s'attendre pour l'éxamen d'entrée, quels types d'atelier
|
||||||
|
il pourrait y avoir, sur quoi s'entrainer en amont </strong><br><ul class="indent"><li>surtout ne pas se préparer :) s'attendre à désapprendre</li><li>Ne rien préparer surtout ! Venez l'esprit ouvert. </li></ul><br><strong>3/
|
||||||
|
Bonjour, est-ce que quelqu’un qui n’a pas fait d’études en arts
|
||||||
|
appliqués et qui vient de l’Université a ses chances pour entrer à
|
||||||
|
l’Erg? Ou la MANAA (et/ou autre) est obligatoire?</strong><br><strong>En
|
||||||
|
fait, j’ai validé un M1 en cinéma dans une université française, et
|
||||||
|
maintenant je suis intéressé par ce que vous proposez en terme de
|
||||||
|
narration spéculative.</strong><br><strong>Du coup, je me demande s’il
|
||||||
|
est possible pour moi de proposer un dossier pour une demande
|
||||||
|
d’admission en master, ou même une admission en cours étude? </strong><br><ul class="indent"><li>oui
|
||||||
|
tout à fait du point de vue professoral. Pour l'entrée en M1 ou M2 tout
|
||||||
|
dépendra de votre dossier et de l'entretien. Difficile de vous dire
|
||||||
|
exactement ce qui sera possible, c'est vraiment lors de l'entretien que
|
||||||
|
l'on voit si votre attente et ce que nous proposons se rencontrent.
|
||||||
|
Tentez votre chance, je dirais. Pour les questions administratives, voir
|
||||||
|
ci-dessous.</li><li>Oui, pas de soucis, je comprends que tout se fait au cas par cas. Merci pour votre réponse!</li><li>Pour nous, il est surtout important qu'on ait on va dir</li><li>Administrativement
|
||||||
|
parlant: pas du tout de nécessité de MANAA, mais pour la valorisation
|
||||||
|
des crédits d'un bachelier à l'université, c'est vraiment sur base des
|
||||||
|
correspondances de cours, etc. Voir plus bas.</li><li>ça marche, je vais poser une dernière question sur la partie dédiée à l'administration alors, merci à vous</li></ul><br><strong>4/ Bonjour, en quoi consistent les rencontres d'admission ? Es-ce qu'il faut amener des choses sur lesquelles on travaille ?</strong><br><ul class="indent"><li>vous
|
||||||
|
serez amenés à travailler avec d'autres, à échanger en groupe etc...
|
||||||
|
pour les détails, je pense que vous pourrez avoir plus d'infos lors de
|
||||||
|
la videoconférence tout à l'heure.</li><li>D'accord merci !</li><li></li></ul><strong>5/
|
||||||
|
Ce que j'aime particulièrement ce sont les expérimentations graphiques,
|
||||||
|
l'exploration plastique, mêler différents mediums et support. Je suis
|
||||||
|
perdue concernant le choix de l'orientation. En fonction de cela, quel
|
||||||
|
orientation dans le pôle art me conseillez-vous ? Merci !</strong><br>Ces 3 points peuvent être arpentés en dessin, peinture, sculpture ou photographie, voir vidéo.<br>Et dans les trois pôles...! Oui!<br>Si
|
||||||
|
par exemple je choisis le dessin, puis-je venir peindre, dessiner sur
|
||||||
|
une photographie ? Cela est-il plutôt libre au final ? Ou au contraire,
|
||||||
|
si je choisis photographie, puis-je mêler différentes expérimentations
|
||||||
|
graphiques (que ce soit avec de la peinture/encres/bombes ou encore par
|
||||||
|
photoshop) dans mes projets photographiques ? Oui :> <br>Super, je suis rassuré, merci !<br><ul class="indent"><li></li></ul><strong>6/
|
||||||
|
Bonjour, j'aime particulièrement l'image imprimée, et je ne sais pas
|
||||||
|
vraiment quelle orientation serait la plus adéquate pour pratiquer ?
|
||||||
|
Dessin, peinture, illu ? </strong><br>Il y a un cours appelé “Image imprimée” en Bac 1 (sur 4h semaine) qui est ouvert à toutes les orientations. <br>Merci beaucoup !<br>Oui
|
||||||
|
c'est difficile de répondre à ta question parce qu'en fonction de ce
|
||||||
|
que tu imagines ou de ta définition d'“image imprimée” tu pourrait
|
||||||
|
trouver matière à ta recherche en graphisme, photo, dessin ou peinture
|
||||||
|
en effet.<br>Je pensais surtout au printmaking, gravure, sérigraphie, litho, etc<br>D'accord. Il n'y a pas d'orientation dédiée à ces techniques mais des ateliers et stages lié.e.s.<br>Je vois, merci ! Avec plaisir.<br>L'école
|
||||||
|
est pluridisciplinaire. En B1 vous pourrez essayer des techniques et
|
||||||
|
éventuellement changer d'orientation quand vous aurez trouvé vos mediums
|
||||||
|
de choix<br>Génial :)<br><h2></h2><br><strong>7/ Bonjour,
|
||||||
|
j'aimerais revenir sur l'introduction où l'on disait qu'il ne fallait
|
||||||
|
venir avec aucun objectif, aucune attente et projet déjà définis, et
|
||||||
|
j'entends bien à travers ça un discours d'ouverture et d'attitude
|
||||||
|
d'écoute des possibilités qui nous entourent, mais faut-il vraiment ne
|
||||||
|
rien attendre ? Pour une entrée en Master, il me semble difficile de
|
||||||
|
n'avoir aucune attente ou au-moins pré-projet, embryon de projet ?</strong><br>Bonjour,
|
||||||
|
pour le travail de master c'est un peu différent, c'est clair que le
|
||||||
|
travail d'atelier en master vient soutenir un projet personnel déjà
|
||||||
|
engagé, donc il faut effectivement avoir un projet personnel déjà
|
||||||
|
commencé, c'est à partir de là qu'on travaille. Arriver en master sans
|
||||||
|
aucun projet, sans idée perso et sans attente ne me semble pas vraiment
|
||||||
|
une bonne idée, même si on espère toujours qu'on vous aidera à
|
||||||
|
développer et à transformer ces projets de départ. Donc il faut
|
||||||
|
certainement faire preuve d'ouverture, ne pas arriver avec un projet
|
||||||
|
ficelé et sans rien attendre des profs. <br>Merci beaucoup pour la
|
||||||
|
réponse ! Bien sûr l'ouverture et une attitude poreuse sont requises à
|
||||||
|
tout moment du projet ! Merci à vous. Avec plaisir, le mieux je pense
|
||||||
|
pour l'arrivée en master est de se renseigner sur les différentes
|
||||||
|
orientation et de voir ce qui correspond au mieux à votre projet et vos
|
||||||
|
envies. Oui merci, je me renseignerai avec mes contacts étudiants !<br><br>8/ <strong> <span class="color:blue">est-ce qu'il y a du matériel à prevoir pour les options bd et et illustration?</span></strong><br>L'erg est une école de la débrouille. À priori il n'est pas nécessaire de venir grandement équipé.e :><br>Je
|
||||||
|
confirme (Joanna enseignante en illu), les étudiant.e.s s'équipent en
|
||||||
|
fonction de leurs projets, en fonction de leurs moyens aussi. On se
|
||||||
|
débrouille dans tous les cas.génial!! merci beaucoup!<br><br><strong><span class="color:blue">9/ est ce que les diplomes sont reconnus hors belgique? </span></strong><br><ul class="indent"><li>Je remets ta question dans la section ci-dessous, ok?<span class="color:blue">d'accord merci!</span></li><li></li></ul><br><strong>10/
|
||||||
|
Bonjour, je suis intéressée par un master a finalité didactique,
|
||||||
|
j'aimerais savoir un peu en quoi consiste ce master, quels sont les
|
||||||
|
options conseillées , enfin tout ça ! Merci</strong><br><ul class="indent"><li>Le
|
||||||
|
master à finalité didactique est composé de 1 année commune à tous les
|
||||||
|
masters et une seconde année qui est composée de 30 crédits de cours à
|
||||||
|
l'erg et 30 crédits de cours communs avec l'agrégation ( en horaire
|
||||||
|
décalé).</li><li>est-ce que ça répond à ta question?</li><li> oui
|
||||||
|
très bien ! désolée la connexion est difficile, j'aimerais savoir juste
|
||||||
|
pour la rencontre si il y a besoin d'avoir déjà un dossier portée sur la
|
||||||
|
pédagogie ou s</li><li>si vous avez des problèmes de connexion, posez
|
||||||
|
vos questions ici et nous y répondrons dans le stream vidéo à gauche
|
||||||
|
après 16h très bien merci ! </li><li></li></ul><strong>11/ Où pouvons-nous voir les travaux des étudiants B1 et B2 en arts numérique, photographie et vidéographie ?</strong><br><ul class="indent"><li>Voici
|
||||||
|
quelques liens pour voir des projets en ligne, mais il n'y a pas
|
||||||
|
forcément des productions qui représentent toutes les orientations.</li><li>- BAC 2 & 3 - Programmation numérique: Écriture du code - <a href="http://curlybraces.be/" rel="noreferrer noopener">http://curlybraces.be/</a></li><li>- BAC 2 & 3 - Vidéo - <a href="https://ergvideo.tumblr.com/" rel="noreferrer noopener">https://ergvideo.tumblr.com/</a></li><li>- Les photographies de Marc Wathieu (qui a enseigné en BAC 1/2/3 en arts numériques) dont des albums consacrés à l'erg - <a href="https://www.flickr.com/photos/marcwathieu/albums" rel="noreferrer noopener">https://www.flickr.com/photos/marcwathieu/albums</a></li></ul><br><strong>12/ Est- ce que le master didactique nécessite une formation/licence, portée sur la pédagogie ? merci</strong><br><ul class="indent"><li>non,
|
||||||
|
il faut être inscrit.e dans un des masters de l'erg, le master
|
||||||
|
didactique est une spécialisation du master 2, d'accord merci, et il
|
||||||
|
n'est pas lié au master agreg ? l'agrégation est une année
|
||||||
|
supplémentaire mais les cours sont communs avec lae master didactique
|
||||||
|
Merci !</li><li></li></ul><br><strong>13/<span class="color:blue"> pour le matériel lors du rdv d'admission; on ramène ce qu'on veut, ou est-ce qu'on travaille avec des outils imposés?</span></strong><br><ul class="indent"><li><span class="color:blue"> Les
|
||||||
|
conditions de l'examen d'entrée restent encore à imaginer (peut-être
|
||||||
|
différent des dernières années vu le contexte) mais on part du principe
|
||||||
|
que les étudiant.e.s viennent avec la base (feuilles, outils, trousse,
|
||||||
|
clé usb...) on se débrouille, on se prête...génial! merci beaucoup!!</span></li></ul><br><strong>14/
|
||||||
|
Aux entretiens pour entrer en B2, j'ai vu que nous devons présenter des
|
||||||
|
travaux récents. Pouvons-nous présenter des travaux que vous aurez vu
|
||||||
|
auparavant dans notre portfolio que nous devons envoyer avec le dossier
|
||||||
|
d'inscription, ou alors vous attendez-vous à ce qu'on vous présente des
|
||||||
|
travaux différents de ceux de notre portfolio ?</strong><br><ul class="indent"><li>→ réponse donnée dans la 2e partie du pad, question 37</li></ul><br><strong>15/ À la fin des Portes Ouvertes, est-ce qu'il y aura ce document avec les questions encore disponible ?</strong><br><ul class="indent"><li>Oui, nous mettrons à disposition une archive de ce document, ainsi que du live.</li><li>Super merci !</li></ul><br>16/
|
||||||
|
Bonjour, je cherche à commencer un bachelier en graphisme. J'ai déjà
|
||||||
|
fait Bachelier + Master dans le domaine de la com', ensuite j'ai
|
||||||
|
travaillé un an en agence créative et une autre année en agence
|
||||||
|
média/créa. Je me suis rendu compte que la com' n'était pas pour moi car
|
||||||
|
j'ai davantage envie d'être du côté de la création plutôt que le
|
||||||
|
management. Est-ce que mon parcours reste légitime (25 ans - reprise
|
||||||
|
d'études) en sachant que j'ai toujours été intéressé par le
|
||||||
|
graphisme? <br><ul class="indent"><li>J'imagine que oui car j'ai
|
||||||
|
déjà eu des étudiants d'un certain âge, qui étaient déjà dans la vie
|
||||||
|
professionnelle et qui souhaitaient se réorienter. Je remets ta question
|
||||||
|
dans la partie administrative en bas pour voir s'il y a une démarche
|
||||||
|
différente ou non.</li><li>Ok merci beaucoup ! J'ai déjà pas mal utilisé
|
||||||
|
des programmes comme photoshop, je me suis mis récemment à Illustrator
|
||||||
|
et j'aimerais développer des compétences sur Spark, est-ce que je dois
|
||||||
|
venir pour les examens d'entrée avec des exemples de ce que j'ai déjà
|
||||||
|
fait en tant que "loisir"?</li><li>En Bac 1, pas de pré-requis mais un
|
||||||
|
portfolio est le bienvenu. Pour les années suivantes, il faut en effet
|
||||||
|
un portfolio. L'erg ne se focalise pas tellement sur les compétences et
|
||||||
|
l'apprentissage de logiciels à proprement parler. Nous mettons l'accent
|
||||||
|
sur les projets, et une bonne partie de l'équipe enseignante est plus
|
||||||
|
orientée logiciels libres que la suite Adobe. Est-ce que ça répond à ta
|
||||||
|
question? Oui c'est parfait, je me suis déjà renseigné sur les
|
||||||
|
différentes écoles à Bruxelles et j'aime l'idée que l'ERG n'est pas
|
||||||
|
forcément focalisée logiciels et davantage sur une approche artistique.
|
||||||
|
Je ne souhaite pas devenir graphic designer mais plutôt ouvrir mes
|
||||||
|
horizons sur le plan artistique et voir ce qui me convient le mieux et
|
||||||
|
ce que je pourrai en faire pour mes attentes vers le futur. J'ai
|
||||||
|
l'impression que l'ERG pousse vers ça?</li><li>En fait, tu peux tout
|
||||||
|
autant devenir graphic designer qu'artiste en faisant l'erg, c'est
|
||||||
|
vraiment à toi de choisir ta pratique. Mais dans toutes les orientations
|
||||||
|
de l'école, l'accent est mis sur l'expérimentation, la recherche, la
|
||||||
|
pratique personnelle et transdisciplinaire.C'est tout ce que je veux :).
|
||||||
|
Alors welcome pour t'inscrire :)Merci (y) ! L'équipe administrative t'a
|
||||||
|
répondue aussi tout en bas du pad.</li><li></li><li>Avec un parcours
|
||||||
|
comme celui-ci peut etre qu'entrer en master est plus pertinent ?
|
||||||
|
L'équipe administrative a répondu à cette question en bas, elle
|
||||||
|
préconise plutôt une entrée en B1...</li><li></li></ul><strong>17/
|
||||||
|
Est-ce que choisir l'orientation dessin dans le pôle art implique
|
||||||
|
uniquement la pratique du dessin ou est-ce beaucoup plus large ? </strong><br><ul class="indent"><li>Désolée,
|
||||||
|
les enseignants concernés n'ont pas dû voir ta question, tu peux la
|
||||||
|
reposer à information@erg.be, quelqu'un te répondra!</li></ul><br><br><strong>Nous allons maintenant archiver ce pad! Nous espérons que vous avons pu répondre à vos questions!</strong><br><br><br><strong>*******************************************************************************</strong><br><br>
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="questions-admin">Questions administratives</h1>
|
||||||
|
<strong>1/ Bonjour, je souhaiterai m'inscrire au Master en
|
||||||
|
Communication visuelle et graphique. J'ai un diplôme de Bachelier en
|
||||||
|
Arts Graphiques. Quelles sont les conditions d'admission pour accéder
|
||||||
|
directement à un Master? Merci.</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
pour accéder directement au master, nous te demanderons une copie de
|
||||||
|
ton diplôme de bachelier, tes relevés de notes de bachelier ainsi qu'un
|
||||||
|
descriptif des cours de bachelier que tu as suivi (normalement tu as ça
|
||||||
|
dans ton école). Sur cette base, l'administration et les profs du jury
|
||||||
|
d'admission regardent si cela correspond aux attendus pour rentrer en
|
||||||
|
master. Tu peux nous envoyer ton dossier (toutes les infos sont ici:<a href="http://wiki.erg.be/m/#Pr%C3%A9-inscription_en_cours_d%E2%80%99etudes_-_2e_cycle_master_120_ects_%E2%80%93_2020-2021" rel="noreferrer noopener">http://wiki.erg.be/m/#Pr%C3%A9-inscription_en_cours_d%E2%80%99etudes_-_2e_cycle_master_120_ects_%E2%80%93_2020-2021</a> ) sur aec-vae@erg.be, on l'analyse (il nous faut un peu de temps pour ça) avec Patrizia Tripoli et on revient vers toi. </li><li>Est-ce que ça répond à ta question? (Maryline)</li><li>Oui
|
||||||
|
merci beaucoup, dans le cas où je serai admise quelles sont les dates
|
||||||
|
de présentation devant le jury (Master)? Le 9 septembre pour les
|
||||||
|
master. </li><li>Et le cas échéant y a t-il une année intermédiaire
|
||||||
|
pour y accéder? Oui, c'est tout à fait possible que le jury d'admission
|
||||||
|
décide que le master n'est pas accessible tout de suite mais qu'il faut
|
||||||
|
prendre des cours de B3.</li><li>Merci! Et est-ce qu'il est possible
|
||||||
|
d'être à cheval sur les deux années? : entrer en Master en repassant en
|
||||||
|
même temps quelques cours de Bac 3 que je n'aurais pas eu?</li></ul><br><strong>2/
|
||||||
|
Pour le dossier d'inscription (Cas 4) je ne comprends pas précisement
|
||||||
|
quel est le papier "composition de famille recente et originale"</strong><br><ul class="indent"><li>Bonjour, c'est un document qui ne doit être fourni que par des étudiant.e.s qui ne sont <u>pas</u>
|
||||||
|
de nationalité belge et qui résident en Belgique. C'est un document que
|
||||||
|
votre Administration communale (service population) peut vous fournir.
|
||||||
|
(Maryline)</li><li>Mais si je réside en France mais compte déménager en Belgique a la rentrée. Je donne deux justificatifs different ?</li><li>Si
|
||||||
|
tu résides en France au moment d'envoyer ton dossier, il ne faut pas
|
||||||
|
mettre la composition de ménage. Tu nous fourniras le document plus
|
||||||
|
tard, lorsque tu auras fait toutes les démarches auprès de la
|
||||||
|
commune. </li><li>Parfait merci !</li><li></li></ul><strong>3/ Comment pouvons nous participer aux rencontres d'admissions ? merci</strong><br><ul class="indent"><li>Pour rentrer en quelle année? </li><li>en 1ere année</li><li>Bonjour,
|
||||||
|
pour participer aux épreuves d'admission B1, il faut remettre un
|
||||||
|
dossier en ligne. Une fois que ton dossier est complet, tu seras
|
||||||
|
invité.e à présenter l'épreuve d'admission qui a lieu pour les B1 du 31
|
||||||
|
août au 3 septembre (journées d'atelier suivi d'un entretien avec les
|
||||||
|
enseignant.e.s). Toutes les infos pour les B1 sur erg.be > Admission
|
||||||
|
20-21 > Admission Bac 1. </li><li>Est-ce que ça répond à ta question? </li><li>Merci ! parfait.</li><li></li></ul><strong>4/
|
||||||
|
Faut-il pour la rentrée prochaine se procurer une traduction du bac
|
||||||
|
francais ou non? Je n'ai pas vu cette info sur le site alors que je
|
||||||
|
pensais que c'était nécessaire auparavant</strong><br><ul class="indent"><li>Bonjour, par "traduction", tu veux dire une équivalence au CESS (diplôme belge de secondaire)?</li><li>Si
|
||||||
|
oui, il est obligatoire d'en avoir une pour accéder au bachelier. C'est
|
||||||
|
auprès du Ministère qu'il faut s'adresser pour ce faire: <a href="http://www.equivalences.cfwb.be/index.php?id=524" rel="noreferrer noopener">http://www.equivalences.cfwb.be/index.php?id=524</a> . </li></ul><br><strong>5/
|
||||||
|
Re-bonjour, en termes administratifs, est-il possible de présenter à la
|
||||||
|
fois un dossier pour une demande d’admission en Master et un dossier
|
||||||
|
pour une demande d’admission en cours d’études? Et donc de passer les
|
||||||
|
entretiens, etc.. pour les deux niveaux? </strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
Oui bien sur. Lorsque tu remets ton dossier, indique nous si tu
|
||||||
|
souhaites accéder au master. En fonction de l'analyse administrative,
|
||||||
|
nous te ferons passer l'entretien de bachelier en cours d'études (B2-B3)
|
||||||
|
ou l'entretien de master. Lors de l'entretien d'admission, les
|
||||||
|
enseignant.e.s pourraient décider que tu dois rentrer dans à un autre
|
||||||
|
niveau. </li><li>Pas d'inquiétude en tout cas, ce n'est pas "figé"
|
||||||
|
en fonction de la case que vous cochez sur un formulaire, avec les
|
||||||
|
enseignant.e.s nous faisons au mieux en fonction de votre profil et
|
||||||
|
parcours. </li><li>Est-ce que ça répond à ta question?</li><li>Oui,
|
||||||
|
très bien, merci! Donc si je comprends bien, je peux présenter un
|
||||||
|
dossier de pré-inscription en cours d’études - Master, et envoyer les
|
||||||
|
documents complémentaire pour l'entretien cours d'études - bachelier (B2
|
||||||
|
- B3) si vous les jugez nécessaire? Oui, pas d'inquiétude, nous te
|
||||||
|
dirons si il faut faire des démarches supplémentaires ;-)</li><li>Je
|
||||||
|
demande ça car je vois que les documents demandés pour les deux cycles
|
||||||
|
ne sont pas les mêmes (notamment les grilles comparatives bloc2 qui ne
|
||||||
|
sont pas demandées pour le dossier master) Pas de problème, nous
|
||||||
|
régulariserons ça. </li><li>Parfait, merci à vous et courage pour la suite :) ++</li></ul><br><strong>6/
|
||||||
|
Si je postule directement pour rentrer en bac 2, que je passe les
|
||||||
|
entretiens et que je ne suis pas retenue, devrais-je à nouveau passer
|
||||||
|
des épreuves pour rentrer en bac 1 ? </strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
c'est peut-être possible mais cela dépend un peu de la situation.
|
||||||
|
Patrizia saura mieux te répondre que moi (elle sera là à partir de 16h).</li><li>Pour passer en Bac1 : tout dépendra de la décision des enseignants de B2.</li></ul><br><strong>7/
|
||||||
|
Est-ce que je peux raisonnablement envisager de prendre un kot pour
|
||||||
|
septembre ? Quel est le pourcentage de gens retenus ? en bac1 et en bac 2
|
||||||
|
?</strong><br><ul class="indent"><li>On parle de +/- 5% de refus mais c'est difficile à dire comme ça</li><li>Merci pour votre réponse. Prenez-vous beaucoup de nouveaux élèves en bac2 ? </li><li>Je suis incapable de répondre. Nous n'avons pas de nombre limite, c'est au cas par cas</li><li>D'accord, merci beaucoup !</li><li></li></ul><br><strong>8/
|
||||||
|
Bonjour! Pour ce qui concerne l'équivalence du baccalauréat français,
|
||||||
|
est-il suffisant de mettre la lettre de demande de dérogation à la date
|
||||||
|
limite de dépôt ainsi qu'une preuve d'envoi? J'ai fais une demande
|
||||||
|
de dérogation et j'aurais donc l'équivalence dans les 5 jours qui
|
||||||
|
suivent la réussite des épreuves d'admission.</strong><br><ul class="indent"><li><s>Bonjour, une demande de dérogation à la date limite du 15 juillet? </s></li><li><s>Si
|
||||||
|
oui, tu devras absolument y mettre un document officiel de réussite de
|
||||||
|
l'épreuve d'admission (que tu peux demander à l'erg dès que tu reçois
|
||||||
|
les résultats de l'épreuve d'admission). Attention, à bien suivre les
|
||||||
|
consignes données par le Service des équivalences du Ministère, c'est
|
||||||
|
assez exigeant. </s></li><li><s>C'est ça! Merci! Mais du coup dans
|
||||||
|
les préinscriptions (sur le site web) là où je devrais mettre cette
|
||||||
|
équivalence, que dois-je mettre?</s></li><li><s>Tu peux alors juste
|
||||||
|
mettre un mot qui explique ceci ;-) Je suppose que c'est parce que tu
|
||||||
|
n'auras pas obtenu ton diplôme de baccalauréat avant la date du 15
|
||||||
|
juillet? </s></li><li>Plus au moins, en fait je suis à Barcelone
|
||||||
|
(Lycée Français à l'étranger), et les procès administratifs avec le
|
||||||
|
covid sont ralentis. On nous a dit qu'on aurait notre relevé de notes le
|
||||||
|
26 juin, mais le diplôme de bac peut arriver bien plus tard (vers
|
||||||
|
octobre, voire novembre...)</li><li>Alors si tu as ton relevé de notes
|
||||||
|
et/ou une attestation provisoire de réussite avant la date du 15
|
||||||
|
juillet, il vaut mieux déjà introduire ton dossier auprès du Ministère.
|
||||||
|
Ils te demanderont de le compléter par la suite. Mieux vaut faire ça au
|
||||||
|
plus vite ;-)</li><li>Vous avez raison! Merci mille fois!</li></ul><br><strong>9/
|
||||||
|
bonjour ! y-a-t-il une présentation de travaux type portfolio ?
|
||||||
|
j'imagine que oui, mais comme cela semble être très libre comme école je
|
||||||
|
me demandais ! (j'ai le sentiment qu'il y a surtout beaucoup de papiers
|
||||||
|
administratifs haha)</strong><br><ul class="indent"><li>Pour BAC 1, il
|
||||||
|
n'y a pas de pré-requis mais beaucoup de candidat·e·s amènent en effet
|
||||||
|
un portfolio. Pour les autres années, un portfolio est demandé.</li><li> merci beaucoup ! Le bac3 c'est l'équivalence d'une licence en France ? </li><li>Oui.</li></ul><br><strong><s>10/ <span class="color:blue">est-ce qu'il y a du matériel à prevoir pour les options bd et et illustration?</span></s></strong><br><s>je transfère ta question plus haut, directement aux enseignants d'accord merci!</s><br><br><strong>11/ Bonjour,</strong><br><strong>est-ce possible de s'inscrire au Master (Narration Spéculative) quand j'ai déjà un master dans les arts (photographie).</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
si tu as réussi ce master oui vraiment aucun problème, sous réserve de
|
||||||
|
l'épreuve d'admission. Si tu étais en échec durant ce master, nous
|
||||||
|
devrons analyser ton dossier.</li><li>En plus je me demandais si les
|
||||||
|
cours sont tous présentés en français. Je suis néerlandophone et je veux
|
||||||
|
bien améliorer mon francais mais en tout cas ça pourrait être une
|
||||||
|
barrière. :) :) </li><li>Oui, les cours sont en français...</li><li>Mais il y a quelques enseignant·e·s néerlandophones dans l'école ;) ++</li><li>Ok merci, haha </li><li></li></ul><strong>12/
|
||||||
|
Bonjour, pour l'inscription en Master, faut-il joindre un portfolio en
|
||||||
|
plus du formulaire d'inscription ? Et si oui, est-ce qu'il y a des
|
||||||
|
critères précis ou est-ce qu'il est plutôt "libre" ? Merci</strong><br><ul class="indent"><li>Bonjour, oui et l'apporter à l'épreuve d'admission. </li><li>Aucun critère précis, tout ce que vous voulez ;-) </li><li>Ok merci ! :) </li><li></li></ul>13/ <strong><span class="color:blue">est ce que les diplomes sont reconnus hors belgique? </span></strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
oui les diplômes sont reconnus par la Fédération Wallonie-Bruxelles et
|
||||||
|
le système des crédits européens (ECTS) est d'application à l'erg. Pour
|
||||||
|
une demande d'équivalence de diplômes, voir: <a href="http://www.equivalences.cfwb.be/index.php?id=524" rel="noreferrer noopener">http://www.equivalences.cfwb.be/index.php?id=524</a> . </li><li> Ca
|
||||||
|
dépend du contexte de ta question, de ce que tu veux en faire et dans
|
||||||
|
quel pays... Mais là, ça dépend des législations de ces différents pays.
|
||||||
|
d'accord merci!</li></ul><br>14/ <strong>Est-il aussi possible de postuler dans 2 Master différents (Graphisme et Arts Numériques par exemple) ?</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
il faut faire un choix d'orientation principale (cours de 6h/semaine,
|
||||||
|
ce sera le titre de ton diplôme de master). Cependant, tu pourras faire
|
||||||
|
un stage de 3h/semaine différent de ton orientation. Ça te permet donc
|
||||||
|
de faire les deux, mais une orientation principale doit tout de même
|
||||||
|
être choisie. </li><li>D'accord très bien, merci beaucoup pour la réponse !</li></ul><br><strong>15/
|
||||||
|
Re-bonjour! Avez vous une liste d'attente (dans le cas ou un.e élève
|
||||||
|
soit pris.e mais finalement ne veux pas intégrer le cursus)? </strong><br><ul class="indent"><li>Il n'y a pas de nombre maximum d'inscription. L'admission est uniquement basée sur votre dossier et votre motivation</li><li>D'accord,
|
||||||
|
merci! Et du coup, comment se passe l'annulation à l'inscription (être
|
||||||
|
pris.e mais ne pas pouvoir finalement intégrer le cursus)? si tu es
|
||||||
|
admis.e et que finalement tu ne peux /veux plus intégrer l'erg il suffit
|
||||||
|
de nous le signaler. </li><li>Noté! Merci beaucoup :)</li></ul><br><strong>17/
|
||||||
|
Bonjour, il est indiqué sur votre site que les résultats des rencontres
|
||||||
|
d'admission seront donnés le 7 septembre, pas possible plus tôt? </strong><br><ul class="indent"><li>ben non</li></ul><br>18/
|
||||||
|
Bonjour, je me demandais quel était le volume horaire des cours par
|
||||||
|
semaine, car je travaille déjà (en journée) et je voudrais savoir si
|
||||||
|
c’est compatible.<br><ul class="indent"><li>Cela dépend des années. Mais il faut prévoir aussi le temps de travail en dehors de la présence en cours.</li><li>Pour une entrée en master.</li><li>En
|
||||||
|
master, il faut prévoir qu'en dehors des cours c'est votre implication
|
||||||
|
personnelle qui va compter. Par ailleurs, comme il est aussi possible
|
||||||
|
d'étaler votre cursus, c'est difficile à dire, sachant aussi que tout
|
||||||
|
dépendra de vos options. Mais comptez un temps plein travail personnel
|
||||||
|
et présence en cours tout compris à répartir, bien ŝur. De nombreux
|
||||||
|
étudiants travaillent en semaine et/ou le w-e, mais un travail à temps
|
||||||
|
plein en plus de l'ERG ça parait difficile.</li><li>Sur les possibilités
|
||||||
|
d'allègement du cursus (c'est-à-dire avoir moins de cours/an, mais
|
||||||
|
avoir un master qui dure du coup plus longtemps que 2 ans), tu peux
|
||||||
|
écrire à maryline.ledoux@erg.be .</li><li>ok merci.</li><li></li></ul><strong>19
|
||||||
|
/ Bonjour, avec la situation actuelle, Savez-vous si l’année débutera
|
||||||
|
en présentielle ou est-il question de démarrer par voie virtuelle ?</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
grande question pour nous aussi ! On espère vraiment pouvoir revenir au
|
||||||
|
présentiel (en mettant en place des mesures de sécurité) le plus
|
||||||
|
possible - c'est notre volonté en tout cas - mais on dépend un peu des
|
||||||
|
autorités sanitaires pour cela donc on ne peut pas vous faire de fausses
|
||||||
|
promesses ;-)</li><li></li></ul><strong>20/ Bonjour, je me pose
|
||||||
|
une question concernant le choix de parcours en Master. J'ai vu qu'il y
|
||||||
|
avait deux cas dans le dossier : choisir d'abord une entrée par le
|
||||||
|
secteur, ou par la pratique. Qu'est-ce que ça change en réalité ? Par
|
||||||
|
exemple, si je veux entrer en Master de narration spéculative et choisir
|
||||||
|
les pratiques vidéo et installation/performance, pourquoi choisir par
|
||||||
|
exemple la narration spéculative en "dominante" et pas la vidéo ? Merci
|
||||||
|
:-) </strong><br><ul class="indent"><li>Il faut que tu choisisses le Master . Le titre de ton diplôme: être diplômé en Narration spéculative ou en Vidéo.</li></ul>Lorsque tu as choisis ça, tu peux ensuite choisir les autres pratiques artistiques <br><br><strong>21/ Bonjour est ce que cela pose un problème de rentrer dans votre école à 17 ans ?</strong><br><ul class="indent"><li>Aucun
|
||||||
|
problème tant que tu as un CESS ou un Bac. SI tu as toujours 17 ans
|
||||||
|
lors de ton inscription, un membre de ta famille majeur devra signer
|
||||||
|
pour toi.</li><li>Merci!</li></ul><br><strong>22/ Bonjour ! Est-il possible d'effectuer des Erasmus en Master ? :^)</strong><br><ul class="indent"><li>Bonjour ! Pour ça, il faut prendre contact avec Sammy. Il y a déjà pas mal d'informations sur le site de l'erg <a href="http://wiki.erg.be/" rel="noreferrer noopener">http://wiki.erg.be/</a> - Menu "International". <strong><span class="color:red">NON
|
||||||
|
les étudiants qui s'inscrivent en Master ne peuvent pas faire
|
||||||
|
d'Erasmus. Ce sont uniquement les étudiants qui ont effectué un
|
||||||
|
bachelor à l'erg.</span></strong></li><li>Super, merci bcp !!!</li><li>Oui, sinon cela crée trop de "brisures" dans le cursus </li></ul><br><strong>23/
|
||||||
|
Bonjour, Est-il nécessaire d'obtenir les 60 crédits en bac 1
|
||||||
|
(dans une autre école) afin d'effectuer la passerelle en Bac 2 à l'erg?</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
pour rentrer directement en B2 à l'erg, il faut effectivement avoir 60
|
||||||
|
crédits dans une autre école et il faut que l'erg puisse valoriser ces
|
||||||
|
60 crédits sur base du cursus qu'on organise. Une autre possibilité est
|
||||||
|
la valorisation des acquis de l'expérience (VAE) qui peut se faire sur
|
||||||
|
base de 5 années de pratiques. Je ne sais pas dans quel cas tu te
|
||||||
|
trouves? </li><li>D'accord merci, Pour le moment je ne sais pas
|
||||||
|
encore si je vais obtenir les 60 crédits car mes examens sont encore en
|
||||||
|
cours. On croise les doigts pour toi alors ;-) Quoi qu'il en soit,
|
||||||
|
introduit une demande d'admission en cours d'études. Tu pourras nous
|
||||||
|
fournir les relevés de notes (de juin et/ou de septembre) dès que tu les
|
||||||
|
as.</li><li>Quels sont les démarches à effectuer pour la VAE dans le
|
||||||
|
cas où ce serait nécessaire? Fournir des documents prouvant ta pratique
|
||||||
|
durant 5 ans (travaux, factures, etc.), ce sera analysé par l'équipe
|
||||||
|
administrative et par le jury d'admission. N'hésite pas à écrire à
|
||||||
|
écrire à aec-vae@erg.be.</li><li>Parfait, un tout grand merci!</li></ul><br><strong>24/ Bonjour, le "concours" se déroule bien sur 3 jours? ce sont des ateliers sur toute la journée avec d'autres candidats?</strong><br><ul class="indent"><li>Si
|
||||||
|
tu parles des rencontres d'admission en BAC 1, il s'agit d'une journée
|
||||||
|
voire une journée et demie de workshop pour que tu puisses "tester"
|
||||||
|
l'erg. Ces workshops ne sont pas éliminatoires. Ensuite, il y a un
|
||||||
|
entretien avec des enseignant·e·s de l'orientation pour laquelle tu
|
||||||
|
postules. Il y a un horaire de passage par ordre alphabétique.</li><li>d'accord! merci. pensez_vous que ces rencontres puissent avoir lieu en distanciel si toutefois il y a un nouveau confinement.</li><li>S'il
|
||||||
|
y a un nouveau confinement, nous ne pourrons en effet pas nous voir
|
||||||
|
face à face, et dans ce cas-ci, nous communiqueront les nouvelles
|
||||||
|
modalités d'admission.</li><li>Il n' ya pas de problème pour que les étrangers européens se déplacent à Bruxelles en ce moment? pas de quatorzaine obligatoire?</li><li>J'imagine
|
||||||
|
que ça dépend du pays d'où tu viens. Il me semble que les frontières
|
||||||
|
belges sont ouvertes pour les pays de l'espace Shengen. Plus d'infos sur
|
||||||
|
le site du Centre de crise belge: <a href="https://centredecrise.be/fr/news/gestion-de-crise/questions-relatives-au-franchissement-de-nos-frontieres" rel="noreferrer noopener">https://centredecrise.be/fr/news/gestion-de-crise/questions-relatives-au-franchissement-de-nos-frontieres</a></li><li>ok. Merci beaucoup</li><li>ce n'est pas un concours</li><li></li></ul><strong>25/ En quoi consiste le master à finalité approfondie ?</strong><br><ul class="indent"><li> Il
|
||||||
|
est composé de deux années d'études: une année commune à tous les
|
||||||
|
Masters et une année composée de 45 crédits à l'erg et 15 crédits
|
||||||
|
théoriques à choisir dans une université partenaire.</li></ul><br><strong>26/
|
||||||
|
(Pour l'entrée en master dans les dossier de pré-inscription) À propos
|
||||||
|
des documents à fournir pour les justifications post bac, qu'est ce qui
|
||||||
|
est entendu par "• Les attestations ORIGINALES justifiant TOUTES les
|
||||||
|
activités après l’obtention du diplôme" ? Pas de photocopie
|
||||||
|
ou pas de duplicata ? Aussi, (pour les justificatifs d'etudes
|
||||||
|
supérieures) puisqu'on ne peut pas mettre de certificat de scolarité,
|
||||||
|
vaut-il mieux mettre le diplôme ?</strong><br><ul class="indent"><li><strong>Vous
|
||||||
|
devez nous fournir en pdf des copies de toutes vos activités après
|
||||||
|
votre bac. Contrat de travail ou études. Vous devez justifier les 5
|
||||||
|
dernières années. Les originaux vous seront demandées ultérieurement.</strong></li><li>D'accord merci !</li></ul><br><strong>27/ Pour le dossier de candidature, le projet principal doit il etre développer </strong><br><strong>... vous proposez un encart assez serré dans votre formulaire, ducoup je me demandais à quel point le détailler ?</strong><br><ul class="indent"><li>Bonjour, je suppose que tu parles du master. </li><li>oui</li><li>Tu
|
||||||
|
peux en parler brièvement selon la place qui est laissée. Cela permet
|
||||||
|
aux enseignant.e.s de voir brièvement vers quel projet tu te diriges, et
|
||||||
|
vous pourrez en parler ensemble lors de l'entretien d'admission. </li><li></li></ul><strong>28/ Pour le logement, y-a-t-il quelqu'un de l'école/une association d'étudiants qui puisse aider (je viens de Barcelone)?</strong><br><ul class="indent"><li>Bonjour, Il y a beaucoup d'annonces pour des logements sur le groupe facebook de l'erg: <a href="https://www.facebook.com/groups/)/" rel="noreferrer noopener">https://www.<strong><em><u>facebook</u></em></strong>.com/groups/)/</a>. Sinon, il y a aussi un site d'annonces pour logement étudiant: <a href="https://ple.mykot.be/" rel="noreferrer noopener">https://ple.mykot.be/</a>.</li><li>Merci bcp!</li></ul><br><strong>29/ <span class="color:black">Bonjour,
|
||||||
|
j'ai obtenu l'an dernier un Diplôme National d'Art à l'ESADSE
|
||||||
|
(saint-étienne France), nous disposions de beaucoup d'ateliers, grande
|
||||||
|
force de l'école. Quels sont les différents ateliers pratiques que vous
|
||||||
|
proposez? Merci beaucoup !</span></strong><br><ul class="indent"><li>C'est
|
||||||
|
sûr que l'ESADSE est super équipée! Nous ne sommes malheureusement pas
|
||||||
|
aussi bien lotis, mais ceci nous force à être inventif et à faire avec
|
||||||
|
les moyens du bord. Cela dit, nous avons de plus en plus d'outils à
|
||||||
|
disposition. Dans les locaux de l'erg, il y a un atelier bois, du
|
||||||
|
matériel photo, vidéo, super 8 et 16mm, le print lab (impression laser,
|
||||||
|
riso, plotter, découpeuse vynil), des ordinateurs portables et fixes.
|
||||||
|
Sur les sites partagés avec l'ESA Saint-Luc dont l'erg fait partie, il y
|
||||||
|
a un atelier de sérigraphie, gravure sur bois, gravure sur métal (il me
|
||||||
|
semble), lithographie, impression 3D. Il y a aussi un partenariat avec
|
||||||
|
le fablab d'iMal qui a découpeuse laser, imprimantes 3D... </li><li><span class="color:green">C'est
|
||||||
|
vrai que commencer à appréhender le design à st-etienne est plutôt une
|
||||||
|
chance! Merci de votre réponse, je pense aussi que les liens créés entre
|
||||||
|
les différentes écoles peut aussi favoriser la création. Faut il avoir
|
||||||
|
des projets validés par des profs ou équipes techniques avant d'avoir
|
||||||
|
accès aux ateliers, ou y a t il plutôt une liberté d'accès? </span></li><li>Cela dépend du type de matériel/atelier dont tu as besoin, difficile de répondre maintenant. Merci de votre réponse!!</li></ul><br><strong>30/
|
||||||
|
Pour entrer en master, il est demandé de faire le tour de ses
|
||||||
|
expériences professionnelles ultérieures, je travaille comme artiste
|
||||||
|
depuis 10 ans avec des tonnes de petits contrats, tout cela doit-il être
|
||||||
|
détaillé ? ou je peux fonctionner sous forme de bloc, par thème ?</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
en fait nous vous demandons ça d'une part pour en savoir plus sur votre
|
||||||
|
profil pour l'épreuve d'admission. Mais l'autre raison pour laquelle
|
||||||
|
nous vous demandons cela, c'est que nous devons prouver ce qu'un.e
|
||||||
|
étudiant.e a fait durant les 5 dernières années (des études, du travail,
|
||||||
|
des projets, etc.) auprès de notre inspection. </li><li>C'est donc
|
||||||
|
très important de documenter ce que vous avez fait durant les 5
|
||||||
|
dernières années académiques (pas forcément les 10). S'il manque des
|
||||||
|
choses ou si c'est difficile à comprendre vu toute votre expérience, on
|
||||||
|
revient vers vous ! Est-ce que je réponds bien à ta question?</li><li>oui merci !</li><li></li></ul><strong>31/
|
||||||
|
Bonjour, il n'y a pas, dans le formulaire d'inscription de champ pour
|
||||||
|
le prénom d'usage. Est-il possible de l'indiquer autrement ? Par mail ?</strong><br><ul class="indent"><li>Nom
|
||||||
|
d'usage ? Pour le formulaire, nous demandons toutes les coordonnées qui
|
||||||
|
se trouvent sur la carte d'identité et ou acte de naissance. Ce sont
|
||||||
|
des données qui seront remis au Ministère.</li><li>On rencontre pour
|
||||||
|
l'instant des difficultés administratives pour intégrer les prénoms
|
||||||
|
d'usage auprès des autorités qui contrôlent le travail de
|
||||||
|
l'administration. On est en train de chercher toutes les solutions
|
||||||
|
possibles que nous n'avons pas pour l'instant, on en parle? Mais oui tu
|
||||||
|
peux l'indiquer dans le mail comme ça on peut en faire...usage ;-)</li><li>D'accord. Merci !</li></ul><br><strong>32/ Bonjour, après un BTS en France, soit Bac+2, à quelle équivalence je peux pretendre ? Master ou Bachelor 1, 2 ?</strong><br><ul class="indent"><li>Tout
|
||||||
|
dépendra du BTS. En général les étudiants avec un BTS de graphisme
|
||||||
|
design peuvent faire une demande pour une éventuelle inscription en B2.</li><li>Merci !</li></ul><br><strong>33/
|
||||||
|
Pour rentrer en première année de bachelor, faut-il emmener un book
|
||||||
|
pour éventuellement présenter des projets persos pendant l'entretien ?</strong><br><ul class="indent"><li>Il n'y a pas de pré-réquis pour BAC 1, mais beaucoup de personnes amènent en effet un portfolio pendant l'entretien.</li><li>D'accord, merci bcp!</li></ul><br><strong>34/
|
||||||
|
Bonjour ! Je suis Suisse, et j'avoue que je suis perdue avec toutes ces
|
||||||
|
démarches administratives concernant les équivalences. Je ne comprends
|
||||||
|
pas comment je dois m'y prendre pour faire des demandes d'équivalences ?
|
||||||
|
Et si je comprends bien, avec un bac ( et un cfc, je ne sais pas si ce
|
||||||
|
terme parle à quelqu'un.e ), je peux prétendre à une entrée en bac1
|
||||||
|
? </strong><br>Bonjour, toutes les infos sont ici : <a href="http://wiki.erg.be/w/Admission_Bachelor_1" rel="noreferrer noopener">http://wiki.erg.be/w/Admission_Bachelor_1</a> Vous devez choisir le cas qui correspond à votre situation (par exemple : <a href="http://wiki.erg.be/w/J%E2%80%99ai_d%C3%A9j%C3%A0_obtenu_mon_Baccalaur%C3%A9at_(ou_dipl%C3%B4me_du_secondaire_national)_%C3%A0_l%E2%80%99%C3%A9tranger)" rel="noreferrer noopener">http://wiki.erg.be/w/J%E2%80%99ai_d%C3%A9j%C3%A0_obtenu_mon_Baccalaur%C3%A9at_(ou_dipl%C3%B4me_du_secondaire_national)_%C3%A0_l%E2%80%99%C3%A9tranger)</a>
|
||||||
|
dans cette page, vous trouverez un lien pour le service des
|
||||||
|
équivalences (ATTENTION le terme equivalences en Belgique signifie une
|
||||||
|
équivalence de diplôme) -> <a href="http://www.equivalences.cfwb.be/" rel="noreferrer noopener">http://www.equivalences.cfwb.be/</a><br>super, merci beaucoup!! :-)<br><br><strong>35/
|
||||||
|
Bonjour, pour les grilles comparitives Bloc 1 et Bloc 2, est-ce qu'il
|
||||||
|
faut les équivalences très précises des cours ou est ce que c'est un peu
|
||||||
|
à nous de voir selon notre formation ? Je ne comprends pas vraiment
|
||||||
|
comment nous devons les remplir !</strong><br><ul class="indent"><li>Bonjour,
|
||||||
|
il faut faire au mieux mais on on bien conscient.e.s que ce n'est pas
|
||||||
|
évident et peu adapté parfois (c'est une obligation légale). Peut-être
|
||||||
|
mettre en vis-à-vis des cours artistiques des cours artistiques que tu
|
||||||
|
as suivi? Et idem pour les cours théoriques? Ca te semble faisable au
|
||||||
|
regard de ton parcours? Si ça ne correspond pas bien, nous trouverons
|
||||||
|
des solutions, c'est juste important de remettre ce document, quitte à
|
||||||
|
ce qu'il doive être adapté/complété par la suite. Ok pour toi?</li><li>Ok super merci beaucoup ! Ca devrais aller normalement ! :) :-)</li><li>Bonjour, et comment pouvons-nous calculez nos crédits au regard de nos notes ? pour entrer en B2 il faut 60 credits ?</li><li>Vous n'aviez pas de crédits? </li><li>Non je suis étudiante en France et nous n'avions pas ce système de crédit dans mon école, je suis donc perdue par rapport à ça</li><li>C'était une Manaa ou un BTS peut-être?</li><li>Une manaa et deux ans de bts design graphique</li><li>en tout cas de mon expérience (la même MANAA + BTS je suis entré en B2 </li><li>voila le lien <a href="https://jitsi.erg.be/JPO-2020-questions-administratives" rel="noreferrer noopener">https://jitsi.erg.be/JPO-2020-questions-administratives</a></li><li>salut ! je vais t'envoyer un lien vers lejitsi de l'administration tu pourras leur poser la question ;) </li><li>Mettre en parallèle les cours, après il faut que nous analysions la situation.</li><li>D'accord merci pour vos réponses !</li><li></li></ul><strong>36/ Avez vous des contacts avec des associations de logements étudiants?</strong><br><ul class="indent"><li>Bonjour, voir la question 28 ;-)suuuper je vais voir :))</li><li></li></ul><strong>37/
|
||||||
|
Aux entretiens pour entrer en B2, j'ai vu que nous devons présenter des
|
||||||
|
travaux récents. Pouvons-nous présenter des travaux que vous aurez vu
|
||||||
|
auparavant dans notre portfolio que nous devons envoyer avec le dossier
|
||||||
|
d'inscription, ou alors vous attendez-vous à ce qu'on vous présente des
|
||||||
|
travaux différents de ceux de notre portfolio ?</strong><br><ul class="indent"><li>Salut ! tu peux présenter les travaux que tu veux à l'entretien :) qu'il soient dans ton dossier ou non !</li></ul><br><strong>40/ petite question d'un bac 3 peut on en savoir plus sur les différent</strong>s<strong> master possible ? quand on vient de média par exemple ! merci </strong><br><strong>par exemple politique du multiple </strong><br><ul class="indent"><li> Tous les Masters sont accessibles, ça va dépendre de ta pratique.</li><li>Les masters les plus "teintés" média sont les deux masters PEG Politique et expérimentations graphiques. </li><li>- Pratiques artistiques et complexité scientifique</li><li>- Design et politique du Multiple</li><li>Tu peux faire une recherche sur le site de l'Erg pour en savoir plus sur chacun de ces masters.</li><li>merci beaucoup !</li><li>on va vous répondre en live aussi</li><li></li></ul><strong>41/ En bac1, quel pourcentage du programme est consacré aux cours théoriques généraux (cours historiques, philosophiques...)?</strong><br><ul class="indent"><li>Salut ! tu as 8h de cours théoriques hebdomadaires donc à peu près 30-40% :) Merci ! avec plaisir !</li></ul><br><strong>43/
|
||||||
|
Je ne recevrai pas mon equivalence de baccalaureat avant l'envoi de mon
|
||||||
|
dossier d'inscription, cela pose-t-il probleme ? puis-je la donner en
|
||||||
|
septembre ?</strong><br><ul class="indent"><li>il faut juste la preuve
|
||||||
|
que tu l'as bien faite. Tu dois envoyer ton dossier d'équivalence par
|
||||||
|
recommandé et nous apporter la preuve de l'envoi. La preuve de paiement
|
||||||
|
des 200 euros est à mettre dans le dossier d'équivalence (original). IL
|
||||||
|
faut impérativement que le dossier d'équivalence soit complet. </li></ul><br><strong>44/
|
||||||
|
Au moment des entretiens, pouvons-nous présenter notre portfolio sous
|
||||||
|
forme de pdf sur notre ordinateur, ou alors devons nous absolument le
|
||||||
|
presenter au format papier ?</strong><br><ul class="indent"><li>C'est possible mais c'est toujours plus parlant de voir les originaux...</li><li> Mais si les originaux sont numériques, alors...</li><li>oui </li><li>Nous pouvons apporter le portfolio papier et presenter les projets videos par exemple en apportant notre ordinateur ?</li><li>Bien sûr :)</li></ul><br><strong>45/
|
||||||
|
Sur la grille de cours comparative pour entrer en cours d’études, je
|
||||||
|
vois que nous devons rentrer des notes dans la colonne de droite.
|
||||||
|
N’ayant pas encore eu mes notes associées à l’obtention de mon diplôme
|
||||||
|
(que je recevrais dans l’été), puis-je mettre mes notes de bulletin de
|
||||||
|
deuxième semestre de cette année ?</strong><br><ul class="indent"><li>Vous pouvez simplement noter les noms des cours. L'administration de l'erg complétera le document par la suite. </li><li>Je
|
||||||
|
devrais donc dans l'été envoyer mes notes de dipl^me afin que l'equipe
|
||||||
|
administrative puisse completer par eux-même ma grille ?oui vous devez
|
||||||
|
nous envoyer par la suite un dossier complet.</li></ul><br><strong>46/
|
||||||
|
Bonjour! Je suis vraiment attirée par la pluridisciplinarité de votre
|
||||||
|
école et je viens d’un background très sonore mais j’aimerais me diriger
|
||||||
|
vers la conception d’installations intéractifs/productions mêlant son
|
||||||
|
avec d’autres supports/médiums d’arts (plastiques et visuels). Je me
|
||||||
|
demandais vis à vis du cursus BA ou MA d’Arts Numériques s’il y avait
|
||||||
|
une place pour le son dans ces études ? ou si on parle « que » des
|
||||||
|
aspects visuels des Arts Numériques. </strong><br><ul class="indent"><li>Le
|
||||||
|
son est omniprésent à l'erg, il existe même un cours technique de son
|
||||||
|
en 2ème et 3 ème année . Les arts numériques sont envisagés comme un
|
||||||
|
"carrefour" entre l'installation du media, le code pur et la production
|
||||||
|
personnelle. Mais tout le monde fait du son à l'erg, il suffit
|
||||||
|
d'intégrer cette composante dans sa pratique, que ce soir en graphisme
|
||||||
|
ou AN. </li><li>Ok, merci beaucoup!</li><li>J'ai cru voir qu'il y
|
||||||
|
avait Lawrence Le Doux en tant que professeur de son, c'est bien
|
||||||
|
cela?oui :) en cours de son B3, on a fait un k7 sur dispo bandcamp je te
|
||||||
|
met le lien ici <a href="https://ergmelody.bandcamp.com/album/rpgiator-2" rel="noreferrer noopener">https://ergmelody.bandcamp.com/album/rpgiator-2</a> Enjoy :)</li><li>:D</li><li>on vient de le contacter il essaye de se connecter au live pour répondre à votre question</li><li>sinon
|
||||||
|
le son est très présent, avec donc les profs Laurent et Sylvie, mais
|
||||||
|
aussi à la radio ou dans la galerie ou dans d'autres cours. </li><li>En
|
||||||
|
cours de master narration spéculative on en parle beaucoup par exemple.
|
||||||
|
Qu'est-ce qu'une narration sonore ? Qu'est-ce que l'histoire de la
|
||||||
|
musique peut nous dire du monde, de comment depuis la musique on
|
||||||
|
peut spéculer le monde ? </li><li>Ok merci c'est super, je suis rassurée et contente de lire ça !</li><li>Laurent est connecté il va avoir la parole dans quelques secondes</li><li>Niquel</li><li>J'ai
|
||||||
|
déjà une formation assez poussée et technique en son donc c'était plus
|
||||||
|
pour savoir si on apprenait par exemple, Max MSP pour lier la video avec
|
||||||
|
le son pour créer des "ponts" entre justement video/son</li><li>Je
|
||||||
|
pense que tu trouveras d'office le moyen de donner vie à ton projet, si
|
||||||
|
tu veux créer des ponts entre tes productions en son avec de la vidéo ça
|
||||||
|
ne posera pas de pb </li><li>Ok ça marche ! merci</li></ul>L'approche
|
||||||
|
de Sylvie est différente de celle de Laurent. Complémentaire. Elle
|
||||||
|
vient de l'art sonore avec une formation à la fois plus technique et
|
||||||
|
orientée texture, musique concrète, création sonore, field recording
|
||||||
|
etc... Laurent a une approche en lien avec ses propres pratiques
|
||||||
|
musicales et sonores, djing, radio, bricolage, débrouille. Voilà. <br>Ok, merci et du coup là on parle plutôt de B2/B3 AN<br>pour les cours dédiés oui. <br>Mais
|
||||||
|
comme on disait ça n'empêche pas de travailler la question ailleurs, et
|
||||||
|
avoir des échanges ou un suivi par x ou y. L'école est vraiment
|
||||||
|
transdisciplinaire. J'interviens (peggy) dans le master narration et
|
||||||
|
plusieurs élèves présentent des travaux autour de la musique et du son,
|
||||||
|
que ça soit via leurs mémoires ou dans leurs pratiques. <br>Cette année au moins deux jurys de narration spéculative seront exclusivement sonores. <br>D'accord,
|
||||||
|
merci pour toutes ces réponses rassurantes, c'est justement cette
|
||||||
|
transdisciplinarité que je trouve chouette dans cette école. Merci
|
||||||
|
! <br>Si tu as d'autres questions envoies un mail à
|
||||||
|
information@erg.be on le fera suivre à Laurent et Sylvie ou autres
|
||||||
|
personnes. <br>Et puis bien sur, il y a la radio qui peut être investie par qui veut. (avec stream en ligne)<br>Super :)<br><a href="http://erg.be/ergoteradio/" rel="noreferrer noopener">http://erg.be/ergoteradio/</a><br><br><br>47/
|
||||||
|
Bonjour, je cherche à commencer un bachelier en graphisme. J'ai déjà
|
||||||
|
fait Bachelier + Master dans le domaine de la com', ensuite j'ai
|
||||||
|
travaillé un an en agence créative et une autre année en agence
|
||||||
|
média/créa. Je me suis rendu compte que la com' n'était pas pour moi car
|
||||||
|
j'ai davantage envie d'être du côté de la création plutôt que le
|
||||||
|
management. Est-ce que mon parcours reste légitime (25 ans - reprise
|
||||||
|
d'études) en sachant que j'ai toujours été intéressé par le
|
||||||
|
graphisme? <br><ul class="indent"><li>J'imagine que oui car j'ai
|
||||||
|
déjà eu des étudiants d'un certain âge, qui étaient déjà dans la vie
|
||||||
|
professionnelle et qui souhaitaient se réorienter. Je remets ta question
|
||||||
|
dans la partie administrative en bas pour voir s'il y a une démarche
|
||||||
|
différente ou non.</li><li>Bonjour, oui bien sur. Il n'y a aucun problème, beaucoup d'étudiant.e.s ont déjà eu un parcours avant d'arriver à l'erg. </li><li>Les
|
||||||
|
démarches sont semblables ;-) On doit juste te demander de nous
|
||||||
|
indiquer et prouver ce que tu as fait ces cinq dernières années: nous
|
||||||
|
devons montrer cela à notre inspection (ministère). </li><li>Souhaites-tu
|
||||||
|
entamer un bachelier en B1? Si tu souhaites tenter de valoriser ton
|
||||||
|
parcours académique antérieur, on peut y regarder ensemble lors de ta
|
||||||
|
demande d'admission pour voir si il y a des possibilités...Bonjour, j'ai
|
||||||
|
déjà rassemblé les documents de Bachelier/Master qui prouvent mon
|
||||||
|
inscription+relevés de notes. J'ai aussi commencé à rassembler les
|
||||||
|
autres documents pour pouvoir s'inscrire. J'aimerais entrer en BAC 1
|
||||||
|
mais je ne sais pas si c'est ce qui est le plus logique, je me dis que
|
||||||
|
ça serait logique car je n'ai pas eu de formation artistique du tout. Je
|
||||||
|
dois faire ma demande d'admission en ligne ou bien c'est préférable de
|
||||||
|
venir sur place du coup? Effectivement cela serait plus pertinent de
|
||||||
|
commencer en B1 vu votre parcours en Com.Quel serait la démarche la plus
|
||||||
|
simple ? Rassembler l'ensemble des documents et venir sur place avant
|
||||||
|
le 15 juillet pour faire un dossier d'inscription ? Ou bien tout envoyer
|
||||||
|
en ligne ? Je me sentirais mieux de pouvoir discuter et vérifier que
|
||||||
|
tout est en ordre. </li><li>Demande d'admission en ligne uniquement
|
||||||
|
;-) Si des choses sont manquantes ou problème, on prend contact avec
|
||||||
|
vous, pas d'inquiétude. Ok pas de soucis Cela se passe comme ça cette
|
||||||
|
année vu les incertitudes sur les conditions sanitaires...</li><li></li></ul><strong>48/ Bonjour après un b3 quelle démarche pour rentrer en master ? Merci</strong> <br>Toutes les info sont sur le site de l'erg. Document à télécharger et à nous envoyer via mail.<br>Vous devez également nous envoyer certains documents.<br><br><br><s>49/
|
||||||
|
Est-ce que choisir l'orientation dessin dans le pôle art implique
|
||||||
|
uniquement la pratique du dessin ou est-ce beaucoup plus large ? </s><br><s>Je
|
||||||
|
remets ta question dans la 1re partie du pad, car je pense que les
|
||||||
|
enseignant·e·s de l'orientation dessin seront plus à même de te
|
||||||
|
répondre.</s><br><br><strong>50/Une petite question administrative, je
|
||||||
|
n'ai pas trouvé le coût de la formation exemple pour le Master en Arts
|
||||||
|
Numériques. J'ai vu 100€ de frais d'inscription mais je ne sais pas le
|
||||||
|
coût des cours.</strong><br><ul class="indent"><li>Bonjour, le minerval ne varie pas selon l'orientation, il varie en fonction de l'année d'études.</li><li>En master 1, le minerval est de 873€. En master 2 (car année diplômante), il est de 924€. </li><li>Plus d'infos et infos sur les aides sociales: erg.be - Menu - Mode d'emploi - Frais d'inscription.</li><li></li><li>Ok TOP, merci:)</li><li>Pour
|
||||||
|
les étudiant.e.s hors Union Européenne et qui ne peuvent pas être
|
||||||
|
assimilé.e.s, le montant est par contre plus important car il faut y
|
||||||
|
ajouter une part (voir le site web). Ce n'est pas ton cas? </li></ul>Non c'est bon je suis italienne Super ! Mais d'accord merci pour l'info !<br><br><br>51/
|
||||||
|
Afin d'être considéré comme "étudiant modeste" (statut), quels sont les
|
||||||
|
pré-recquis. Je compte travailler comme étudiant tout en faisant les
|
||||||
|
études et je ne vis plus chez mes parents depuis deux ans, est-ce que
|
||||||
|
cela me donne un statut particulier ?<br><ul class="indent"><li>Bonjour, en fait la définition d'un.e "étudiant.e modeste" est imposée par la Fédération Wallonie-Bruxelles. </li><li>Quelle
|
||||||
|
que soit ta situation, le Service social de l'école est là pour vous
|
||||||
|
aider (il faut prouver vos revenus et rendre un dossier, on vous
|
||||||
|
explique tout en début d'année). Il peut vous aider soit en vous
|
||||||
|
attribuant ce statut d' "étudiant.e modeste", soit en vous octroyant des
|
||||||
|
aides de l'école en fonction de vos situations. </li><li>Il y a
|
||||||
|
également les bourses d'études de la Fédération Wallonie-Bruxelles
|
||||||
|
(attention, là, il y a des conditions de nationalité et/ou résidence).
|
||||||
|
Plus d'infos ici: <a href="https://allocations-etudes.cfwb.be/" rel="noreferrer noopener">https://allocations-etudes.cfwb.be/</a>
|
||||||
|
Ok, merci beaucoup. Est-ce que je dois contacter le service social de
|
||||||
|
moi-même ou bien attendre le début d'année académique ? </li><li>Si
|
||||||
|
cela te rassurerait d'avoir plus d'informations maintenant, tu peux
|
||||||
|
écrire à Thérèse Groulard (servicesocial@stluc-bruxelles.be) pour
|
||||||
|
obtenir la brochure d'informations 2020-21 (elle n'est pas encore
|
||||||
|
disponible sur le site web). Pour l'introduction d'une demande, ce sera
|
||||||
|
en début d'année académique.Ok je contacterai donc, est-ce que c'est
|
||||||
|
cette adresse: Marie Alui – Service comptabilité -
|
||||||
|
secretariatfinancestluc@gmail.com ? Plutôt Thérèse Groulard (voir
|
||||||
|
ci-dessus) dans un premier temps. Le service compta c'est plutôt pour le
|
||||||
|
paiement du minerval par la suite. </li><li>NB: un acompte de 50€
|
||||||
|
sur le minerval doit être payé avant le 31 octobre 2020. Mais pour le
|
||||||
|
solde du minerval, vous avez jusqu'au 31 janvier 2021. Ok parfait, merci
|
||||||
|
pour les précisions/informations</li><li></li><li></li><li></li></ul><br><br><strong>Nous allons maintenant archiver ce pad! Nous espérons que vous avons pu répondre à vos questions!</strong><br><br><br><br>
|
||||||
|
|
||||||
|
|
||||||
|
</strong></div></body></html>
|
||||||
83
special/jpo2021-live/index.html
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<!doctype>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>erg ~ Portes ouvertes 2021</title>
|
||||||
|
<style>
|
||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Vega";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.otf');
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.ttf') format("truetype");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular-Webfont.svg") format("svg");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff") format("woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff2") format("woff2");
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: thistle;
|
||||||
|
height: 100%;
|
||||||
|
font-family: Vega;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-family: Combined;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
display: contents;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
display: flex;
|
||||||
|
margin: 1.2em 0;
|
||||||
|
padding: 0;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 0.25em 0.5em;
|
||||||
|
flex-basis: 10%;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>erg</h1>
|
||||||
|
<h2>journées portes ouvertes 2021</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://annuel.framapad.org/p/erg-jpo2021-admin" target="porte">Questions à l’administration</a></li>
|
||||||
|
<li><a href="https://annuel.framapad.org/p/erg-jpo2021-profs" target="porte">Questions aux enseignant·e·s</a></li>
|
||||||
|
<li><a href="https://www.mixcloud.com/Ergote_Radio/" target="_blank">Ergote Radio</a></li>
|
||||||
|
<li><a href="https://vimeo.com/showcase/8533632" target="_blank">Vidéos JPO 2021</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<iframe name="porte" src="welcome.html"></iframe>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
49
special/jpo2021-live/welcome.html
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<!doctype>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>erg ~ Portes ouvertes 2021</title>
|
||||||
|
<style>
|
||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "Vega";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.otf');
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.ttf') format("truetype");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular-Webfont.svg") format("svg");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff") format("woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff2") format("woff2");
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: thistle;
|
||||||
|
font-family: Vega;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
line-height: 1.2em;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-family: Combined;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
border: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="https://wiki.erg.be/mw/images/c/cb/Affiche_Jury_2021_%2B_PO_FINAL.jpg">
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
special/recentchanges.tar.gz
Normal file
6
special/recentchanges/Makefile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
all: dist/app.js
|
||||||
|
|
||||||
|
dist/app.js: src/*.js
|
||||||
|
# node_modules/.bin/rollup src/index.js --file dist/index.js --format iife
|
||||||
|
node_modules/.bin/rollup -c
|
||||||
915
special/recentchanges/dist/recentchanges.js
vendored
Normal file
@@ -0,0 +1,915 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var xhtml = "http://www.w3.org/1999/xhtml";
|
||||||
|
|
||||||
|
var namespaces = {
|
||||||
|
svg: "http://www.w3.org/2000/svg",
|
||||||
|
xhtml: xhtml,
|
||||||
|
xlink: "http://www.w3.org/1999/xlink",
|
||||||
|
xml: "http://www.w3.org/XML/1998/namespace",
|
||||||
|
xmlns: "http://www.w3.org/2000/xmlns/"
|
||||||
|
};
|
||||||
|
|
||||||
|
function namespace(name) {
|
||||||
|
var prefix = name += "", i = prefix.indexOf(":");
|
||||||
|
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
|
||||||
|
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;
|
||||||
|
}
|
||||||
|
|
||||||
|
function creatorInherit(name) {
|
||||||
|
return function() {
|
||||||
|
var document = this.ownerDocument,
|
||||||
|
uri = this.namespaceURI;
|
||||||
|
return uri === xhtml && document.documentElement.namespaceURI === xhtml
|
||||||
|
? document.createElement(name)
|
||||||
|
: document.createElementNS(uri, name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function creatorFixed(fullname) {
|
||||||
|
return function() {
|
||||||
|
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function creator(name) {
|
||||||
|
var fullname = namespace(name);
|
||||||
|
return (fullname.local
|
||||||
|
? creatorFixed
|
||||||
|
: creatorInherit)(fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
function none() {}
|
||||||
|
|
||||||
|
function selector(selector) {
|
||||||
|
return selector == null ? none : function() {
|
||||||
|
return this.querySelector(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_select(select) {
|
||||||
|
if (typeof select !== "function") select = selector(select);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
|
||||||
|
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
|
||||||
|
if ("__data__" in node) subnode.__data__ = node.__data__;
|
||||||
|
subgroup[i] = subnode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function empty() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectorAll(selector) {
|
||||||
|
return selector == null ? empty : function() {
|
||||||
|
return this.querySelectorAll(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_selectAll(select) {
|
||||||
|
if (typeof select !== "function") select = selectorAll(select);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
subgroups.push(select.call(node, node.__data__, i, group));
|
||||||
|
parents.push(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function matcher(selector) {
|
||||||
|
return function() {
|
||||||
|
return this.matches(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_filter(match) {
|
||||||
|
if (typeof match !== "function") match = matcher(match);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
|
||||||
|
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
|
||||||
|
subgroup.push(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sparse(update) {
|
||||||
|
return new Array(update.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_enter() {
|
||||||
|
return new Selection(this._enter || this._groups.map(sparse), this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnterNode(parent, datum) {
|
||||||
|
this.ownerDocument = parent.ownerDocument;
|
||||||
|
this.namespaceURI = parent.namespaceURI;
|
||||||
|
this._next = null;
|
||||||
|
this._parent = parent;
|
||||||
|
this.__data__ = datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnterNode.prototype = {
|
||||||
|
constructor: EnterNode,
|
||||||
|
appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
|
||||||
|
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
|
||||||
|
querySelector: function(selector) { return this._parent.querySelector(selector); },
|
||||||
|
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
|
||||||
|
};
|
||||||
|
|
||||||
|
function constant(x) {
|
||||||
|
return function() {
|
||||||
|
return x;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyPrefix = "$"; // Protect against keys like “__proto__”.
|
||||||
|
|
||||||
|
function bindIndex(parent, group, enter, update, exit, data) {
|
||||||
|
var i = 0,
|
||||||
|
node,
|
||||||
|
groupLength = group.length,
|
||||||
|
dataLength = data.length;
|
||||||
|
|
||||||
|
// Put any non-null nodes that fit into update.
|
||||||
|
// Put any null nodes into enter.
|
||||||
|
// Put any remaining data into enter.
|
||||||
|
for (; i < dataLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
node.__data__ = data[i];
|
||||||
|
update[i] = node;
|
||||||
|
} else {
|
||||||
|
enter[i] = new EnterNode(parent, data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put any non-null nodes that don’t fit into exit.
|
||||||
|
for (; i < groupLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
exit[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindKey(parent, group, enter, update, exit, data, key) {
|
||||||
|
var i,
|
||||||
|
node,
|
||||||
|
nodeByKeyValue = {},
|
||||||
|
groupLength = group.length,
|
||||||
|
dataLength = data.length,
|
||||||
|
keyValues = new Array(groupLength),
|
||||||
|
keyValue;
|
||||||
|
|
||||||
|
// Compute the key for each node.
|
||||||
|
// If multiple nodes have the same key, the duplicates are added to exit.
|
||||||
|
for (i = 0; i < groupLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
|
||||||
|
if (keyValue in nodeByKeyValue) {
|
||||||
|
exit[i] = node;
|
||||||
|
} else {
|
||||||
|
nodeByKeyValue[keyValue] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute the key for each datum.
|
||||||
|
// If there a node associated with this key, join and add it to update.
|
||||||
|
// If there is not (or the key is a duplicate), add it to enter.
|
||||||
|
for (i = 0; i < dataLength; ++i) {
|
||||||
|
keyValue = keyPrefix + key.call(parent, data[i], i, data);
|
||||||
|
if (node = nodeByKeyValue[keyValue]) {
|
||||||
|
update[i] = node;
|
||||||
|
node.__data__ = data[i];
|
||||||
|
nodeByKeyValue[keyValue] = null;
|
||||||
|
} else {
|
||||||
|
enter[i] = new EnterNode(parent, data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add any remaining nodes that were not bound to data to exit.
|
||||||
|
for (i = 0; i < groupLength; ++i) {
|
||||||
|
if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
|
||||||
|
exit[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_data(value, key) {
|
||||||
|
if (!value) {
|
||||||
|
data = new Array(this.size()), j = -1;
|
||||||
|
this.each(function(d) { data[++j] = d; });
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bind = key ? bindKey : bindIndex,
|
||||||
|
parents = this._parents,
|
||||||
|
groups = this._groups;
|
||||||
|
|
||||||
|
if (typeof value !== "function") value = constant(value);
|
||||||
|
|
||||||
|
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
var parent = parents[j],
|
||||||
|
group = groups[j],
|
||||||
|
groupLength = group.length,
|
||||||
|
data = value.call(parent, parent && parent.__data__, j, parents),
|
||||||
|
dataLength = data.length,
|
||||||
|
enterGroup = enter[j] = new Array(dataLength),
|
||||||
|
updateGroup = update[j] = new Array(dataLength),
|
||||||
|
exitGroup = exit[j] = new Array(groupLength);
|
||||||
|
|
||||||
|
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
|
||||||
|
|
||||||
|
// Now connect the enter nodes to their following update node, such that
|
||||||
|
// appendChild can insert the materialized enter node before this node,
|
||||||
|
// rather than at the end of the parent node.
|
||||||
|
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
|
||||||
|
if (previous = enterGroup[i0]) {
|
||||||
|
if (i0 >= i1) i1 = i0 + 1;
|
||||||
|
while (!(next = updateGroup[i1]) && ++i1 < dataLength);
|
||||||
|
previous._next = next || null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
update = new Selection(update, parents);
|
||||||
|
update._enter = enter;
|
||||||
|
update._exit = exit;
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_exit() {
|
||||||
|
return new Selection(this._exit || this._groups.map(sparse), this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_join(onenter, onupdate, onexit) {
|
||||||
|
var enter = this.enter(), update = this, exit = this.exit();
|
||||||
|
enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + "");
|
||||||
|
if (onupdate != null) update = onupdate(update);
|
||||||
|
if (onexit == null) exit.remove(); else onexit(exit);
|
||||||
|
return enter && update ? enter.merge(update).order() : update;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_merge(selection) {
|
||||||
|
|
||||||
|
for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
|
||||||
|
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group0[i] || group1[i]) {
|
||||||
|
merge[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; j < m0; ++j) {
|
||||||
|
merges[j] = groups0[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(merges, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_order() {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
|
||||||
|
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
|
||||||
|
next = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_sort(compare) {
|
||||||
|
if (!compare) compare = ascending;
|
||||||
|
|
||||||
|
function compareNode(a, b) {
|
||||||
|
return a && b ? compare(a.__data__, b.__data__) : !a - !b;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
sortgroup[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sortgroup.sort(compareNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(sortgroups, this._parents).order();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ascending(a, b) {
|
||||||
|
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_call() {
|
||||||
|
var callback = arguments[0];
|
||||||
|
arguments[0] = this;
|
||||||
|
callback.apply(null, arguments);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_nodes() {
|
||||||
|
var nodes = new Array(this.size()), i = -1;
|
||||||
|
this.each(function() { nodes[++i] = this; });
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_node() {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
||||||
|
for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
|
||||||
|
var node = group[i];
|
||||||
|
if (node) return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_size() {
|
||||||
|
var size = 0;
|
||||||
|
this.each(function() { ++size; });
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_empty() {
|
||||||
|
return !this.node();
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_each(callback) {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
||||||
|
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
|
||||||
|
if (node = group[i]) callback.call(node, node.__data__, i, group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrRemove(name) {
|
||||||
|
return function() {
|
||||||
|
this.removeAttribute(name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrRemoveNS(fullname) {
|
||||||
|
return function() {
|
||||||
|
this.removeAttributeNS(fullname.space, fullname.local);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrConstant(name, value) {
|
||||||
|
return function() {
|
||||||
|
this.setAttribute(name, value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrConstantNS(fullname, value) {
|
||||||
|
return function() {
|
||||||
|
this.setAttributeNS(fullname.space, fullname.local, value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrFunction(name, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.removeAttribute(name);
|
||||||
|
else this.setAttribute(name, v);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrFunctionNS(fullname, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
|
||||||
|
else this.setAttributeNS(fullname.space, fullname.local, v);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_attr(name, value) {
|
||||||
|
var fullname = namespace(name);
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var node = this.node();
|
||||||
|
return fullname.local
|
||||||
|
? node.getAttributeNS(fullname.space, fullname.local)
|
||||||
|
: node.getAttribute(fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each((value == null
|
||||||
|
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
|
||||||
|
? (fullname.local ? attrFunctionNS : attrFunction)
|
||||||
|
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultView(node) {
|
||||||
|
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
|
||||||
|
|| (node.document && node) // node is a Window
|
||||||
|
|| node.defaultView; // node is a Document
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleRemove(name) {
|
||||||
|
return function() {
|
||||||
|
this.style.removeProperty(name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleConstant(name, value, priority) {
|
||||||
|
return function() {
|
||||||
|
this.style.setProperty(name, value, priority);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleFunction(name, value, priority) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.style.removeProperty(name);
|
||||||
|
else this.style.setProperty(name, v, priority);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_style(name, value, priority) {
|
||||||
|
return arguments.length > 1
|
||||||
|
? this.each((value == null
|
||||||
|
? styleRemove : typeof value === "function"
|
||||||
|
? styleFunction
|
||||||
|
: styleConstant)(name, value, priority == null ? "" : priority))
|
||||||
|
: styleValue(this.node(), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleValue(node, name) {
|
||||||
|
return node.style.getPropertyValue(name)
|
||||||
|
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyRemove(name) {
|
||||||
|
return function() {
|
||||||
|
delete this[name];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyConstant(name, value) {
|
||||||
|
return function() {
|
||||||
|
this[name] = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyFunction(name, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) delete this[name];
|
||||||
|
else this[name] = v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_property(name, value) {
|
||||||
|
return arguments.length > 1
|
||||||
|
? this.each((value == null
|
||||||
|
? propertyRemove : typeof value === "function"
|
||||||
|
? propertyFunction
|
||||||
|
: propertyConstant)(name, value))
|
||||||
|
: this.node()[name];
|
||||||
|
}
|
||||||
|
|
||||||
|
function classArray(string) {
|
||||||
|
return string.trim().split(/^|\s+/);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classList(node) {
|
||||||
|
return node.classList || new ClassList(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ClassList(node) {
|
||||||
|
this._node = node;
|
||||||
|
this._names = classArray(node.getAttribute("class") || "");
|
||||||
|
}
|
||||||
|
|
||||||
|
ClassList.prototype = {
|
||||||
|
add: function(name) {
|
||||||
|
var i = this._names.indexOf(name);
|
||||||
|
if (i < 0) {
|
||||||
|
this._names.push(name);
|
||||||
|
this._node.setAttribute("class", this._names.join(" "));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remove: function(name) {
|
||||||
|
var i = this._names.indexOf(name);
|
||||||
|
if (i >= 0) {
|
||||||
|
this._names.splice(i, 1);
|
||||||
|
this._node.setAttribute("class", this._names.join(" "));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
contains: function(name) {
|
||||||
|
return this._names.indexOf(name) >= 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function classedAdd(node, names) {
|
||||||
|
var list = classList(node), i = -1, n = names.length;
|
||||||
|
while (++i < n) list.add(names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedRemove(node, names) {
|
||||||
|
var list = classList(node), i = -1, n = names.length;
|
||||||
|
while (++i < n) list.remove(names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedTrue(names) {
|
||||||
|
return function() {
|
||||||
|
classedAdd(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedFalse(names) {
|
||||||
|
return function() {
|
||||||
|
classedRemove(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedFunction(names, value) {
|
||||||
|
return function() {
|
||||||
|
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_classed(name, value) {
|
||||||
|
var names = classArray(name + "");
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var list = classList(this.node()), i = -1, n = names.length;
|
||||||
|
while (++i < n) if (!list.contains(names[i])) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each((typeof value === "function"
|
||||||
|
? classedFunction : value
|
||||||
|
? classedTrue
|
||||||
|
: classedFalse)(names, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function textRemove() {
|
||||||
|
this.textContent = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function textConstant(value) {
|
||||||
|
return function() {
|
||||||
|
this.textContent = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function textFunction(value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
this.textContent = v == null ? "" : v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_text(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.each(value == null
|
||||||
|
? textRemove : (typeof value === "function"
|
||||||
|
? textFunction
|
||||||
|
: textConstant)(value))
|
||||||
|
: this.node().textContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlRemove() {
|
||||||
|
this.innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlConstant(value) {
|
||||||
|
return function() {
|
||||||
|
this.innerHTML = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlFunction(value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
this.innerHTML = v == null ? "" : v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_html(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.each(value == null
|
||||||
|
? htmlRemove : (typeof value === "function"
|
||||||
|
? htmlFunction
|
||||||
|
: htmlConstant)(value))
|
||||||
|
: this.node().innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
function raise() {
|
||||||
|
if (this.nextSibling) this.parentNode.appendChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_raise() {
|
||||||
|
return this.each(raise);
|
||||||
|
}
|
||||||
|
|
||||||
|
function lower() {
|
||||||
|
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_lower() {
|
||||||
|
return this.each(lower);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_append(name) {
|
||||||
|
var create = typeof name === "function" ? name : creator(name);
|
||||||
|
return this.select(function() {
|
||||||
|
return this.appendChild(create.apply(this, arguments));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function constantNull() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_insert(name, before) {
|
||||||
|
var create = typeof name === "function" ? name : creator(name),
|
||||||
|
select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
|
||||||
|
return this.select(function() {
|
||||||
|
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
var parent = this.parentNode;
|
||||||
|
if (parent) parent.removeChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_remove() {
|
||||||
|
return this.each(remove);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_cloneShallow() {
|
||||||
|
return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_cloneDeep() {
|
||||||
|
return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_clone(deep) {
|
||||||
|
return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_datum(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.property("__data__", value)
|
||||||
|
: this.node().__data__;
|
||||||
|
}
|
||||||
|
|
||||||
|
var filterEvents = {};
|
||||||
|
|
||||||
|
if (typeof document !== "undefined") {
|
||||||
|
var element = document.documentElement;
|
||||||
|
if (!("onmouseenter" in element)) {
|
||||||
|
filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterContextListener(listener, index, group) {
|
||||||
|
listener = contextListener(listener, index, group);
|
||||||
|
return function(event) {
|
||||||
|
var related = event.relatedTarget;
|
||||||
|
if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
|
||||||
|
listener.call(this, event);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function contextListener(listener, index, group) {
|
||||||
|
return function(event1) {
|
||||||
|
try {
|
||||||
|
listener.call(this, this.__data__, index, group);
|
||||||
|
} finally {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseTypenames(typenames) {
|
||||||
|
return typenames.trim().split(/^|\s+/).map(function(t) {
|
||||||
|
var name = "", i = t.indexOf(".");
|
||||||
|
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
|
||||||
|
return {type: t, name: name};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRemove(typename) {
|
||||||
|
return function() {
|
||||||
|
var on = this.__on;
|
||||||
|
if (!on) return;
|
||||||
|
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
|
||||||
|
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
|
||||||
|
this.removeEventListener(o.type, o.listener, o.capture);
|
||||||
|
} else {
|
||||||
|
on[++i] = o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (++i) on.length = i;
|
||||||
|
else delete this.__on;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function onAdd(typename, value, capture) {
|
||||||
|
var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
|
||||||
|
return function(d, i, group) {
|
||||||
|
var on = this.__on, o, listener = wrap(value, i, group);
|
||||||
|
if (on) for (var j = 0, m = on.length; j < m; ++j) {
|
||||||
|
if ((o = on[j]).type === typename.type && o.name === typename.name) {
|
||||||
|
this.removeEventListener(o.type, o.listener, o.capture);
|
||||||
|
this.addEventListener(o.type, o.listener = listener, o.capture = capture);
|
||||||
|
o.value = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.addEventListener(typename.type, listener, capture);
|
||||||
|
o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
|
||||||
|
if (!on) this.__on = [o];
|
||||||
|
else on.push(o);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_on(typename, value, capture) {
|
||||||
|
var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var on = this.node().__on;
|
||||||
|
if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
|
||||||
|
for (i = 0, o = on[j]; i < n; ++i) {
|
||||||
|
if ((t = typenames[i]).type === o.type && t.name === o.name) {
|
||||||
|
return o.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
on = value ? onAdd : onRemove;
|
||||||
|
if (capture == null) capture = false;
|
||||||
|
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchEvent(node, type, params) {
|
||||||
|
var window = defaultView(node),
|
||||||
|
event = window.CustomEvent;
|
||||||
|
|
||||||
|
if (typeof event === "function") {
|
||||||
|
event = new event(type, params);
|
||||||
|
} else {
|
||||||
|
event = window.document.createEvent("Event");
|
||||||
|
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
|
||||||
|
else event.initEvent(type, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
node.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchConstant(type, params) {
|
||||||
|
return function() {
|
||||||
|
return dispatchEvent(this, type, params);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchFunction(type, params) {
|
||||||
|
return function() {
|
||||||
|
return dispatchEvent(this, type, params.apply(this, arguments));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_dispatch(type, params) {
|
||||||
|
return this.each((typeof params === "function"
|
||||||
|
? dispatchFunction
|
||||||
|
: dispatchConstant)(type, params));
|
||||||
|
}
|
||||||
|
|
||||||
|
var root = [null];
|
||||||
|
|
||||||
|
function Selection(groups, parents) {
|
||||||
|
this._groups = groups;
|
||||||
|
this._parents = parents;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection() {
|
||||||
|
return new Selection([[document.documentElement]], root);
|
||||||
|
}
|
||||||
|
|
||||||
|
Selection.prototype = selection.prototype = {
|
||||||
|
constructor: Selection,
|
||||||
|
select: selection_select,
|
||||||
|
selectAll: selection_selectAll,
|
||||||
|
filter: selection_filter,
|
||||||
|
data: selection_data,
|
||||||
|
enter: selection_enter,
|
||||||
|
exit: selection_exit,
|
||||||
|
join: selection_join,
|
||||||
|
merge: selection_merge,
|
||||||
|
order: selection_order,
|
||||||
|
sort: selection_sort,
|
||||||
|
call: selection_call,
|
||||||
|
nodes: selection_nodes,
|
||||||
|
node: selection_node,
|
||||||
|
size: selection_size,
|
||||||
|
empty: selection_empty,
|
||||||
|
each: selection_each,
|
||||||
|
attr: selection_attr,
|
||||||
|
style: selection_style,
|
||||||
|
property: selection_property,
|
||||||
|
classed: selection_classed,
|
||||||
|
text: selection_text,
|
||||||
|
html: selection_html,
|
||||||
|
raise: selection_raise,
|
||||||
|
lower: selection_lower,
|
||||||
|
append: selection_append,
|
||||||
|
insert: selection_insert,
|
||||||
|
remove: selection_remove,
|
||||||
|
clone: selection_clone,
|
||||||
|
datum: selection_datum,
|
||||||
|
on: selection_on,
|
||||||
|
dispatch: selection_dispatch
|
||||||
|
};
|
||||||
|
|
||||||
|
function select(selector) {
|
||||||
|
return typeof selector === "string"
|
||||||
|
? new Selection([[document.querySelector(selector)]], [document.documentElement])
|
||||||
|
: new Selection([[selector]], root);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Uses the Mediawiki API to display a list of recent images and a link to
|
||||||
|
the page where the image has been used/placed.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Allimages
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageinfo
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageusage
|
||||||
|
*/
|
||||||
|
var PAGE_COUNT = 25; /* how many edits to show per load*/
|
||||||
|
var main = select("#content"),
|
||||||
|
baseurl = "/mw/api.php?action=query&list=recentchanges&rclimit=25&rcnamespace=0&rctoponly=1&format=json&formatversion=2&rcshow=!minor|!bot|!redirect|!anon",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0;
|
||||||
|
while (count < PAGE_COUNT) {
|
||||||
|
// console.log("starting loop", "count", count, "url", url);
|
||||||
|
let data = await get_json(url),
|
||||||
|
recentchanges = data.query.recentchanges;
|
||||||
|
console.log("recentchanges", recentchanges);
|
||||||
|
let items = main.selectAll("div.edit")
|
||||||
|
.data(recentchanges, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "edit")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.text(d=>d.title);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&rccontinue="+data.continue.rccontinue;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
count += recentchanges.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
|
|
||||||
|
}());
|
||||||
55
special/recentchanges/index.html
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>erg: modifications récentes</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/m/style.css">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 1.5em;
|
||||||
|
margin-left: 40px;
|
||||||
|
margin-top: 2.5em;
|
||||||
|
background: #333;
|
||||||
|
color: white;
|
||||||
|
overflow: auto;
|
||||||
|
font-family: Vega;
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-family: Combined;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
#content {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
div#footer {
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a#more {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
background: white;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
div.edit {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Modifications récentes</h1>
|
||||||
|
<div id="content"></div>
|
||||||
|
<div id="footer"><a href="#" id="more">en plus…</a></div>
|
||||||
|
<script src="dist/recentchanges.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
16
special/recentchanges/package.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "recentfiles",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "rollup.config.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-selection": "^1.4.0",
|
||||||
|
"rollup": "^1.17.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
special/recentchanges/rollup.config.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// rollup.config.js
|
||||||
|
// https://github.com/rollup/rollup-plugin-commonjs
|
||||||
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
|
|
||||||
|
export default [{
|
||||||
|
input: 'src/recentchanges.js',
|
||||||
|
output: {
|
||||||
|
file: 'dist/recentchanges.js',
|
||||||
|
format: 'iife',
|
||||||
|
name: 'app'
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
resolve(),
|
||||||
|
commonjs()
|
||||||
|
]
|
||||||
|
}];
|
||||||
55
special/recentchanges/src/recentchanges.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import { selectAll, select } from 'd3-selection';
|
||||||
|
/*
|
||||||
|
Uses the Mediawiki API to display a list of recent images and a link to
|
||||||
|
the page where the image has been used/placed.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Allimages
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageinfo
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageusage
|
||||||
|
*/
|
||||||
|
var PAGE_COUNT = 25; /* how many edits to show per load*/
|
||||||
|
var main = select("#content"),
|
||||||
|
baseurl = "/mw/api.php?action=query&list=recentchanges&rclimit=25&rcnamespace=0&rctoponly=1&format=json&formatversion=2&rcshow=!minor|!bot|!redirect|!anon",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0;
|
||||||
|
while (count < PAGE_COUNT) {
|
||||||
|
// console.log("starting loop", "count", count, "url", url);
|
||||||
|
let data = await get_json(url),
|
||||||
|
recentchanges = data.query.recentchanges;
|
||||||
|
console.log("recentchanges", recentchanges);
|
||||||
|
let items = main.selectAll("div.edit")
|
||||||
|
.data(recentchanges, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "edit")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.text(d=>d.title);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&rccontinue="+data.continue.rccontinue;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
count += recentchanges.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
BIN
special/recentfiles.tar.gz
Normal file
6
special/recentfiles/Makefile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
all: dist/app.js
|
||||||
|
|
||||||
|
dist/app.js: src/*.js
|
||||||
|
# node_modules/.bin/rollup src/index.js --file dist/index.js --format iife
|
||||||
|
node_modules/.bin/rollup -c
|
||||||
932
special/recentfiles/dist/recentfiles.js
vendored
Normal file
@@ -0,0 +1,932 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var xhtml = "http://www.w3.org/1999/xhtml";
|
||||||
|
|
||||||
|
var namespaces = {
|
||||||
|
svg: "http://www.w3.org/2000/svg",
|
||||||
|
xhtml: xhtml,
|
||||||
|
xlink: "http://www.w3.org/1999/xlink",
|
||||||
|
xml: "http://www.w3.org/XML/1998/namespace",
|
||||||
|
xmlns: "http://www.w3.org/2000/xmlns/"
|
||||||
|
};
|
||||||
|
|
||||||
|
function namespace(name) {
|
||||||
|
var prefix = name += "", i = prefix.indexOf(":");
|
||||||
|
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
|
||||||
|
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;
|
||||||
|
}
|
||||||
|
|
||||||
|
function creatorInherit(name) {
|
||||||
|
return function() {
|
||||||
|
var document = this.ownerDocument,
|
||||||
|
uri = this.namespaceURI;
|
||||||
|
return uri === xhtml && document.documentElement.namespaceURI === xhtml
|
||||||
|
? document.createElement(name)
|
||||||
|
: document.createElementNS(uri, name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function creatorFixed(fullname) {
|
||||||
|
return function() {
|
||||||
|
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function creator(name) {
|
||||||
|
var fullname = namespace(name);
|
||||||
|
return (fullname.local
|
||||||
|
? creatorFixed
|
||||||
|
: creatorInherit)(fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
function none() {}
|
||||||
|
|
||||||
|
function selector(selector) {
|
||||||
|
return selector == null ? none : function() {
|
||||||
|
return this.querySelector(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_select(select) {
|
||||||
|
if (typeof select !== "function") select = selector(select);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
|
||||||
|
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
|
||||||
|
if ("__data__" in node) subnode.__data__ = node.__data__;
|
||||||
|
subgroup[i] = subnode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function empty() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectorAll(selector) {
|
||||||
|
return selector == null ? empty : function() {
|
||||||
|
return this.querySelectorAll(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_selectAll(select) {
|
||||||
|
if (typeof select !== "function") select = selectorAll(select);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
subgroups.push(select.call(node, node.__data__, i, group));
|
||||||
|
parents.push(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function matcher(selector) {
|
||||||
|
return function() {
|
||||||
|
return this.matches(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_filter(match) {
|
||||||
|
if (typeof match !== "function") match = matcher(match);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
|
||||||
|
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
|
||||||
|
subgroup.push(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sparse(update) {
|
||||||
|
return new Array(update.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_enter() {
|
||||||
|
return new Selection(this._enter || this._groups.map(sparse), this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnterNode(parent, datum) {
|
||||||
|
this.ownerDocument = parent.ownerDocument;
|
||||||
|
this.namespaceURI = parent.namespaceURI;
|
||||||
|
this._next = null;
|
||||||
|
this._parent = parent;
|
||||||
|
this.__data__ = datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnterNode.prototype = {
|
||||||
|
constructor: EnterNode,
|
||||||
|
appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
|
||||||
|
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
|
||||||
|
querySelector: function(selector) { return this._parent.querySelector(selector); },
|
||||||
|
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
|
||||||
|
};
|
||||||
|
|
||||||
|
function constant(x) {
|
||||||
|
return function() {
|
||||||
|
return x;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyPrefix = "$"; // Protect against keys like “__proto__”.
|
||||||
|
|
||||||
|
function bindIndex(parent, group, enter, update, exit, data) {
|
||||||
|
var i = 0,
|
||||||
|
node,
|
||||||
|
groupLength = group.length,
|
||||||
|
dataLength = data.length;
|
||||||
|
|
||||||
|
// Put any non-null nodes that fit into update.
|
||||||
|
// Put any null nodes into enter.
|
||||||
|
// Put any remaining data into enter.
|
||||||
|
for (; i < dataLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
node.__data__ = data[i];
|
||||||
|
update[i] = node;
|
||||||
|
} else {
|
||||||
|
enter[i] = new EnterNode(parent, data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put any non-null nodes that don’t fit into exit.
|
||||||
|
for (; i < groupLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
exit[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindKey(parent, group, enter, update, exit, data, key) {
|
||||||
|
var i,
|
||||||
|
node,
|
||||||
|
nodeByKeyValue = {},
|
||||||
|
groupLength = group.length,
|
||||||
|
dataLength = data.length,
|
||||||
|
keyValues = new Array(groupLength),
|
||||||
|
keyValue;
|
||||||
|
|
||||||
|
// Compute the key for each node.
|
||||||
|
// If multiple nodes have the same key, the duplicates are added to exit.
|
||||||
|
for (i = 0; i < groupLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
|
||||||
|
if (keyValue in nodeByKeyValue) {
|
||||||
|
exit[i] = node;
|
||||||
|
} else {
|
||||||
|
nodeByKeyValue[keyValue] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute the key for each datum.
|
||||||
|
// If there a node associated with this key, join and add it to update.
|
||||||
|
// If there is not (or the key is a duplicate), add it to enter.
|
||||||
|
for (i = 0; i < dataLength; ++i) {
|
||||||
|
keyValue = keyPrefix + key.call(parent, data[i], i, data);
|
||||||
|
if (node = nodeByKeyValue[keyValue]) {
|
||||||
|
update[i] = node;
|
||||||
|
node.__data__ = data[i];
|
||||||
|
nodeByKeyValue[keyValue] = null;
|
||||||
|
} else {
|
||||||
|
enter[i] = new EnterNode(parent, data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add any remaining nodes that were not bound to data to exit.
|
||||||
|
for (i = 0; i < groupLength; ++i) {
|
||||||
|
if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
|
||||||
|
exit[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_data(value, key) {
|
||||||
|
if (!value) {
|
||||||
|
data = new Array(this.size()), j = -1;
|
||||||
|
this.each(function(d) { data[++j] = d; });
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bind = key ? bindKey : bindIndex,
|
||||||
|
parents = this._parents,
|
||||||
|
groups = this._groups;
|
||||||
|
|
||||||
|
if (typeof value !== "function") value = constant(value);
|
||||||
|
|
||||||
|
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
var parent = parents[j],
|
||||||
|
group = groups[j],
|
||||||
|
groupLength = group.length,
|
||||||
|
data = value.call(parent, parent && parent.__data__, j, parents),
|
||||||
|
dataLength = data.length,
|
||||||
|
enterGroup = enter[j] = new Array(dataLength),
|
||||||
|
updateGroup = update[j] = new Array(dataLength),
|
||||||
|
exitGroup = exit[j] = new Array(groupLength);
|
||||||
|
|
||||||
|
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
|
||||||
|
|
||||||
|
// Now connect the enter nodes to their following update node, such that
|
||||||
|
// appendChild can insert the materialized enter node before this node,
|
||||||
|
// rather than at the end of the parent node.
|
||||||
|
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
|
||||||
|
if (previous = enterGroup[i0]) {
|
||||||
|
if (i0 >= i1) i1 = i0 + 1;
|
||||||
|
while (!(next = updateGroup[i1]) && ++i1 < dataLength);
|
||||||
|
previous._next = next || null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
update = new Selection(update, parents);
|
||||||
|
update._enter = enter;
|
||||||
|
update._exit = exit;
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_exit() {
|
||||||
|
return new Selection(this._exit || this._groups.map(sparse), this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_join(onenter, onupdate, onexit) {
|
||||||
|
var enter = this.enter(), update = this, exit = this.exit();
|
||||||
|
enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + "");
|
||||||
|
if (onupdate != null) update = onupdate(update);
|
||||||
|
if (onexit == null) exit.remove(); else onexit(exit);
|
||||||
|
return enter && update ? enter.merge(update).order() : update;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_merge(selection) {
|
||||||
|
|
||||||
|
for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
|
||||||
|
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group0[i] || group1[i]) {
|
||||||
|
merge[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; j < m0; ++j) {
|
||||||
|
merges[j] = groups0[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(merges, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_order() {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
|
||||||
|
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
|
||||||
|
next = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_sort(compare) {
|
||||||
|
if (!compare) compare = ascending;
|
||||||
|
|
||||||
|
function compareNode(a, b) {
|
||||||
|
return a && b ? compare(a.__data__, b.__data__) : !a - !b;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
sortgroup[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sortgroup.sort(compareNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(sortgroups, this._parents).order();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ascending(a, b) {
|
||||||
|
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_call() {
|
||||||
|
var callback = arguments[0];
|
||||||
|
arguments[0] = this;
|
||||||
|
callback.apply(null, arguments);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_nodes() {
|
||||||
|
var nodes = new Array(this.size()), i = -1;
|
||||||
|
this.each(function() { nodes[++i] = this; });
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_node() {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
||||||
|
for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
|
||||||
|
var node = group[i];
|
||||||
|
if (node) return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_size() {
|
||||||
|
var size = 0;
|
||||||
|
this.each(function() { ++size; });
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_empty() {
|
||||||
|
return !this.node();
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_each(callback) {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
||||||
|
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
|
||||||
|
if (node = group[i]) callback.call(node, node.__data__, i, group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrRemove(name) {
|
||||||
|
return function() {
|
||||||
|
this.removeAttribute(name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrRemoveNS(fullname) {
|
||||||
|
return function() {
|
||||||
|
this.removeAttributeNS(fullname.space, fullname.local);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrConstant(name, value) {
|
||||||
|
return function() {
|
||||||
|
this.setAttribute(name, value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrConstantNS(fullname, value) {
|
||||||
|
return function() {
|
||||||
|
this.setAttributeNS(fullname.space, fullname.local, value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrFunction(name, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.removeAttribute(name);
|
||||||
|
else this.setAttribute(name, v);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrFunctionNS(fullname, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
|
||||||
|
else this.setAttributeNS(fullname.space, fullname.local, v);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_attr(name, value) {
|
||||||
|
var fullname = namespace(name);
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var node = this.node();
|
||||||
|
return fullname.local
|
||||||
|
? node.getAttributeNS(fullname.space, fullname.local)
|
||||||
|
: node.getAttribute(fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each((value == null
|
||||||
|
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
|
||||||
|
? (fullname.local ? attrFunctionNS : attrFunction)
|
||||||
|
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultView(node) {
|
||||||
|
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
|
||||||
|
|| (node.document && node) // node is a Window
|
||||||
|
|| node.defaultView; // node is a Document
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleRemove(name) {
|
||||||
|
return function() {
|
||||||
|
this.style.removeProperty(name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleConstant(name, value, priority) {
|
||||||
|
return function() {
|
||||||
|
this.style.setProperty(name, value, priority);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleFunction(name, value, priority) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.style.removeProperty(name);
|
||||||
|
else this.style.setProperty(name, v, priority);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_style(name, value, priority) {
|
||||||
|
return arguments.length > 1
|
||||||
|
? this.each((value == null
|
||||||
|
? styleRemove : typeof value === "function"
|
||||||
|
? styleFunction
|
||||||
|
: styleConstant)(name, value, priority == null ? "" : priority))
|
||||||
|
: styleValue(this.node(), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleValue(node, name) {
|
||||||
|
return node.style.getPropertyValue(name)
|
||||||
|
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyRemove(name) {
|
||||||
|
return function() {
|
||||||
|
delete this[name];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyConstant(name, value) {
|
||||||
|
return function() {
|
||||||
|
this[name] = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyFunction(name, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) delete this[name];
|
||||||
|
else this[name] = v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_property(name, value) {
|
||||||
|
return arguments.length > 1
|
||||||
|
? this.each((value == null
|
||||||
|
? propertyRemove : typeof value === "function"
|
||||||
|
? propertyFunction
|
||||||
|
: propertyConstant)(name, value))
|
||||||
|
: this.node()[name];
|
||||||
|
}
|
||||||
|
|
||||||
|
function classArray(string) {
|
||||||
|
return string.trim().split(/^|\s+/);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classList(node) {
|
||||||
|
return node.classList || new ClassList(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ClassList(node) {
|
||||||
|
this._node = node;
|
||||||
|
this._names = classArray(node.getAttribute("class") || "");
|
||||||
|
}
|
||||||
|
|
||||||
|
ClassList.prototype = {
|
||||||
|
add: function(name) {
|
||||||
|
var i = this._names.indexOf(name);
|
||||||
|
if (i < 0) {
|
||||||
|
this._names.push(name);
|
||||||
|
this._node.setAttribute("class", this._names.join(" "));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remove: function(name) {
|
||||||
|
var i = this._names.indexOf(name);
|
||||||
|
if (i >= 0) {
|
||||||
|
this._names.splice(i, 1);
|
||||||
|
this._node.setAttribute("class", this._names.join(" "));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
contains: function(name) {
|
||||||
|
return this._names.indexOf(name) >= 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function classedAdd(node, names) {
|
||||||
|
var list = classList(node), i = -1, n = names.length;
|
||||||
|
while (++i < n) list.add(names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedRemove(node, names) {
|
||||||
|
var list = classList(node), i = -1, n = names.length;
|
||||||
|
while (++i < n) list.remove(names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedTrue(names) {
|
||||||
|
return function() {
|
||||||
|
classedAdd(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedFalse(names) {
|
||||||
|
return function() {
|
||||||
|
classedRemove(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedFunction(names, value) {
|
||||||
|
return function() {
|
||||||
|
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_classed(name, value) {
|
||||||
|
var names = classArray(name + "");
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var list = classList(this.node()), i = -1, n = names.length;
|
||||||
|
while (++i < n) if (!list.contains(names[i])) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each((typeof value === "function"
|
||||||
|
? classedFunction : value
|
||||||
|
? classedTrue
|
||||||
|
: classedFalse)(names, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function textRemove() {
|
||||||
|
this.textContent = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function textConstant(value) {
|
||||||
|
return function() {
|
||||||
|
this.textContent = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function textFunction(value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
this.textContent = v == null ? "" : v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_text(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.each(value == null
|
||||||
|
? textRemove : (typeof value === "function"
|
||||||
|
? textFunction
|
||||||
|
: textConstant)(value))
|
||||||
|
: this.node().textContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlRemove() {
|
||||||
|
this.innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlConstant(value) {
|
||||||
|
return function() {
|
||||||
|
this.innerHTML = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlFunction(value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
this.innerHTML = v == null ? "" : v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_html(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.each(value == null
|
||||||
|
? htmlRemove : (typeof value === "function"
|
||||||
|
? htmlFunction
|
||||||
|
: htmlConstant)(value))
|
||||||
|
: this.node().innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
function raise() {
|
||||||
|
if (this.nextSibling) this.parentNode.appendChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_raise() {
|
||||||
|
return this.each(raise);
|
||||||
|
}
|
||||||
|
|
||||||
|
function lower() {
|
||||||
|
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_lower() {
|
||||||
|
return this.each(lower);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_append(name) {
|
||||||
|
var create = typeof name === "function" ? name : creator(name);
|
||||||
|
return this.select(function() {
|
||||||
|
return this.appendChild(create.apply(this, arguments));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function constantNull() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_insert(name, before) {
|
||||||
|
var create = typeof name === "function" ? name : creator(name),
|
||||||
|
select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
|
||||||
|
return this.select(function() {
|
||||||
|
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
var parent = this.parentNode;
|
||||||
|
if (parent) parent.removeChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_remove() {
|
||||||
|
return this.each(remove);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_cloneShallow() {
|
||||||
|
return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_cloneDeep() {
|
||||||
|
return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_clone(deep) {
|
||||||
|
return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_datum(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.property("__data__", value)
|
||||||
|
: this.node().__data__;
|
||||||
|
}
|
||||||
|
|
||||||
|
var filterEvents = {};
|
||||||
|
|
||||||
|
if (typeof document !== "undefined") {
|
||||||
|
var element = document.documentElement;
|
||||||
|
if (!("onmouseenter" in element)) {
|
||||||
|
filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterContextListener(listener, index, group) {
|
||||||
|
listener = contextListener(listener, index, group);
|
||||||
|
return function(event) {
|
||||||
|
var related = event.relatedTarget;
|
||||||
|
if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
|
||||||
|
listener.call(this, event);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function contextListener(listener, index, group) {
|
||||||
|
return function(event1) {
|
||||||
|
try {
|
||||||
|
listener.call(this, this.__data__, index, group);
|
||||||
|
} finally {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseTypenames(typenames) {
|
||||||
|
return typenames.trim().split(/^|\s+/).map(function(t) {
|
||||||
|
var name = "", i = t.indexOf(".");
|
||||||
|
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
|
||||||
|
return {type: t, name: name};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRemove(typename) {
|
||||||
|
return function() {
|
||||||
|
var on = this.__on;
|
||||||
|
if (!on) return;
|
||||||
|
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
|
||||||
|
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
|
||||||
|
this.removeEventListener(o.type, o.listener, o.capture);
|
||||||
|
} else {
|
||||||
|
on[++i] = o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (++i) on.length = i;
|
||||||
|
else delete this.__on;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function onAdd(typename, value, capture) {
|
||||||
|
var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
|
||||||
|
return function(d, i, group) {
|
||||||
|
var on = this.__on, o, listener = wrap(value, i, group);
|
||||||
|
if (on) for (var j = 0, m = on.length; j < m; ++j) {
|
||||||
|
if ((o = on[j]).type === typename.type && o.name === typename.name) {
|
||||||
|
this.removeEventListener(o.type, o.listener, o.capture);
|
||||||
|
this.addEventListener(o.type, o.listener = listener, o.capture = capture);
|
||||||
|
o.value = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.addEventListener(typename.type, listener, capture);
|
||||||
|
o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
|
||||||
|
if (!on) this.__on = [o];
|
||||||
|
else on.push(o);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_on(typename, value, capture) {
|
||||||
|
var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var on = this.node().__on;
|
||||||
|
if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
|
||||||
|
for (i = 0, o = on[j]; i < n; ++i) {
|
||||||
|
if ((t = typenames[i]).type === o.type && t.name === o.name) {
|
||||||
|
return o.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
on = value ? onAdd : onRemove;
|
||||||
|
if (capture == null) capture = false;
|
||||||
|
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchEvent(node, type, params) {
|
||||||
|
var window = defaultView(node),
|
||||||
|
event = window.CustomEvent;
|
||||||
|
|
||||||
|
if (typeof event === "function") {
|
||||||
|
event = new event(type, params);
|
||||||
|
} else {
|
||||||
|
event = window.document.createEvent("Event");
|
||||||
|
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
|
||||||
|
else event.initEvent(type, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
node.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchConstant(type, params) {
|
||||||
|
return function() {
|
||||||
|
return dispatchEvent(this, type, params);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchFunction(type, params) {
|
||||||
|
return function() {
|
||||||
|
return dispatchEvent(this, type, params.apply(this, arguments));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_dispatch(type, params) {
|
||||||
|
return this.each((typeof params === "function"
|
||||||
|
? dispatchFunction
|
||||||
|
: dispatchConstant)(type, params));
|
||||||
|
}
|
||||||
|
|
||||||
|
var root = [null];
|
||||||
|
|
||||||
|
function Selection(groups, parents) {
|
||||||
|
this._groups = groups;
|
||||||
|
this._parents = parents;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection() {
|
||||||
|
return new Selection([[document.documentElement]], root);
|
||||||
|
}
|
||||||
|
|
||||||
|
Selection.prototype = selection.prototype = {
|
||||||
|
constructor: Selection,
|
||||||
|
select: selection_select,
|
||||||
|
selectAll: selection_selectAll,
|
||||||
|
filter: selection_filter,
|
||||||
|
data: selection_data,
|
||||||
|
enter: selection_enter,
|
||||||
|
exit: selection_exit,
|
||||||
|
join: selection_join,
|
||||||
|
merge: selection_merge,
|
||||||
|
order: selection_order,
|
||||||
|
sort: selection_sort,
|
||||||
|
call: selection_call,
|
||||||
|
nodes: selection_nodes,
|
||||||
|
node: selection_node,
|
||||||
|
size: selection_size,
|
||||||
|
empty: selection_empty,
|
||||||
|
each: selection_each,
|
||||||
|
attr: selection_attr,
|
||||||
|
style: selection_style,
|
||||||
|
property: selection_property,
|
||||||
|
classed: selection_classed,
|
||||||
|
text: selection_text,
|
||||||
|
html: selection_html,
|
||||||
|
raise: selection_raise,
|
||||||
|
lower: selection_lower,
|
||||||
|
append: selection_append,
|
||||||
|
insert: selection_insert,
|
||||||
|
remove: selection_remove,
|
||||||
|
clone: selection_clone,
|
||||||
|
datum: selection_datum,
|
||||||
|
on: selection_on,
|
||||||
|
dispatch: selection_dispatch
|
||||||
|
};
|
||||||
|
|
||||||
|
function select(selector) {
|
||||||
|
return typeof selector === "string"
|
||||||
|
? new Selection([[document.querySelector(selector)]], [document.documentElement])
|
||||||
|
: new Selection([[selector]], root);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Uses the Mediawiki API to display a list of recent images and a link to
|
||||||
|
the page where the image has been used/placed.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Allimages
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageinfo
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageusage
|
||||||
|
*/
|
||||||
|
var NUM_FILES = 30; /* how many files to show */
|
||||||
|
//baseurl = "/mw/api.php?action=query&list=allimages&ailimit=1&format=json&formatversion=2&aisort=timestamp&aidir=older&aiprop=timestamp|user|url|mime|size",
|
||||||
|
var main = select("#content"),
|
||||||
|
baseurl = "/mw/api.php?action=query&list=allimages&aimime=image/png|image/gif|image/jpg&ailimit=1&format=json&formatversion=2&aisort=timestamp&aidir=older&aiprop=timestamp|user|url|mime|size",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0;
|
||||||
|
while (count < NUM_FILES) {
|
||||||
|
// console.log("starting loop", "count", count, "url", url);
|
||||||
|
let data = await get_json(url),
|
||||||
|
allimages = data.query.allimages,
|
||||||
|
useimages = [];
|
||||||
|
|
||||||
|
// console.log("got data", data.query.allimages.length);
|
||||||
|
for (var i=0, l=allimages.length; i<l; i++) {
|
||||||
|
let image = allimages[i];
|
||||||
|
// console.log("image", image.name);
|
||||||
|
let iu_data = await get_json(`/mw/api.php?action=query&list=imageusage&iutitle=${image.title}&iunamespace=0&format=json&formatversion=2`);
|
||||||
|
image.imageusage = iu_data.query.imageusage;
|
||||||
|
if (image.imageusage.length == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let ii_data = await get_json(`/mw/api.php?action=query&prop=imageinfo&titles=${image.title}&iiprop=url|size&dimensions|mime&iiurlwidth=320&format=json&formatversion=2`);
|
||||||
|
image.imageinfo = ii_data.query.pages[0].imageinfo[0];
|
||||||
|
if (!image.imageinfo.thumburl) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
useimages.push(image);
|
||||||
|
}
|
||||||
|
let items = main.selectAll("div.file")
|
||||||
|
.data(useimages, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "file")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.imageusage[d.imageusage.length-1].title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.append("img")
|
||||||
|
.attr('src', d=>d.imageinfo.thumburl);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&aicontinue="+data.continue.aicontinue;
|
||||||
|
}
|
||||||
|
count += useimages.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
|
|
||||||
|
}());
|
||||||
58
special/recentfiles/index.html
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>recent files</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--font-title: Combined;
|
||||||
|
--font-body: Vega;
|
||||||
|
--color-a: #a700ff;
|
||||||
|
--color-b: #00ab6b;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background: #eee;
|
||||||
|
background-image: linear-gradient(45deg, rgba(0,0,100,.25) 25%, transparent 0, transparent 75%, rgba(0,0,100,.25) 0), linear-gradient(45deg, rgba(0,0,100,.25) 25%, transparent 0, transparent 75%, rgba(0,0,100,.25) 0);
|
||||||
|
background-position: 0 0, 10px 10px;
|
||||||
|
background-size: 20px 20px;
|
||||||
|
}
|
||||||
|
div.file {
|
||||||
|
float: left;
|
||||||
|
margin: 8px;
|
||||||
|
max-width: 30%;
|
||||||
|
}
|
||||||
|
div.file img {
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
div.file a {
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: transparent;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
div.file a:hover {
|
||||||
|
border-image: linear-gradient(to right, var(--color-a), var(--color-b));
|
||||||
|
border-image-slice: 1;
|
||||||
|
border-width: 10px;
|
||||||
|
border-color: initial;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
div#footer {
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
a#more {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
background: black;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="content"></div>
|
||||||
|
<div id="footer"><a href="#" id="more">en plus…</a></div>
|
||||||
|
<script src="dist/recentfiles.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
16
special/recentfiles/package.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "recentfiles",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "rollup.config.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-selection": "^1.4.0",
|
||||||
|
"rollup": "^1.17.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
special/recentfiles/rollup.config.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// rollup.config.js
|
||||||
|
// https://github.com/rollup/rollup-plugin-commonjs
|
||||||
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
|
|
||||||
|
export default [{
|
||||||
|
input: 'src/recentfiles.js',
|
||||||
|
output: {
|
||||||
|
file: 'dist/recentfiles.js',
|
||||||
|
format: 'iife',
|
||||||
|
name: 'app'
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
resolve(),
|
||||||
|
commonjs()
|
||||||
|
]
|
||||||
|
}];
|
||||||
71
special/recentfiles/src/recentfiles.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
import { selectAll, select } from 'd3-selection';
|
||||||
|
/*
|
||||||
|
Uses the Mediawiki API to display a list of recent images and a link to
|
||||||
|
the page where the image has been used/placed.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Allimages
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageinfo
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageusage
|
||||||
|
*/
|
||||||
|
var NUM_FILES = 10; /* how many files to show */
|
||||||
|
var main = select("#content"),
|
||||||
|
baseurl = "/mw/api.php?action=query&list=allimages&ailimit=1&format=json&formatversion=2&aisort=timestamp&aidir=older&aiprop=timestamp|user|url|mime|size",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0;
|
||||||
|
while (count < NUM_FILES) {
|
||||||
|
// console.log("starting loop", "count", count, "url", url);
|
||||||
|
let data = await get_json(url),
|
||||||
|
allimages = data.query.allimages,
|
||||||
|
useimages = [];
|
||||||
|
|
||||||
|
// console.log("got data", data.query.allimages.length);
|
||||||
|
for (var i=0, l=allimages.length; i<l; i++) {
|
||||||
|
let image = allimages[i];
|
||||||
|
// console.log("image", image.name);
|
||||||
|
let iu_data = await get_json(`/mw/api.php?action=query&list=imageusage&iutitle=${image.title}&iunamespace=0&format=json&formatversion=2`);
|
||||||
|
image.imageusage = iu_data.query.imageusage;
|
||||||
|
if (image.imageusage.length == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let ii_data = await get_json(`/mw/api.php?action=query&prop=imageinfo&titles=${image.title}&iiprop=url|size&dimensions|mime&iiurlwidth=320&format=json&formatversion=2`);
|
||||||
|
image.imageinfo = ii_data.query.pages[0].imageinfo[0];
|
||||||
|
if (!image.imageinfo.thumburl) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
useimages.push(image);
|
||||||
|
}
|
||||||
|
let items = main.selectAll("div.file")
|
||||||
|
.data(useimages, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "file")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.imageusage[d.imageusage.length-1].title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.append("img")
|
||||||
|
.attr('src', d=>d.imageinfo.thumburl);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&aicontinue="+data.continue.aicontinue;
|
||||||
|
}
|
||||||
|
count += useimages.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
6
special/recentnews/Makefile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
all: dist/app.js
|
||||||
|
|
||||||
|
dist/app.js: src/*.js
|
||||||
|
# node_modules/.bin/rollup src/index.js --file dist/index.js --format iife
|
||||||
|
node_modules/.bin/rollup -c
|
||||||
917
special/recentnews/dist/recentchanges.js
vendored
Normal file
@@ -0,0 +1,917 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var xhtml = "http://www.w3.org/1999/xhtml";
|
||||||
|
|
||||||
|
var namespaces = {
|
||||||
|
svg: "http://www.w3.org/2000/svg",
|
||||||
|
xhtml: xhtml,
|
||||||
|
xlink: "http://www.w3.org/1999/xlink",
|
||||||
|
xml: "http://www.w3.org/XML/1998/namespace",
|
||||||
|
xmlns: "http://www.w3.org/2000/xmlns/"
|
||||||
|
};
|
||||||
|
|
||||||
|
function namespace(name) {
|
||||||
|
var prefix = name += "", i = prefix.indexOf(":");
|
||||||
|
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
|
||||||
|
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;
|
||||||
|
}
|
||||||
|
|
||||||
|
function creatorInherit(name) {
|
||||||
|
return function() {
|
||||||
|
var document = this.ownerDocument,
|
||||||
|
uri = this.namespaceURI;
|
||||||
|
return uri === xhtml && document.documentElement.namespaceURI === xhtml
|
||||||
|
? document.createElement(name)
|
||||||
|
: document.createElementNS(uri, name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function creatorFixed(fullname) {
|
||||||
|
return function() {
|
||||||
|
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function creator(name) {
|
||||||
|
var fullname = namespace(name);
|
||||||
|
return (fullname.local
|
||||||
|
? creatorFixed
|
||||||
|
: creatorInherit)(fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
function none() {}
|
||||||
|
|
||||||
|
function selector(selector) {
|
||||||
|
return selector == null ? none : function() {
|
||||||
|
return this.querySelector(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_select(select) {
|
||||||
|
if (typeof select !== "function") select = selector(select);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
|
||||||
|
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
|
||||||
|
if ("__data__" in node) subnode.__data__ = node.__data__;
|
||||||
|
subgroup[i] = subnode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function empty() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectorAll(selector) {
|
||||||
|
return selector == null ? empty : function() {
|
||||||
|
return this.querySelectorAll(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_selectAll(select) {
|
||||||
|
if (typeof select !== "function") select = selectorAll(select);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
subgroups.push(select.call(node, node.__data__, i, group));
|
||||||
|
parents.push(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function matcher(selector) {
|
||||||
|
return function() {
|
||||||
|
return this.matches(selector);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_filter(match) {
|
||||||
|
if (typeof match !== "function") match = matcher(match);
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
|
||||||
|
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
|
||||||
|
subgroup.push(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(subgroups, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sparse(update) {
|
||||||
|
return new Array(update.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_enter() {
|
||||||
|
return new Selection(this._enter || this._groups.map(sparse), this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnterNode(parent, datum) {
|
||||||
|
this.ownerDocument = parent.ownerDocument;
|
||||||
|
this.namespaceURI = parent.namespaceURI;
|
||||||
|
this._next = null;
|
||||||
|
this._parent = parent;
|
||||||
|
this.__data__ = datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnterNode.prototype = {
|
||||||
|
constructor: EnterNode,
|
||||||
|
appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
|
||||||
|
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
|
||||||
|
querySelector: function(selector) { return this._parent.querySelector(selector); },
|
||||||
|
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
|
||||||
|
};
|
||||||
|
|
||||||
|
function constant(x) {
|
||||||
|
return function() {
|
||||||
|
return x;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyPrefix = "$"; // Protect against keys like “__proto__”.
|
||||||
|
|
||||||
|
function bindIndex(parent, group, enter, update, exit, data) {
|
||||||
|
var i = 0,
|
||||||
|
node,
|
||||||
|
groupLength = group.length,
|
||||||
|
dataLength = data.length;
|
||||||
|
|
||||||
|
// Put any non-null nodes that fit into update.
|
||||||
|
// Put any null nodes into enter.
|
||||||
|
// Put any remaining data into enter.
|
||||||
|
for (; i < dataLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
node.__data__ = data[i];
|
||||||
|
update[i] = node;
|
||||||
|
} else {
|
||||||
|
enter[i] = new EnterNode(parent, data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put any non-null nodes that don’t fit into exit.
|
||||||
|
for (; i < groupLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
exit[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindKey(parent, group, enter, update, exit, data, key) {
|
||||||
|
var i,
|
||||||
|
node,
|
||||||
|
nodeByKeyValue = {},
|
||||||
|
groupLength = group.length,
|
||||||
|
dataLength = data.length,
|
||||||
|
keyValues = new Array(groupLength),
|
||||||
|
keyValue;
|
||||||
|
|
||||||
|
// Compute the key for each node.
|
||||||
|
// If multiple nodes have the same key, the duplicates are added to exit.
|
||||||
|
for (i = 0; i < groupLength; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
|
||||||
|
if (keyValue in nodeByKeyValue) {
|
||||||
|
exit[i] = node;
|
||||||
|
} else {
|
||||||
|
nodeByKeyValue[keyValue] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute the key for each datum.
|
||||||
|
// If there a node associated with this key, join and add it to update.
|
||||||
|
// If there is not (or the key is a duplicate), add it to enter.
|
||||||
|
for (i = 0; i < dataLength; ++i) {
|
||||||
|
keyValue = keyPrefix + key.call(parent, data[i], i, data);
|
||||||
|
if (node = nodeByKeyValue[keyValue]) {
|
||||||
|
update[i] = node;
|
||||||
|
node.__data__ = data[i];
|
||||||
|
nodeByKeyValue[keyValue] = null;
|
||||||
|
} else {
|
||||||
|
enter[i] = new EnterNode(parent, data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add any remaining nodes that were not bound to data to exit.
|
||||||
|
for (i = 0; i < groupLength; ++i) {
|
||||||
|
if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
|
||||||
|
exit[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_data(value, key) {
|
||||||
|
if (!value) {
|
||||||
|
data = new Array(this.size()), j = -1;
|
||||||
|
this.each(function(d) { data[++j] = d; });
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bind = key ? bindKey : bindIndex,
|
||||||
|
parents = this._parents,
|
||||||
|
groups = this._groups;
|
||||||
|
|
||||||
|
if (typeof value !== "function") value = constant(value);
|
||||||
|
|
||||||
|
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
var parent = parents[j],
|
||||||
|
group = groups[j],
|
||||||
|
groupLength = group.length,
|
||||||
|
data = value.call(parent, parent && parent.__data__, j, parents),
|
||||||
|
dataLength = data.length,
|
||||||
|
enterGroup = enter[j] = new Array(dataLength),
|
||||||
|
updateGroup = update[j] = new Array(dataLength),
|
||||||
|
exitGroup = exit[j] = new Array(groupLength);
|
||||||
|
|
||||||
|
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
|
||||||
|
|
||||||
|
// Now connect the enter nodes to their following update node, such that
|
||||||
|
// appendChild can insert the materialized enter node before this node,
|
||||||
|
// rather than at the end of the parent node.
|
||||||
|
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
|
||||||
|
if (previous = enterGroup[i0]) {
|
||||||
|
if (i0 >= i1) i1 = i0 + 1;
|
||||||
|
while (!(next = updateGroup[i1]) && ++i1 < dataLength);
|
||||||
|
previous._next = next || null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
update = new Selection(update, parents);
|
||||||
|
update._enter = enter;
|
||||||
|
update._exit = exit;
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_exit() {
|
||||||
|
return new Selection(this._exit || this._groups.map(sparse), this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_join(onenter, onupdate, onexit) {
|
||||||
|
var enter = this.enter(), update = this, exit = this.exit();
|
||||||
|
enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + "");
|
||||||
|
if (onupdate != null) update = onupdate(update);
|
||||||
|
if (onexit == null) exit.remove(); else onexit(exit);
|
||||||
|
return enter && update ? enter.merge(update).order() : update;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_merge(selection) {
|
||||||
|
|
||||||
|
for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
|
||||||
|
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group0[i] || group1[i]) {
|
||||||
|
merge[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; j < m0; ++j) {
|
||||||
|
merges[j] = groups0[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(merges, this._parents);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_order() {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
|
||||||
|
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
|
||||||
|
next = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_sort(compare) {
|
||||||
|
if (!compare) compare = ascending;
|
||||||
|
|
||||||
|
function compareNode(a, b) {
|
||||||
|
return a && b ? compare(a.__data__, b.__data__) : !a - !b;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
|
||||||
|
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
|
||||||
|
if (node = group[i]) {
|
||||||
|
sortgroup[i] = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sortgroup.sort(compareNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Selection(sortgroups, this._parents).order();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ascending(a, b) {
|
||||||
|
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_call() {
|
||||||
|
var callback = arguments[0];
|
||||||
|
arguments[0] = this;
|
||||||
|
callback.apply(null, arguments);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_nodes() {
|
||||||
|
var nodes = new Array(this.size()), i = -1;
|
||||||
|
this.each(function() { nodes[++i] = this; });
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_node() {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
||||||
|
for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
|
||||||
|
var node = group[i];
|
||||||
|
if (node) return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_size() {
|
||||||
|
var size = 0;
|
||||||
|
this.each(function() { ++size; });
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_empty() {
|
||||||
|
return !this.node();
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_each(callback) {
|
||||||
|
|
||||||
|
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
||||||
|
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
|
||||||
|
if (node = group[i]) callback.call(node, node.__data__, i, group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrRemove(name) {
|
||||||
|
return function() {
|
||||||
|
this.removeAttribute(name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrRemoveNS(fullname) {
|
||||||
|
return function() {
|
||||||
|
this.removeAttributeNS(fullname.space, fullname.local);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrConstant(name, value) {
|
||||||
|
return function() {
|
||||||
|
this.setAttribute(name, value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrConstantNS(fullname, value) {
|
||||||
|
return function() {
|
||||||
|
this.setAttributeNS(fullname.space, fullname.local, value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrFunction(name, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.removeAttribute(name);
|
||||||
|
else this.setAttribute(name, v);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrFunctionNS(fullname, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
|
||||||
|
else this.setAttributeNS(fullname.space, fullname.local, v);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_attr(name, value) {
|
||||||
|
var fullname = namespace(name);
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var node = this.node();
|
||||||
|
return fullname.local
|
||||||
|
? node.getAttributeNS(fullname.space, fullname.local)
|
||||||
|
: node.getAttribute(fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each((value == null
|
||||||
|
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
|
||||||
|
? (fullname.local ? attrFunctionNS : attrFunction)
|
||||||
|
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultView(node) {
|
||||||
|
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
|
||||||
|
|| (node.document && node) // node is a Window
|
||||||
|
|| node.defaultView; // node is a Document
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleRemove(name) {
|
||||||
|
return function() {
|
||||||
|
this.style.removeProperty(name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleConstant(name, value, priority) {
|
||||||
|
return function() {
|
||||||
|
this.style.setProperty(name, value, priority);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleFunction(name, value, priority) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) this.style.removeProperty(name);
|
||||||
|
else this.style.setProperty(name, v, priority);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_style(name, value, priority) {
|
||||||
|
return arguments.length > 1
|
||||||
|
? this.each((value == null
|
||||||
|
? styleRemove : typeof value === "function"
|
||||||
|
? styleFunction
|
||||||
|
: styleConstant)(name, value, priority == null ? "" : priority))
|
||||||
|
: styleValue(this.node(), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function styleValue(node, name) {
|
||||||
|
return node.style.getPropertyValue(name)
|
||||||
|
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyRemove(name) {
|
||||||
|
return function() {
|
||||||
|
delete this[name];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyConstant(name, value) {
|
||||||
|
return function() {
|
||||||
|
this[name] = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function propertyFunction(name, value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
if (v == null) delete this[name];
|
||||||
|
else this[name] = v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_property(name, value) {
|
||||||
|
return arguments.length > 1
|
||||||
|
? this.each((value == null
|
||||||
|
? propertyRemove : typeof value === "function"
|
||||||
|
? propertyFunction
|
||||||
|
: propertyConstant)(name, value))
|
||||||
|
: this.node()[name];
|
||||||
|
}
|
||||||
|
|
||||||
|
function classArray(string) {
|
||||||
|
return string.trim().split(/^|\s+/);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classList(node) {
|
||||||
|
return node.classList || new ClassList(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ClassList(node) {
|
||||||
|
this._node = node;
|
||||||
|
this._names = classArray(node.getAttribute("class") || "");
|
||||||
|
}
|
||||||
|
|
||||||
|
ClassList.prototype = {
|
||||||
|
add: function(name) {
|
||||||
|
var i = this._names.indexOf(name);
|
||||||
|
if (i < 0) {
|
||||||
|
this._names.push(name);
|
||||||
|
this._node.setAttribute("class", this._names.join(" "));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remove: function(name) {
|
||||||
|
var i = this._names.indexOf(name);
|
||||||
|
if (i >= 0) {
|
||||||
|
this._names.splice(i, 1);
|
||||||
|
this._node.setAttribute("class", this._names.join(" "));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
contains: function(name) {
|
||||||
|
return this._names.indexOf(name) >= 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function classedAdd(node, names) {
|
||||||
|
var list = classList(node), i = -1, n = names.length;
|
||||||
|
while (++i < n) list.add(names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedRemove(node, names) {
|
||||||
|
var list = classList(node), i = -1, n = names.length;
|
||||||
|
while (++i < n) list.remove(names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedTrue(names) {
|
||||||
|
return function() {
|
||||||
|
classedAdd(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedFalse(names) {
|
||||||
|
return function() {
|
||||||
|
classedRemove(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function classedFunction(names, value) {
|
||||||
|
return function() {
|
||||||
|
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_classed(name, value) {
|
||||||
|
var names = classArray(name + "");
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var list = classList(this.node()), i = -1, n = names.length;
|
||||||
|
while (++i < n) if (!list.contains(names[i])) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each((typeof value === "function"
|
||||||
|
? classedFunction : value
|
||||||
|
? classedTrue
|
||||||
|
: classedFalse)(names, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function textRemove() {
|
||||||
|
this.textContent = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function textConstant(value) {
|
||||||
|
return function() {
|
||||||
|
this.textContent = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function textFunction(value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
this.textContent = v == null ? "" : v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_text(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.each(value == null
|
||||||
|
? textRemove : (typeof value === "function"
|
||||||
|
? textFunction
|
||||||
|
: textConstant)(value))
|
||||||
|
: this.node().textContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlRemove() {
|
||||||
|
this.innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlConstant(value) {
|
||||||
|
return function() {
|
||||||
|
this.innerHTML = value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlFunction(value) {
|
||||||
|
return function() {
|
||||||
|
var v = value.apply(this, arguments);
|
||||||
|
this.innerHTML = v == null ? "" : v;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_html(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.each(value == null
|
||||||
|
? htmlRemove : (typeof value === "function"
|
||||||
|
? htmlFunction
|
||||||
|
: htmlConstant)(value))
|
||||||
|
: this.node().innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
function raise() {
|
||||||
|
if (this.nextSibling) this.parentNode.appendChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_raise() {
|
||||||
|
return this.each(raise);
|
||||||
|
}
|
||||||
|
|
||||||
|
function lower() {
|
||||||
|
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_lower() {
|
||||||
|
return this.each(lower);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_append(name) {
|
||||||
|
var create = typeof name === "function" ? name : creator(name);
|
||||||
|
return this.select(function() {
|
||||||
|
return this.appendChild(create.apply(this, arguments));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function constantNull() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_insert(name, before) {
|
||||||
|
var create = typeof name === "function" ? name : creator(name),
|
||||||
|
select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
|
||||||
|
return this.select(function() {
|
||||||
|
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
var parent = this.parentNode;
|
||||||
|
if (parent) parent.removeChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_remove() {
|
||||||
|
return this.each(remove);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_cloneShallow() {
|
||||||
|
return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_cloneDeep() {
|
||||||
|
return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_clone(deep) {
|
||||||
|
return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_datum(value) {
|
||||||
|
return arguments.length
|
||||||
|
? this.property("__data__", value)
|
||||||
|
: this.node().__data__;
|
||||||
|
}
|
||||||
|
|
||||||
|
var filterEvents = {};
|
||||||
|
|
||||||
|
if (typeof document !== "undefined") {
|
||||||
|
var element = document.documentElement;
|
||||||
|
if (!("onmouseenter" in element)) {
|
||||||
|
filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterContextListener(listener, index, group) {
|
||||||
|
listener = contextListener(listener, index, group);
|
||||||
|
return function(event) {
|
||||||
|
var related = event.relatedTarget;
|
||||||
|
if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
|
||||||
|
listener.call(this, event);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function contextListener(listener, index, group) {
|
||||||
|
return function(event1) {
|
||||||
|
try {
|
||||||
|
listener.call(this, this.__data__, index, group);
|
||||||
|
} finally {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseTypenames(typenames) {
|
||||||
|
return typenames.trim().split(/^|\s+/).map(function(t) {
|
||||||
|
var name = "", i = t.indexOf(".");
|
||||||
|
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
|
||||||
|
return {type: t, name: name};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRemove(typename) {
|
||||||
|
return function() {
|
||||||
|
var on = this.__on;
|
||||||
|
if (!on) return;
|
||||||
|
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
|
||||||
|
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
|
||||||
|
this.removeEventListener(o.type, o.listener, o.capture);
|
||||||
|
} else {
|
||||||
|
on[++i] = o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (++i) on.length = i;
|
||||||
|
else delete this.__on;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function onAdd(typename, value, capture) {
|
||||||
|
var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
|
||||||
|
return function(d, i, group) {
|
||||||
|
var on = this.__on, o, listener = wrap(value, i, group);
|
||||||
|
if (on) for (var j = 0, m = on.length; j < m; ++j) {
|
||||||
|
if ((o = on[j]).type === typename.type && o.name === typename.name) {
|
||||||
|
this.removeEventListener(o.type, o.listener, o.capture);
|
||||||
|
this.addEventListener(o.type, o.listener = listener, o.capture = capture);
|
||||||
|
o.value = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.addEventListener(typename.type, listener, capture);
|
||||||
|
o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
|
||||||
|
if (!on) this.__on = [o];
|
||||||
|
else on.push(o);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_on(typename, value, capture) {
|
||||||
|
var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
|
||||||
|
|
||||||
|
if (arguments.length < 2) {
|
||||||
|
var on = this.node().__on;
|
||||||
|
if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
|
||||||
|
for (i = 0, o = on[j]; i < n; ++i) {
|
||||||
|
if ((t = typenames[i]).type === o.type && t.name === o.name) {
|
||||||
|
return o.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
on = value ? onAdd : onRemove;
|
||||||
|
if (capture == null) capture = false;
|
||||||
|
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchEvent(node, type, params) {
|
||||||
|
var window = defaultView(node),
|
||||||
|
event = window.CustomEvent;
|
||||||
|
|
||||||
|
if (typeof event === "function") {
|
||||||
|
event = new event(type, params);
|
||||||
|
} else {
|
||||||
|
event = window.document.createEvent("Event");
|
||||||
|
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
|
||||||
|
else event.initEvent(type, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
node.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchConstant(type, params) {
|
||||||
|
return function() {
|
||||||
|
return dispatchEvent(this, type, params);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchFunction(type, params) {
|
||||||
|
return function() {
|
||||||
|
return dispatchEvent(this, type, params.apply(this, arguments));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection_dispatch(type, params) {
|
||||||
|
return this.each((typeof params === "function"
|
||||||
|
? dispatchFunction
|
||||||
|
: dispatchConstant)(type, params));
|
||||||
|
}
|
||||||
|
|
||||||
|
var root = [null];
|
||||||
|
|
||||||
|
function Selection(groups, parents) {
|
||||||
|
this._groups = groups;
|
||||||
|
this._parents = parents;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selection() {
|
||||||
|
return new Selection([[document.documentElement]], root);
|
||||||
|
}
|
||||||
|
|
||||||
|
Selection.prototype = selection.prototype = {
|
||||||
|
constructor: Selection,
|
||||||
|
select: selection_select,
|
||||||
|
selectAll: selection_selectAll,
|
||||||
|
filter: selection_filter,
|
||||||
|
data: selection_data,
|
||||||
|
enter: selection_enter,
|
||||||
|
exit: selection_exit,
|
||||||
|
join: selection_join,
|
||||||
|
merge: selection_merge,
|
||||||
|
order: selection_order,
|
||||||
|
sort: selection_sort,
|
||||||
|
call: selection_call,
|
||||||
|
nodes: selection_nodes,
|
||||||
|
node: selection_node,
|
||||||
|
size: selection_size,
|
||||||
|
empty: selection_empty,
|
||||||
|
each: selection_each,
|
||||||
|
attr: selection_attr,
|
||||||
|
style: selection_style,
|
||||||
|
property: selection_property,
|
||||||
|
classed: selection_classed,
|
||||||
|
text: selection_text,
|
||||||
|
html: selection_html,
|
||||||
|
raise: selection_raise,
|
||||||
|
lower: selection_lower,
|
||||||
|
append: selection_append,
|
||||||
|
insert: selection_insert,
|
||||||
|
remove: selection_remove,
|
||||||
|
clone: selection_clone,
|
||||||
|
datum: selection_datum,
|
||||||
|
on: selection_on,
|
||||||
|
dispatch: selection_dispatch
|
||||||
|
};
|
||||||
|
|
||||||
|
function select(selector) {
|
||||||
|
return typeof selector === "string"
|
||||||
|
? new Selection([[document.querySelector(selector)]], [document.documentElement])
|
||||||
|
: new Selection([[selector]], root);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Uses the Mediawiki API to display a list of recent images and a link to
|
||||||
|
the page where the image has been used/placed.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Allimages
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageinfo
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageusage
|
||||||
|
*/
|
||||||
|
var PAGE_COUNT = 25; /* how many edits to show per load*/
|
||||||
|
var main = select("#content"),
|
||||||
|
//baseurl = "/mw/api.php?action=query&list=allpages&rclimit=25&rcnamespace=0&rctoponly=1&format=json&formatversion=2&rcshow=!minor|!bot|!redirect|!anon",
|
||||||
|
//baseurl = "/mw/api.php?action=query&generator=categorymembers&gcmtitle=Category:B1&prop=categories&cllimit=max&gcmlimit=max|!bot|!redirect|!anon",
|
||||||
|
baseurl="/mw/api.php?action=query&generator=categorymembers&gcmtitle=Cat%E9gorie:Actualit%E9s&prop=categories&cllimit=max&gcmlimit=max",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0;
|
||||||
|
while (count < PAGE_COUNT) {
|
||||||
|
console.log("starting loop", "count", count, "url", url);
|
||||||
|
let data = await get_json(url),
|
||||||
|
recentchanges = data.query.recentchanges;
|
||||||
|
console.log("recentchanges", recentchanges);
|
||||||
|
let items = main.selectAll("div.edit")
|
||||||
|
.data(recentchanges, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "edit")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.text(d=>d.title);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&rccontinue="+data.continue.rccontinue;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
count += recentchanges.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
|
|
||||||
|
}());
|
||||||
55
special/recentnews/index.html
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>erg: modifications récentes</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/m/style.css">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 1.5em;
|
||||||
|
margin-left: 40px;
|
||||||
|
margin-top: 2.5em;
|
||||||
|
background: #333;
|
||||||
|
color: white;
|
||||||
|
overflow: auto;
|
||||||
|
font-family: Vega;
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-family: Combined;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
#content {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
div#footer {
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a#more {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
background: white;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
div.edit {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Modifications récentes</h1>
|
||||||
|
<div id="content"></div>
|
||||||
|
<div id="footer"><a href="#" id="more">en plus…</a></div>
|
||||||
|
<script src="dist/recentchanges.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
16
special/recentnews/package.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "recentfiles",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "rollup.config.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-selection": "^1.4.0",
|
||||||
|
"rollup": "^1.17.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
special/recentnews/rollup.config.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// rollup.config.js
|
||||||
|
// https://github.com/rollup/rollup-plugin-commonjs
|
||||||
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
|
|
||||||
|
export default [{
|
||||||
|
input: 'src/recentchanges.js',
|
||||||
|
output: {
|
||||||
|
file: 'dist/recentchanges.js',
|
||||||
|
format: 'iife',
|
||||||
|
name: 'app'
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
resolve(),
|
||||||
|
commonjs()
|
||||||
|
]
|
||||||
|
}];
|
||||||
55
special/recentnews/src/recentchanges.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import { selectAll, select } from 'd3-selection';
|
||||||
|
/*
|
||||||
|
Uses the Mediawiki API to display a list of recent images and a link to
|
||||||
|
the page where the image has been used/placed.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Allimages
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageinfo
|
||||||
|
* https://www.mediawiki.org/wiki/API:Imageusage
|
||||||
|
*/
|
||||||
|
var PAGE_COUNT = 25; /* how many edits to show per load*/
|
||||||
|
var main = select("#content"),
|
||||||
|
baseurl = "/mw/api.php?action=query&list=recentchanges&rclimit=25&rcnamespace=0&rctoponly=1&format=json&formatversion=2&rcshow=!minor|!bot|!redirect|!anon",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0;
|
||||||
|
while (count < PAGE_COUNT) {
|
||||||
|
// console.log("starting loop", "count", count, "url", url);
|
||||||
|
let data = await get_json(url),
|
||||||
|
recentchanges = data.query.recentchanges;
|
||||||
|
console.log("recentchanges", recentchanges);
|
||||||
|
let items = main.selectAll("div.edit")
|
||||||
|
.data(recentchanges, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "edit")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.text(d=>d.title);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&rccontinue="+data.continue.rccontinue;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
count += recentchanges.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
6
special/wikipage/Makefile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
all: dist/app.js
|
||||||
|
|
||||||
|
dist/app.js: src/*.js
|
||||||
|
# node_modules/.bin/rollup src/index.js --file dist/index.js --format iife
|
||||||
|
node_modules/.bin/rollup -c
|
||||||
16
special/wikipage/package.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "wikipage",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "rollup.config.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-selection": "^1.4.0",
|
||||||
|
"rollup": "^1.17.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
16
special/wikipage/package.json~
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "recentfiles",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "rollup.config.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"d3-selection": "^1.4.0",
|
||||||
|
"rollup": "^1.17.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
special/wikipage/rollup.config.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// rollup.config.js
|
||||||
|
// https://github.com/rollup/rollup-plugin-commonjs
|
||||||
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
|
|
||||||
|
export default [{
|
||||||
|
input: 'src/wikipage.js',
|
||||||
|
output: {
|
||||||
|
file: 'dist/wikpage.js',
|
||||||
|
format: 'iife',
|
||||||
|
name: 'app'
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
resolve(),
|
||||||
|
commonjs()
|
||||||
|
]
|
||||||
|
}];
|
||||||
86
special/wikipage/src/wikipage.js
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import { selectAll, select } from 'd3-selection';
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Uses the Mediawiki API to simply display the contents of a wiki page.
|
||||||
|
|
||||||
|
Makes use of the following API calls:
|
||||||
|
|
||||||
|
* https://www.mediawiki.org/wiki/API:Parsing_wikitext
|
||||||
|
|
||||||
|
*/
|
||||||
|
var main = select("#content"),
|
||||||
|
title = window.location.hash ? window.location.hash.substring(1) : "Bienvenue_à_l’erg",
|
||||||
|
baseurl = "/mw/api.php?action=parse&format=json&formatversion=2title=",
|
||||||
|
url = baseurl;
|
||||||
|
|
||||||
|
async function get_json (url) {
|
||||||
|
var resp = await fetch(url);
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
function url_for_title (title) {
|
||||||
|
return "/w/"+encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load () {
|
||||||
|
let count = 0,
|
||||||
|
debugloopcount = 0;
|
||||||
|
while (count < NUM_FILES) {
|
||||||
|
console.log("starting loop", debugloopcount, "count", count, "url", url);
|
||||||
|
let resp = await fetch(url),
|
||||||
|
data = await resp.json(),
|
||||||
|
allimages = data.query.allimages,
|
||||||
|
useimages = [];
|
||||||
|
// console.log("got data", data.query.allimages.length);
|
||||||
|
// For each image:
|
||||||
|
// Use API:Imageinfo request/get the URL to a thumbnail image
|
||||||
|
//
|
||||||
|
for (var i=0, l=allimages.length; i<l; i++) {
|
||||||
|
let image = allimages[i];
|
||||||
|
// console.log("image", image.name);
|
||||||
|
let iu_data = await get_json(`/mw/api.php?action=query&list=imageusage&iutitle=${image.title}&iunamespace=0&format=json&formatversion=2`);
|
||||||
|
|
||||||
|
image.imageusage = iu_data.query.imageusage;
|
||||||
|
if (image.imageusage.length == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let ii_data = await get_json(`/mw/api.php?action=query&prop=imageinfo&titles=${image.title}&iiprop=url|size&dimensions|mime&iiurlwidth=320&format=json&formatversion=2`);
|
||||||
|
image.imageinfo = ii_data.query.pages[0].imageinfo[0];
|
||||||
|
if (!image.imageinfo.thumburl) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
useimages.push(image);
|
||||||
|
// console.log("imageusage", image.name, image.imageusage.length);
|
||||||
|
// console.log("imageinfo", image.name, image.imageinfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log("allimages", allimages);
|
||||||
|
// allimages = allimages.filter(d=>d.imageinfo.thumburl && (d.imageusage.length > 0));
|
||||||
|
let items = main.selectAll("div.file")
|
||||||
|
.data(useimages, d=>d.title)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "file")
|
||||||
|
.append("a")
|
||||||
|
.attr("href", d=>url_for_title(d.imageusage[d.imageusage.length-1].title))
|
||||||
|
.attr("target", "wikiframe")
|
||||||
|
.append("img")
|
||||||
|
.attr('src', d=>d.imageinfo.thumburl);
|
||||||
|
|
||||||
|
if (data.continue) {
|
||||||
|
url = baseurl+"&aicontinue="+data.continue.aicontinue;
|
||||||
|
}
|
||||||
|
count += useimages.length;
|
||||||
|
debugloopcount += 1;
|
||||||
|
// if (debugloopcount >= 5) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
document.querySelector("a#more").addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
load();
|
||||||
|
});
|
||||||
38
special/wikipage/wikipage.html
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>recent files</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background: #eee;
|
||||||
|
background-image: linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%, rgba(0,0,0,.25) 0), linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%, rgba(0,0,0,.25) 0);
|
||||||
|
background-position: 0 0, 20px 20px;
|
||||||
|
background-size: 40px 40px;
|
||||||
|
}
|
||||||
|
div.file {
|
||||||
|
float: left;
|
||||||
|
margin: 8px;
|
||||||
|
max-width: 45%;
|
||||||
|
}
|
||||||
|
div.file img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
div#footer {
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
a#more {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
background: black;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="content"></div>
|
||||||
|
<div id="footer"><a href="#" id="more">en plus…</a></div>
|
||||||
|
<script src="dist/recentfiles.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
312
splitscreen.css
Normal file
@@ -0,0 +1,312 @@
|
|||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/typo/Combined/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'combinedregular';
|
||||||
|
src: url('/typo/Combined/web/combined.eot');
|
||||||
|
src: url('/typo/Combined/web/combined.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('/typo/Combined/web/combined.woff2') format('woff2'),
|
||||||
|
url('/typo/Combined/web/combined.woff') format('woff'),
|
||||||
|
url('/typo/Combined/web/combined.ttf') format('truetype'),
|
||||||
|
url('/typo/Combined/web/combined.svg#combinedregular') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background: #f1f2f3;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.links line {
|
||||||
|
stroke: #aaa;
|
||||||
|
/*stroke: none;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line.active2 {
|
||||||
|
stroke: magenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line.history {
|
||||||
|
stroke: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
stroke: magenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category circle {
|
||||||
|
fill: cyan;
|
||||||
|
}
|
||||||
|
|
||||||
|
.web circle {
|
||||||
|
fill: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news circle {
|
||||||
|
fill: lightgray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.template circle {
|
||||||
|
fill: lightgreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discussion circle {
|
||||||
|
fill: aqua;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
svg {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0; right: 0; bottom: 0;
|
||||||
|
font: 10px sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.page {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.page text {
|
||||||
|
visibility: hidden;
|
||||||
|
fill: #222;
|
||||||
|
font: 9px sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.active text {
|
||||||
|
/*visibility: visible;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.mouse text {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
use {
|
||||||
|
fill: #EEE;
|
||||||
|
stroke: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: cyan;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active use {
|
||||||
|
/* animation-transform: 2;*/
|
||||||
|
animation-duration: 2s;
|
||||||
|
animation-name: pulse;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0% {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.5, 1.5);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: magenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active text {
|
||||||
|
stroke: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active2 use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: magenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Categories */
|
||||||
|
|
||||||
|
#cats .body {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats .placeholder {
|
||||||
|
min-width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
color: gray;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
#cats.expanded .body {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats.expanded .placeholder {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats {
|
||||||
|
/*display: none;*/
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
background: #FFFFFFFF;
|
||||||
|
border-radius: 24px;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
min-width: 16px;
|
||||||
|
min-height: 16px;
|
||||||
|
box-shadow: 0 3px 3px 3px rgba(255, 0, 255, 0.44);
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats div.cat span.icon {
|
||||||
|
position: relative;
|
||||||
|
top: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin-right: 4px;
|
||||||
|
background-position: center center;
|
||||||
|
}
|
||||||
|
#cats div.cat span.count {
|
||||||
|
display: none;
|
||||||
|
padding: 0px 3px;
|
||||||
|
background: #DDD;
|
||||||
|
color: #444;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
#cats div.cat a {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
#cats div.cat.highlight a {
|
||||||
|
color: cyan;
|
||||||
|
}
|
||||||
|
#cats hr {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; right: 50%;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wikiframediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%; top: 0;
|
||||||
|
right: 0; bottom: 0;
|
||||||
|
}
|
||||||
|
#wikiframediv iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MEDIAWIKI PAGE */
|
||||||
|
.header-container {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe form.header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
/*ul#page-actions {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
a.talk {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* control positioning */
|
||||||
|
|
||||||
|
.leaflet-control {
|
||||||
|
position: relative;
|
||||||
|
z-index: 800;
|
||||||
|
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||||
|
pointer-events: auto;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.leaflet-control {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* general toolbar styles */
|
||||||
|
|
||||||
|
.leaflet-bar {
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-position: 50% 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:first-child {
|
||||||
|
}
|
||||||
|
.leaflet-bar a:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.leaflet-bar a.leaflet-disabled {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* zoom controls */
|
||||||
|
|
||||||
|
.zoom-controls {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
top: 10px;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-control-zoom-in,
|
||||||
|
.leaflet-control-zoom-out {
|
||||||
|
font: Combined;
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 20px;
|
||||||
|
text-indent: 1px;
|
||||||
|
box-shadow: 0 3px 3px 3px rgba(255, 0, 255, 0.44);
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
32
splitscreen.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>école de recherche graphique</title>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="splitscreen.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="page">
|
||||||
|
<svg id="svg"></svg>
|
||||||
|
<div id="cats">
|
||||||
|
<div class="body"></div>
|
||||||
|
<div class="placeholder">?</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="wikiframediv">
|
||||||
|
<iframe id="wikiframe" src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="zoom-controls">
|
||||||
|
<div class="leaflet-control-zoom leaflet-bar leaflet-control">
|
||||||
|
<a class="leaflet-control-zoom-in" href="#" title="Zoom in" role="button" aria-label="Zoom in">+</a>
|
||||||
|
<a class="leaflet-control-zoom-out" href="#" title="Zoom out" role="button" aria-label="Zoom out">-</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
<script type="text/javascript" src="dist/app.js"></script>
|
||||||
|
<script src="dist/index.js"></script>
|
||||||
|
</html>
|
||||||
BIN
src/.forcenet.js.swp
Normal file
2
src/app.js
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
import { Map } from './wikimap.js';
|
||||||
|
export { Map };
|
||||||
267
src/forcenet.js
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
import { event, select, selectAll} from 'd3-selection';
|
||||||
|
import { values, set, map } from 'd3-collection';
|
||||||
|
import { drag } from 'd3-drag';
|
||||||
|
import { zoom } from 'd3-zoom';
|
||||||
|
import { forceSimulation, forceLink, forceManyBody, forceCenter, forceX, forceY, forceRadial } from 'd3-force';
|
||||||
|
// import { Wiki, Page } from './wiki.js';
|
||||||
|
import EventEmitter from 'eventemitter3';
|
||||||
|
// import { json } from 'd3-fetch';
|
||||||
|
|
||||||
|
export class ForceNet {
|
||||||
|
|
||||||
|
constructor (symbols) {
|
||||||
|
var width = 600,
|
||||||
|
height = 600;
|
||||||
|
|
||||||
|
this.symbols = symbols || {};
|
||||||
|
this.events = new EventEmitter();
|
||||||
|
this.active_page = null;
|
||||||
|
// this.nodes = {};
|
||||||
|
this.simulation = forceSimulation()
|
||||||
|
//.velocityDecay(0.1)
|
||||||
|
.force("link", forceLink().id(d => d.title).distance(800))
|
||||||
|
.force("charge", forceManyBody().distanceMin(800))
|
||||||
|
.force("radial", forceRadial(180, width/2, height/2));
|
||||||
|
// .force("center", forceCenter(width / 2, height / 2));
|
||||||
|
this.svg = null;
|
||||||
|
// this.historylinks = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
on (message, callback, context) {
|
||||||
|
this.events.on(message, callback, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
init_svg (svg) {
|
||||||
|
this.svg = select(svg || "svg");
|
||||||
|
this.zoom = zoom()
|
||||||
|
.scaleExtent([1 / 16, 16])
|
||||||
|
.on("zoom", () => {
|
||||||
|
this.content.attr("transform", event.transform);
|
||||||
|
// console.log("transform", event.transform, this.content.attr("transform"));
|
||||||
|
});
|
||||||
|
this.rect = this.svg.append("rect")
|
||||||
|
.attr("width", 1000)
|
||||||
|
.attr("height", 1000)
|
||||||
|
.style("fill", "none")
|
||||||
|
.style("pointer-events", "all")
|
||||||
|
.call(this.zoom);
|
||||||
|
this.content = this.svg.append("g")
|
||||||
|
.attr("id", "content"),
|
||||||
|
this.linksg = this.content.append("g")
|
||||||
|
.attr("class", "links");
|
||||||
|
this.nodesg = this.content.append("g")
|
||||||
|
.attr("class", "nodes");
|
||||||
|
}
|
||||||
|
|
||||||
|
dragstarted (d) {
|
||||||
|
if (!event.active) this.simulation.alphaTarget(0.3).restart();
|
||||||
|
d.fx = d.x;
|
||||||
|
d.fy = d.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
dragged (d) {
|
||||||
|
d.fx = event.x;
|
||||||
|
d.fy = event.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
dragended(d) {
|
||||||
|
if (!event.active) this.simulation.alphaTarget(0);
|
||||||
|
d.fx = null;
|
||||||
|
d.fy = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
link_key (a, b) {
|
||||||
|
return (a < b) ? ("link_"+a+"_"+b) : ("link_"+b+"_"+a);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
link_key (p1, p2) {
|
||||||
|
return (p1.title < p2.title) ?
|
||||||
|
("link_"+p1.title+"_"+p2.title) :
|
||||||
|
("link_"+p2.title+"_"+p1.title);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
make_link (p1, p2) {
|
||||||
|
return (p1.title < p2.title) ?
|
||||||
|
{source: p1, target: p2 } :
|
||||||
|
{source: p2, target: p1 };
|
||||||
|
}
|
||||||
|
|
||||||
|
register_link (from_page, to_page) {
|
||||||
|
var lkey = this.link_key(from_page, to_page);
|
||||||
|
if (this.links[lkey] === undefined) {
|
||||||
|
this.links[lkey] = this.make_link(from_page, to_page);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
get_symbol (d, def) {
|
||||||
|
return "symbols.svg#Main";
|
||||||
|
/*
|
||||||
|
for (var i=0, l=d.cats.length; i<l; i++) {
|
||||||
|
if (this.symbols[d.cats[i]]) {
|
||||||
|
return this.symbols[d.cats[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.symbols.default || def;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
update_graph (graph) {
|
||||||
|
console.log("UPDATE GRAPH", graph.nodes.length, graph.links.length);
|
||||||
|
var link = this.linksg.selectAll("line")
|
||||||
|
.data(graph.links, d => { return this.link_key(d.source.title, d.target.title) });
|
||||||
|
var link_enter = link.enter()
|
||||||
|
.append("line");
|
||||||
|
|
||||||
|
link.exit().each(d => {
|
||||||
|
d.source.linked = false;
|
||||||
|
d.target.linked = false;
|
||||||
|
}).remove();
|
||||||
|
|
||||||
|
link_enter.merge(link).each(d => {
|
||||||
|
d.source.linked = true;
|
||||||
|
d.target.linked = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
var node = this.nodesg
|
||||||
|
.selectAll("g.page")
|
||||||
|
.data(graph.nodes, function (d) { return d.title });
|
||||||
|
|
||||||
|
node.exit().remove();
|
||||||
|
|
||||||
|
var that = this;
|
||||||
|
var node_enter = node.enter().append("g")
|
||||||
|
.attr("class", "page")
|
||||||
|
// .attr("class", d=>"page "+this.wiki.get_ns_classname(d.ns))
|
||||||
|
.on("click", function(d) {
|
||||||
|
that.events.emit("nodeclick", d, this);
|
||||||
|
// this.set_active_node(d.title);
|
||||||
|
})
|
||||||
|
.on("mouseover", function (d) {
|
||||||
|
// console.log("mouseover", this);
|
||||||
|
select(this).classed("mouse", true);
|
||||||
|
})
|
||||||
|
.on("mouseout", function (d) {
|
||||||
|
// console.log("mouseout", this);
|
||||||
|
select(this).classed("mouse", false);
|
||||||
|
})
|
||||||
|
.call(drag()
|
||||||
|
.on("start", this.dragstarted.bind(this))
|
||||||
|
.on("drag", this.dragged.bind(this))
|
||||||
|
.on("end", this.dragended.bind(this)));
|
||||||
|
|
||||||
|
node_enter.append("use")
|
||||||
|
.attr("xlink:href", d => this.get_symbol(d, "default"))
|
||||||
|
.attr("class", "testcolor");
|
||||||
|
|
||||||
|
// {
|
||||||
|
// for (var i=0, l=d.cats.length; i<l; i++) {
|
||||||
|
// if (this.symbols[d.cats[i]]) {
|
||||||
|
// return this.symbols[d.cats[i]];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return this.symbols.default || "default";
|
||||||
|
// });
|
||||||
|
|
||||||
|
// node_enter.append("circle")
|
||||||
|
// .attr("r", 6);
|
||||||
|
|
||||||
|
node_enter.append("text")
|
||||||
|
.text(d => d.title)
|
||||||
|
.attr("x", 10);
|
||||||
|
|
||||||
|
//node_enter.append("title")
|
||||||
|
// .text(function(d) { return d.title; });
|
||||||
|
|
||||||
|
node = node_enter.merge(node);
|
||||||
|
link = link_enter.merge(link);
|
||||||
|
|
||||||
|
node.classed("active", d=>d.active);
|
||||||
|
|
||||||
|
|
||||||
|
this.simulation
|
||||||
|
.nodes(graph.nodes)
|
||||||
|
.on("tick", ticked);
|
||||||
|
|
||||||
|
this.simulation.force("link")
|
||||||
|
.links(graph.links);
|
||||||
|
|
||||||
|
this.simulation.force("radial").radius(d => d.linked ? null : 200);
|
||||||
|
|
||||||
|
function ticked() {
|
||||||
|
link
|
||||||
|
.attr("x1", function(d) { return d.source.x; })
|
||||||
|
.attr("y1", function(d) { return d.source.y; })
|
||||||
|
.attr("x2", function(d) { return d.target.x; })
|
||||||
|
.attr("y2", function(d) { return d.target.y; });
|
||||||
|
|
||||||
|
// node
|
||||||
|
// .attr("cx", function(d) { return d.x; })
|
||||||
|
// .attr("cy", function(d) { return d.y; });
|
||||||
|
node
|
||||||
|
.attr("transform", d => `translate(${d.x},${d.y})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// document.querySelector("#page").style.background = "purple";
|
||||||
|
// return;
|
||||||
|
|
||||||
|
this.update_nodes();
|
||||||
|
this.update_forces();
|
||||||
|
// this.simulation.alphaTarget(0.3).restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
update_nodes () {
|
||||||
|
var nodes = this.nodesg.selectAll("g.page");
|
||||||
|
console.log("update_nodes", nodes.size());
|
||||||
|
nodes.classed("active", d=>d.active);
|
||||||
|
nodes.classed("active2", d=>d.active2);
|
||||||
|
nodes.classed("highlight", d=>d.highlight);
|
||||||
|
nodes.sort((a, b) => {
|
||||||
|
// console.log("sort", a, b);
|
||||||
|
var x = a.active ? 10 : (a.active2 ? 5 : 0),
|
||||||
|
y = b.active ? 10 : (b.active2 ? 5 : 0);
|
||||||
|
return x - y;
|
||||||
|
});
|
||||||
|
var links = this.linksg.selectAll("line");
|
||||||
|
links.classed("active2", d=>d.active2);
|
||||||
|
links.classed("history", d=>d.type == "history");
|
||||||
|
links.sort((a, b) => {
|
||||||
|
// console.log("sort", a, b);
|
||||||
|
var x = a.active2 ? 10 : (a.history ? 5 : 0),
|
||||||
|
y = b.active2 ? 10 : (b.history ? 5 : 0);
|
||||||
|
return x - y;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
update_forces () {
|
||||||
|
var force = this.simulation.force("link");
|
||||||
|
console.log("update_forces:force", force);
|
||||||
|
this.simulation.force("link").strength(d => {
|
||||||
|
if (d.source.active || d.target.active) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
// same as d3.force's defaultStrength
|
||||||
|
// return 0.5 * (1 / Math.min(d.source.count, d.target.count));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.simulation.alphaTarget(0.3).restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
activate_linked_nodes (page, active) {
|
||||||
|
// deactivate linked links/nodes
|
||||||
|
for (let i=0, l=this.links.length; i<l; i++) {
|
||||||
|
let link = this.links[i];
|
||||||
|
if (link.source == page || link.target == page) {
|
||||||
|
link.active2 = active;
|
||||||
|
link.source.active2 = active;
|
||||||
|
link.target.active2 = active;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
42
src/legend.json
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"key" : "Orientations",
|
||||||
|
"symbol" : "symbols.svg#Orientations",
|
||||||
|
"icon": "img/Orientations.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "Ateliers pluridisciplinaires",
|
||||||
|
"symbol" : "symbols.svg#Ateliers_pluridisciplinaires",
|
||||||
|
"icon" : "img/Ateliers_pluridisciplinaires.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "Cours de soutien spécifique",
|
||||||
|
"symbol" : "symbols.svg#Cours_de_soutien_specifique",
|
||||||
|
"icon" : "img/Cours_de_soutien_specifique.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "Cours techniques",
|
||||||
|
"symbol" : "symbols.svg#Cours_techniques",
|
||||||
|
"icon" : "img/Cours_techniques.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "Cours théoriques",
|
||||||
|
"symbol" : "symbols.svg#Cours_theoriques",
|
||||||
|
"icon" : "img/Cours_theoriques.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "Enseignant·e·s",
|
||||||
|
"symbol" : "symbols.svg#Enseignant__e__s",
|
||||||
|
"icon" : "img/Enseignants.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "Actualités",
|
||||||
|
"symbol" : "symbols.svg#Actualites",
|
||||||
|
"icon" : "img/Actualites.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key" : "default",
|
||||||
|
"symbol" : "symbols.svg#Main",
|
||||||
|
"icon" : "img/Main.png"
|
||||||
|
}
|
||||||
|
]
|
||||||
7
src/mobilecheck.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
|
||||||
|
export function mobilecheck () {
|
||||||
|
var check = false;
|
||||||
|
(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
|
||||||
|
return check;
|
||||||
|
};
|
||||||
|
|
||||||
240
src/symbols.original.svg
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="32.387501mm"
|
||||||
|
height="32.356251mm"
|
||||||
|
viewBox="0 0 32.3875 32.356251"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5507"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="symbols.01.svg"
|
||||||
|
enable-background="new">
|
||||||
|
<defs
|
||||||
|
id="defs5501" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.6"
|
||||||
|
inkscape:cx="-9.4575528"
|
||||||
|
inkscape:cy="99.623528"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer3"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1366"
|
||||||
|
inkscape:window-height="704"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5504">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Main"
|
||||||
|
style="display:none">
|
||||||
|
<circle
|
||||||
|
r="5.0396824"
|
||||||
|
cy="1.4819558"
|
||||||
|
cx="0.43864226"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#020202;stroke-width:2.01587296;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none"
|
||||||
|
id="Main"
|
||||||
|
inkscape:label="#path8162" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Orientations"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Orientations"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.404233,0,0,0.404233,36.032029,1.0220986)">
|
||||||
|
<path
|
||||||
|
id="Orientations-0"
|
||||||
|
d="m -87.8577,-14.01912 c -8.05454,0 -14.59375,6.50796 -14.59375,14.5625 0,8.05454 6.53921,14.59375 14.59375,14.59375 8.05454,0 14.59375,-6.53921 14.59375,-14.59375 0,-8.05454 -6.53921,-14.5625 -14.59375,-14.5625 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6386"
|
||||||
|
d="m -87.7327,-7.603495 c -1.108176,0 -2.164768,0.243856 -3.125,0.65 -0.960232,0.406144 -1.823784,0.998784 -2.55,1.725 -0.726216,0.726216 -1.318856,1.589768 -1.725,2.55 -0.406144,0.960232 -0.625,2.016824 -0.625,3.125 0,1.108176 0.218856,2.139768 0.625,3.1 0.406144,0.960232 0.998784,1.848784 1.725,2.575 0.726216,0.726216 1.589768,1.293856 2.55,1.7 0.960232,0.406144 2.016824,0.65 3.125,0.65 1.108176,0 2.164768,-0.243856 3.125,-0.65 0.960232,-0.406144 1.823784,-0.973784 2.55,-1.7 0.726216,-0.726216 1.318856,-1.614768 1.725,-2.575 0.406144,-0.960232 0.625,-1.991824 0.625,-3.1 0,-1.108176 -0.218856,-2.164768 -0.625,-3.125 -0.406144,-0.960232 -0.998784,-1.823784 -1.725,-2.55 -0.726216,-0.726216 -1.589768,-1.318856 -2.55,-1.725 -0.960232,-0.406144 -2.016824,-0.65 -3.125,-0.65 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.55999994;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="Ateliers_pluridisciplinaires"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.71815477,0,0,0.71815477,65.187921,-29.508788)"
|
||||||
|
id="Ateliers_pluridisciplinaires">
|
||||||
|
<circle
|
||||||
|
r="19.208878"
|
||||||
|
cy="40.264759"
|
||||||
|
cx="116.73087"
|
||||||
|
transform="matrix(0.36441483,0,0,0.36441483,-132.69908,28.796006)"
|
||||||
|
id="path6780"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#010001;stroke-width:16.4647522;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none" />
|
||||||
|
<g
|
||||||
|
id="g8172"
|
||||||
|
transform="matrix(2.1333332,0,0,-2.1333332,13.499857,367.42774)"
|
||||||
|
style="fill:#020002;fill-opacity:0.99615389;stroke:#030003;stroke-opacity:0.98846154">
|
||||||
|
<path
|
||||||
|
transform="matrix(0.05856667,0,0,-0.05856667,-55.427399,154.21379)"
|
||||||
|
style="fill:#020002;fill-opacity:0.99615389;stroke:#030003;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98846154;marker-start:none"
|
||||||
|
d="M 135.93975,40.264759 A 19.208878,19.208878 0 0 1 116.73087,59.473637 19.208878,19.208878 0 0 1 97.521996,40.264759 19.208878,19.208878 0 0 1 116.73087,21.055882 19.208878,19.208878 0 0 1 135.93975,40.264759 Z"
|
||||||
|
id="path8174" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer4"
|
||||||
|
inkscape:label="Cours_de_soutien_a_l'orientation"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_a_l'orientation"
|
||||||
|
style="stroke:#000000;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.37928334,0,0,0.37928334,34.100402,17.553674)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path8166"
|
||||||
|
d="m 357.75,444.40625 c -7.15954,0 -12.96875,5.77796 -12.96875,12.9375 0,7.15954 5.80921,12.96875 12.96875,12.96875 7.15954,0 12.9375,-5.80921 12.9375,-12.96875 0,-7.15954 -5.77796,-12.9375 -12.9375,-12.9375 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.48174286;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6363"
|
||||||
|
d="m 357.75,454.125 c 0.44747,0 0.86227,0.086 1.25,0.25 0.38773,0.164 0.73801,0.39426 1.03125,0.6875 0.29324,0.29324 0.5235,0.64352 0.6875,1.03125 0.164,0.38773 0.25,0.80253 0.25,1.25 0,0.44747 -0.086,0.89352 -0.25,1.28125 -0.164,0.38773 -0.39426,0.73801 -0.6875,1.03125 -0.29324,0.29324 -0.64352,0.5235 -1.03125,0.6875 -0.38773,0.164 -0.80253,0.25 -1.25,0.25 -0.44747,0 -0.89352,-0.086 -1.28125,-0.25 -0.38773,-0.164 -0.73801,-0.39426 -1.03125,-0.6875 -0.29324,-0.29324 -0.5235,-0.64352 -0.6875,-1.03125 -0.164,-0.38773 -0.25,-0.83378 -0.25,-1.28125 0,-0.44747 0.086,-0.86227 0.25,-1.25 0.164,-0.38773 0.39426,-0.73801 0.6875,-1.03125 0.29324,-0.29324 0.64352,-0.5235 1.03125,-0.6875 0.38773,-0.164 0.83378,-0.25 1.28125,-0.25 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.48174286;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer5"
|
||||||
|
inkscape:label="Cours_de_soutien_specifique"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_specifique"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.99615389;stroke:#020002;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.41178012,0,0,0.41178012,37.56977,36.122666)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6358"
|
||||||
|
d="m 356.1875,401.09375 c -8.05454,0 -14.59375,6.53921 -14.59375,14.59375 0,8.05454 6.53921,14.5625 14.59375,14.5625 8.05454,0 14.5625,-6.50796 14.5625,-14.5625 0,-8.05454 -6.50796,-14.59375 -14.5625,-14.59375 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.99615389;stroke:#020002;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6329"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.99615389;stroke:#020002;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6327"
|
||||||
|
d="m 356.3125,413.9375 c 0.44744,0 0.83178,0.17553 1.125,0.46875 0.29322,0.29322 0.46875,0.70881 0.46875,1.15625 0,0.44744 -0.17553,0.83178 -0.46875,1.125 -0.29322,0.29322 -0.67756,0.46875 -1.125,0.46875 -0.44744,0 -0.86303,-0.17553 -1.15625,-0.46875 -0.29322,-0.29322 -0.46875,-0.67756 -0.46875,-1.125 0,-0.44744 0.17553,-0.86303 0.46875,-1.15625 0.29322,-0.29322 0.70881,-0.46875 1.15625,-0.46875 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.99615389;stroke:#020002;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6324"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.99615389;stroke:#020002;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer6"
|
||||||
|
inkscape:label="Cours_techniques"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_techniques"
|
||||||
|
transform="matrix(0.42076685,0,0,-0.42076685,-14.006109,85.183824)"
|
||||||
|
inkscape:label="#g3142"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||||
|
<title
|
||||||
|
id="title3278">template</title>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path87"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.12598443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23606801;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 49.067296,199.32385 c 0,-8.21904 -6.662847,-14.88189 -14.881888,-14.88189 -8.219041,0 -14.881889,6.66285 -14.881889,14.88189 0,8.21904 6.662848,14.88189 14.881889,14.88189 8.219041,0 14.881888,-6.66285 14.881888,-14.88189 z" />
|
||||||
|
<g
|
||||||
|
id="g3119"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
d="m 44.815326,199.32385 c 0,-5.87075 -4.759174,-10.62992 -10.629918,-10.62992 -5.870744,0 -10.629921,4.75917 -10.629921,10.62992 0,5.87074 4.759177,10.62992 10.629921,10.62992 5.870744,0 10.629918,-4.75918 10.629918,-10.62992 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.12598443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23606801;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path85"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer7"
|
||||||
|
inkscape:label="Cours_theoriques"
|
||||||
|
style="display:none">
|
||||||
|
<path
|
||||||
|
d="m 6.7797495,1.3385787 c 0,3.5225563 -2.8555966,6.378149 -6.37815062,6.378149 -3.52255578,0 -6.37814838,-2.8555927 -6.37814838,-6.378149 0,-3.5225563 2.8555926,-6.3781491 6.37814838,-6.3781491 3.52255402,0 6.37815062,2.8555928 6.37815062,6.3781491 z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#010001;stroke-width:0.80359638;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:2.23606801;stroke-dasharray:2.41078917, 2.41078917;stroke-dashoffset:0;stroke-opacity:1;marker-start:none;marker-mid:none;marker-end:none"
|
||||||
|
id="Cours_theoriques"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:label="#path87-1"
|
||||||
|
mask="none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer8"
|
||||||
|
inkscape:label="Enseignants"
|
||||||
|
style="display:none">
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#020202;stroke-width:0.97391373;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="Enseignants"
|
||||||
|
sodipodi:sides="3"
|
||||||
|
sodipodi:cx="0.36393768"
|
||||||
|
sodipodi:cy="2.2478313"
|
||||||
|
sodipodi:r1="6.7946506"
|
||||||
|
sodipodi:r2="3.397325"
|
||||||
|
sodipodi:arg1="0.52606642"
|
||||||
|
sodipodi:arg2="1.573264"
|
||||||
|
inkscape:flatsided="true"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 6.2398764,5.6596667 -5.5287678,5.6306258 0.38070444,-4.5467985 Z"
|
||||||
|
inkscape:transform-center-x="0.013378058"
|
||||||
|
inkscape:transform-center-y="2.6969222"
|
||||||
|
inkscape:label="#path3225-6-7-7" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 13 KiB |
217
src/wiki.js
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
|
||||||
|
// import fetchJsonp from 'fetch-jsonp';
|
||||||
|
import { json } from 'd3-fetch';
|
||||||
|
import { values, map } from 'd3-collection';
|
||||||
|
|
||||||
|
var NS = {
|
||||||
|
main: 0,
|
||||||
|
discussion: 1,
|
||||||
|
template: 10,
|
||||||
|
category: 14,
|
||||||
|
news: 3106,
|
||||||
|
web: 3116
|
||||||
|
}
|
||||||
|
|
||||||
|
function strip_fragment (href) {
|
||||||
|
return href.replace(/#.?$/, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Wiki {
|
||||||
|
constructor (apiurl) {
|
||||||
|
this.apiurl = apiurl;
|
||||||
|
this.pages_by_title = {};
|
||||||
|
this.ns_names = {};
|
||||||
|
for (var key in NS) {
|
||||||
|
var nsid = NS[key];
|
||||||
|
this.ns_names[nsid] = key;
|
||||||
|
}
|
||||||
|
this.siteinfo = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
get_nodes () {
|
||||||
|
var ret = values(this.pages_by_title);
|
||||||
|
ret = ret.filter(p => (!p.redirect && p.ns === 0));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
get_links () {
|
||||||
|
return values(this.links);
|
||||||
|
}
|
||||||
|
|
||||||
|
async init () {
|
||||||
|
await this.get_site_info();
|
||||||
|
}
|
||||||
|
|
||||||
|
async get_site_info () {
|
||||||
|
// https://en.wikipedia.org/w/api.php
|
||||||
|
var url = this.apiurl + "?action=query&meta=siteinfo&siprop=general&format=json&formatversion=2";
|
||||||
|
var data = await json(url);
|
||||||
|
// this.siteinfo = data.query.general;
|
||||||
|
|
||||||
|
this.server = data.query.general.server; // e.g. "http://activearchives.org"
|
||||||
|
this.articlepath = data.query.general.articlepath; // e.g. "/wiki/$1"
|
||||||
|
this.base = data.query.general.base; // e.g. "http://activearchives.org/wiki/Main_Page"
|
||||||
|
// this.sitename = data.query.general.sitename;
|
||||||
|
this.mainpage = data.query.general.mainpage;
|
||||||
|
this.wikibasepat = new RegExp(this.server+this.articlepath.replace(/\$1$/, "(.+)"));
|
||||||
|
|
||||||
|
url = this.apiurl + "?action=query&meta=siteinfo&siprop=namespaces&format=json&formatversion=2";
|
||||||
|
data = await json(url);
|
||||||
|
this.namespaces_by_id = data.query.namespaces;
|
||||||
|
this.namespaces_by_name = {};
|
||||||
|
values(this.namespaces_by_id).forEach(n => {
|
||||||
|
this.namespaces_by_name[n.name] = n;
|
||||||
|
});
|
||||||
|
// create special special entry
|
||||||
|
var special = { name: "Special", id: -17 };
|
||||||
|
this.namespaces_by_name["Special"] = special;
|
||||||
|
this.namespaces_by_id[-17] = special;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
escapeTitle (title) {
|
||||||
|
return encodeURI(title.replace(/ /g, "_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
unescapeTitle (title) {
|
||||||
|
return decodeURI(title.replace(/_/g, " "));
|
||||||
|
}
|
||||||
|
|
||||||
|
wiki_title_to_url (title) {
|
||||||
|
return this.server + this.articlepath.replace(/\$1$/, this.escapeTitle(title));
|
||||||
|
}
|
||||||
|
|
||||||
|
url_to_wiki_title (href) {
|
||||||
|
var m = this.wikibasepat.exec(strip_fragment(href));
|
||||||
|
if (m !== null) {
|
||||||
|
return this.unescapeTitle(m[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sample siteinfo, see: http://activearchives.org/mw/api.php?action=query&meta=siteinfo&formatversion=2&format=json */
|
||||||
|
|
||||||
|
get_page (url) {
|
||||||
|
var title = this.url_to_wiki_title(url);
|
||||||
|
if (title) {
|
||||||
|
return this.get_page_by_title(title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get_page_by_title (title) {
|
||||||
|
var p = this.pages_by_title[title];
|
||||||
|
if (p) {
|
||||||
|
return p;
|
||||||
|
} else {
|
||||||
|
var cpos = title.indexOf(":"),
|
||||||
|
name = title,
|
||||||
|
namespace = "";
|
||||||
|
if (cpos >= 0) {
|
||||||
|
namespace = title.substring(0, cpos);
|
||||||
|
name = title.substring(cpos+1);
|
||||||
|
}
|
||||||
|
p = new Page(this, {title: title, name: name, ns: this.namespaces_by_name[namespace].id});
|
||||||
|
this.pages_by_title[title] = p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
page_for_object (n, merge_data) {
|
||||||
|
if (merge_data === undefined) { merge_data = true; }
|
||||||
|
var title = n.title,
|
||||||
|
p = this.pages_by_title[title];
|
||||||
|
if (p) {
|
||||||
|
if (merge_data) { p.merge_data(n); }
|
||||||
|
return p;
|
||||||
|
} else {
|
||||||
|
p = new Page(this, n);
|
||||||
|
this.pages_by_title[title] = p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get_ns_classname (nsid) {
|
||||||
|
// console.log("get_ns_classname", nsid, this.ns_names[nsid]);
|
||||||
|
var ret = this.ns_names[nsid];
|
||||||
|
console.log("classname", ret);
|
||||||
|
if (ret === undefined) { console.log("warning classname undefined for ns", nsid); }
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
union (p1, p2) {
|
||||||
|
var union = map(p1, d=>d.title);
|
||||||
|
for (var i=0, l=p2.length; i<l; i++) {
|
||||||
|
var x = p2[i];
|
||||||
|
union.set(x.title, x);
|
||||||
|
}
|
||||||
|
return union.values();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Page {
|
||||||
|
constructor (wiki, node) {
|
||||||
|
this.wiki = wiki;
|
||||||
|
this.merge_data(node);
|
||||||
|
}
|
||||||
|
url () {
|
||||||
|
// return this.wiki.apiurl.replace("api.php", "index.php")+"/"+encodeURIComponent(this.title);
|
||||||
|
// return this.wiki.apiurl.replace("api.php", "index.php")+"/"+encodeURIComponent(this.title);
|
||||||
|
return this.wiki.wiki_title_to_url(this.title);
|
||||||
|
}
|
||||||
|
merge_data (node) {
|
||||||
|
for (var key in node) {
|
||||||
|
if (node.hasOwnProperty(key)) {
|
||||||
|
this[key] = node[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// api.php?action=query&prop=categories&titles=Albert%20Einstein
|
||||||
|
async get_prop (pname, prefix) {
|
||||||
|
var ret = [];
|
||||||
|
var url = this.wiki.apiurl+"?action=query&format=json&formatversion=2&prop="+pname+"&titles="+encodeURIComponent(this.title);
|
||||||
|
while (true) {
|
||||||
|
var data = await json(url);
|
||||||
|
// var json = await data.json();
|
||||||
|
if (data.query.pages[0]) {
|
||||||
|
var p = data.query.pages[0];
|
||||||
|
// extract any missing page info
|
||||||
|
if (p.ns && !this.ns) { this.ns = p.ns; }
|
||||||
|
if (p.pageid && !this.pageid) { this.pageid = p.pageid; }
|
||||||
|
}
|
||||||
|
if (data.query.pages[0][pname]) {
|
||||||
|
ret.push.apply(ret, data.query.pages[0][pname]);
|
||||||
|
}
|
||||||
|
if (!data.continue) { break; }
|
||||||
|
url = this.wiki.apiurl+"?action=query&format=json&formatversion=2&prop="+pname+"&"+prefix+"continue="+data.continue[prefix+"continue"]+"&titles="+encodeURIComponent(this.title);
|
||||||
|
}
|
||||||
|
ret = ret.map(x => this.wiki.page_for_object(x));
|
||||||
|
// console.log("get_prop", pname, prefix, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
async get_list (lname, prefix, appendstr) {
|
||||||
|
var ret = [];
|
||||||
|
var baseurl = this.wiki.apiurl+"?action=query&list="+lname+"&format=json&formatversion=2&"+prefix+"title="+encodeURIComponent(this.title)+(appendstr || "");
|
||||||
|
var url = baseurl;
|
||||||
|
while (true) {
|
||||||
|
var data = await json(url);
|
||||||
|
if (data.query[lname]) {
|
||||||
|
ret.push.apply(ret, data.query[lname]);
|
||||||
|
}
|
||||||
|
if (!data.continue) { break; }
|
||||||
|
url = baseurl+"&"+prefix+"continue="+data.continue[prefix+"continue"];
|
||||||
|
}
|
||||||
|
ret = ret.map(x => this.wiki.page_for_object(x));
|
||||||
|
// console.log("get_prop", pname, prefix, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
async get_links () {
|
||||||
|
return await this.get_prop("links", "pl");
|
||||||
|
}
|
||||||
|
|
||||||
|
async get_linkshere () {
|
||||||
|
return await this.get_prop("linkshere", "lh");
|
||||||
|
}
|
||||||
|
|
||||||
|
async get_categorymembers () {
|
||||||
|
return await this.get_list("categorymembers", "cm", "&cmtype=page");
|
||||||
|
}
|
||||||
|
}
|
||||||
596
src/wikimap.js
Normal file
@@ -0,0 +1,596 @@
|
|||||||
|
import { event, select, selectAll} from 'd3-selection';
|
||||||
|
import { values, set, map } from 'd3-collection';
|
||||||
|
import { drag } from 'd3-drag';
|
||||||
|
import { zoom, zoomIdentity, zoomTransform } from 'd3-zoom';
|
||||||
|
import { forceSimulation, forceLink, forceManyBody, forceCenter, forceX, forceY, forceRadial } from 'd3-force';
|
||||||
|
import { Wiki, Page } from './wiki.js';
|
||||||
|
import EventEmitter from 'eventemitter3';
|
||||||
|
import { json } from 'd3-fetch';
|
||||||
|
import { mobilecheck } from './mobilecheck.js';
|
||||||
|
|
||||||
|
// import { ForceNet } from './forcenet.js';
|
||||||
|
|
||||||
|
export class Map {
|
||||||
|
|
||||||
|
constructor (opts) {
|
||||||
|
var width = 600,
|
||||||
|
height = 600;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.zoom_level = opts.zoom || 1.5;
|
||||||
|
this.apiurl = opts.apiurl;
|
||||||
|
this.categorylabel = opts.categorylabel || "Category";
|
||||||
|
this.symbols_src = opts.symbols;
|
||||||
|
this.categorydiv = select(opts.categorydiv);
|
||||||
|
|
||||||
|
this.wiki = new Wiki(this.apiurl);
|
||||||
|
|
||||||
|
this.events = new EventEmitter();
|
||||||
|
this.active_page = null;
|
||||||
|
// this.symbols = symbols;
|
||||||
|
// this.net = new ForceNet({});
|
||||||
|
// this.net.on("nodeclick", this.nodeclick.bind(this));
|
||||||
|
this.svg = null;
|
||||||
|
this.init_svg(opts.svg);
|
||||||
|
this.historylinks = {};
|
||||||
|
this.links = null;
|
||||||
|
this.highlight_category = null;
|
||||||
|
this.show_history = true;
|
||||||
|
this.loaded = false;
|
||||||
|
this.active_url = null;
|
||||||
|
this.active_page = null;
|
||||||
|
|
||||||
|
this.simulation = forceSimulation()
|
||||||
|
//.velocityDecay(0.1)
|
||||||
|
.force("link", forceLink().id(d => d.title))
|
||||||
|
.force("charge", forceManyBody())
|
||||||
|
.force("radial", forceRadial(180, width/2, height/2));
|
||||||
|
// .force("center", forceCenter(width / 2, height / 2));
|
||||||
|
|
||||||
|
this.all_links_by_key = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
async init () {
|
||||||
|
this.symbols = await json(this.symbols_src);
|
||||||
|
await this.wiki.init();
|
||||||
|
|
||||||
|
// load categories & set their page symbols
|
||||||
|
for (let i=0, l=this.symbols.length; i<l; i++) {
|
||||||
|
let sym = this.symbols[i];
|
||||||
|
if (sym.key === "default") {
|
||||||
|
let page = this.wiki.get_page_by_title("Special:AllPages");
|
||||||
|
sym.page = page;
|
||||||
|
} else {
|
||||||
|
let cat = this.wiki.get_page_by_title(this.categorylabel+":"+sym.key);
|
||||||
|
sym.page = cat;
|
||||||
|
cat.pages = await cat.get_categorymembers();
|
||||||
|
// console.log("got cat pages", cat);
|
||||||
|
for (let j=0, jlen=cat.pages.length; j<jlen; j++) {
|
||||||
|
let cp = cat.pages[j];
|
||||||
|
cp.symbol = sym.symbol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// create the categories
|
||||||
|
let cat = this.categorydiv
|
||||||
|
.selectAll("div.cat")
|
||||||
|
.data(this.symbols)
|
||||||
|
.enter()
|
||||||
|
.append("div")
|
||||||
|
.attr("class", "cat icon");
|
||||||
|
cat.append("span")
|
||||||
|
.attr("class", "icon")
|
||||||
|
.style("background-image", d => "url("+d.icon+")");
|
||||||
|
cat.append("a")
|
||||||
|
.attr("class", "label")
|
||||||
|
.html(d => d.key === "default" ? "Page" : d.key)
|
||||||
|
.attr("href", "#").on("click", d => {
|
||||||
|
event.preventDefault();
|
||||||
|
this.category_click(d);
|
||||||
|
})
|
||||||
|
cat.append("span").attr("class", "count").html(d => d.tcount)
|
||||||
|
|
||||||
|
var set_active_url_from_window = () => {
|
||||||
|
var title = this.wiki.unescapeTitle(window.location.hash.substring(1)),
|
||||||
|
page = this.wiki.get_page_by_title(title),
|
||||||
|
url = page.url();
|
||||||
|
console.log("wikimap init", page.title, url);
|
||||||
|
this.set_active_url(url);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.loaded = true;
|
||||||
|
if (window.location.hash) {
|
||||||
|
set_active_url_from_window();
|
||||||
|
} else if (this.active_url) {
|
||||||
|
this.set_active_url(this.active_url);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("hashchange", e => {
|
||||||
|
console.log("hashchange");
|
||||||
|
set_active_url_from_window()
|
||||||
|
});
|
||||||
|
/*
|
||||||
|
window.addEventListener("popstate", e => {
|
||||||
|
// console.log("popstate", e);
|
||||||
|
console.log("popstate: " + document.location + ", state: " + JSON.stringify(e.state));
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
on (message, callback, context) {
|
||||||
|
this.events.on(message, callback, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
async json (src) {
|
||||||
|
// expose d3's json method
|
||||||
|
return await json(src);
|
||||||
|
}
|
||||||
|
|
||||||
|
init_svg (svg) {
|
||||||
|
this.svg = select(svg || "svg");
|
||||||
|
this.zoom = zoom()
|
||||||
|
.scaleExtent([1 / 16, 16])
|
||||||
|
.on("zoom", () => {
|
||||||
|
this.content.attr("transform", event.transform);
|
||||||
|
// console.log("transform", event.transform, this.content.attr("transform"));
|
||||||
|
})
|
||||||
|
.filter(function () {
|
||||||
|
// console.log("filter", event);
|
||||||
|
if (event.touches && event.touches.length == 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.rect = this.svg.append("rect")
|
||||||
|
.attr("width", 1000)
|
||||||
|
.attr("height", 1000)
|
||||||
|
.style("fill", "none");
|
||||||
|
if (!mobilecheck()) {
|
||||||
|
this.rect.style("pointer-events", "all")
|
||||||
|
.call(this.zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.content = this.svg.append("g")
|
||||||
|
.attr("id", "content"),
|
||||||
|
this.linksg = this.content.append("g")
|
||||||
|
.attr("class", "links");
|
||||||
|
this.nodesg = this.content.append("g")
|
||||||
|
.attr("class", "nodes");
|
||||||
|
|
||||||
|
// DEBUGGING
|
||||||
|
this.svg.on("click", x => {
|
||||||
|
// console.log("svg click", event.target);
|
||||||
|
if (event.target == this.svg.node()) {
|
||||||
|
console.log("(debug) BACKGROUND CLICK", this.active_page.x, this.active_page.y);
|
||||||
|
this.centerOnItem(this.active_page);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
dragstarted (d) {
|
||||||
|
if (!event.active) this.simulation.alphaTarget(0.3).restart();
|
||||||
|
// this.simulation.restart();
|
||||||
|
d.fx = d.x;
|
||||||
|
d.fy = d.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
dragged (d) {
|
||||||
|
d.fx = event.x;
|
||||||
|
d.fy = event.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
dragended(d) {
|
||||||
|
if (!event.active) this.simulation.alphaTarget(0);
|
||||||
|
d.fx = null;
|
||||||
|
d.fy = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
|
||||||
|
link_key (p1, p2) {
|
||||||
|
return (p1.title < p2.title) ?
|
||||||
|
("link_"+p1.title+"_"+p2.title) :
|
||||||
|
("link_"+p2.title+"_"+p1.title);
|
||||||
|
}
|
||||||
|
|
||||||
|
make_link (p1, p2) {
|
||||||
|
return (p1.title < p2.title) ?
|
||||||
|
{source: p1, target: p2 } :
|
||||||
|
{source: p2, target: p1 };
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_link (from_page, to_page) {
|
||||||
|
var lkey = this.link_key(from_page, to_page),
|
||||||
|
ret = this.all_links_by_key[lkey];
|
||||||
|
if (ret === undefined) {
|
||||||
|
ret = this.make_link(from_page, to_page);
|
||||||
|
this.all_links_by_key[lkey] = ret;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// function called on iframe load
|
||||||
|
async set_active_url (url) {
|
||||||
|
console.log("wikimap.set_active_url", url);
|
||||||
|
this.active_url = url;
|
||||||
|
if (this.loaded) {
|
||||||
|
var page = this.wiki.get_page(this.active_url);
|
||||||
|
if (page) {
|
||||||
|
// console.log("calling replaceState", page.title);
|
||||||
|
window.history.replaceState (null, null, "#"+this.wiki.escapeTitle(page.title));
|
||||||
|
// window.location.hash = this.wiki.escapeTitle(page.title);
|
||||||
|
this.set_active_page(page);
|
||||||
|
} else {
|
||||||
|
console.log("wikimap: set_active_url: NO PAGE FOR", url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
linked_nodes_set_active (page, active) {
|
||||||
|
// deactivate linked links/nodes
|
||||||
|
for (var key in this.all_links_by_key) {
|
||||||
|
if (this.all_links_by_key.hasOwnProperty(key)) {
|
||||||
|
var link = this.all_links_by_key[key];
|
||||||
|
if (link.source == page || link.target == page) {
|
||||||
|
link.active2 = active;
|
||||||
|
link.source.active2 = active;
|
||||||
|
link.target.active2 = active;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clear_highlight_category () {
|
||||||
|
if (this.highlight_category) {
|
||||||
|
// cleanup old pages
|
||||||
|
this.highlight_category.highlight = false;
|
||||||
|
this.highlight_category.pages.forEach(d => d.highlight = false);
|
||||||
|
}
|
||||||
|
if (this.active_page == this.highlight_category) {
|
||||||
|
this.active_page = null;
|
||||||
|
}
|
||||||
|
this.highlight_category = null;
|
||||||
|
this.categorydiv
|
||||||
|
.selectAll("div.cat")
|
||||||
|
.classed("highlight", d=> d.page ? d.page.highlight : false);
|
||||||
|
var data = {nodes: this.get_nodes(), links: values(this.all_links_by_key)};
|
||||||
|
this.update_node_counts()
|
||||||
|
this.update_graph(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
get_nodes () {
|
||||||
|
var nodes = this.wiki.get_nodes();
|
||||||
|
nodes = nodes.filter(d => d.linked || d.active || d.active2 || d.highlight);
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
async set_active_page (page) {
|
||||||
|
console.log("wikimap: set_active_page:", page);
|
||||||
|
if (page === this.active_page) {
|
||||||
|
// console.log("page is already the active page", page, this.active_page);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// window.location.hash = this.wiki.escapeTitle(page.title);
|
||||||
|
// window.history.pushState ({pagetitle: page.title}, page.title, "/m/"+this.wiki.escapeTitle(page.title));
|
||||||
|
// cleanup old
|
||||||
|
if (this.active_page) {
|
||||||
|
this.active_page.fx = undefined;
|
||||||
|
this.active_page.fy = undefined;
|
||||||
|
this.active_page.active = false;
|
||||||
|
// deactivate linked links/nodes
|
||||||
|
this.linked_nodes_set_active(this.active_page, false);
|
||||||
|
// ENSURE (HISTORY) LINK TO PREVIOUS NODE AND CURRENT
|
||||||
|
//var link = this.ensure_link(this.active_page, page);
|
||||||
|
// link.visited = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (page.ns == 14) {
|
||||||
|
this.active_page = page;
|
||||||
|
if (!page.pages) {
|
||||||
|
page.pages = await page.get_categorymembers();
|
||||||
|
}
|
||||||
|
if (this.highlight_category) {
|
||||||
|
// cleanup old pages
|
||||||
|
this.highlight_category.highlight = false;
|
||||||
|
this.highlight_category.pages.forEach(d => d.highlight = false);
|
||||||
|
}
|
||||||
|
this.highlight_category = page;
|
||||||
|
this.highlight_category.highlight = true;
|
||||||
|
this.highlight_category.pages.forEach(d => d.highlight = true);
|
||||||
|
// this.update_nodes();
|
||||||
|
|
||||||
|
this.categorydiv
|
||||||
|
.selectAll("div.cat")
|
||||||
|
.classed("highlight", d=> d.page ? d.page.highlight : false);
|
||||||
|
// repetition of below... (could be improved)
|
||||||
|
// this.events.emit("page", this.active_page);
|
||||||
|
// var data = {nodes: this.wiki.get_nodes(), links: values(this.all_links_by_key)};
|
||||||
|
// this.update_node_counts()
|
||||||
|
// this.update_graph(data);
|
||||||
|
|
||||||
|
// return;
|
||||||
|
} else if (page.ns !== 0) {
|
||||||
|
console.log("SPECIAL PAGE", page);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// LOAD/ENSURE PAGE LINKS
|
||||||
|
var links_out = await page.get_links();
|
||||||
|
links_out = links_out.filter(p => (!p.redirect && p.ns == 0));
|
||||||
|
// console.log("links_out", links_out);
|
||||||
|
var links_in = await page.get_linkshere();
|
||||||
|
links_in = links_in.filter(p => (!p.redirect && p.ns == 0));
|
||||||
|
// console.log("links_in", links_in);
|
||||||
|
links_out.forEach(p => {
|
||||||
|
this.ensure_link(page, p).wiki = true;
|
||||||
|
});
|
||||||
|
links_in.forEach(p => {
|
||||||
|
this.ensure_link(p, page).wiki = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.active_page = page;
|
||||||
|
// console.log("fixing active page", this.active_page);
|
||||||
|
if (this.active_page.x === undefined) {
|
||||||
|
this.active_page.x = this.width/2;
|
||||||
|
this.active_page.y = this.height/2;
|
||||||
|
}
|
||||||
|
this.active_page.fx = this.active_page.x;
|
||||||
|
this.active_page.fy = this.active_page.y;
|
||||||
|
this.active_page.active = true;
|
||||||
|
this.linked_nodes_set_active(this.active_page, true);
|
||||||
|
|
||||||
|
//setTimeout(() => {
|
||||||
|
this.centerOnItem(page, 1000);
|
||||||
|
//}, 1000);
|
||||||
|
|
||||||
|
this.events.emit("page", this.active_page);
|
||||||
|
var data = {nodes: this.get_nodes(), links: values(this.all_links_by_key)};
|
||||||
|
this.update_node_counts()
|
||||||
|
this.update_graph(data);
|
||||||
|
// this.update_nodes();
|
||||||
|
// this.update_forces();
|
||||||
|
}
|
||||||
|
|
||||||
|
update_node_counts () {
|
||||||
|
var nodes = this.wiki.get_nodes();
|
||||||
|
for (let i=0, len=nodes.length; i<len; i++) {
|
||||||
|
nodes[i].count = 0;
|
||||||
|
}
|
||||||
|
for (var key in this.all_links_by_key) {
|
||||||
|
if (this.all_links_by_key.hasOwnProperty(key)) {
|
||||||
|
var link = this.all_links_by_key[key];
|
||||||
|
link.source.count += 1;
|
||||||
|
link.target.count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
category_click (d) {
|
||||||
|
console.log("category click", d);
|
||||||
|
if (d.page) {
|
||||||
|
if (this.highlight_category == d.page) {
|
||||||
|
this.clear_highlight_category();
|
||||||
|
} else {
|
||||||
|
this.set_active_page(d.page);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
set_show_history (value) {
|
||||||
|
console.log("wikimap.show_history", value);
|
||||||
|
if (this.show_history !== value) {
|
||||||
|
this.show_history = value;
|
||||||
|
if (this.show_history) {
|
||||||
|
let graph = {};
|
||||||
|
graph.nodes = this.nodes;
|
||||||
|
graph.links = this.links.slice();
|
||||||
|
for (var key in this.historylinks) {
|
||||||
|
graph.links.push(this.historylinks[key])
|
||||||
|
}
|
||||||
|
this.update_graph(graph);
|
||||||
|
} else {
|
||||||
|
let graph = {};
|
||||||
|
graph.nodes = this.nodes;
|
||||||
|
graph.links = this.links;
|
||||||
|
this.update_graph(graph);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
update_graph (graph) {
|
||||||
|
// console.log("UPDATE GRAPH", graph.nodes.length, graph.links.length);
|
||||||
|
var link = this.linksg.selectAll("line")
|
||||||
|
.data(graph.links, d => { return this.link_key(d.source.title, d.target.title) });
|
||||||
|
var link_enter = link.enter()
|
||||||
|
.append("line");
|
||||||
|
|
||||||
|
link.exit().each(d => {
|
||||||
|
d.source.linked = false;
|
||||||
|
d.target.linked = false;
|
||||||
|
}).remove();
|
||||||
|
|
||||||
|
link_enter.merge(link).each(d => {
|
||||||
|
d.source.linked = true;
|
||||||
|
d.target.linked = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
var node = this.nodesg
|
||||||
|
.selectAll("g.page")
|
||||||
|
.data(graph.nodes, function (d) { return d.title });
|
||||||
|
|
||||||
|
node.exit().remove();
|
||||||
|
|
||||||
|
var that = this;
|
||||||
|
var node_enter = node.enter().append("g")
|
||||||
|
.attr("class", "page")
|
||||||
|
// .attr("class", d=>"page "+this.wiki.get_ns_classname(d.ns))
|
||||||
|
.on("click", d => {
|
||||||
|
// that.events.emit("nodeclick", d, this);
|
||||||
|
this.set_active_page(d);
|
||||||
|
// this.set_active_node(d.title);
|
||||||
|
})
|
||||||
|
.on("mouseover", function (d) {
|
||||||
|
// console.log("mouseover", this);
|
||||||
|
// d.mouse = true;
|
||||||
|
select(this).classed("mouse", true);
|
||||||
|
// that.update_nodes();
|
||||||
|
})
|
||||||
|
.on("mouseout", function (d) {
|
||||||
|
// console.log("mouseout", this);
|
||||||
|
// d.mouse = false;
|
||||||
|
select(this).classed("mouse", false);
|
||||||
|
// that.update_nodes();
|
||||||
|
})
|
||||||
|
.call(drag()
|
||||||
|
.on("start", this.dragstarted.bind(this))
|
||||||
|
.on("drag", this.dragged.bind(this))
|
||||||
|
.on("end", this.dragended.bind(this)));
|
||||||
|
|
||||||
|
|
||||||
|
node_enter.append("use")
|
||||||
|
.attr("xlink:href", d => d.symbol || "symbols.svg#Main")
|
||||||
|
.attr("class", "testcolor");
|
||||||
|
|
||||||
|
// {
|
||||||
|
// for (var i=0, l=d.cats.length; i<l; i++) {
|
||||||
|
// if (this.symbols[d.cats[i]]) {
|
||||||
|
// return this.symbols[d.cats[i]];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return this.symbols.default || "default";
|
||||||
|
// });
|
||||||
|
|
||||||
|
// node_enter.append("circle")
|
||||||
|
// .attr("r", 6);
|
||||||
|
|
||||||
|
node_enter.append("text")
|
||||||
|
.text(d => d.title)
|
||||||
|
.attr("x", 10);
|
||||||
|
|
||||||
|
//node_enter.append("title")
|
||||||
|
// .text(function(d) { return d.title; });
|
||||||
|
|
||||||
|
node = node_enter.merge(node);
|
||||||
|
link = link_enter.merge(link);
|
||||||
|
|
||||||
|
node.classed("active", d=>d.active);
|
||||||
|
|
||||||
|
|
||||||
|
this.simulation
|
||||||
|
.nodes(graph.nodes)
|
||||||
|
.on("tick", ticked);
|
||||||
|
|
||||||
|
this.simulation.force("link")
|
||||||
|
.links(graph.links);
|
||||||
|
|
||||||
|
this.simulation.force("radial").radius(d => (d.linked || d.highlight) ? null : 200);
|
||||||
|
|
||||||
|
function ticked() {
|
||||||
|
link
|
||||||
|
.attr("x1", function(d) { return d.source.x; })
|
||||||
|
.attr("y1", function(d) { return d.source.y; })
|
||||||
|
.attr("x2", function(d) { return d.target.x; })
|
||||||
|
.attr("y2", function(d) { return d.target.y; });
|
||||||
|
|
||||||
|
// node
|
||||||
|
// .attr("cx", function(d) { return d.x; })
|
||||||
|
// .attr("cy", function(d) { return d.y; });
|
||||||
|
node
|
||||||
|
.attr("transform", d => `translate(${d.x},${d.y})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// document.querySelector("#page").style.background = "purple";
|
||||||
|
// return;
|
||||||
|
|
||||||
|
this.update_nodes();
|
||||||
|
this.update_forces();
|
||||||
|
// this.simulation.alphaTarget(0.3).restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
update_nodes () {
|
||||||
|
var nodes = this.nodesg.selectAll("g.page");
|
||||||
|
// console.log("update_nodes", nodes.size());
|
||||||
|
nodes.classed("mouse", d=>d.mouse);
|
||||||
|
nodes.classed("active", d=>d.active);
|
||||||
|
nodes.classed("active2", d=>d.active2);
|
||||||
|
nodes.classed("highlight", d=>d.highlight);
|
||||||
|
nodes.sort((a, b) => {
|
||||||
|
// console.log("sort", a, b);
|
||||||
|
var x = a.mouse ? 10 : (a.active ? 8 : (a.active2 ? 5 : 0)),
|
||||||
|
y = b.mouse ? 10 : (b.active ? 8 : (b.active2 ? 5 : 0));
|
||||||
|
return x - y;
|
||||||
|
});
|
||||||
|
var links = this.linksg.selectAll("line");
|
||||||
|
links.classed("active2", d=>d.active2);
|
||||||
|
links.classed("history", d=>d.type == "history");
|
||||||
|
links.sort((a, b) => {
|
||||||
|
// console.log("sort", a, b);
|
||||||
|
var x = a.active2 ? 10 : (a.history ? 5 : 0),
|
||||||
|
y = b.active2 ? 10 : (b.history ? 5 : 0);
|
||||||
|
return x - y;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
update_forces () {
|
||||||
|
var force = this.simulation.force("link");
|
||||||
|
// console.log("update_forces:force", force);
|
||||||
|
this.simulation.force("link").strength(d => {
|
||||||
|
if (d.source.active || d.target.active) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
// same as d3.force's defaultStrength
|
||||||
|
return 0.5 * (1 / Math.min(d.source.count, d.target.count));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// this.simulation.alphaTarget(0.3).restart();
|
||||||
|
this.simulation.alpha(0.5).restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
centerOnItem(item, duration) {
|
||||||
|
var bounds = this.svg.node().getBoundingClientRect();
|
||||||
|
var curt = zoomTransform(this.rect.node());
|
||||||
|
// console.log("centerOnItem", this.zoom_level, "item", item);
|
||||||
|
var zoom_level = this.zoom_level ? this.zoom_level : curt.k;
|
||||||
|
var ITEM_SIZE = 36;
|
||||||
|
if (item && item.x !== undefined) {
|
||||||
|
this.zoom.translateTo(duration ? this.rect.transition().duration(duration) : this.rect, item.x, item.y);
|
||||||
|
// this.zoom.translateTo(this.rect, item.x, item.y);
|
||||||
|
/*
|
||||||
|
var transform = function () {
|
||||||
|
return zoomIdentity
|
||||||
|
.translate(bounds.width / 2, bounds.height / 2)
|
||||||
|
.scale(zoom_level)
|
||||||
|
.translate(-item.x, -item.y);
|
||||||
|
};
|
||||||
|
if (duration) {
|
||||||
|
this.rect.transition().duration(duration).call(this.zoom.transform, transform);
|
||||||
|
} else {
|
||||||
|
this.rect.call(this.zoom.transform, transform);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
|
console.log("NO ITEM");
|
||||||
|
var transform = function () {
|
||||||
|
return zoomIdentity
|
||||||
|
.scale(1);
|
||||||
|
};
|
||||||
|
this.rect.call(this.zoom.transform, transform);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_zoom (f, transition) {
|
||||||
|
this.rect.call(this.zoom.scaleBy, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
zoom_in () {
|
||||||
|
this.do_zoom(1.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
zoom_out () {
|
||||||
|
this.do_zoom(1/1.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
315
style.00.css
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/typo/Combined/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'combinedregular';
|
||||||
|
src: url('/typo/Combined/web/combined.eot');
|
||||||
|
src: url('/typo/Combined/web/combined.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('/typo/Combined/web/combined.woff2') format('woff2'),
|
||||||
|
url('/typo/Combined/web/combined.woff') format('woff'),
|
||||||
|
url('/typo/Combined/web/combined.ttf') format('truetype'),
|
||||||
|
url('/typo/Combined/web/combined.svg#combinedregular') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'wremena';
|
||||||
|
src: url('typo/Wremema/webfont/wremena_bold-webfont.woff2') format('woff2'),
|
||||||
|
url('typo/Wremema/webfont/wremena_bold-webfont.woff') format('woff'),
|
||||||
|
url('typo/Wremema/webfont/wremena_bold-webfont.ttf') format('truetype'),
|
||||||
|
url('typo/Wremema/webfont/wremena_bold-webfont.svg#wremenabold') format('svg');
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'wremena';
|
||||||
|
src: url('typo/Wremema/webfont/wremena_regular-webfont.woff2') format('woff2'),
|
||||||
|
url('typo/Wremema/webfont/wremena_regular-webfont.woff') format('woff'),
|
||||||
|
url('typo/Wremema/webfont/wremena_regular-webfont.ttf') format('truetype'),
|
||||||
|
url('typo/Wremema/webfont/wremena_regular-webfont.svg#wremenaregular') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'wremena';
|
||||||
|
src: url('typo/Wremema/webfont/wremena_light-webfont.woff2') format('woff2'),
|
||||||
|
url('typo/Wremema/webfont/wremena_light-webfont.woff') format('woff'),
|
||||||
|
url('typo/Wremema/webfont/wremena_light-webfont.ttf') format('truetype'),
|
||||||
|
url('typo/Wremema/webfont/wremena_light-webfont.svg#wremenalight') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Coupeur Monospace Bold';
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.svg#fcf36b8f65c0f0737cd36a2be6922659') format('svg'); /* Legacy iOS */
|
||||||
|
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Coupeur Monospace Normal';
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.svg#4b219f539d302a6ffd9fd41e2da16172') format('svg'); /* Legacy iOS */
|
||||||
|
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background: #f1f2f3;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.links line {
|
||||||
|
/*stroke: #aaa;*/
|
||||||
|
stroke: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line.active2 {
|
||||||
|
stroke: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line.history {
|
||||||
|
stroke: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
stroke: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category circle {
|
||||||
|
fill: yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.web circle {
|
||||||
|
fill: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news circle {
|
||||||
|
fill: lightgray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.template circle {
|
||||||
|
fill: lightgreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discussion circle {
|
||||||
|
fill: aqua;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
svg {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0; right: 0; bottom: 0;
|
||||||
|
font: 10px sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.page {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.page text {
|
||||||
|
visibility: hidden;
|
||||||
|
fill: #222;
|
||||||
|
font: 10px sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.active text {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.mouse text {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
use {
|
||||||
|
fill: #EEE;
|
||||||
|
stroke: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active text {
|
||||||
|
stroke: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active2 use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: orange;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Categories */
|
||||||
|
|
||||||
|
#cats {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
#cats .ocontents {
|
||||||
|
background: #FFFFFFDD;
|
||||||
|
display: none;
|
||||||
|
/*padding: 5px;*/
|
||||||
|
/*box-sizing: border-box;*/
|
||||||
|
}
|
||||||
|
#cats.expanded .ocontents {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* showall class */
|
||||||
|
#cats div.cat {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#cats div.cat span.spacing {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#cats div.cat.icon {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#cats.showall div.cat {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#cats.showall div.cat span.spacing {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats .contents {
|
||||||
|
overflow: auto;
|
||||||
|
height: 50vh;
|
||||||
|
min-width: 300px;
|
||||||
|
}
|
||||||
|
#cats .contents .scroll {}
|
||||||
|
|
||||||
|
#cats .botright {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats .botright .thumb {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
background: #FFFFFFDD;
|
||||||
|
}
|
||||||
|
#cats div.cat span.icon {
|
||||||
|
position: relative;
|
||||||
|
top: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
#cats div.cat span.count {
|
||||||
|
padding: 0px 3px;
|
||||||
|
background: #DDD;
|
||||||
|
color: #444;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
#cats div.cat a {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; right: 0; top: 0;
|
||||||
|
height: 160vh;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#page.touched {
|
||||||
|
background: #444;
|
||||||
|
}
|
||||||
|
#bottompane {
|
||||||
|
position: absolute;
|
||||||
|
top: 60vh;
|
||||||
|
left: 0; right: 0;
|
||||||
|
height: 100vh;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
#bottompane #bottompage {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; right: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 800px;
|
||||||
|
background: white;
|
||||||
|
border: 1px solid #E6E6E6;
|
||||||
|
border-radius: 10px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
#bottompane #menubar {
|
||||||
|
height: 48px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
}
|
||||||
|
#wikiframediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 48px;
|
||||||
|
right: 0; bottom: 0;
|
||||||
|
}
|
||||||
|
#bottompane iframe {
|
||||||
|
border: none;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
#debug {
|
||||||
|
width: 300px;
|
||||||
|
font-size: 10px;
|
||||||
|
height: 8em;
|
||||||
|
overflow: auto;
|
||||||
|
position: absolute; left: 10px; top: 10px; z-index:23
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchinput {
|
||||||
|
min-width: 220px;
|
||||||
|
font-family: "combinedregular";
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
#menubar {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#menubar img {
|
||||||
|
position: relative;
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
588
style.css
Normal file
@@ -0,0 +1,588 @@
|
|||||||
|
/* ------- F O N T E S ------- */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Vega";
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.otf');
|
||||||
|
src: url('/mw/skins/foreground/assets/fonts/Vega-Regular.ttf') format("truetype");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular-Webfont.svg") format("svg");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff") format("woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/Vega-Regular.woff2") format("woff2");
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: Lucette;
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/otf/Lucette-Regular.otf");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/ttf/Lucette-Regular.ttf");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/woff/Lucette-Regular.woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/woff2/Lucette-Regular.woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: Lucette;
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/otf/Lucette-Regularitalic.otf");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/ttf/Lucette-Regularitalic.ttf");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/woff/Lucette-Regularitalic.woff");
|
||||||
|
src: url("/mw/skins/foreground/assets/fonts/LUCETTE/font/woff2/Lucette-Regularitalic.woff2");
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family:'FontAwesome';
|
||||||
|
src:url(/mw/skins/foreground/assets/fonts/fontawesome-webfont.eot?32400);
|
||||||
|
src:url(/mw/skins/foreground/assets/fonts/fontawesome-webfont.eot?32400) format('embedded-opentype'),url(/mw/skins/foreground/assets/fonts/fontawesome-webfont.woff2?db812) format('woff2'),url(/mw/skins/foreground/assets/fonts/fontawesome-webfont.woff?a3572) format('woff'),url(/mw/skins/foreground/assets/fonts/fontawesome-webfont.ttf?a3de2) format('truetype'),url(/mw/skins/foreground/assets/fonts/fontawesome-webfont.svg?f775f) format('svg');
|
||||||
|
font-weight:normal;
|
||||||
|
font-style:normal
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Global variables. */
|
||||||
|
:root,
|
||||||
|
::backdrop {
|
||||||
|
/* Set sans-serif & mono fonts */
|
||||||
|
--sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
|
||||||
|
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
|
||||||
|
"Helvetica Neue", sans-serif;
|
||||||
|
--mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
|
||||||
|
--standard-border-radius: 5px;
|
||||||
|
|
||||||
|
/* Default (light) theme */
|
||||||
|
--bg: #fff;
|
||||||
|
--accent-bg: #f5f7ff;
|
||||||
|
--text: #212121;
|
||||||
|
--text-light: #585858;
|
||||||
|
--border: #898EA4;
|
||||||
|
--accent: #0d47a1;
|
||||||
|
--accent-hover: #1266e2;
|
||||||
|
--accent-text: var(--bg);
|
||||||
|
--code: #d81b60;
|
||||||
|
--preformatted: #444;
|
||||||
|
--marked: #ffdd33;
|
||||||
|
--disabled: #efefef;
|
||||||
|
|
||||||
|
--font-title: Giskith;
|
||||||
|
--font-body: Lucette;
|
||||||
|
--color-a: #a700ff; /* purple */
|
||||||
|
--color-b: #00ab6b; /* green */
|
||||||
|
--font-size: 23px;
|
||||||
|
--line-height: 1.3em;
|
||||||
|
--color-a-shadow: rgba(166, 0, 255, 0.44);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark theme */
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:root,
|
||||||
|
::backdrop {
|
||||||
|
color-scheme: dark;
|
||||||
|
--bg: #222;
|
||||||
|
--accent-bg: #2b2b2b;
|
||||||
|
--text: #dcdcdc;
|
||||||
|
--text-light: #ababab;
|
||||||
|
--accent: #ffb300;
|
||||||
|
--accent-hover: #ffe099;
|
||||||
|
--accent-text: var(--bg);
|
||||||
|
--code: #f06292;
|
||||||
|
--preformatted: #ccc;
|
||||||
|
--disabled: #111;
|
||||||
|
|
||||||
|
--font-title: Giskith;
|
||||||
|
--font-body: Lucette;
|
||||||
|
--color-a: #9557b5; /* washed-off purple */
|
||||||
|
--color-b: #3c856b; /* washed-off green */
|
||||||
|
--font-size: 23px;
|
||||||
|
--line-height: 1.3em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background: var(--bg);
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: Vega;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#handle {
|
||||||
|
position: absolute;
|
||||||
|
bottom: -3em;
|
||||||
|
width: 70%;
|
||||||
|
height: 5em;
|
||||||
|
background-color: transparent;
|
||||||
|
left: 5em;
|
||||||
|
}
|
||||||
|
/* change la taille des cercle dans le svg */
|
||||||
|
/*circle {
|
||||||
|
transform: scale(0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
path {
|
||||||
|
transform: scale(0.8);
|
||||||
|
} */
|
||||||
|
|
||||||
|
circle.active{
|
||||||
|
transform: scale(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line {
|
||||||
|
stroke: #aaa;
|
||||||
|
/*stroke: none;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line.active2 {
|
||||||
|
stroke: var(--color-a);
|
||||||
|
}
|
||||||
|
|
||||||
|
.links line.history {
|
||||||
|
stroke: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
stroke: var(--color-a);
|
||||||
|
}
|
||||||
|
|
||||||
|
.category circle {
|
||||||
|
fill: var(--color-b);
|
||||||
|
}
|
||||||
|
|
||||||
|
.web circle {
|
||||||
|
fill: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news circle {
|
||||||
|
fill: lightgray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.template circle {
|
||||||
|
fill: lightgreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discussion circle {
|
||||||
|
fill: aqua;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- param<61>tre de la carte ------- */
|
||||||
|
|
||||||
|
svg {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0; right: 0; bottom: 0;
|
||||||
|
font: 10px sans-serif;
|
||||||
|
/* C'est bon j'ai trouve, c'est ce tranform qui change la taille de l'affichage de la carte*/
|
||||||
|
transform: scale(1.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 320px) {
|
||||||
|
#cats,
|
||||||
|
svg {
|
||||||
|
zoom: 0.5;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.page {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* texte des noeud */
|
||||||
|
svg g.page text {
|
||||||
|
visibility: hidden;
|
||||||
|
fill: var(--color-a);
|
||||||
|
font: 10px Combined;
|
||||||
|
max-width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.active text {
|
||||||
|
/*visibility: visible;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
svg g.mouse use {
|
||||||
|
fill: var(--color-a);
|
||||||
|
stroke: var(--color-a);
|
||||||
|
}
|
||||||
|
svg g.mouse text {
|
||||||
|
visibility: visible;
|
||||||
|
stroke-width: 1.5px;
|
||||||
|
stroke: white;
|
||||||
|
paint-order: stroke;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
use {
|
||||||
|
fill: #EEE;
|
||||||
|
stroke: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: var(--color-b);
|
||||||
|
}
|
||||||
|
|
||||||
|
.active use {
|
||||||
|
/* animation-transform: 2;*/
|
||||||
|
animation-duration: 2s;
|
||||||
|
animation-name: pulse;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0% {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.5, 1.5);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: var(--color-b) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active text {
|
||||||
|
stroke: var(--bg);
|
||||||
|
stroke-width: 1px;
|
||||||
|
paint-order: stroke;
|
||||||
|
fill: var(--color-b) !important;
|
||||||
|
visibility: visible !important;
|
||||||
|
transform: translate(-20px, 20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.active2 use {
|
||||||
|
fill: #FFF;
|
||||||
|
stroke: var(--color-a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* --------- Categories ------- */
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
#page {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
#wikiframediv {
|
||||||
|
right:0;
|
||||||
|
top:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats .body {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#cats.expanded .placeholder {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats .placeholder {
|
||||||
|
min-width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
top: 3px;
|
||||||
|
}
|
||||||
|
#cats.expanded .body {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats.expanded .placeholder {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#cats.expanded .placeholder:hover {
|
||||||
|
color: var(--color-b);
|
||||||
|
}
|
||||||
|
#cats.expanded .placeholder:before {
|
||||||
|
content: "×";
|
||||||
|
font-size: 17px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#cats .placeholder:before {
|
||||||
|
content: "?";
|
||||||
|
font-size: 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats {
|
||||||
|
/*display: none;*/
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
border-radius: 24px;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
min-width: 16px;
|
||||||
|
min-height: 16px;
|
||||||
|
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
#cats div.cat span.icon {
|
||||||
|
position: relative;
|
||||||
|
top: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin-right: 4px;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
#cats div.cat:last-child span.icon {
|
||||||
|
background-size: 50%;
|
||||||
|
}
|
||||||
|
#cats div.cat span.count {
|
||||||
|
display: none;
|
||||||
|
padding: 0px 3px;
|
||||||
|
background: #DDD;
|
||||||
|
color: #444;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
#cats div.cat a {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
#cats div.cat.highlight span.icon {
|
||||||
|
background-color: var(--color-b);
|
||||||
|
background-blend-mode: screen;
|
||||||
|
}
|
||||||
|
#cats div.cat a:hover,
|
||||||
|
#cats div.cat.highlight a {
|
||||||
|
color: var(--color-b);
|
||||||
|
}
|
||||||
|
#cats hr {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
left: 65%;
|
||||||
|
right:0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wikiframediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
right: 35%; bottom: 0;
|
||||||
|
}
|
||||||
|
#wikiframediv iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- MEDIAWIKI PAGE ------- */
|
||||||
|
|
||||||
|
.header-container {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe form.header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
/*ul#page-actions {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
a.talk {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ------- control positioning ------- */
|
||||||
|
|
||||||
|
.leaflet-control {
|
||||||
|
position: relative;
|
||||||
|
z-index: 800;
|
||||||
|
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||||
|
pointer-events: auto;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.leaflet-control {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- general toolbar styles ------- */
|
||||||
|
|
||||||
|
.leaflet-bar {
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-position: 50% 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:first-child:before {
|
||||||
|
content: " ";
|
||||||
|
height: 2px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.leaflet-bar a.leaflet-disabled {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ------- zoom controls -------- */
|
||||||
|
|
||||||
|
.zoom-controls {
|
||||||
|
position: absolute;
|
||||||
|
/* changed from left top to bottom right */
|
||||||
|
right: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
#specialclosediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 25px;
|
||||||
|
top: 10px;
|
||||||
|
z-index: 10000;
|
||||||
|
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||||
|
background-color: #ffffff;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#specialclosediv a, #specialclosediv a:hover {
|
||||||
|
font-size: 24px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.leaflet-control-zoom-in,
|
||||||
|
.leaflet-control-zoom-out {
|
||||||
|
font: Combined;
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 20px;
|
||||||
|
text-indent: 1px;
|
||||||
|
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
#cats,
|
||||||
|
svg {
|
||||||
|
zoom: 0.5;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 150vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#page {
|
||||||
|
display:none;
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
height: 50vh;
|
||||||
|
width: 100vw;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wikiframediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Menu d<>pliant ------- */
|
||||||
|
.button-style {
|
||||||
|
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||||
|
background-color: white;
|
||||||
|
font-family: Vega;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 6px 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
border-radius: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button-style {
|
||||||
|
padding:8px;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#specialselectdiv {
|
||||||
|
position: absolute;
|
||||||
|
/* changement des valeur sde bottom right a top left*/
|
||||||
|
top: 8px;
|
||||||
|
left: 25px;
|
||||||
|
z-index: 10000;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#specialselectdiv select {
|
||||||
|
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||||
|
background-color: white;
|
||||||
|
font-family: Vega;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 6px 2px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
cursor: pointer;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#specialiframediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: none;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
#specialiframediv iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
239
symbols.orig.svg
Normal file
@@ -0,0 +1,239 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="32.387501mm"
|
||||||
|
height="32.356251mm"
|
||||||
|
viewBox="0 0 32.3875 32.356251"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5507"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="symbols.svg"
|
||||||
|
enable-background="new">
|
||||||
|
<defs
|
||||||
|
id="defs5501" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.6"
|
||||||
|
inkscape:cx="-9.2789814"
|
||||||
|
inkscape:cy="99.623528"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer8"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1366"
|
||||||
|
inkscape:window-height="704"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5504">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Main"
|
||||||
|
style="display:none">
|
||||||
|
<circle
|
||||||
|
r="5.0396824"
|
||||||
|
cy="1.4819558"
|
||||||
|
cx="0.43864226"
|
||||||
|
style="fill-opacity:1;stroke-width:2.01587296;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none"
|
||||||
|
id="Main"
|
||||||
|
inkscape:label="#path8162" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Orientations"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Orientations"
|
||||||
|
style="fill-opacity:1;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.404233,0,0,0.404233,36.032029,1.0220986)">
|
||||||
|
<path
|
||||||
|
id="Orientations-0"
|
||||||
|
d="m -87.8577,-14.01912 c -8.05454,0 -14.59375,6.50796 -14.59375,14.5625 0,8.05454 6.53921,14.59375 14.59375,14.59375 8.05454,0 14.59375,-6.53921 14.59375,-14.59375 0,-8.05454 -6.53921,-14.5625 -14.59375,-14.5625 z"
|
||||||
|
style="fill-opacity:1;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6386"
|
||||||
|
d="m -87.7327,-7.603495 c -1.108176,0 -2.164768,0.243856 -3.125,0.65 -0.960232,0.406144 -1.823784,0.998784 -2.55,1.725 -0.726216,0.726216 -1.318856,1.589768 -1.725,2.55 -0.406144,0.960232 -0.625,2.016824 -0.625,3.125 0,1.108176 0.218856,2.139768 0.625,3.1 0.406144,0.960232 0.998784,1.848784 1.725,2.575 0.726216,0.726216 1.589768,1.293856 2.55,1.7 0.960232,0.406144 2.016824,0.65 3.125,0.65 1.108176,0 2.164768,-0.243856 3.125,-0.65 0.960232,-0.406144 1.823784,-0.973784 2.55,-1.7 0.726216,-0.726216 1.318856,-1.614768 1.725,-2.575 0.406144,-0.960232 0.625,-1.991824 0.625,-3.1 0,-1.108176 -0.218856,-2.164768 -0.625,-3.125 -0.406144,-0.960232 -0.998784,-1.823784 -1.725,-2.55 -0.726216,-0.726216 -1.589768,-1.318856 -2.55,-1.725 -0.960232,-0.406144 -2.016824,-0.65 -3.125,-0.65 z"
|
||||||
|
style="fill-opacity:1;stroke-width:2.55999994;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="Ateliers_pluridisciplinaires"
|
||||||
|
style="display:none;">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.71815477,0,0,0.71815477,65.187921,-29.508788)"
|
||||||
|
id="Ateliers_pluridisciplinaires">
|
||||||
|
<circle
|
||||||
|
r="19.208878"
|
||||||
|
cy="40.264759"
|
||||||
|
cx="116.73087"
|
||||||
|
transform="matrix(0.36441483,0,0,0.36441483,-132.69908,28.796006)"
|
||||||
|
id="path6780"
|
||||||
|
style="fill-opacity:1;stroke-width:16.4647522;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none" />
|
||||||
|
<g
|
||||||
|
id="g8172"
|
||||||
|
transform="matrix(2.1333332,0,0,-2.1333332,13.499857,367.42774)"
|
||||||
|
style="fill-opacity:0.99615389;stroke-opacity:0.98846154">
|
||||||
|
<path
|
||||||
|
transform="matrix(0.05856667,0,0,-0.05856667,-55.427399,154.21379)"
|
||||||
|
style="fill-opacity:0.99615389;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98846154;marker-start:none"
|
||||||
|
d="M 135.93975,40.264759 A 19.208878,19.208878 0 0 1 116.73087,59.473637 19.208878,19.208878 0 0 1 97.521996,40.264759 19.208878,19.208878 0 0 1 116.73087,21.055882 19.208878,19.208878 0 0 1 135.93975,40.264759 Z"
|
||||||
|
id="path8174" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer4"
|
||||||
|
inkscape:label="Cours_de_soutien_a_l'orientation"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_a_l'orientation"
|
||||||
|
style="stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.37928334,0,0,0.37928334,34.100402,17.553674)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path8166"
|
||||||
|
d="m 357.75,444.40625 c -7.15954,0 -12.96875,5.77796 -12.96875,12.9375 0,7.15954 5.80921,12.96875 12.96875,12.96875 7.15954,0 12.9375,-5.80921 12.9375,-12.96875 0,-7.15954 -5.77796,-12.9375 -12.9375,-12.9375 z"
|
||||||
|
style="fill-opacity:1;stroke-width:6.48174286;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6363"
|
||||||
|
d="m 357.75,454.125 c 0.44747,0 0.86227,0.086 1.25,0.25 0.38773,0.164 0.73801,0.39426 1.03125,0.6875 0.29324,0.29324 0.5235,0.64352 0.6875,1.03125 0.164,0.38773 0.25,0.80253 0.25,1.25 0,0.44747 -0.086,0.89352 -0.25,1.28125 -0.164,0.38773 -0.39426,0.73801 -0.6875,1.03125 -0.29324,0.29324 -0.64352,0.5235 -1.03125,0.6875 -0.38773,0.164 -0.80253,0.25 -1.25,0.25 -0.44747,0 -0.89352,-0.086 -1.28125,-0.25 -0.38773,-0.164 -0.73801,-0.39426 -1.03125,-0.6875 -0.29324,-0.29324 -0.5235,-0.64352 -0.6875,-1.03125 -0.164,-0.38773 -0.25,-0.83378 -0.25,-1.28125 0,-0.44747 0.086,-0.86227 0.25,-1.25 0.164,-0.38773 0.39426,-0.73801 0.6875,-1.03125 0.29324,-0.29324 0.64352,-0.5235 1.03125,-0.6875 0.38773,-0.164 0.83378,-0.25 1.28125,-0.25 z"
|
||||||
|
style="fill-opacity:1;stroke-width:6.48174286;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer5"
|
||||||
|
inkscape:label="Cours_de_soutien_specifique"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_specifique"
|
||||||
|
style="fill-opacity:0.99615389;stroke-opacity:0.99615389"
|
||||||
|
transform="matrix(0.41178012,0,0,0.41178012,37.56977,36.122666)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6358"
|
||||||
|
d="m 356.1875,401.09375 c -8.05454,0 -14.59375,6.53921 -14.59375,14.59375 0,8.05454 6.53921,14.5625 14.59375,14.5625 8.05454,0 14.5625,-6.50796 14.5625,-14.5625 0,-8.05454 -6.50796,-14.59375 -14.5625,-14.59375 z"
|
||||||
|
style="fill-opacity:0.99615389;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6329"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill-opacity:0.99615389;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6327"
|
||||||
|
d="m 356.3125,413.9375 c 0.44744,0 0.83178,0.17553 1.125,0.46875 0.29322,0.29322 0.46875,0.70881 0.46875,1.15625 0,0.44744 -0.17553,0.83178 -0.46875,1.125 -0.29322,0.29322 -0.67756,0.46875 -1.125,0.46875 -0.44744,0 -0.86303,-0.17553 -1.15625,-0.46875 -0.29322,-0.29322 -0.46875,-0.67756 -0.46875,-1.125 0,-0.44744 0.17553,-0.86303 0.46875,-1.15625 0.29322,-0.29322 0.70881,-0.46875 1.15625,-0.46875 z"
|
||||||
|
style="fill-opacity:0.99615389;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6324"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill-opacity:0.99615389;stroke-width:3.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer6"
|
||||||
|
inkscape:label="Cours_techniques"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_techniques"
|
||||||
|
transform="matrix(0.42076685,0,0,-0.42076685,-14.006109,85.183824)"
|
||||||
|
inkscape:label="#g3142"
|
||||||
|
style="fill-opacity:1;stroke-opacity:1">
|
||||||
|
<title
|
||||||
|
id="title3278">template</title>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path87"
|
||||||
|
style="fill-opacity:1;stroke-width:2.12598443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23606801;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 49.067296,199.32385 c 0,-8.21904 -6.662847,-14.88189 -14.881888,-14.88189 -8.219041,0 -14.881889,6.66285 -14.881889,14.88189 0,8.21904 6.662848,14.88189 14.881889,14.88189 8.219041,0 14.881888,-6.66285 14.881888,-14.88189 z" />
|
||||||
|
<g
|
||||||
|
id="g3119"
|
||||||
|
style="fill-opacity:1;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
d="m 44.815326,199.32385 c 0,-5.87075 -4.759174,-10.62992 -10.629918,-10.62992 -5.870744,0 -10.629921,4.75917 -10.629921,10.62992 0,5.87074 4.759177,10.62992 10.629921,10.62992 5.870744,0 10.629918,-4.75918 10.629918,-10.62992 z"
|
||||||
|
style="fill-opacity:1;stroke-width:2.12598443;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23606801;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path85"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer7"
|
||||||
|
inkscape:label="Cours_theoriques">
|
||||||
|
<path
|
||||||
|
d="m 6.7797495,1.3385787 c 0,3.5225563 -2.8555966,6.378149 -6.37815062,6.378149 -3.52255578,0 -6.37814838,-2.8555927 -6.37814838,-6.378149 0,-3.5225563 2.8555926,-6.3781491 6.37814838,-6.3781491 3.52255402,0 6.37815062,2.8555928 6.37815062,6.3781491 z"
|
||||||
|
style="fill-opacity:1;stroke-width:0.80359638;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:2.23606801;stroke-dasharray:2.41078917, 2.41078917;stroke-dashoffset:0;stroke-opacity:1;marker-start:none;marker-mid:none;marker-end:none"
|
||||||
|
id="Cours_theoriques"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:label="#path87-1"
|
||||||
|
mask="none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer8"
|
||||||
|
inkscape:label="Enseignants"
|
||||||
|
style="display:none">
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill-opacity:1;stroke-width:0.97391373;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="Enseignants"
|
||||||
|
sodipodi:sides="3"
|
||||||
|
sodipodi:cx="0.36393768"
|
||||||
|
sodipodi:cy="2.2478313"
|
||||||
|
sodipodi:r1="6.7946506"
|
||||||
|
sodipodi:r2="3.397325"
|
||||||
|
sodipodi:arg1="0.52606642"
|
||||||
|
sodipodi:arg2="1.573264"
|
||||||
|
inkscape:flatsided="true"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 6.2398764,5.6596667 -5.5287678,5.6306258 0.38070444,-4.5467985 Z"
|
||||||
|
inkscape:transform-center-x="0.013378058"
|
||||||
|
inkscape:transform-center-y="2.6969222"
|
||||||
|
inkscape:label="#path3225-6-7-7" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 13 KiB |
273
symbols.svg
Normal file
@@ -0,0 +1,273 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="32.387501mm"
|
||||||
|
height="32.356251mm"
|
||||||
|
viewBox="0 0 32.3875 32.356251"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5507"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="symbols.svg"
|
||||||
|
enable-background="new"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs5501" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="15.938267"
|
||||||
|
inkscape:cx="21.991098"
|
||||||
|
inkscape:cy="16.187456"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer7"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1366"
|
||||||
|
inkscape:window-height="704"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5504">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Main"
|
||||||
|
style="display:none">
|
||||||
|
<circle
|
||||||
|
r="5.0396824"
|
||||||
|
cy="1.4819558"
|
||||||
|
cx="0.43864226"
|
||||||
|
style="fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none"
|
||||||
|
id="Main"
|
||||||
|
inkscape:label="#path8162" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer9"
|
||||||
|
inkscape:label="Actualites"
|
||||||
|
style="display:none">
|
||||||
|
<circle
|
||||||
|
r="3.5"
|
||||||
|
cy="1.4819558"
|
||||||
|
cx="0.43864226"
|
||||||
|
style="fill-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-opacity:1;marker-start:none;stroke-dashoffset:0"
|
||||||
|
id="Actualites"
|
||||||
|
inkscape:label="#path8163" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Orientations"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Orientations"
|
||||||
|
style="display:inline;fill-opacity:1;stroke-width:1.30906;stroke-dasharray:none;stroke-opacity:0.996154"
|
||||||
|
transform="matrix(0.404233,0,0,0.404233,36.425594,0.81191722)">
|
||||||
|
<path
|
||||||
|
id="Orientations-0"
|
||||||
|
d="m -87.8577,-14.01912 c -8.05454,0 -14.59375,6.50796 -14.59375,14.5625 0,8.05454 6.53921,14.59375 14.59375,14.59375 8.05454,0 14.59375,-6.53921 14.59375,-14.59375 0,-8.05454 -6.53921,-14.5625 -14.59375,-14.5625 z"
|
||||||
|
style="fill-opacity:1;stroke-width:3.27266;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6386"
|
||||||
|
d="m -87.7327,-7.603495 c -1.108176,0 -2.164768,0.243856 -3.125,0.65 -0.960232,0.406144 -1.823784,0.998784 -2.55,1.725 -0.726216,0.726216 -1.318856,1.589768 -1.725,2.55 -0.406144,0.960232 -0.625,2.016824 -0.625,3.125 0,1.108176 0.218856,2.139768 0.625,3.1 0.406144,0.960232 0.998784,1.848784 1.725,2.575 0.726216,0.726216 1.589768,1.293856 2.55,1.7 0.960232,0.406144 2.016824,0.65 3.125,0.65 1.108176,0 2.164768,-0.243856 3.125,-0.65 0.960232,-0.406144 1.823784,-0.973784 2.55,-1.7 0.726216,-0.726216 1.318856,-1.614768 1.725,-2.575 0.406144,-0.960232 0.625,-1.991824 0.625,-3.1 0,-1.108176 -0.218856,-2.164768 -0.625,-3.125 -0.406144,-0.960232 -0.998784,-1.823784 -1.725,-2.55 -0.726216,-0.726216 -1.589768,-1.318856 -2.55,-1.725 -0.960232,-0.406144 -2.016824,-0.65 -3.125,-0.65 z"
|
||||||
|
style="fill-opacity:1;stroke-width:1.30906;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="Ateliers_pluridisciplinaires"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.71815477,0,0,0.71815477,65.187921,-29.508788)"
|
||||||
|
id="Ateliers_pluridisciplinaires">
|
||||||
|
<circle
|
||||||
|
r="19.208878"
|
||||||
|
cy="40.264759"
|
||||||
|
cx="116.73087"
|
||||||
|
transform="matrix(0.36441483,0,0,0.36441483,-132.69908,28.796006)"
|
||||||
|
id="path6780"
|
||||||
|
style="fill-opacity:1;stroke-width:16.4648;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none" />
|
||||||
|
<g
|
||||||
|
id="g8172"
|
||||||
|
transform="matrix(2.1333332,0,0,-2.1333332,13.499857,367.42774)"
|
||||||
|
style="fill-opacity:0.996154;stroke-opacity:0.988462">
|
||||||
|
<path
|
||||||
|
transform="matrix(0.05856667,0,0,-0.05856667,-55.427399,154.21379)"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.988462;marker-start:none"
|
||||||
|
d="M 135.93975,40.264759 A 19.208878,19.208878 0 0 1 116.73087,59.473637 19.208878,19.208878 0 0 1 97.521996,40.264759 19.208878,19.208878 0 0 1 116.73087,21.055882 19.208878,19.208878 0 0 1 135.93975,40.264759 Z"
|
||||||
|
id="path8174" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer4"
|
||||||
|
inkscape:label="Cours_de_soutien_a_l'orientation"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_a_l'orientation"
|
||||||
|
style="display:none;stroke-opacity:0.996154"
|
||||||
|
transform="matrix(0.37928334,0,0,0.37928334,34.100402,17.553674)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path8166"
|
||||||
|
d="m 357.75,444.40625 c -7.15954,0 -12.96875,5.77796 -12.96875,12.9375 0,7.15954 5.80921,12.96875 12.96875,12.96875 7.15954,0 12.9375,-5.80921 12.9375,-12.96875 0,-7.15954 -5.77796,-12.9375 -12.9375,-12.9375 z"
|
||||||
|
style="fill-opacity:1;stroke-width:6.48174;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6363"
|
||||||
|
d="m 357.75,454.125 c 0.44747,0 0.86227,0.086 1.25,0.25 0.38773,0.164 0.73801,0.39426 1.03125,0.6875 0.29324,0.29324 0.5235,0.64352 0.6875,1.03125 0.164,0.38773 0.25,0.80253 0.25,1.25 0,0.44747 -0.086,0.89352 -0.25,1.28125 -0.164,0.38773 -0.39426,0.73801 -0.6875,1.03125 -0.29324,0.29324 -0.64352,0.5235 -1.03125,0.6875 -0.38773,0.164 -0.80253,0.25 -1.25,0.25 -0.44747,0 -0.89352,-0.086 -1.28125,-0.25 -0.38773,-0.164 -0.73801,-0.39426 -1.03125,-0.6875 -0.29324,-0.29324 -0.5235,-0.64352 -0.6875,-1.03125 -0.164,-0.38773 -0.25,-0.83378 -0.25,-1.28125 0,-0.44747 0.086,-0.86227 0.25,-1.25 0.164,-0.38773 0.39426,-0.73801 0.6875,-1.03125 0.29324,-0.29324 0.64352,-0.5235 1.03125,-0.6875 0.38773,-0.164 0.83378,-0.25 1.28125,-0.25 z"
|
||||||
|
style="fill-opacity:1;stroke-width:6.48174;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer5"
|
||||||
|
inkscape:label="Cours_de_soutien_specifique"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_de_soutien_specifique"
|
||||||
|
style="display:inline;fill-opacity:0.996154;stroke-opacity:0.996154"
|
||||||
|
transform="matrix(0.41178012,0,0,0.41178012,37.56977,36.122666)">
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6358"
|
||||||
|
d="m 356.1875,401.09375 c -8.05454,0 -14.59375,6.53921 -14.59375,14.59375 0,8.05454 6.53921,14.5625 14.59375,14.5625 8.05454,0 14.5625,-6.50796 14.5625,-14.5625 0,-8.05454 -6.50796,-14.59375 -14.5625,-14.59375 z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:3.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6329"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:3.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6327"
|
||||||
|
d="m 356.3125,413.9375 c 0.44744,0 0.83178,0.17553 1.125,0.46875 0.29322,0.29322 0.46875,0.70881 0.46875,1.15625 0,0.44744 -0.17553,0.83178 -0.46875,1.125 -0.29322,0.29322 -0.67756,0.46875 -1.125,0.46875 -0.44744,0 -0.86303,-0.17553 -1.15625,-0.46875 -0.29322,-0.29322 -0.46875,-0.67756 -0.46875,-1.125 0,-0.44744 0.17553,-0.86303 0.46875,-1.15625 0.29322,-0.29322 0.70881,-0.46875 1.15625,-0.46875 z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:3.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="translate(-446.2952,-500.01912)"
|
||||||
|
id="path6324"
|
||||||
|
d="m 356.3125,413.9375 c -0.44744,0 -0.86303,0.17553 -1.15625,0.46875 -0.29322,0.29322 -0.46875,0.70881 -0.46875,1.15625 0,0.44744 0.17553,0.83178 0.46875,1.125 0.29322,0.29322 0.70881,0.46875 1.15625,0.46875 0.44744,0 0.83178,-0.17553 1.125,-0.46875 0.29322,-0.29322 0.46875,-0.67756 0.46875,-1.125 0,-0.44744 -0.17553,-0.86303 -0.46875,-1.15625 -0.29322,-0.29322 -0.67756,-0.46875 -1.125,-0.46875 z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:3.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer6"
|
||||||
|
inkscape:label="Cours_techniques"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_techniques"
|
||||||
|
transform="matrix(0.4019761,0,0,-0.4019761,-13.363739,81.438379)"
|
||||||
|
inkscape:label="#g3142"
|
||||||
|
style="fill-opacity:1;stroke-opacity:1">
|
||||||
|
<title
|
||||||
|
id="title3278">template</title>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path87"
|
||||||
|
style="fill-opacity:1;stroke-width:2.12598;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23607;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 49.067296,199.32385 c 0,-8.21904 -6.662847,-14.88189 -14.881888,-14.88189 -8.219041,0 -14.881889,6.66285 -14.881889,14.88189 0,8.21904 6.662848,14.88189 14.881889,14.88189 8.219041,0 14.881888,-6.66285 14.881888,-14.88189 z" />
|
||||||
|
<g
|
||||||
|
id="g3119"
|
||||||
|
style="fill-opacity:1;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
d="m 44.815326,199.32385 c 0,-5.87075 -4.759174,-10.62992 -10.629918,-10.62992 -5.870744,0 -10.629921,4.75917 -10.629921,10.62992 0,5.87074 4.759177,10.62992 10.629921,10.62992 5.870744,0 10.629918,-4.75918 10.629918,-10.62992 z"
|
||||||
|
style="fill-opacity:1;stroke-width:2.12598;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2.23607;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path85"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer7"
|
||||||
|
inkscape:label="Cours_theoriques"
|
||||||
|
style="display:none">
|
||||||
|
<g
|
||||||
|
id="Cours_theoriques"
|
||||||
|
transform="matrix(0.99529384,0,0,0.99529384,-0.44695171,-1.3774619)">
|
||||||
|
<path
|
||||||
|
id="path6358-3"
|
||||||
|
d="m 0.46521149,-4.6128375 c -3.31669949,0 -6.00941609,2.6927167 -6.00941609,6.0094161 0,3.3166995 2.6927166,5.996548 6.00941609,5.996548 3.31669941,0 5.99654801,-2.6798485 5.99654801,-5.996548 0,-3.3166994 -2.6798486,-6.0094161 -5.99654801,-6.0094161 z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:1.3177;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6329-6"
|
||||||
|
d="m 0.51668401,0.67596342 c -0.1842469,0 -0.3553786,0.0722798 -0.47612077,0.19302193 -0.12074216,0.12074217 -0.19302193,0.29187385 -0.19302193,0.47612075 0,0.1842469 0.07227977,0.3425105 0.19302193,0.4632527 0.12074217,0.1207421 0.29187387,0.1930219 0.47612077,0.1930219 0.18424689,0 0.34251047,-0.07228 0.46325263,-0.1930219 C 1.1006788,1.6876166 1.1729586,1.529353 1.1729586,1.3451061 c 0,-0.1842469 -0.07228,-0.35537858 -0.19302196,-0.47612075 C 0.85919448,0.74824319 0.7009309,0.67596342 0.51668401,0.67596342 Z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:1.3177;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6327-7"
|
||||||
|
d="m 0.51668401,0.67596342 c 0.18424689,0 0.34251047,0.0722798 0.46325263,0.19302193 C 1.1006788,0.98972752 1.1729586,1.1608592 1.1729586,1.3451061 c 0,0.1842469 -0.07228,0.3425105 -0.19302196,0.4632527 -0.12074216,0.1207421 -0.27900574,0.1930219 -0.46325263,0.1930219 -0.1842469,0 -0.3553786,-0.07228 -0.47612077,-0.1930219 -0.12074216,-0.1207422 -0.19302193,-0.2790058 -0.19302193,-0.4632527 0,-0.1842469 0.07227977,-0.35537858 0.19302193,-0.47612075 C 0.16130541,0.74824319 0.33243711,0.67596342 0.51668401,0.67596342 Z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:1.3177;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path6324-5"
|
||||||
|
d="m 0.52751086,-0.43920397 c -0.49428682,0 -0.95338895,0.19390802 -1.27730899,0.51782796 C -1.0737181,0.40254403 -1.2676261,0.8616461 -1.2676261,1.3559329 c 0,0.4942868 0.193908,0.9188672 0.51782797,1.2427873 0.32392004,0.3239199 0.78302217,0.5178279 1.27730899,0.5178279 0.49428684,0 0.91886704,-0.1939086 1.24278714,-0.5178279 C 2.094218,2.2748001 2.288126,1.8502197 2.288126,1.3559329 2.288126,0.8616461 2.0942174,0.40254403 1.770298,0.07862399 1.4463779,-0.24529603 1.0217977,-0.43920397 0.52751086,-0.43920397 Z"
|
||||||
|
style="fill-opacity:0.996154;stroke-width:3.53505;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.996154;marker-start:none"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer8"
|
||||||
|
inkscape:label="Enseignant__e__s"
|
||||||
|
style="display:none">
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill-opacity:1;stroke-width:0.973914;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="Enseignant__e__s"
|
||||||
|
sodipodi:sides="3"
|
||||||
|
sodipodi:cx="0.36393768"
|
||||||
|
sodipodi:cy="2.2478313"
|
||||||
|
sodipodi:r1="6.7946506"
|
||||||
|
sodipodi:r2="3.397325"
|
||||||
|
sodipodi:arg1="0.52606642"
|
||||||
|
sodipodi:arg2="1.573264"
|
||||||
|
inkscape:flatsided="true"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 6.2398764,5.6596667 -5.5287678,5.6306258 0.38070444,-4.5467985 Z"
|
||||||
|
inkscape:transform-center-x="0.013378058"
|
||||||
|
inkscape:transform-center-y="2.6969222"
|
||||||
|
inkscape:label="#path3225-6-7-7" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 16 KiB |
116
test/index.html
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>wikiframe test 3</title>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
overflow: hidden;
|
||||||
|
background: pink;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
bottom: 40vh; right: 0;
|
||||||
|
z-index: 0;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
#map #radio {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
width: 360px;
|
||||||
|
height: 60px;
|
||||||
|
}
|
||||||
|
#map a {
|
||||||
|
position: relative;
|
||||||
|
left: 200px;
|
||||||
|
top: 200px;
|
||||||
|
}
|
||||||
|
#pagediv {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
bottom: 0; right: 0;
|
||||||
|
z-index: 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; right: 0;
|
||||||
|
top: 60vh;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
#page iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="pagediv">
|
||||||
|
<div id="map"><a href="#">map</a>
|
||||||
|
|
||||||
|
<div id="radio"><iframe width="100%" height="60" src="https://www.mixcloud.com/widget/iframe/?hide_cover=1&mini=1&feed=%2FErgote_Radio%2Fmagma-reclaim-the-climax-publication-exposition-documentation%2F" frameborder="0" ></iframe></div>
|
||||||
|
</div>
|
||||||
|
<div id="page">
|
||||||
|
<iframe src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
|
||||||
|
var pagediv = document.querySelector("#pagediv"),
|
||||||
|
page = document.querySelector("#page"),
|
||||||
|
iframe = document.querySelector("iframe"),
|
||||||
|
scroll_elt = pagediv;
|
||||||
|
|
||||||
|
pagediv.scrollTop = 0;
|
||||||
|
|
||||||
|
pagediv.addEventListener("scroll", function () {
|
||||||
|
var sh = pagediv.scrollHeight,
|
||||||
|
sp = pagediv.scrollTop;
|
||||||
|
console.log("scroll", sp, sh);
|
||||||
|
if (pagediv.scrollHeight - pagediv.scrollTop === pagediv.clientHeight) {
|
||||||
|
console.log("END OF SCROLL");
|
||||||
|
set_scroll_elt(iframe);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function set_scroll_elt (elt) {
|
||||||
|
if (scroll_elt === elt) { return; }
|
||||||
|
scroll_elt = elt;
|
||||||
|
if (scroll_elt === pagediv) {
|
||||||
|
pagediv.scrollTop = pagediv.scrollHeight - pagediv.clientHeight - 10;
|
||||||
|
pagediv.style.overflow = "auto";
|
||||||
|
iframe.contentWindow.document.body.style.overflow = "hidden";
|
||||||
|
} else {
|
||||||
|
pagediv.style.overflow = "hidden";
|
||||||
|
iframe.contentWindow.document.body.style.overflow = "auto";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe.addEventListener("load", function () {
|
||||||
|
// var ifh = iframe.contentWindow.document.body.scrollHeight;
|
||||||
|
var ifbody = iframe.contentWindow.document.body;
|
||||||
|
var sd = iframe.contentDocument.scrollingElement
|
||||||
|
console.log("scrolling element", sd);
|
||||||
|
ifbody.style.overflow = "hidden";
|
||||||
|
iframe.contentWindow.addEventListener("scroll", function () {
|
||||||
|
var stm = sd.scrollHeight - sd.clientHeight;
|
||||||
|
console.log("pagescroll", sd.scrollTop, stm);
|
||||||
|
if (sd.scrollTop == 0) {
|
||||||
|
set_scroll_elt(pagediv);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// console.log("load", ifh);
|
||||||
|
// page.style.height = ifh+"px";
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</html>
|
||||||
43
test/index2.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>mobile map test</title>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
#content {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;top: 0;
|
||||||
|
bottom: 0; right: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 5px solid gray;
|
||||||
|
}
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
background: gray;
|
||||||
|
|
||||||
|
}
|
||||||
|
#page .expand {
|
||||||
|
position: absolute;
|
||||||
|
right: 5%;
|
||||||
|
top: 5%;
|
||||||
|
font-size: 32px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="content">
|
||||||
|
<div id="search">header/search bar</div>
|
||||||
|
<div id="map">map</div>
|
||||||
|
<div id="page">
|
||||||
|
<h2>This is a compact page</h2>
|
||||||
|
<p>Swipe up to read more. Using <a href="https://css-tricks.com/simple-swipe-with-vanilla-javascript/">this site</a> for simple swipe inspiration. Also <a href="https://css-tricks.com/snippets/html/responsive-meta-tag/">meta tags</a>.</p>
|
||||||
|
<div class="expand">↑</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
43
test/index3.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>wikiframe test</title>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
overflow: hidden;
|
||||||
|
background: pink;
|
||||||
|
}
|
||||||
|
#content {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
bottom: 0; right: 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
bottom: 0; right: 0;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
#map a {
|
||||||
|
position: relative;
|
||||||
|
left: 200px;
|
||||||
|
top: 200px;
|
||||||
|
}
|
||||||
|
#content iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="map"><a href="#">map</a></div>
|
||||||
|
<div id="content">
|
||||||
|
<iframe src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
57
test/index4.html
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>wikiframe test 3</title>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
overflow: auto;
|
||||||
|
background: pink;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
bottom: 0; right: 0;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
#map a {
|
||||||
|
position: relative;
|
||||||
|
left: 200px;
|
||||||
|
top: 200px;
|
||||||
|
}
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; right: 0;
|
||||||
|
top: 60vh;
|
||||||
|
height: 40vh;
|
||||||
|
}
|
||||||
|
#page iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="map"><a href="#">map</a></div>
|
||||||
|
<div id="page">
|
||||||
|
<iframe src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
var page = document.querySelector("#page"),
|
||||||
|
iframe = document.querySelector("iframe");
|
||||||
|
|
||||||
|
iframe.addEventListener("load", function () {
|
||||||
|
var ifh = iframe.contentWindow.document.body.scrollHeight;
|
||||||
|
console.log("load", ifh);
|
||||||
|
page.style.height = ifh+"px";
|
||||||
|
});
|
||||||
|
window.addEventListener("resize", function () {
|
||||||
|
var ifh = iframe.contentWindow.document.body.scrollHeight;
|
||||||
|
console.log("load", ifh);
|
||||||
|
page.style.height = ifh+"px";
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</html>
|
||||||
44
test/index5.html
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>wikiframe test 3</title>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
overflow: auto;
|
||||||
|
background: pink;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
bottom: 0; right: 0;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
#map a {
|
||||||
|
position: relative;
|
||||||
|
left: 200px;
|
||||||
|
top: 200px;
|
||||||
|
}
|
||||||
|
#page {
|
||||||
|
position: absolute;
|
||||||
|
left: 0; right: 0;
|
||||||
|
top: 60vh;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
#page iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="map"><a href="#">map</a></div>
|
||||||
|
<div id="page">
|
||||||
|
<iframe src="/mw"></iframe>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
</script>
|
||||||
|
</html>
|
||||||
171
wiki/Common.js
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
/* Le CSS placé ici sera appliqué à tous les habillages. */
|
||||||
|
.rssicon {
|
||||||
|
display: inline-block;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
background-image: url(/mw/resources/assets/Feed-icon.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.infobox {
|
||||||
|
width: 30em;
|
||||||
|
font-size: 90%;
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
color: black;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: 1em;
|
||||||
|
padding: 0.2em;
|
||||||
|
float: right;
|
||||||
|
clear: right;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.infobox th.head {
|
||||||
|
text-align: center;
|
||||||
|
background-color:#ccccff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Flexgal */
|
||||||
|
div.flexgal {
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.flexgal div.item {
|
||||||
|
display: flexbox;
|
||||||
|
}
|
||||||
|
div.flexgal div.item p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0; /* padding + margin seem to conflict with the grid layout */
|
||||||
|
}
|
||||||
|
a img {
|
||||||
|
border: none;
|
||||||
|
vertical-align: top; /* magically this cancels the containing anchor's bottom border */
|
||||||
|
}
|
||||||
|
|
||||||
|
div.pubdate {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Media {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Media-figure {
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Media-body {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* F O N T E S */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Combined";
|
||||||
|
src: url('/typo/Combined/combined.otf');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'combinedregular';
|
||||||
|
src: url('/typo/Combined/web/combined.eot');
|
||||||
|
src: url('/typo/Combined/web/combined.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('/typo/Combined/web/combined.woff2') format('woff2'),
|
||||||
|
url('/typo/Combined/web/combined.woff') format('woff'),
|
||||||
|
url('/typo/Combined/web/combined.ttf') format('truetype'),
|
||||||
|
url('/typo/Combined/web/combined.svg#combinedregular') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'wremena';
|
||||||
|
src: url('typo/Wremema/webfont/wremena_bold-webfont.woff2') format('woff2'),
|
||||||
|
url('typo/Wremema/webfont/wremena_bold-webfont.woff') format('woff'),
|
||||||
|
url('typo/Wremema/webfont/wremena_bold-webfont.ttf') format('truetype'),
|
||||||
|
url('typo/Wremema/webfont/wremena_bold-webfont.svg#wremenabold') format('svg');
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'wremena';
|
||||||
|
src: url('typo/Wremema/webfont/wremena_regular-webfont.woff2') format('woff2'),
|
||||||
|
url('typo/Wremema/webfont/wremena_regular-webfont.woff') format('woff'),
|
||||||
|
url('typo/Wremema/webfont/wremena_regular-webfont.ttf') format('truetype'),
|
||||||
|
url('typo/Wremema/webfont/wremena_regular-webfont.svg#wremenaregular') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'wremena';
|
||||||
|
src: url('typo/Wremema/webfont/wremena_light-webfont.woff2') format('woff2'),
|
||||||
|
url('typo/Wremema/webfont/wremena_light-webfont.woff') format('woff'),
|
||||||
|
url('typo/Wremema/webfont/wremena_light-webfont.ttf') format('truetype'),
|
||||||
|
url('typo/Wremema/webfont/wremena_light-webfont.svg#wremenalight') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Coupeur Monospace Bold';
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Bold.svg#fcf36b8f65c0f0737cd36a2be6922659') format('svg'); /* Legacy iOS */
|
||||||
|
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Coupeur Monospace Normal';
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('/typo/Coupeur/webfont/CoupeurMonospace-Normal.svg#4b219f539d302a6ffd9fd41e2da16172') format('svg'); /* Legacy iOS */
|
||||||
|
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* NEW RULES (MICHAEL ) */
|
||||||
|
|
||||||
|
body, body p {
|
||||||
|
font-family: "Coupeur Monospace Normal", monospace;
|
||||||
|
}
|
||||||
|
h1, h2, h3, h4 {
|
||||||
|
font-family: 'combinedregular','Combined', monospace !important;
|
||||||
|
padding-right: 10%;
|
||||||
|
padding-top: 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
border-color: black;
|
||||||
|
line-height: 1.5em;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
div.header-container {
|
||||||
|
/* display: none; */
|
||||||
|
}
|
||||||
|
form.header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
ul#page-actions {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
a.talk {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||