משתמש:בוט גאון הירדן/השוואה.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
mw.loader.using(["mediawiki.api", "ext.gadget.mw-import"]).then(() => {
const pageName = mw.config.get("wgPageName");
const wls = mw.config.get("wgCanonicalSpecialPageName") === "Whatlinkshere";
let titleOfElement = "";
let wikiName = "";
if (
mw.config.get("wgNamespaceNumber") === 14 ||
["מיוחד:כל_הדפים", "מיוחד:דפים_מוזנחים"].includes(pageName) ||
wls
) {
$("<button>השוואת כל הערכים</button>")
.prependTo("#bodyContent")
.click(createList);
}
async function createList() {
const api = new mw.Api();
const addr = mw.user.options.get("userjs-import-source") === "direct" ? "https://he.wikipedia.org/w/api.php" :"https://import.hamichlol.org.il"
const importer = new mw.import(addr);
let openLinks = false;
if (
mw.config.get("wgUserGroups").indexOf("wikiupdate") !== -1 /*&&
mw.config.get("wgUserGroups").indexOf("aspaklaryaEditor") !== -1*/
) {
openLinks = confirm("לעדכן ערכים עם הפרש גדול?");
}
const alCon =
mw.config.get("wgNamespaceNumber") === 14
? "#mw-pages"
: "#mw-content-text";
const allElementes = $(alCon).find("li").toArray();
for await (const {
el,
query: { pages, logevents, redirects },
} of returnData(allElementes)) {
if (Object.keys(pages)[0] === "-1") {
if (logevents[0]) {
const content = `[[${logevents[0].params.target_title}]]`;
const parse = await api.parse(content);
const lintRid = $(parse).find("a").prop('outerHTML');
$(el).append(
$(`<span dir="rtl"> (הועבר אל: ${lintRid} )</span>`)
);
} else {
$(el).append($('<span dir="rtl"> (לא נמצא)</span>'));
}
} else {
if (redirects) {
const content = `[[${redirects[0].to}]]`;
const parse = await api.parse(content);
const lintRid = $(parse).find("a").prop('outerHTML');
$(el).append(
$(`<span dir="rtl"> (מפנה אל: ${lintRid} )</span>`)
);
} else {
const wikiSize = Object.values(pages)[0].length;
params = {
prop: "info",
titles: $(el).find("a").first().text(),
};
const { query } = await api.get(params);
const localSize = Object.values(query.pages)[0].length;
const diffsize = wikiSize - localSize;
const itemSize = createSizeElement(diffsize);
const updateLimit = typeof Updatelimit !== 'undefined' ? Updatelimit : 399;
$(el).append(" " + itemSize);
if (openLinks && diffsize > updateLimit) {
importer.importWikitext({
page: wikiName,
exist: true,
form: true,
});
}
}
}
}
}
async function* returnData(allElementes) {
for (const el of allElementes) {
titleOfElement = $(el).find("a").first().text();
wikiName = titleOfElement
.replace(/_/g, " ")
.replace(/^רבי\s/, "")
.replace(/^הרב\s/, "")
.replace(/ה\"קדושה\"/g, "הקדושה")
.replace(/ה\"קדוש\"/g, "הקדוש")
.replace(/ה\"קדושים\"/g, "הקדושים")
.replace(/אישיות_מהתנ\"ך/g, "דמות מקראית");
var params = {
list: "logevents",
utf8: 1,
leprop: "title|details",
letype: "move",
letitle: wikiName,
lelimit: 1,
prop: "info",
titles: wikiName,
redirects: 1,
};
yield {
el,
query: (await new mw.ForeignApi(mw.user.options.get("userjs-import-source") === "direct" ? "https://he.wikipedia.org/w/api.php" :"https://import.hamichlol.org.il", { anonymous: true }).get(params))
.query,
};
}
}
const createSizeElement = (diffsize) => {
const absSize = Math.abs(diffsize);
const isLarge = absSize > 399;
const sign = diffsize > 0 ? "+" : diffsize < 0 ? "-" : "0";
const className = diffsize > 0 ? "neg" : diffsize < 0 ? "pos" : "null";
return `
<span dir="rtl" class="mw-rtrc-meta">
<${
isLarge ? "strong" : "span"
} class="mw-plusminus mw-plusminus-${className}">
(${sign}${absSize.toLocaleString()})
</${isLarge ? "strong" : "span"}>
</span>
`;
};
});