PushDataJavaScript.html (220 lines of code) (raw):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script> var header_timeout_id = 0; var data_timeout_id = 0; var docid_timeout_id = 0; var TIMER_TIMEOUT = 500; $(function() { disableButtons(); enableLoader(); $('#sidebar-push-button').click(onPushClick); $('#sidebar-conn-details-button').click(onConnDetailsClick); $('#sidebar-docid-range').focus(updateDocIdColumns); updateDocIdColumns(); google.script.run .withSuccessHandler( function(msg) { getSheetName(); getDefaultRange(); $('#sidebar-type').val('spreadsheet'); $('#sidebar-template').val('google_spreadsheet'); if(msg.was_checked === "0") { checkHost(msg); } else { enableButtons(); disableLoader(); } } ) .withFailureHandler( function(msg) { showStatus(msg, 'error'); disableLoader(); }) .getHostData(); $('#sidebar-data-range').focus(onDataChange); $('#sidebar-data-range').keyup(onDataChange); $('#sidebar-docid-range').focus(onDocIdChange); $('#sidebar-docid-range').keyup(onDocIdChange); $('#sidebar-index').focus(function() { clearIntervals(); }); $('#sidebar-type').focus(function() { clearIntervals(); }); $('#sidebar-template').focus(function() { clearIntervals(); }); }); function updateSpreadsheetHighlight(element_id) { var new_value = $('#'+element_id).val(); if(new_value) { if(new_value.length == 1) { new_value += ":"+new_value; } google.script.run .withSuccessHandler(function(msg) { showStatus(''); validateData(); }) .withFailureHandler(function(msg) { showStatus(msg, 'error'); }) .highlightData(new_value); } } function updateDocIdColumns() { google.script.run .withSuccessHandler(function(msg) { if(msg) { if($('#sidebar-docid-range option:gt(0)').length != msg.length) { $('#sidebar-docid-range option:gt(0)').remove(); var docid_input = $('#sidebar-docid-range'); for(var i in msg) { docid_input.append($("<option></option>").attr("value", msg[i].value).text(msg[i].text)); } } } }) .withFailureHandler(function(msg) { showStatus(msg, 'error'); }) .getDocIdOptions(); } function updateRange(element_id) { var elem = $('#'+element_id); google.script.run .withSuccessHandler(function(msg) { if(elem.val() != msg) { elem.val(msg); } }) .withFailureHandler(function(msg) { showStatus(msg, 'error'); }) .getSelectedRange(); } function onDataChange() { clearTimeout(data_timeout_id); data_timeout_id = setTimeout(function() { updateSpreadsheetHighlight('sidebar-data-range'); }, TIMER_TIMEOUT); } function onDocIdChange() { clearTimeout(docid_timeout_id); docid_timeout_id = setTimeout(function() { updateSpreadsheetHighlight('sidebar-docid-range'); }, TIMER_TIMEOUT); } /** * Calls the server to modify the sheet. * Replace the currently selected cell value with the value in the * sidebar text field. */ function onPushClick() { disableButtons(); enableLoader(); var index = $('#sidebar-index').val(); var index_type = $('#sidebar-type').val(); var template_name = $('#sidebar-template').val(); var data_range = $('#sidebar-data-range').val(); var doc_id_range = $('#sidebar-docid-range').val(); google.script.run .withSuccessHandler( function(msg) { showStatus('Success! The data is accessible <a href="'+msg+'" target="_blank">here.</a>'); enableButtons(); disableLoader(); }) .withFailureHandler( function(msg) { showStatus(msg, 'error'); enableButtons(); disableLoader(); }) .pushDataToCluster(index,index_type,template_name,data_range,doc_id_range); } function validateData() { var new_value = $('#sidebar-data-range').val(); google.script.run .withSuccessHandler( function(msg) { showStatus(''); }) .withFailureHandler(function(msg) { showStatus(msg, 'error'); }) .validateData(new_value); } function checkHost(host) { google.script.run .withSuccessHandler( function(msg) { enableButtons(); disableLoader(); } ) .withFailureHandler( function(msg) { showStatus('Could not connect to your cluster. Please test the connection details.', 'error'); disableButtons(); disableLoader(); } ) .checkClusterConnection(host); } function getSheetName() { google.script.run .withSuccessHandler(function(msg) { showStatus(''); $('#sidebar-index').val(msg); }) .getSheetName(); } /** * 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 disableButtons() { $("#sidebar-push-button").prop('disabled', true); } function enableButtons() { $("#sidebar-push-button").prop('disabled', false); } function enableLoader() { $('#static').removeClass().addClass('hidden'); $('#loader').removeClass().addClass('show-inline'); } function disableLoader() { $('#loader').removeClass().addClass('hidden'); $('#static').removeClass().addClass('show-inline'); } function failure(msg) { showStatus(msg, 'error'); enableButtons(); disableLoader(); } function getDefaultRange() { google.script.run .withSuccessHandler(function(msg) { showStatus(''); if(!$('#sidebar-data-range').val()) { $('#sidebar-data-range').val(msg); } enableButtons(); disableLoader(); }) .withFailureHandler(function(msg) { showStatus(msg, 'error'); disableLoader(); }) .getDefaultRange(); } function onConnDetailsClick() { $('#connection-details-sidebar').removeClass('hidden'); $('#push-data-sidebar').addClass('hidden'); } </script>