Skip to content
edit-tapschema.js 3.58 KiB
Newer Older
(function ($) {

    function eventHandlerFactory(handler) {
        return function (event) {
            if (event.status === 'success') {
                var jsupdates = event.responseXML.getElementById('jsupdates');
                if (jsupdates) {
                    jsupdates = jsupdates.childNodes;
                    var sourceId = event.source.getAttribute('id');
                    for (var i = 0; i < jsupdates.length; i++) {
                        var jsupdate = jsupdates[i];
                        if (jsupdate.getAttribute('src') === sourceId) {
                            handler(event.source, jsupdate.innerText || jsupdate.textContent);
                            return;
                        }
    window.global = {
        textInputChanged: eventHandlerFactory(function (srcElement, response) {
            $(srcElement).toggleClass('changed', response === 'true');
        }),
        columnChanged: function (event) {
            if (event.status === 'success') {
                var $li = $(event.source).closest('li');
                $li.closest('ul').find('li').removeClass('active');
                $li.addClass('active');
        },
        stopPropagation: function (event) {
            event.stopPropagation();
            event.preventDefault();
            return false;
        },
        columnRemoved: eventHandlerFactory(function (srcElement, response) {
            response = JSON.parse(response);
            var $ul = $(srcElement).closest('ul');
            if (response.hideRemoved) {
                $(srcElement).closest('li').remove();
            } else {
                $(srcElement).closest('a').find('span').addClass('strikeout');
                $(srcElement).prop('disabled', true);
            if (response.selectedColumn !== null) {
                $ul.find('li').removeClass('active');
                $ul.find('li:nth-child(' + (response.selectedColumn + 1) + ')').addClass('active');
            if (response.hideRemoved) {
                // Restore correct ids
                $ul.find('li').each(function (index, element) {
                    var $a = $(element).find('a');
                    var baseId = 'main:columns-list:' + index;
                    $a.attr('id', baseId + ':column-selector');
                    $a.find('input').attr('id', baseId + ':column-remover');
            }
        }),
        columnRemovalUndo: eventHandlerFactory(function (srcElement, response) {
            var $a = $('#main\\:columns-list\\:' + response + '\\:column-selector');
            $a.find('input').prop('disabled', false);
            $a.find('.strikeout').removeClass('strikeout');
        }),
        ucdTextKeyDown: function (event) {
            if (event.keyCode === 13) {
                $('#ucd_search_form\\:search_UCD_btn').click();
            }
        },
        openAddablesModal: function (event) {
            if (event.status === 'success') {
                $('#addablesModal').modal('show');
            }
        },
        entitiesAdded: function (event) {
            if (event.status === 'success') {
                $('#addablesModal').modal('hide');
            }
        },
        openSearchUCDModal: function (event) {
            if (event.status === 'success') {
                $('#searchUCDModal').modal('show');
            }
        },
        closeSearchUCDModal: function (event) {
            if (event.status === 'success') {
                $('#searchUCDModal').modal('hide');