Difference between revisions of "User:Fbstj/gadget/revision-contrib-pie.js"
Jump to navigation
Jump to search
(+) |
m (stash) |
||
Line 1: | Line 1: | ||
− | const pageid = mw.config.get(' |
+ | const pageid = mw.config.get('wgArticleID') |
const query = { |
const query = { |
||
// request the history of this page |
// request the history of this page |
||
Line 8: | Line 8: | ||
// request as many as you can at once |
// request as many as you can at once |
||
rvlimit: 'max', |
rvlimit: 'max', |
||
+ | // properties to fetch: |
||
+ | rvprop: [ 'ids', 'user', 'timestamp', 'size', 'tags', ], |
||
} |
} |
||
const api = new mw.Api({ parameters: query, }) |
const api = new mw.Api({ parameters: query, }) |
||
Line 17: | Line 19: | ||
} |
} |
||
+ | /// fetch consecutive results from the API until all "continue" have been fetched |
||
⚫ | |||
+ | /// |
||
⚫ | |||
⚫ | |||
+ | const page = resp.query.pages[pageid] |
||
+ | if (!page) { |
||
+ | console.warn('gadget:', 'revision-contrib-pie', 'no results?', resp, revs) |
||
+ | return |
||
+ | } |
||
+ | page.revisions.forEach(each_rev) |
||
+ | if (!resp.continue) { |
||
+ | console.debug('gadget:', 'revision-contrib-pie', 'done! found', revs.length) |
||
+ | return |
||
+ | } |
||
+ | console.debug('continuing:', resp.continue) |
||
+ | return api.get(resp.continue).then(paginate) |
||
+ | } |
||
+ | |||
+ | function paginate_all(resp) { |
||
+ | const pageids = Object.keys(resp.query.pages) |
||
+ | |||
⚫ | |||
if (!page) { |
if (!page) { |
||
console.warn('gadget:', 'revision-contrib-pie', 'no results?', resp, revs) |
console.warn('gadget:', 'revision-contrib-pie', 'no results?', resp, revs) |
Latest revision as of 19:54, 20 August 2019
const pageid = mw.config.get('wgArticleID') const query = { // request the history of this page pageids: [pageid], prop: 'revisions', // request the oldest edits first rvdir: 'newer', // request as many as you can at once rvlimit: 'max', // properties to fetch: rvprop: [ 'ids', 'user', 'timestamp', 'size', 'tags', ], } const api = new mw.Api({ parameters: query, }) const revs = [] function each_rev(rev) { revs.push(rev) } /// fetch consecutive results from the API until all "continue" have been fetched /// function paginate_one(resp) { const page = resp.query.pages[pageid] if (!page) { console.warn('gadget:', 'revision-contrib-pie', 'no results?', resp, revs) return } page.revisions.forEach(each_rev) if (!resp.continue) { console.debug('gadget:', 'revision-contrib-pie', 'done! found', revs.length) return } console.debug('continuing:', resp.continue) return api.get(resp.continue).then(paginate) } function paginate_all(resp) { const pageids = Object.keys(resp.query.pages) const page = let resp.query.pages[pageid] if (!page) { console.warn('gadget:', 'revision-contrib-pie', 'no results?', resp, revs) return revs } page.revisions.forEach(each)rev) if (!resp.continue) { return revs } console.debug('continuing:', resp.continue) return api.get(resp.continue).then(paginate) } api.get().then(paginate).then(function all_results(all) { // TODO: create pie chart of contributors (accurate to how much they contributed? mw.hook('page-history').fire(all) })