mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
| /*
 | |
|  * index.js
 | |
|  * Copyright (c) 2017 thegrumpydictator@gmail.com
 | |
|  *
 | |
|  * This file is part of Firefly III.
 | |
|  *
 | |
|  * Firefly III is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * Firefly III is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with Firefly III.  If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| /** global: jobKey, Modernizr */
 | |
| 
 | |
| var intervalId = 0;
 | |
| 
 | |
| $(function () {
 | |
|       "use strict";
 | |
|       // on click of export button:
 | |
|       // - hide form
 | |
|       // - post export command
 | |
|       // - start polling progress.
 | |
|       // - return false,
 | |
| 
 | |
|       $('#export').submit(startExport);
 | |
| 
 | |
|       if (!Modernizr.inputtypes.date) {
 | |
|           $('input[type="date"]').datepicker(
 | |
|               {
 | |
|                   dateFormat: 'yy-mm-dd'
 | |
|               }
 | |
|           );
 | |
|       }
 | |
|   }
 | |
| );
 | |
| 
 | |
| function startExport() {
 | |
|     "use strict";
 | |
|     hideForm();
 | |
|     showLoading();
 | |
|     hideError();
 | |
| 
 | |
|     // do export
 | |
|     callExport();
 | |
| 
 | |
|     return false;
 | |
| }
 | |
| 
 | |
| function hideError() {
 | |
|     "use strict";
 | |
|     $('#export-error').hide();
 | |
| }
 | |
| 
 | |
| function hideForm() {
 | |
|     "use strict";
 | |
|     $('#form-body').hide();
 | |
|     $('#do-export-button').hide();
 | |
| }
 | |
| 
 | |
| function showForm() {
 | |
|     "use strict";
 | |
|     $('#form-body').show();
 | |
|     $('#do-export-button').show().prop('disabled', false);
 | |
|     // enable button again:
 | |
| }
 | |
| 
 | |
| function showLoading() {
 | |
|     "use strict";
 | |
|     $('#export-loading').show();
 | |
| }
 | |
| 
 | |
| function hideLoading() {
 | |
|     "use strict";
 | |
|     $('#export-loading').hide();
 | |
| }
 | |
| 
 | |
| function showDownload() {
 | |
|     "use strict";
 | |
|     $('#export-download').show();
 | |
| }
 | |
| 
 | |
| function showError(text) {
 | |
|     "use strict";
 | |
|     $('#export-error').show().find('p').text(text);
 | |
| }
 | |
| 
 | |
| function callExport() {
 | |
|     "use strict";
 | |
|     var data = $('#export').serialize();
 | |
| 
 | |
|     // call status, keep calling it until response is "finished"?
 | |
|     intervalId = window.setInterval(checkStatus, 500);
 | |
| 
 | |
|     $.post('export/submit', data, null, 'json').done(function () {
 | |
|         // stop polling:
 | |
|         window.clearTimeout(intervalId);
 | |
| 
 | |
|         // call it one last time:
 | |
|         window.setTimeout(checkStatus, 500);
 | |
| 
 | |
|         // somewhere here is a download link.
 | |
| 
 | |
|         // keep the loading thing, for debug.
 | |
|         hideLoading();
 | |
| 
 | |
|         // show download
 | |
|         showDownload();
 | |
| 
 | |
|     }).fail(function (jqXHR) {
 | |
|         // show error.
 | |
|         // show form again.
 | |
|         var response = jqXHR.responseJSON;
 | |
|         var errorText = 'The export failed. Please check the log files to find out why.';
 | |
|         if (typeof response === 'object') {
 | |
|             errorText = response.message;
 | |
|         }
 | |
| 
 | |
|         showError(errorText);
 | |
| 
 | |
| 
 | |
|         // stop polling:
 | |
|         window.clearTimeout(intervalId);
 | |
| 
 | |
|         hideLoading();
 | |
|         showForm();
 | |
| 
 | |
|     });
 | |
| }
 | |
| 
 | |
| function checkStatus() {
 | |
|     "use strict";
 | |
|     $.getJSON('export/status/' + jobKey).done(function (data) {
 | |
|         putStatusText(data.status);
 | |
|     });
 | |
| }
 | |
| 
 | |
| function putStatusText(status) {
 | |
|     "use strict";
 | |
|     $('#status-message').text(status);
 | |
| } |