Загрузка данных


const menu =
    document.getElementById('menu');

const modelInput =
    document.getElementById('model');

const selected =
    document.getElementById('selected');

function post(name, data = {}) {
    return fetch(
        `https://${GetParentResourceName()}/${name}`,
        {
            method: 'POST',

            headers: {
                'Content-Type':
                    'application/json; charset=UTF-8'
            },

            body:
                JSON.stringify(data)
        }
    );
}

window.addEventListener(
    'message',
    (event) => {
        const data =
            event.data;

        if (data.action === 'open') {
            menu.classList.remove(
                'hidden'
            );

            setTimeout(() => {
                modelInput.blur();
            }, 0);
        }

        if (data.action === 'close') {
            menu.classList.add(
                'hidden'
            );
        }

        if (data.action === 'selected') {
            if (data.id) {
                selected.textContent =
                    `ID ${data.id} · ${data.model}`;
            } else {
                selected.textContent =
                    'ОБЪЕКТ НЕ ВЫБРАН';
            }
        }
    }
);

document
    .getElementById('create')
    .addEventListener(
        'click',
        () => {
            post(
                'create',
                {
                    model:
                        modelInput.value.trim()
                }
            );
        }
    );

document
    .getElementById('select')
    .addEventListener(
        'click',
        () => {
            post(
                'selectNearest'
            );
        }
    );

document
    .getElementById('edit')
    .addEventListener(
        'click',
        () => {
            post('edit');
        }
    );

document
    .getElementById('delete')
    .addEventListener(
        'click',
        () => {
            post('delete');
        }
    );

document.addEventListener(
    'keydown',
    (event) => {
        if (event.key === 'Escape') {
            post('close');
        }
    }
);