158 lines
5.7 KiB
JavaScript
158 lines
5.7 KiB
JavaScript
|
/* 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
|
||
|
*/
|
||
|
};
|
||
|
})();
|