ConnectionDetailsJavaScript.html (196 lines of code) (raw):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script> $(function() { disableButtons(); toggleLoader(); $('#sidebar-save-button').click(onSaveClick); $('#sidebar-check-button').click(onCheckClick); $('#sidebar-clear-button').click(onClearClick); $('#sidebar-host').keyup(hostChanged); $('#sidebar-port').keyup(hostChanged); $('#sidebar-user').keyup(hostChanged); $('#sidebar-pass').keyup(hostChanged); $('#sidebar-ssl').change(hostChanged); getHostData(getInitialHostSuccess); }); function getHostData(success_function) { if(!success_function) { success_function = function(msg) { }; } google.script.run .withSuccessHandler(success_function) .withFailureHandler(failure) .getHostData(); } function getInitialHostSuccess(msg) { $('#sidebar-host').val(msg.host); $('#sidebar-port').val(msg.port); $('#sidebar-user').val(msg.username); $('#sidebar-pass').val(msg.password); $('#sidebar-ssl').prop('checked', msg.use_ssl); $('#was-checked').val(msg.was_checked); enableButtons(); if(msg.was_checked === "1") { $("#sidebar-check-button").prop('disabled', true); addContinueButton(); onContinueClick(); } else { $('#connection-details-sidebar').removeClass('hidden'); $('#push-data-sidebar').addClass('hidden'); } toggleLoader(); } function hostChanged() { $('#was-checked').val(0); $("#sidebar-check-button").prop('disabled', false); disableContinueButton(); } function onSaveClick() { disableButtons(); toggleLoader(); var host = getHost(); // First check the connection checkClusterConnection(host,onSaveClickCheckHostSuccess); } function onClearClick() { disableButtons(); enableLoader(); google.script.run .withSuccessHandler(function() { clearHost(); hostChanged(); showStatus('Data cleared.'); enableButtons(); disableLoader(); } ) .withFailureHandler(failure) .clearData(); } function onSaveClickCheckHostSuccess(msg) { $('#was-checked').val(1); $("#sidebar-check-button").prop('disabled', true); var host = getHost(); saveHostData(host); } function saveHostData(host) { google.script.run .withSuccessHandler(saveClickSuccess) .withFailureHandler(failure) .saveHostData(host); } function saveClickSuccess(msg) { showStatus('Successfully verified and saved your cluster details.'); enableButtons(); $("#sidebar-check-button").prop('disabled', true); addContinueButton(); toggleLoader(); } function failure(msg) { showStatus(msg, 'error'); enableButtons(); toggleLoader(); } /** * Calls the server to retrieve information from the sheet. * Gets the value in the active cell, which is then placed in the * sidebar text field. */ function onCheckClick() { disableButtons(); toggleLoader(); var host = getHost(); checkClusterConnection(host,checkClusterSuccess); } function checkClusterConnection(host,success_callback) { google.script.run .withSuccessHandler(success_callback) .withFailureHandler(failure) .checkClusterConnection(host); } function checkClusterSuccess(msg) { showStatus('Successfully connected to your cluster.'); $('#was-checked').val(1); enableButtons(); toggleLoader(); $("#sidebar-check-button").prop('disabled', true); } function checkClusterFailure(msg) { showStatus(msg, 'error'); enableButtons(); toggleLoader(); } /** * Displays the given status message in the sidebar. * * @param {String} msg The status message to display. * @param {String} classId The message type (class id) that the message * should be displayed as. */ function showStatus(msg, classId) { $('#sidebar-status').removeClass().html(msg); if (classId) { $('#sidebar-status').addClass(classId); } } function toggleLoader() { if($('#static').hasClass('show-inline')) { $('#static').removeClass().addClass('hidden'); $('#loader').removeClass().addClass('show-inline'); } else { $('#loader').removeClass().addClass('hidden'); $('#static').removeClass().addClass('show-inline'); } } function disableButtons() { $("#sidebar-save-button").prop('disabled', true); $("#sidebar-check-button").prop('disabled', true); } function enableButtons() { $("#sidebar-save-button").prop('disabled', false); $("#sidebar-check-button").prop('disabled', false); } function getHost() { return { host : $('#sidebar-host').val().trim(), port : $('#sidebar-port').val(), username : $('#sidebar-user').val(), password : $('#sidebar-pass').val(), use_ssl : $('#sidebar-ssl').is(':checked'), was_checked : $('#was-checked').val() }; } function clearHost() { $('#sidebar-host').val(''); $('#sidebar-port').val(''); $('#sidebar-user').val(''); $('#sidebar-pass').val(''); $('#sidebar-ssl').attr('checked', false); $('#was-checked').val(0); } function addContinueButton() { $('#sidebar-save-button').removeClass(); if(!$('#sidebar-continue-button').length) { var table = $('#connection-details-table tr:last'); table.after(['<td colspan="3" style="text-align:right;">', '<button id="sidebar-continue-button" class="action">Edit Data Details</button>', '</td>'].join('')); $('#sidebar-continue-button').click(onContinueClick); } else { enableContinueButton(); } } function disableContinueButton() { if($('#sidebar-continue-button').length > 0) { $('#sidebar-continue-button').prop('disabled', true); } } function enableContinueButton() { if($('#sidebar-continue-button').length > 0) { $('#sidebar-continue-button').prop('disabled', false); } } function onContinueClick() { $('#connection-details-sidebar').addClass('hidden'); $('#push-data-sidebar').removeClass('hidden'); } </script>