Перейти к содержанию

MediaWiki:XIOTCalculator.js

Материал из XIOT Wiki
Версия от 18:57, 12 ноября 2025; Admin (обсуждение | вклад) (Новая страница: «$(document).ready(function() { function updateTotal() { let total = 0; $("#xiot-license-table tr[data-code]").each(function() { const $row = $(this); const checked = $row.find(".license-check").is(":checked"); const qty = parseInt($row.find(".license-qty").val() || 1); const price = parseInt($row.data("price")); const subtotal = checked ? qty * price : 0; $row.find(".license-total").text(subtotal.toLocaleString("...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
$(document).ready(function() {
  function updateTotal() {
    let total = 0;
    $("#xiot-license-table tr[data-code]").each(function() {
      const $row = $(this);
      const checked = $row.find(".license-check").is(":checked");
      const qty = parseInt($row.find(".license-qty").val() || 1);
      const price = parseInt($row.data("price"));
      const subtotal = checked ? qty * price : 0;
      $row.find(".license-total").text(subtotal.toLocaleString("ru-RU") + " ₽");
      total += subtotal;
    });
    $("#xiot-total").text(total.toLocaleString("ru-RU") + " ₽");
  }

  $(".license-check").on("change", function() {
    const $row = $(this).closest("tr");
    const enabled = $(this).is(":checked");
    $row.find(".license-qty").prop("disabled", !enabled);
    updateTotal();
  });

  $(".license-qty").on("input", updateTotal);

  $("#xiot-generate").on("click", function() {
    const selected = [];
    $("#xiot-license-table tr[data-code]").each(function() {
      const $row = $(this);
      if ($row.find(".license-check").is(":checked")) {
        selected.push({
          code: $row.data("code"),
          qty: parseInt($row.find(".license-qty").val()),
          price: parseInt($row.data("price"))
        });
      }
    });

    if (selected.length === 0) {
      alert("Выберите хотя бы одну лицензию");
      return;
    }

    let code = "ORDER-" + Date.now() + "\n";
    let sum = 0;
    selected.forEach(item => {
      const subtotal = item.qty * item.price;
      sum += subtotal;
      code += `${item.code} × ${item.qty} = ${subtotal.toLocaleString("ru-RU")} ₽\n`;
    });
    code += `\nИтого: ${sum.toLocaleString("ru-RU")} ₽`;

    $("#xiot-code-output").html(
      `<pre style="background:#f7f7f7;padding:10px;border:1px solid #ccc;">${code}</pre>` +
      `<button id="xiot-copy">📋 Скопировать</button>`
    );

    $("#xiot-copy").on("click", () => {
      navigator.clipboard.writeText(code);
      alert("Код заказа скопирован в буфер обмена");
    });
  });
});