// 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', 'Our apologies, this service is temporarily unavailable. We\'ll have this up and running as soon as possible!'); }, 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');