Full MOPS

ввод параметров

// ==UserScript==
// @name         Full MOPS
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  ввод параметров
// @author       ZV
// @match        *://mops-dafuc0a6ftbqguhy.z01.azurefd.net/*
// @match        *://tng-mops-portal.azurewebsites.net/*
// @match        *://mops-portal.azurewebsites.net/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=triplenext.net
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    function initialize() {
        // Найти все радио-кнопки
        var radioButtons = document.querySelectorAll('input[type="radio"]');
        var textField = document.querySelector('input.flex-grow-1');

        if (radioButtons.length > 0 && textField) {
            clearInterval(intervalId); // Останавливаем интервал, когда элементы найдены

            radioButtons.forEach(function(radio) {
                radio.addEventListener("change", function() {
                    if (radio.checked) {
                        var radioValue = radio.value;
                        var textMappings = {
                            "Complex": "",
                            "Custom": optionsCustom[0],  // Устанавливаем значение как первую опцию из выпадающего списка
                            "PreFilterPictures": "40/40",
                            "ImageChoice": "30/30",
                            "ImageBackgroundRemoval": options[0],  // Устанавливаем значение как первую опцию из выпадающего списка
                            "ProductModeration": "5/5",
                            "DoubtfulModeration": "12/12",
                            "ProductApproval": "8/8",
                            "UpdatePictureFilter": "40/40",
                            "ImageUpdate": "5/5",
                            "ProductUpdate": "10/10"
                        };

                        // Скрываем выпадающий список
                        hideDropdown();

                        // Если выбрана кнопка "ImageBackgroundRemoval", показываем выпадающий список и устанавливаем первую опцию
                        if (radioValue === "ImageBackgroundRemoval") {
                            showDropdown(textField, options);
                            textField.value = options[0];
                            textField.dispatchEvent(new Event('change'));
                        }
                        // Если выбрана кнопка "Custom", показываем выпадающий список и устанавливаем первую опцию
                        else if (radioValue === "Custom") {
                            showDropdown(textField, optionsCustom);
                            textField.value = optionsCustom[0];
                            textField.dispatchEvent(new Event('change'));
                        }
                        // Для других кнопок просто устанавливаем значение в поле ввода
                        else {
                            textField.value = textMappings[radioValue] || "";
                            textField.dispatchEvent(new Event('change'));
                        }
                    }
                });
            });
        }
    }

    function hideDropdown() {
        var dropdown = document.querySelector('select');
        if (dropdown) {
            dropdown.parentNode.removeChild(dropdown); // Удаляем выпадающий список
        }
    }

    function showDropdown(textField, options) {
        var dropdown = document.createElement('select');

        options.forEach(function(option) {
            var optionElement = document.createElement('option');
            optionElement.value = option;
            optionElement.text = option;
            dropdown.add(optionElement);
        });

        // Устанавливаем ширину выпадающего списка равной ширине поля ввода
        dropdown.style.width = textField.offsetWidth + 'px';

        // Обработчик изменения значения в выпадающем списке
        dropdown.addEventListener('change', function() {
            textField.value = this.value;
            textField.dispatchEvent(new Event('change'));
        });

        // Показываем выпадающий список
        textField.parentNode.insertBefore(dropdown, textField.nextSibling);
        dropdown.focus();
    }

    // Варианты ответов для ImageBackgroundRemoval
    var options = ["5/5", "4/5", "3/5", "2/5", "1/5", "5/5 завис",  "4/5 завис", "3/5 завис", "2/5 завис", "1/5 завис", "4/5 сложные картинки", "3/5 сложные картинки", "2/5 сложные картинки", "1/5 сложные картинки"];

    // Варианты ответов для Custom
    var optionsCustom = ["нет тасков", "завис админ"];

    // Инициализация через setInterval для проверки, когда элементы будут доступны
    var intervalId = setInterval(function() {
        initialize();
    }, 1000);

})();