Skip to content
edit-tapschema.js 4.47 KiB
Newer Older
    // Function factory to handle custom communications between the backing bean and JavaScript functions
    function eventHandlerFactory(handler, componentId) {
        return function (event) {
            if (event.status === 'success') {
                var srcId = componentId ? componentId : event.source.getAttribute('id');
                var jsUpdate = null, htmlUpdate = null;

                var jsupdates = event.responseXML.getElementById('jsupdates');
                if (jsupdates) {
                    jsupdates = jsupdates.childNodes;
                    for (var i = 0; i < jsupdates.length; i++) {
                        var jsu = jsupdates[i];
                        if (jsu.getAttribute('src') === srcId) {
                            jsUpdate = jsu.innerText || jsu.textContent;
                            break;
                        }
                    }
                }

                var htmlupdates = event.responseXML.getElementById('htmlupdates');
                if (htmlupdates) {
                    htmlupdates = htmlupdates.childNodes;
                    for (var i = 0; i < htmlupdates.length; i++) {
                        var hu = htmlupdates[i];
                        if (hu.getAttribute('src') === srcId) {
                            htmlUpdate = hu;
                            break;

                handler(event.source, jsUpdate, htmlUpdate);
    var COLUMNS_COMPONENT_ID = 'main:columns-list';

    TSM.displayUpdateOperations = eventHandlerFactory(function (srcElement, jsupdate) {
        $('#updateOperationsModal').modal('show');
    });

    TSM.saveUCDCalled = eventHandlerFactory(function (srcElement, jsupdate) {
        if (jsupdate !== null) {
            $('#searchUCDModal').modal('hide');
        }
        // Hide loading
        $('.loading').addClass('hide');
    });

    TSM.textInputChanged = eventHandlerFactory(function (srcElement, jsupdate) {
        $(srcElement).toggleClass('changed', jsupdate === 'true');
    });

    TSM.stopPropagation = function (event) {
        event.stopPropagation();
        event.preventDefault();
        return false;
    };

    TSM.columnChanged = function (event) {
        if (event.status === 'success') {
            var $li = $(event.source).closest('li');
            $li.closest('ul').find('li').removeClass('active');
            $li.addClass('active');
        }
    };

    TSM.columnRemoved = eventHandlerFactory(function (srcElement, jsupdate, htmlupdate) {
        jsupdate = JSON.parse(jsupdate);
        var $ul = $(srcElement).closest('ul');
        $(srcElement).closest('a').find('span').addClass('strikeout');
        $(srcElement).prop('disabled', true);

        if (jsupdate.selectedColumn !== undefined) {
            $ul.find('li').removeClass('active');
            $ul.find('li:nth-child(' + (jsupdate.selectedColumn + 1) + ')').addClass('active');
        }
    }, COLUMNS_COMPONENT_ID);

    TSM.columnRemovalUndo = eventHandlerFactory(function (srcElement, jsupdate) {
        var $a = $('#main\\:columns-list\\:' + jsupdate + '\\:column-selector');
        $a.find('input').prop('disabled', false);
        $a.find('.strikeout').removeClass('strikeout');
        $a.removeClass('strikeout');
    }, COLUMNS_COMPONENT_ID);

    TSM.ucdTextKeyDown = function (event) {
        if (event.keyCode === 13) {
            $('#ucd_search_form\\:search_UCD_btn').click();
        }
    };

    TSM.openAddablesModal = function (event) {
        if (event.status === 'success') {
            $('#addablesModal').modal('show');
        }
    };

    TSM.entitiesAdded = function (event) {
        if (event.status === 'success') {
            $('#addablesModal').modal('hide');
        }
    };

    TSM.openSearchUCDModal = function (event) {
        if (event.status === 'success') {
            $('.loading').addClass('hide');
            $('#searchUCDModal').modal('show');
    TSM.closeSearchUCDModal = function (event) {
        if (event.status === 'success') {
            $('#searchUCDModal').modal('hide');
        }
    };
Sonia Zorba's avatar
Sonia Zorba committed

    TSM.notifyUpdate = function (event) {
        if (event.status === 'success' && $(event.responseXML).find('error').length === 0) {
            $('#updateSuccessModal').modal('show');
        }
    };

    TSM.updateFromModal = function () {
        $('#updateOperationsModal').modal('hide');
        $('#main\\:update-btn').click();
    };