// Javascript file for fetch gis data portal // // // var generatePopup, loginClient, setupPortalUser, sendAjaxWithCallback, showConfirmation, populate2faSelect; $(document).ready(function() { populate2faSelect = function(userAssocArr){ userGroupStr = ''; for(user in userAssocArr){ userGroupStr += ''; } $('#adminUserSelect').html(userGroupStr); } logoutClient = function(){ var callback = function(response) { if(response['status'] == 'success') window.location="index.php?l=2"; else window.location="index.php"; }; var ajaxConfig = { url: 'ws/auth/logout.php', type: 'GET', callback: callback }; sendAjaxPost(ajaxConfig); } $('.logout').on('click', function(){ logoutClient(); }); showConfirmation = function(message,callback){ $('#confirmMessage').html(message); $("#confirmOkay").unbind().on('click', function(){ $('#confirmModalWrapper').fadeOut(); callback(true); }); $("#confirmCancel").unbind().on('click', function(){ $('#confirmModalWrapper').fadeOut(); callback(false); }); $('#confirmModalWrapper').fadeIn(); } sendAjaxPost = function(ajaxConfigObj){ var url = ajaxConfigObj.url; var data = ajaxConfigObj.data ? ajaxConfigObj.data : new FormData(); var callback = ajaxConfigObj.callback ? ajaxConfigObj.callback : false; var errback = ajaxConfigObj.errback ? ajaxConfigObj.errback : false; var uploadback = ajaxConfigObj.uploadback ? ajaxConfigObj.uploadback : false; var downloadback = ajaxConfigObj.downloadback ? ajaxConfigObj.downloadback : false; var type = ajaxConfigObj.type ? ajaxConfigObj.type : 'POST'; $.ajax({ // ajax request to run the type: type, url: url, data: data, contentType: false, processData: false, cache: false, xhr: function(){ var xhr = new window.XMLHttpRequest(); //Upload progress if(uploadback){ xhr.upload.addEventListener("progress", function(evt){ if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; uploadback(Math.floor(percentComplete * 100)); } }, false); } if(downloadback){ xhr.upload.addEventListener("progress", function(evt){ if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; progressback(Math.floor(percentComplete * 100)); } }, false); } return xhr; }, error: function(){ if(errback) errback(); else if(ajaxConfigObj.data) // if data is not preset then this is a script that initialiates at page load and does not reuire feedback on failure generatePopup('Error', 'There seems to be an issue with the request'); }, success: function(response) { if(response['status'] == 'sessionExpired'){ window.location="index.php?l=1"; } else { if(callback) callback(response); } } }); }; generatePopup = function(title, contentStr, stayForever){ // id should be a number in a progression of events var timeStamp = new Date().getTime(); var modalID = 'uploadPopup' + timeStamp; modalStr = ''; $('#container').append(modalStr); $('#'+modalID).modal('show'); if(!stayForever){ setTimeout(function(){ $('#'+modalID).modal('hide'); },8000); } } $(window).on('resize', function() { if(this.resizeTO) clearTimeout(this.resizeTO); this.resizeTO = setTimeout(function() { $(this).trigger('resizeEnd'); }, 10); }); function InfoPaneController(){ this.state = window.innerWidth > 991 ? 1 : 0; this.pref = 1; this.resizeHandler = undefined; this.clickHandler = undefined; } InfoPaneController.prototype = { startHandlers: function(){ var context = this; if(this.state == 0) this.toggle(false, 'fast'); this.clickHandler = $( "#sidePanelToggle" ).on('click', function(){ if($(this).hasClass("active")) context.toggle(false); else context.toggle(true); }); this.resizeHandler = $(window).on('resizeEnd', function() { if(window.innerWidth <= 991){ if(context.state == 1){ context.state = 0; context.toggle(false, 'fast'); } } else { if(context.state == 0){ context.state = 1; if(context.pref == 1){ context.toggle(true, 'fast'); } else { context.toggle(false, 'fast'); } } $('#actionContainerCover').fadeOut(); } }); }, toggle: function(show,fast){ var context = this; function togglePrefsAndModal(){ if(show){ if(window.innerWidth <= 991) $('#actionContainerCover').fadeIn(); else context.pref = 1; $( "#sidePanelToggle" ).addClass('active'); } else { if(window.innerWidth > 991) context.pref = 0; $('#actionContainerCover').fadeOut(); $( "#sidePanelToggle" ).removeClass('active'); } } var amountFromLeft = show ? 260 : 0; if(fast == 'fast'){ var cssStr = amountFromLeft + "px" $('#userInformationPane').css({"width":cssStr}); $( ".actionContainer" ).css({"margin-left":cssStr}); togglePrefsAndModal(); return; } $('#userInformationPane').stop().animate({ width: amountFromLeft, }, { duration: 250, step: function() { $(window).trigger('resizeEnd'); }, complete: function(){ togglePrefsAndModal(); } }); $( ".actionContainer" ).stop().animate({ marginLeft: amountFromLeft, }, 250); }, }; $(function(){ var infoPaneController = new InfoPaneController(); infoPaneController.startHandlers(); }); var mapsLinkTimer; $('.navMapsLink').popover(); $('.navMapsLink').on('show.bs.popover', function () { $(this).addClass('active'); var context = this; mapsLinkTimer = setInterval(function(){ if ($('.popover:hover').length == 0) $(context).popover('hide'); },4000); }); $('.navMapsLink').on('hide.bs.popover', function () { clearInterval(mapsLinkTimer); $(this).removeClass('active'); }) $("#mobileNav").on("hide.bs.collapse", function(){ $('#mobileNavToggle').removeClass('active'); }); $("#mobileNav").on("show.bs.collapse", function(){ $('#mobileNavToggle').addClass('active'); }); $('.inPageLink').on('click', function(){ var target = $(this).data().target; $('body').animate({ scrollTop: $(target).position().top }); }); $(function(){ // set current year for copyright var date = new Date(); var year = date.getFullYear(); $('#copyrightYear').html(year); }) }); (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-1681336-12', 'auto'); ga('send', 'pageview');