Skip to content
edit-tapschema.js 6.09 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';

    window.TSM = {
//        validateManualUCD: function (event) {
//            $clientValidationMessage = $('#ucd_search_form\\:ucd_validation_result');
//
//            var valid = UCDRegExp.test(event.target.value);
//            if (valid) {
//                $clientValidationMessage.empty();
//            } else {
//                $clientValidationMessage.text('Invalid UCD!');
//            }
//
//            $('#ucd_search_form\\:save_ucd').prop('disabled', !valid);
//        },
        displayUpdateOperations: eventHandlerFactory(function (srcElement, jsupdate) {
            $('#updateOperationsModal').modal('show');
        }),
        saveUCDCalled: eventHandlerFactory(function (srcElement, jsupdate) {
            if (jsupdate !== null) {
                $('#searchUCDModal').modal('hide');
            }
            // Hide loading
            $('.loading').addClass('hide');
        }),
        textInputChanged: eventHandlerFactory(function (srcElement, jsupdate) {
            $(srcElement).toggleClass('changed', jsupdate === 'true');
        stopPropagation: function (event) {
            event.stopPropagation();
            event.preventDefault();
            return false;
        },
        columnChanged: function (event) {
            if (event.status === 'success') {
                var $li = $(event.source).closest('li');
                $li.closest('ul').find('li').removeClass('active');
                $li.addClass('active');
        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:nth-child(' + (jsupdate.selectedColumn + 1) + ')').addClass('active');
        }, COLUMNS_COMPONENT_ID),
        columnRemovalUndo: eventHandlerFactory(function (srcElement, jsupdate) {
            var $a = $('#main\\:columns-list\\:' + jsupdate + '\\: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') {
Sonia Zorba's avatar
Sonia Zorba committed
                $('.loading').addClass('hide');
                $('#searchUCDModal').modal('show');
            }
        },
        closeSearchUCDModal: function (event) {
            if (event.status === 'success') {
                $('#searchUCDModal').modal('hide');
        },
        notifyUpdate: function (event) {
            if (event.status === 'success' && $(event.responseXML).find('error').length === 0) {
                $('#updateSuccessModal').modal('show');
            }
Sonia Zorba's avatar
Sonia Zorba committed
        },
Sonia Zorba's avatar
Sonia Zorba committed
        updateFromModal: function () {
            $('#updateOperationsModal').modal('hide');
            $('#main\\:update-btn').click();
    $(document).ready(function () {
        jsf.ajax.addOnError(function (error) {
            $('#errorModal .errorName').text(error.errorName);
            $('#errorModal .errorMessage').text(error.errorMessage);
            if (error.errorName.indexOf('ViewExpiredException') !== -1) {
                // If view has expired reload the page to display error message
                location.reload();
            } else {
                $('#errorModal').modal('show');
            }
        });
Sonia Zorba's avatar
Sonia Zorba committed

        // Setup loading animation
        jsf.ajax.addOnEvent(function (data) {
            if ($(data.source).is('input[type="text"]')) {
Sonia Zorba's avatar
Sonia Zorba committed
                return; // special case
            }
            switch (data.status) {
                case "begin":
Sonia Zorba's avatar
Sonia Zorba committed
                    showWaiting();
Sonia Zorba's avatar
Sonia Zorba committed
                    break;
                case "complete":
Sonia Zorba's avatar
Sonia Zorba committed
                    hideWaiting();
Sonia Zorba's avatar
Sonia Zorba committed
                    break;
            }
        });