/* globals $, urls, updateEnabled */ (function () { var origData; var setupButtonClickOnRefreshedProperties = function () { $('#formRefreshCAS button').on('click', function (e) { e.preventDefault(); // Show the refreshModal var myModal = $('#refreshModal').modal({ keyboard: false, backdrop: 'static' }); var primaryButton = myModal.find('.modal-footer button.btn-primary'); // Disable the primary button primaryButton.prop('disabled', true).text('Refreshing...'); $.post(e.target.parentNode.action, function (data) { if (data.length !== 0) { $('#refreshModal-label').text('Refreshed Properties'); myModal.find('.modal-content .modal-body').html( '<pre>' + data + '</pre>' + '<p>Click "OK" to reload page.</p>' ); } else { myModal.find('.modal-header .modal-title').text('Properties Refreshed'); myModal.find('.modal-content .modal-body').html( '<p>Click "OK" to reload page.</p>' ); } }) .done(function () { primaryButton.prop('disabled', false).text('Reload page').on('click', function (e) { e.preventDefault(); window.location.reload(); }); }) .fail(function (jqXHR) { $('#refreshModal-label').text('Problem With Refreshing Properties'); myModal.find('.modal-content .modal-body').html( '<div class="alert alert-warning"><strong>Status: ' + jqXHR.status + '</strong><p/>Unable to refresh the properties. Please try again.</div>' ); primaryButton.prop('disabled', false).text('OK').on('click', function (e) { e.preventDefault(); myModal.modal('hide'); }); }); }); }; var createDataTable = function () { $('#viewConfigsTable').DataTable({ 'autoWidth': false, 'initComplete': function (settings, json) { if (!json) { $('#loadingMessage').hide(); $('#viewConfigError').show(); $('#view-configuration').hide(); } else { $('#loadingMessage').hide(); $('#viewConfigError').hide(); $('#view-configuration').show(); } }, 'drawCallback': function () { var api = this.api(); if (api.page.info().pages > 1) { $('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'block'; } else { $('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'none'; } if (updateEnabled) { editTable(); } }, 'processing': true, 'ajax': { 'url': urls.getConfiguration, 'dataSrc': function (json) { var returnData = []; for (var item in json) { returnData.push({ 'key': '<code>' + item + '</code>', 'value': '' + json[item] + '' }); } return returnData; } }, 'columns': [ {'data': 'key', 'className': 'col-xs-6 key'}, {'data': 'value', 'className': 'col-xs-6 value'} ], 'pageLength': 50 }); }; var getRowData = function (row) { var tds = row.find('td'); var tmp = {}; $.each(tds, function (i) { if (i % 2 === 0) { tmp.key = $(this).text(); } else { tmp.value = $(this).text(); } }); return tmp; }; var editTable = function () { $('#viewConfigsTable').editableTableWidget({editor: $('<textarea>')}); $('#viewConfigsTable td').on('focus', function () { origData = getRowData($(this).closest('tr')); }); $('#viewConfigsTable tr').on('change', function () { var newChanges = getRowData($(this)); var data = {old: origData, new: newChanges}; $.ajax({url: urls.updateConfiguration, data: JSON.stringify(data), type: 'POST', contentType: 'application/json'}) .fail(function () { var result = 'Failed to save settings.'; $('#alertWrapper').addClass('alert-warning'); $('#alertWrapper').removeClass('alert-success'); $('#alertWrapper').text(result); $('#alertWrapper').show(); }) .success(function () { var result = 'Saved settings successfully.'; $('#alertWrapper').removeClass('alert-warning'); $('#alertWrapper').addClass('alert-success'); $('#resultText').text(result); $('#alertWrapper').show(); }); }); }; // initialization ******* (function init () { createDataTable(); setupButtonClickOnRefreshedProperties(); })(); // Public Methods return { /** * Not used */ }; })();