//------------------- //...Helper functions //------------------- // ########################################## Spinner object #################################### //-------------------------------------------------------------------------------------------------- //...spinner animation object //-------------------------------------------------------------------------------------------------- function createSpinnerObject() { // animation element var opts = { lines: 11, // 15 The number of lines to draw length: 4, // The length of each line width: 2, // The line thickness radius: 2, // 6The radius of the inner circle corners: 1, // Corner roundness (0..1) rotate: 0, // The rotation offset direction: 1, // 1: clockwise, -1: counterclockwise color: '#000', // #rgb or #rrggbb or array of colors speed: 1, // Rounds per second trail: 60, // Afterglow percentage shadow: false, // Whether to render a shadow hwaccel: false, // Whether to use hardware acceleration className: 'spinner', // The CSS class to assign to the spinner zIndex: 2e9, // The z-index (defaults to 2000000000) top: '-8', // Top position relative to parent in px left: '-16' // Left position relative to parent in px }; var spinner = new Spinner(opts); return spinner; } //-------------------------------------------------------------------------------------------------- function stopSpinnerObject(type) { spinner.stop(getSpinnerTarget(type)); } //-------------------------------------------------------------------------------------------------- function startSpinnerObject(type) { spinner.spin(getSpinnerTarget(type)); disableForm(document.DataAccessForm); } //-------------------------------------------------------------------------------------------------- function getSpinnerTarget(type) { var target; if (type == 'submit_form' || type == 'submit_chart') { target = document.getElementById('spinner_send'); } return target; } //-------------------------------------------------------------------------------------------------- function stopSpinnerObjects() { stopSpinnerObject('submit_chart'); stopSpinnerObject('submit_form'); } var spinner = createSpinnerObject(); // ########################################## Form Handling #################################### //-------------------------------------------------------------------------------------------------- //...Form handling //-------------------------------------------------------------------------------------------------- function disableForm(form){ form.disabled=true; for (i = 0; i < form.length; i++) { var formElement = form.elements[i]; if (true) { formElement.disabled = true; } } } //-------------------------------------------------------------------------------------------------- function enableForm(form){ form.disabled=false; for (i = 0; i < form.length; i++) { var formElement = form.elements[i]; if (true) { formElement.disabled = false; } } } //-------------------------------------------------------------------------------------------------- function warning(msg) { if (msg !== "") { alert(msg); } } //-------------------------------------------------------------------------------------------------- function checkDate() { if (document.getElementById("from").value === '') { document.getElementById("from").focus(); } else if (document.getElementById("to").value === '') { document.getElementById("to").focus(); } } // ########################################## Piwik #################################### //-------------------------------------------------------------------------------------------------- //...Enable Piwik Tracking Support //-------------------------------------------------------------------------------------------------- var pwurl; var pbase; var oscript; if ('https:' == document.location.protocol){ pwurl = 'https:'; } else{ pwurl = 'http:'; } pwurl += '//dienste.dlr.rlp.de/piwik/'; pbase = pwurl + 'piwik.js'; oscript = document.createElement('script'); oscript.type = 'text/javascript'; oscript.defer = true; oscript.async = true; oscript.src = pbase; document.getElementsByTagName('head')[0].appendChild(oscript); // ########################################## AJAX Communication #################################### //-------------------------------------------------------------------------------------------------- //...Events and requests handling //-------------------------------------------------------------------------------------------------- function createRequestObject() { var xmlhttp; if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; } //-------------------------------------------------------------------------------------------------- function prepareLink(type) { // get form fields // waage var widArr = new Array(); var waageIdsArr = $('#wid').chosen().val(); if (waageIdsArr !== null && waageIdsArr !== '') { widArr = waageIdsArr; } // Bundesland var blidArr = new Array(); var federalListArr = $('#blid').chosen().val(); if (federalListArr !== null && federalListArr !== '') { blidArr = federalListArr; } // Reg.-Bezirk var rbzidArr = new Array(); var districtListArr = $('#rbzid').chosen().val(); if (districtListArr !== null && districtListArr !== '') { rbzidArr = districtListArr; } // Landkreis var lkidArr = new Array(); var ruralListArr = $('#lkid').chosen().val(); if (ruralListArr !== null && ruralListArr !== '') { lkidArr = ruralListArr; } // date period var fromList = document.getElementById("from"); var from = fromList.options[fromList.selectedIndex].value; var toList = document.getElementById("to"); var to = toList.options[toList.selectedIndex].value; //...prepare request var link = 'tdsa_client.pl?type=' + type + '&wid=' + widArr + '&blid=' + blidArr + '&rbzid=' + rbzidArr + '&lkid=' + lkidArr + '&from=' + from + '&to=' + to; return link; } //-------------------------------------------------------------------------------------------------- //....Interface 1 //-------------------------------------------------------------------------------------------------- function sendRqst(type) { //...prepare request in order to update form var link = prepareLink(type); var httpReq = createRequestObject(); httpReq.open('get', link); httpReq.onreadystatechange = function(){handleResponse(httpReq);}; httpReq.send(null); startSpinnerObject(type); } //-------------------------------------------------------------------------------------------------- //...Callback handler for file download //-------------------------------------------------------------------------------------------------- function handleDownloadResponse (submitreq) { if (submitreq.readyState == 4) { if (submitreq.status == 200) { var responseSubmit = submitreq.responseText; var jsonResponse = JSON.parse(responseSubmit); stopSpinnerObjects(); if (jsonResponse.msg == "aggregation_ok") { //...track it try { var pwt = Piwik.getTracker(pwurl + "piwik.php", 5); pwt.setDocumentTitle("Download_Compare" + cid + "/" + document.getElementById('neighbor_des').firstChild.data); pwt.trackPageView(); pwt.enableLinkTracking(); } catch( err ) {} //...trigger Download var src ='tdsa_dl.pl?' + '&file=' + jsonResponse.file + '&filepath=' + jsonResponse.filepath; window.location = src; } else { warning(jsonResponse.msg); } enableForm(document.DataAccessForm); } //...HTTP_STATE_OK = 200 } //...READY_STATE_COMPLETE == 4 } //-------------------------------------------------------------------------------------------------- //...Callback handler for chart loading //-------------------------------------------------------------------------------------------------- function handleChartResponse (submitreq) { if (submitreq.readyState == 4) { if (submitreq.status == 200) { // ...indicate that chart is loading $('#loading_text').html(''); var responseSubmit = submitreq.responseText; var jsonResponse = JSON.parse(responseSubmit); stopSpinnerObjects(); if(jsonResponse.msg == "chart_data_ok") { stopSpinnerObjects(); var jsonData = jsonResponse.chart_data; showCharts(jsonData); enableForm(document.DataAccessForm); } else { clearCharts(); warning(jsonResponse.msg); } enableForm(document.DataAccessForm); } //...HTTP_STATE_OK = 200 } //...READY_STATE_COMPLETE == 4 } //-------------------------------------------------------------------------------------------------- //...Handler for common requests //-------------------------------------------------------------------------------------------------- function handleResponse(req) { if(req.readyState == 4) { if (req.status == 200) { var response = req.responseText; var jsonResponse = JSON.parse(response); if(jsonResponse.msg == "validate_ok") { // ...start file download if (jsonResponse.action == "submit_form") { var httpDownload; //...prepare link to generate downloadfile var linkDownload = prepareLink('start_download'); httpDownload = createRequestObject(); httpDownload.open('get', linkDownload); httpDownload.onreadystatechange = function () { handleDownloadResponse(httpDownload); }; httpDownload.send(null); } // ...load chart if (jsonResponse.action == "submit_chart") { var httpChart; // ...indicate that chart is loading $('#loading_text').html(jsonResponse.msg_chart_text); //...prepare link to generate chart var linkChart = prepareLink('load_chart'); httpChart = createRequestObject(); httpChart.open('get', linkChart); httpChart.onreadystatechange = function () { handleChartResponse(httpChart); }; httpChart.send(null); } } else { stopSpinnerObjects(); checkDate(); clearCharts(); enableForm(document.DataAccessForm); warning(jsonResponse.msg); } } //...HTTP_STATE_OK = 200 } //...READY_STATE_COMPLETE == 4 } //------------------------------------------------ //...Show chart //------------------------------------------------ function showCharts(json) { // override chart count to ensure correct resizing //chartCount = function () { return json.Charts.length; }; chartCount = function () { return 1; }; // prepare dlg dlgPrepare(); // show charts prepareCharts(json); } //------------------------------------------------ //...Show chart //------------------------------------------------ function clearCharts() { emptyCharts(); } //-------------------------------------------------------------------------------------------------- //...onload ready //-------------------------------------------------------------------------------------------------- $(function() { //...enable jquery tooltips for all emlements of document $( document ).tooltip(); // drop down list (chosen init) $("#wid").chosen({width:"280px", no_results_text: "Keine Übereinstimmung für..."}); $("#blid").chosen({width:"280px", no_results_text: "Keine Übereinstimmung für..."}); $("#rbzid").chosen({width:"280px", no_results_text: "Keine Übereinstimmung für..."}); $("#lkid").chosen({width:"280px", no_results_text: "Keine Übereinstimmung für..."}); //...init info-tooltips $( "#wginfo" ).tooltip({content:"