לדלג לתוכן

משתמש:בוט גאון הירדן/השוואה.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">&nbsp;(הועבר אל:&nbsp;${lintRid}&nbsp;)</span>`)
          );
        } else {
          $(el).append($('<span dir="rtl">&nbsp;(לא נמצא)</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">&nbsp;(מפנה אל:&nbsp;${lintRid}&nbsp;)</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("&nbsp;" + 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>
      `;
  };
});