MediaWiki:XIOTCalculator.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- 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("Код заказа скопирован в буфер обмена");
});
});
});