Greasy Fork is available in English.

原価計算

原価計算ができる入力フィールドの作成

// ==UserScript==
// @name         原価計算
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  原価計算ができる入力フィールドの作成
// @license      MIT
// @match        *plus-nao.com/forests/TbMainproducts/mainedit/*
// @match        *plus-nao.com/forests/tb_mainproducts/mainedit/*
// @match        *plus-nao.com/forests/TbMainproducts/registered_mainedit/*
// @match        *plus-nao.com/forests/tb_mainproducts/registered_mainedit/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    const originalInputField = document.getElementById('TbMainproductGenkaTnk');

    function evaluateExpression(expr) {
        let result = NaN;
        try {
            expr = expr.replace(/+/g, '+')
                       .replace(/-/g, '-')
                       .replace(/×/g, '*')
                       .replace(/÷/g, '/');

            expr = expr.replace(/[0-9]/g, (c) => String.fromCharCode(c.charCodeAt(0) - 0xFEE0));

            result = new Function('return ' + expr)();
        } catch (error) {
            console.error('無効な式です:', error);
        }
        return result;
    }

    if (originalInputField) {
        const newInputField = document.createElement('input');
        newInputField.type = 'text';
        newInputField.id = 'TbMainproductGenkaTnkMultiplier';
        newInputField.placeholder = '原価を計算';

        originalInputField.parentNode.insertBefore(newInputField, originalInputField.nextSibling);

        newInputField.addEventListener('change', () => {
            const expr = newInputField.value.trim();
            const result = evaluateExpression(expr);

            if (!isNaN(result)) {
                originalInputField.value = Math.ceil(result * 23); // 原価を変更する場合はここの数字を変更
            }
        });
    }
})();