special/recentfiles
92
dist/app.js
vendored
@@ -4483,7 +4483,7 @@ var app = (function (exports) {
|
||||
seconds = date.getUTCSeconds(),
|
||||
milliseconds = date.getUTCMilliseconds();
|
||||
return isNaN(date) ? "Invalid Date"
|
||||
: formatYear(date.getUTCFullYear(), 4) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2)
|
||||
: formatYear(date.getUTCFullYear()) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2)
|
||||
+ (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z"
|
||||
: seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z"
|
||||
: minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z"
|
||||
@@ -5169,7 +5169,8 @@ var app = (function (exports) {
|
||||
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";
|
||||
@@ -5244,10 +5245,31 @@ var app = (function (exports) {
|
||||
});
|
||||
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 (this.active_url) {
|
||||
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) {
|
||||
@@ -5279,10 +5301,20 @@ var app = (function (exports) {
|
||||
.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();
|
||||
if (!event.active) this.simulation.alphaTarget(0.3).restart();
|
||||
// this.simulation.restart();
|
||||
d.fx = d.x;
|
||||
d.fy = d.y;
|
||||
}
|
||||
@@ -5293,7 +5325,7 @@ var app = (function (exports) {
|
||||
}
|
||||
|
||||
dragended(d) {
|
||||
// if (!event.active) this.simulation.alphaTarget(0);
|
||||
if (!event.active) this.simulation.alphaTarget(0);
|
||||
d.fx = null;
|
||||
d.fy = null;
|
||||
}
|
||||
@@ -5322,11 +5354,16 @@ var app = (function (exports) {
|
||||
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);
|
||||
@@ -5378,9 +5415,12 @@ var app = (function (exports) {
|
||||
// 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);
|
||||
@@ -5421,10 +5461,10 @@ var app = (function (exports) {
|
||||
// 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);
|
||||
// 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);
|
||||
// console.log("links_in", links_in);
|
||||
links_out.forEach(p => {
|
||||
this.ensure_link(page, p).wiki = true;
|
||||
});
|
||||
@@ -5435,12 +5475,19 @@ var app = (function (exports) {
|
||||
}
|
||||
|
||||
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(() => {
|
||||
//setTimeout(() => {
|
||||
this.centerOnItem(page, 1000);
|
||||
}, 1000);
|
||||
//}, 1000);
|
||||
|
||||
this.events.emit("page", this.active_page);
|
||||
var data = {nodes: this.get_nodes(), links: values(this.all_links_by_key)};
|
||||
@@ -5497,7 +5544,7 @@ var app = (function (exports) {
|
||||
}
|
||||
|
||||
update_graph (graph) {
|
||||
console.log("UPDATE GRAPH", graph.nodes.length, graph.links.length);
|
||||
// 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()
|
||||
@@ -5528,11 +5575,15 @@ var app = (function (exports) {
|
||||
})
|
||||
.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))
|
||||
@@ -5603,13 +5654,14 @@ var app = (function (exports) {
|
||||
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.active ? 10 : (a.active2 ? 5 : 0),
|
||||
y = b.active ? 10 : (b.active2 ? 5 : 0);
|
||||
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");
|
||||
@@ -5641,20 +5693,24 @@ var app = (function (exports) {
|
||||
centerOnItem(item, duration) {
|
||||
var bounds = this.svg.node().getBoundingClientRect();
|
||||
var curt = transform(this.rect.node());
|
||||
console.log("centerOnItem", this.zoom_level, "item", item);
|
||||
// console.log("centerOnItem", this.zoom_level, "item", item);
|
||||
var zoom_level = this.zoom_level ? this.zoom_level : curt.k;
|
||||
if (item && item.x !== undefined) {
|
||||
var transform$1 = function () {
|
||||
return identity$1
|
||||
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$1);
|
||||
this.rect.transition().duration(duration).call(this.zoom.transform, transform);
|
||||
} else {
|
||||
this.rect.call(this.zoom.transform, transform$1);
|
||||
this.rect.call(this.zoom.transform, transform);
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
console.log("NO ITEM");
|
||||
var transform$1 = function () {
|
||||
|
||||
49
dist/index.js
vendored
@@ -58,4 +58,51 @@ iframe.addEventListener("load", function () {
|
||||
|
||||
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);
|
||||
});
|
||||
|
Before Width: | Height: | Size: 471 B After Width: | Height: | Size: 948 B |
|
Before Width: | Height: | Size: 582 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 519 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 476 B After Width: | Height: | Size: 879 B |
BIN
img/Main.png
|
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 724 B After Width: | Height: | Size: 1.5 KiB |
14
index.html
@@ -18,12 +18,22 @@
|
||||
<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>
|
||||
<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="">carte</option>
|
||||
<option value="/m/special/recentfiles/recentfiles.html">nouveaux fichiers</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="specialiframediv"></div>
|
||||
</div>
|
||||
<div id="wikiframediv">
|
||||
<iframe id="wikiframe" src="/mw"></iframe>
|
||||
<iframe id="wikiframe" name="wikiframe" src="/mw"></iframe>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
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
|
||||
942
special/recentfiles/dist/recentfiles.js
vendored
Normal file
@@ -0,0 +1,942 @@
|
||||
(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 = 10; /* how many files to show */
|
||||
|
||||
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 () {
|
||||
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,
|
||||
count = 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);
|
||||
|
||||
count += useimages.length;
|
||||
if (data.continue) {
|
||||
url = baseurl+"&aicontinue="+data.continue.aicontinue;
|
||||
}
|
||||
// if (debugloopcount >= 5) break;
|
||||
}
|
||||
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", load);
|
||||
|
||||
}());
|
||||
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"
|
||||
}
|
||||
}
|
||||
27
special/recentfiles/recentfiles.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<!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%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content"></div>
|
||||
<script src="dist/recentfiles.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
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()
|
||||
]
|
||||
}];
|
||||
87
special/recentfiles/src/recentfiles.js
Normal file
@@ -0,0 +1,87 @@
|
||||
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 */
|
||||
|
||||
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 () {
|
||||
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,
|
||||
count = 0;
|
||||
let 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);
|
||||
|
||||
count += useimages.length;
|
||||
if (data.continue) {
|
||||
url = baseurl+"&aicontinue="+data.continue.aicontinue;
|
||||
}
|
||||
debugloopcount += 1;
|
||||
// if (debugloopcount >= 5) break;
|
||||
}
|
||||
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", load);
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
},
|
||||
{
|
||||
"key" : "Cours de soutien à l'orientation",
|
||||
"symbol" : "symbols.svg#Cours_de_soutien_a_l'orientation",
|
||||
"symbol" : "symbols.svg#Cours_de_soutien_a_l_orientation",
|
||||
"icon" : "img/Cours_de_soutien_a_lorientation.png"
|
||||
},
|
||||
{
|
||||
@@ -34,6 +34,11 @@
|
||||
"symbol" : "symbols.svg#Enseignants",
|
||||
"icon" : "img/Enseignants.png"
|
||||
},
|
||||
{
|
||||
"key" : "Actualités",
|
||||
"symbol" : "symbols.svg#Actualites",
|
||||
"icon" : "img/Actualites.png"
|
||||
},
|
||||
{
|
||||
"key" : "default",
|
||||
"symbol" : "symbols.svg#Main",
|
||||
|
||||
@@ -14,7 +14,8 @@ 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";
|
||||
@@ -89,10 +90,31 @@ export class Map {
|
||||
})
|
||||
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 (this.active_url) {
|
||||
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) {
|
||||
@@ -124,10 +146,20 @@ export class Map {
|
||||
.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();
|
||||
if (!event.active) this.simulation.alphaTarget(0.3).restart();
|
||||
// this.simulation.restart();
|
||||
d.fx = d.x;
|
||||
d.fy = d.y;
|
||||
}
|
||||
@@ -138,7 +170,7 @@ export class Map {
|
||||
}
|
||||
|
||||
dragended(d) {
|
||||
// if (!event.active) this.simulation.alphaTarget(0);
|
||||
if (!event.active) this.simulation.alphaTarget(0);
|
||||
d.fx = null;
|
||||
d.fy = null;
|
||||
}
|
||||
@@ -167,11 +199,16 @@ export class Map {
|
||||
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);
|
||||
@@ -223,9 +260,12 @@ export class Map {
|
||||
// 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);
|
||||
@@ -266,10 +306,10 @@ export class Map {
|
||||
// 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);
|
||||
// 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);
|
||||
// console.log("links_in", links_in);
|
||||
links_out.forEach(p => {
|
||||
this.ensure_link(page, p).wiki = true;
|
||||
});
|
||||
@@ -280,12 +320,19 @@ export class Map {
|
||||
}
|
||||
|
||||
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(() => {
|
||||
//setTimeout(() => {
|
||||
this.centerOnItem(page, 1000);
|
||||
}, 1000);
|
||||
//}, 1000);
|
||||
|
||||
this.events.emit("page", this.active_page);
|
||||
var data = {nodes: this.get_nodes(), links: values(this.all_links_by_key)};
|
||||
@@ -342,7 +389,7 @@ export class Map {
|
||||
}
|
||||
|
||||
update_graph (graph) {
|
||||
console.log("UPDATE GRAPH", graph.nodes.length, graph.links.length);
|
||||
// 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()
|
||||
@@ -375,11 +422,15 @@ export class Map {
|
||||
})
|
||||
.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))
|
||||
@@ -450,13 +501,14 @@ export class Map {
|
||||
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.active ? 10 : (a.active2 ? 5 : 0),
|
||||
y = b.active ? 10 : (b.active2 ? 5 : 0);
|
||||
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");
|
||||
@@ -488,10 +540,13 @@ export class Map {
|
||||
centerOnItem(item, duration) {
|
||||
var bounds = this.svg.node().getBoundingClientRect();
|
||||
var curt = zoomTransform(this.rect.node());
|
||||
console.log("centerOnItem", this.zoom_level, "item", item);
|
||||
// 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)
|
||||
@@ -503,6 +558,7 @@ export class Map {
|
||||
} else {
|
||||
this.rect.call(this.zoom.transform, transform);
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
console.log("NO ITEM");
|
||||
var transform = function () {
|
||||
|
||||
197
style.css
@@ -1,84 +1,38 @@
|
||||
:root {
|
||||
--color-a: #A700FF;
|
||||
--color-a-shadow: rgba(167, 0, 255, 0.44);
|
||||
--color-b: #00AB6B;
|
||||
}
|
||||
|
||||
/* F O N T E S */
|
||||
@font-face {
|
||||
font-family: "Combined";
|
||||
src: url('/typo/Combined/combined.otf');
|
||||
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');
|
||||
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-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
|
||||
}
|
||||
|
||||
@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;
|
||||
font-family: Vega;
|
||||
}
|
||||
|
||||
.links line {
|
||||
@@ -87,7 +41,7 @@ body {
|
||||
}
|
||||
|
||||
.links line.active2 {
|
||||
stroke: magenta;
|
||||
stroke: var(--color-a);
|
||||
}
|
||||
|
||||
.links line.history {
|
||||
@@ -95,11 +49,11 @@ body {
|
||||
}
|
||||
|
||||
.active {
|
||||
stroke: magenta;
|
||||
stroke: var(--color-a);
|
||||
}
|
||||
|
||||
.category circle {
|
||||
fill: cyan;
|
||||
fill: var(--color-b);
|
||||
}
|
||||
|
||||
.web circle {
|
||||
@@ -133,7 +87,7 @@ svg g.page {
|
||||
svg g.page text {
|
||||
visibility: hidden;
|
||||
fill: #222;
|
||||
font: 9px sans-serif;
|
||||
font: 12px Vega;
|
||||
}
|
||||
|
||||
svg g.active text {
|
||||
@@ -151,7 +105,7 @@ use {
|
||||
|
||||
.highlight use {
|
||||
fill: #FFF;
|
||||
stroke: cyan;
|
||||
stroke: var(--color-b);
|
||||
}
|
||||
|
||||
.active use {
|
||||
@@ -175,7 +129,7 @@ use {
|
||||
|
||||
.active use {
|
||||
fill: #FFF;
|
||||
stroke: magenta;
|
||||
stroke: var(--color-a);
|
||||
}
|
||||
|
||||
.active text {
|
||||
@@ -184,7 +138,7 @@ use {
|
||||
|
||||
.active2 use {
|
||||
fill: #FFF;
|
||||
stroke: magenta;
|
||||
stroke: var(--color-a);
|
||||
}
|
||||
|
||||
|
||||
@@ -192,15 +146,14 @@ use {
|
||||
/* Categories */
|
||||
|
||||
#cats .body {
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
}
|
||||
|
||||
#cats .placeholder {
|
||||
min-width: 100%;
|
||||
text-align: center;
|
||||
color: gray;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
top: 3px;
|
||||
}
|
||||
#cats.expanded .body {
|
||||
display: block;
|
||||
@@ -221,7 +174,7 @@ use {
|
||||
font-size: 12px;
|
||||
min-width: 16px;
|
||||
min-height: 16px;
|
||||
box-shadow: 0 3px 3px 3px rgba(255, 0, 255, 0.44);
|
||||
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||
}
|
||||
|
||||
#cats div.cat span.icon {
|
||||
@@ -233,13 +186,17 @@ use {
|
||||
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: 10px;
|
||||
font-size: 12px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
#cats div.cat a {
|
||||
@@ -247,7 +204,7 @@ use {
|
||||
text-decoration: none;
|
||||
}
|
||||
#cats div.cat.highlight a {
|
||||
color: cyan;
|
||||
color: var(--color-b);
|
||||
}
|
||||
#cats hr {
|
||||
color: white;
|
||||
@@ -289,10 +246,6 @@ a.talk {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* control positioning */
|
||||
|
||||
.leaflet-control {
|
||||
@@ -333,7 +286,10 @@ a.talk {
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
.leaflet-bar a:first-child {
|
||||
.leaflet-bar a:first-child:before {
|
||||
content: " ";
|
||||
height: 2px;
|
||||
display: block;
|
||||
}
|
||||
.leaflet-bar a:last-child {
|
||||
border-bottom: none;
|
||||
@@ -351,16 +307,38 @@ a.talk {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 10px;
|
||||
z-index: 10000;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
#specialclosediv {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
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: 24px;
|
||||
font-size: 17px;
|
||||
line-height: 20px;
|
||||
text-indent: 1px;
|
||||
box-shadow: 0 3px 3px 3px rgba(255, 0, 255, 0.44);
|
||||
box-shadow: 0 3px 3px 3px var(--color-a-shadow);
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
@@ -373,21 +351,52 @@ a.talk {
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
right: 0;
|
||||
height: 160vh;
|
||||
height: 150vh;
|
||||
}
|
||||
|
||||
#page {
|
||||
#page {
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
height: 60vh;
|
||||
height: 50vh;
|
||||
width: 100vw;
|
||||
}
|
||||
}
|
||||
|
||||
#wikiframediv {
|
||||
#wikiframediv {
|
||||
position: absolute;
|
||||
left: 0; top: 60vh;
|
||||
left: 0; top: 50vh;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#specialselectdiv {
|
||||
position: absolute;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
z-index: 10000;
|
||||
}
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
#specialiframediv {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: none;
|
||||
z-index: 100;
|
||||
}
|
||||
#specialiframediv iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
139
symbols.svg
@@ -14,7 +14,7 @@
|
||||
viewBox="0 0 32.3875 32.356251"
|
||||
version="1.1"
|
||||
id="svg5507"
|
||||
inkscape:version="0.92.1 r15371"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
sodipodi:docname="symbols.svg"
|
||||
enable-background="new">
|
||||
<defs
|
||||
@@ -26,9 +26,9 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="-9.2789814"
|
||||
inkscape:cy="99.623528"
|
||||
inkscape:zoom="15.839192"
|
||||
inkscape:cx="2.6413863"
|
||||
inkscape:cy="122.46453"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer8"
|
||||
showgrid="false"
|
||||
@@ -36,11 +36,35 @@
|
||||
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: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="true"
|
||||
inkscape:guide-bbox="true">
|
||||
<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>
|
||||
@@ -49,7 +73,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@@ -58,13 +82,12 @@
|
||||
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"
|
||||
<path
|
||||
id="Main"
|
||||
inkscape:label="#path8162" />
|
||||
d="m 0.05427516,-1.0836044 c -0.3145139,0 -0.6143881,0.069209 -0.886913,0.18447807 -0.27252616,0.11526864 -0.51761266,0.2834672 -0.72372176,0.48957617 -0.2061091,0.2061091 -0.3743076,0.4511958 -0.4895767,0.7237215 -0.1152682,0.2725256 -0.1773827,0.5723994 -0.1773827,0.88691326 0,0.3145142 0.062114,0.6072926 0.1773827,0.8798184 0.1152691,0.2725256 0.2834676,0.5247077 0.4895767,0.7308165 0.2061091,0.2061091 0.4511956,0.3672123 0.72372176,0.4824809 0.2725249,0.1152689 0.5723991,0.1844781 0.886913,0.1844781 0.314514,0 0.614388,-0.069209 0.886913,-0.1844781 C 1.2137144,3.1789318 1.4588008,3.0178286 1.6649099,2.8117195 1.871019,2.6056107 2.0392175,2.3534286 2.1544867,2.080903 2.2697548,1.8083772 2.3318695,1.5155988 2.3318695,1.2010846 2.3318695,0.88657074 2.2697548,0.58669694 2.1544867,0.31417134 2.0392175,0.04164564 1.871019,-0.20344106 1.6649099,-0.40955016 1.4588008,-0.61565913 1.2137144,-0.78385769 0.94118816,-0.89912633 0.66866316,-1.014395 0.36878916,-1.0836044 0.05427516,-1.0836044 Z"
|
||||
style="display:inline;fill-opacity:1;stroke-width:0.72655946;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99615389;marker-start:none"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:label="#path6386-5-5" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="Orientations"
|
||||
@@ -74,7 +97,7 @@
|
||||
<g
|
||||
id="Orientations"
|
||||
style="fill-opacity:1;stroke-opacity:0.99615389"
|
||||
transform="matrix(0.404233,0,0,0.404233,36.032029,1.0220986)">
|
||||
transform="matrix(0.40423298,0,0,0.40423298,35.516699,1.0220982)">
|
||||
<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"
|
||||
@@ -82,8 +105,8 @@
|
||||
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"
|
||||
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-opacity:1;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>
|
||||
@@ -91,10 +114,11 @@
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Ateliers_pluridisciplinaires"
|
||||
style="display:none;">
|
||||
style="display:none">
|
||||
<g
|
||||
transform="matrix(0.71815477,0,0,0.71815477,65.187921,-29.508788)"
|
||||
id="Ateliers_pluridisciplinaires">
|
||||
transform="matrix(0.65256016,0,0,0.65256016,58.839197,-27.116613)"
|
||||
id="Ateliers_pluridisciplinaires"
|
||||
style="">
|
||||
<circle
|
||||
r="19.208878"
|
||||
cy="40.264759"
|
||||
@@ -110,30 +134,30 @@
|
||||
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" />
|
||||
id="path8174"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Cours_de_soutien_a_l'orientation"
|
||||
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)">
|
||||
id="Cours_de_soutien_a_l_orientation"
|
||||
style="display:inline;fill-opacity:1;stroke-opacity:0.99615389"
|
||||
transform="matrix(0.40423297,0,0,0.40423297,35.552134,0.97198436)"
|
||||
inkscape:label="#Cours_de_soutien_a_l_orientation">
|
||||
<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"
|
||||
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-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
|
||||
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"
|
||||
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-opacity:1;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>
|
||||
@@ -145,7 +169,7 @@
|
||||
<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)">
|
||||
transform="matrix(0.40361541,0,0,0.40361541,36.375644,35.301905)">
|
||||
<path
|
||||
transform="translate(-446.2952,-500.01912)"
|
||||
id="path6358"
|
||||
@@ -179,7 +203,7 @@
|
||||
style="display:none">
|
||||
<g
|
||||
id="Cours_techniques"
|
||||
transform="matrix(0.42076685,0,0,-0.42076685,-14.006109,85.183824)"
|
||||
transform="matrix(0.41014612,0,0,-0.41014612,-14.018646,82.999971)"
|
||||
inkscape:label="#g3142"
|
||||
style="fill-opacity:1;stroke-opacity:1">
|
||||
<title
|
||||
@@ -203,27 +227,50 @@
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer7"
|
||||
inkscape:label="Cours_theoriques">
|
||||
inkscape:label="Actualites"
|
||||
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-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"
|
||||
d="M 6.15217,1.2480664 C 6.15217,4.6458175 3.397748,7.4002357 -7.9603524e-7,7.4002357 -3.3977514,7.4002357 -6.1521696,4.6458175 -6.1521696,1.2480664 c 0,-3.397751 2.7544182,-6.1521693 6.15216880396476,-6.1521693 C 3.397748,-4.9041029 6.15217,-2.1496846 6.15217,1.2480664 Z"
|
||||
style="fill-opacity:1;stroke-width:0.77512467;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:2.23606801;stroke-dasharray:2.32537419, 2.32537419;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-opacity:1;stroke-opacity:0.99615389"
|
||||
transform="matrix(0.40423298,0,0,0.40423298,35.552135,0.97198353)"
|
||||
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-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-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-opacity:1;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">
|
||||
style="display:inline">
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill-opacity:1;stroke-width:0.97391373;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill-opacity:1;stroke-width:0.974;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="Enseignants"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="0.36393768"
|
||||
sodipodi:cy="2.2478313"
|
||||
sodipodi:cx="0.49757248"
|
||||
sodipodi:cy="1.1894979"
|
||||
sodipodi:r1="6.7946506"
|
||||
sodipodi:r2="3.397325"
|
||||
sodipodi:arg1="0.52606642"
|
||||
@@ -231,7 +278,7 @@
|
||||
inkscape:flatsided="true"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="M 6.2398764,5.6596667 -5.5287678,5.6306258 0.38070444,-4.5467985 Z"
|
||||
d="M 6.3735112,4.6013333 -5.395133,4.5722924 0.51433925,-5.6051319 Z"
|
||||
inkscape:transform-center-x="0.013378058"
|
||||
inkscape:transform-center-y="2.6969222"
|
||||
inkscape:label="#path3225-6-7-7" />
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 17 KiB |