commit 41cf29c1f0c25efaf154b796ac89838cd876af44 Author: Michael Murtaugh Date: Mon Jan 17 13:51:34 2022 +0100 all the files copie from erg server diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1b03c31 --- /dev/null +++ b/Makefile @@ -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 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6be5c2b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,38 @@ +{ + "name": "recentfiles", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "@types/node": { + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==" + }, + "acorn": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", + "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==" + }, + "d3-selection": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.0.tgz", + "integrity": "sha512-EYVwBxQGEjLCKF2pJ4+yrErskDnz5v403qvAid96cNdCMr8rmCYfY5RGzWz24mdIbxmDf6/4EAH+K9xperD5jg==" + }, + "rollup": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.17.0.tgz", + "integrity": "sha512-k/j1m0NIsI4SYgCJR4MWPstGJOWfJyd6gycKoMhyoKPVXxm+L49XtbUwZyFsrSU2YXsOkM4u1ll9CS/ZgJBUpw==", + "requires": { + "@types/estree": "0.0.39", + "@types/node": "^12.6.2", + "acorn": "^6.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..012e95d --- /dev/null +++ b/package.json @@ -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" + } +} diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..13bbf30 --- /dev/null +++ b/rollup.config.js @@ -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() + ] +}]; \ No newline at end of file diff --git a/src/recentfiles.js b/src/recentfiles.js new file mode 100644 index 0000000..afd63f0 --- /dev/null +++ b/src/recentfiles.js @@ -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; id.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(); +}); \ No newline at end of file