// various hints and extra info for the settings tab

var settingsHintsSetup = false;

onOptionsChanged(function() {
    if (settingsHintsSetup) return;
    settingsHintsSetup = true;

    gradioApp().querySelectorAll('#settings [id^=setting_]').forEach(function(div) {
        var name = div.id.substr(8);
        var commentBefore = opts._comments_before[name];
        var commentAfter = opts._comments_after[name];

        if (!commentBefore && !commentAfter) return;

        var span = null;
        if (div.classList.contains('gradio-checkbox')) span = div.querySelector('label span');
        else if (div.classList.contains('gradio-checkboxgroup')) span = div.querySelector('span').firstChild;
        else if (div.classList.contains('gradio-radio')) span = div.querySelector('span').firstChild;
        else span = div.querySelector('label span').firstChild;

        if (!span) return;

        if (commentBefore) {
            var comment = document.createElement('DIV');
            comment.className = 'settings-comment';
            comment.innerHTML = commentBefore;
            span.parentElement.insertBefore(document.createTextNode('\xa0'), span);
            span.parentElement.insertBefore(comment, span);
            span.parentElement.insertBefore(document.createTextNode('\xa0'), span);
        }
        if (commentAfter) {
            comment = document.createElement('DIV');
            comment.className = 'settings-comment';
            comment.innerHTML = commentAfter;
            span.parentElement.insertBefore(comment, span.nextSibling);
            span.parentElement.insertBefore(document.createTextNode('\xa0'), span.nextSibling);
        }
    });
});

function settingsHintsShowQuicksettings() {
    requestGet("./internal/quicksettings-hint", {}, function(data) {
        var table = document.createElement('table');
        table.className = 'settings-value-table';

        data.forEach(function(obj) {
            var tr = document.createElement('tr');
            var td = document.createElement('td');
            td.textContent = obj.name;
            tr.appendChild(td);

            td = document.createElement('td');
            td.textContent = obj.label;
            tr.appendChild(td);

            table.appendChild(tr);
        });

        popup(table);
    });
}
