From 2bc1a48b9b8ae069b80b250a1c4614e517197a3c Mon Sep 17 00:00:00 2001 From: rylon Date: Fri, 24 May 2013 02:34:15 +0200 Subject: [PATCH] fixed script loading, every module can have one js function which is called when all js is loaded. --- sai/modules/saimod_sys_login/login.js | 21 -- .../saimod_sys_login/sai_sys_login_submit.js | 4 +- sai/page/default_page/default_page.php | 3 + sai/page/default_page/js/apireference.js | 41 --- sai/page/default_page/js/bonusareacreator.js | 315 ------------------ sai/page/default_page/js/documentation.js | 37 -- sai/page/default_page/js/index.js | 48 ++- sai/page/default_page/js/loadcssjs.js | 13 +- sai/page/default_page/js/monitoring.js | 8 - sai/page/default_page/js/pushmessage.js | 35 -- sai/page/default_page/js/texthandler.js | 32 -- 11 files changed, 47 insertions(+), 510 deletions(-) delete mode 100644 sai/modules/saimod_sys_login/login.js delete mode 100644 sai/page/default_page/js/apireference.js delete mode 100644 sai/page/default_page/js/bonusareacreator.js delete mode 100644 sai/page/default_page/js/documentation.js delete mode 100644 sai/page/default_page/js/monitoring.js delete mode 100644 sai/page/default_page/js/pushmessage.js delete mode 100644 sai/page/default_page/js/texthandler.js diff --git a/sai/modules/saimod_sys_login/login.js b/sai/modules/saimod_sys_login/login.js deleted file mode 100644 index 83268d0..0000000 --- a/sai/modules/saimod_sys_login/login.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - - - -/* jQuery on document ready */ -$(document).ready(function() { - - $("#submitButton").click(function(){ - $.get('./api.php?call=account&action=login&username='+$('#username').val()+'&password_sha='+$.sha1($('#password').val())+'&password_md5='+hex_md5($('#password').val()), function (data) { - if(data === 1){ - $("#loginStatusMsg").html('Login successful!!'); - } else { - $("#loginStatusMsg").html('Wrong username or password!'); - } - }); - }); - -}); diff --git a/sai/modules/saimod_sys_login/sai_sys_login_submit.js b/sai/modules/saimod_sys_login/sai_sys_login_submit.js index 18f542c..f4241d4 100644 --- a/sai/modules/saimod_sys_login/sai_sys_login_submit.js +++ b/sai/modules/saimod_sys_login/sai_sys_login_submit.js @@ -1,4 +1,4 @@ -$(document).ready(function() { +function init__SYSTEM_SAI_saimod_sys_login() { //jqBootstrapValidation $("#login_form input").not("[type=submit]").jqBootstrapValidation({ preventSubmit: true, @@ -31,4 +31,4 @@ $(document).ready(function() { event.preventDefault(); } }); -}); +}; diff --git a/sai/page/default_page/default_page.php b/sai/page/default_page/default_page.php index 7a25cca..eee5b92 100644 --- a/sai/page/default_page/default_page.php +++ b/sai/page/default_page/default_page.php @@ -39,6 +39,9 @@ class default_page extends \SYSTEM\PAGE\Page { ''. ''. ''; + ''. + ''. + ''; return $result; } diff --git a/sai/page/default_page/js/apireference.js b/sai/page/default_page/js/apireference.js deleted file mode 100644 index 13201b2..0000000 --- a/sai/page/default_page/js/apireference.js +++ /dev/null @@ -1,41 +0,0 @@ - -var baseURL = "http://www.da-sense.de"; -var endpoint = "api.php"; -var url = baseURL + "/" + endpoint; - -/** jQuery on document ready */ -function init(){ - - // initialize content - loadContent('overview_request'); - - /** - * generic navigation control - */ - $('div.main div#div-nav ul.nav li a').click(function () { - var id = $(this).attr("id"); - if(id !== undefined){ - console.log("Action: "+id); - - $('div.main div#div-nav ul.nav li').each(function(){ - $(this).removeClass('active'); - }); - $(this).parent().addClass('active'); - loadContent(id); - } - }); - -}; - -/** - * Load content - * @param {type} id - * @returns {undefined} */ -function loadContent(id){ - var splitID = id.split("_"); - if(splitID.length > 1){ - var folder = splitID[0]; - var file = splitID[1] + ".html"; - $('div#div-content').load('dasense/page/default_developer/modules/apireference/'+folder+'/'+file); - } -} \ No newline at end of file diff --git a/sai/page/default_page/js/bonusareacreator.js b/sai/page/default_page/js/bonusareacreator.js deleted file mode 100644 index 2982588..0000000 --- a/sai/page/default_page/js/bonusareacreator.js +++ /dev/null @@ -1,315 +0,0 @@ - -var service_url = "http://www.da-sense.de/productive/analysis.php"; - -var map; - -var latlng; -var radius; // [meters] -var active = true; - -var currentAngle; -var resizeMarker; -var marker; -var circle; - -var storedBonusAreas = []; - -var myOptions; -var storedCircleOptions; -var circleOptions; - -/** jQuery on document ready */ -function init() { - $('#datepicker').datepicker({ - format: 'dd-mm-yyyy', - weekStart: 1 - }); - $('#timepicker').timepicker(); - - latlng = new google.maps.LatLng(49.87367, 8.65105); - radius = 500; - - // map initialization - map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); - - circleOptions = { - strokeColor: "#61ade7", - strokeOpacity: 0.6, - strokeWeight: 1, - fillColor: "#61ade7", - fillOpacity: 0.45, - map: map, - center: latlng , - radius: radius, - clickable:false - }; - - storedCircleOptions = { - strokeColor: "#00ff00", - strokeOpacity: 0.6, - strokeWeight: 1, - fillColor: "#00ff00", - fillOpacity: 0.2, - map: map, - center: latlng , - radius: radius, - clickable:true - }; - - myOptions = { - zoom: 15, - maxZoom:18, - minZoom:7, - center: latlng, - mapTypeId: google.maps.MapTypeId.ROADMAP - }; - - updateAddress(); - updateRadius(); - updateExploration(); - reload(); - - // set google maps marker - marker = new google.maps.Marker({ - position: latlng, - map: map, - title: 'Center point of bonus area', - icon: new google.maps.MarkerImage("dasense/page/default_developer/img/geo_point.png",new google.maps.Size(16,16),new google.maps.Point(0,0),new google.maps.Point(8,8)), - cursor: "move", - draggable: true - }); - - google.maps.event.addListener(marker, 'dragstart', function(e) { - currentAngle = GEO_FUNCTIONS.getAngle(e.latLng, resizeMarker.getPosition()); - }); - - google.maps.event.addListener(marker, 'drag', function(e) { - dragCenterPoint(e); - }); - - google.maps.event.addListener(marker, 'dragend', function(e) { - dragCenterPoint(e); - //fitZoom(); - map.setCenter(latlng); - - updateAddress(); - updateExploration(); - }); - - google.maps.event.addListener(map, 'rightclick', function(e) { - dragCenterPoint(e) - marker.setPosition(latlng); - }); - - // set google maps overlay: circle with specified radius and 'geopoint-marker' as centerpoint - var resMarkPos = GEO_FUNCTIONS.getDestination(latlng, radius, 0.25*Math.PI); - resizeMarker = new google.maps.Marker({ - position: resMarkPos, - map: map, - title: "Radius resizer", - icon: new google.maps.MarkerImage("dasense/page/default_developer/img/geo_resize.png",new google.maps.Size(10,10),new google.maps.Point(0,0),new google.maps.Point(5,5)), - cursor: "move", - draggable: true - }); - - circle = new google.maps.Circle(circleOptions); - - google.maps.event.addListener(resizeMarker, 'dragend', function(e) { - var dist = GEO_FUNCTIONS.getDistance(e.latLng, latlng); - circle.setOptions({radius: dist}); - radius = dist; - fitZoom(); - - updateRadius(); - updateExploration(); - }); - - google.maps.event.addListener(resizeMarker, 'drag', function(e) { - var dist = GEO_FUNCTIONS.getDistance(e.latLng, latlng); - radius = dist; - - updateRadius(); - circle.setOptions({radius: dist}); - }); - - fitZoom(); - - // send button -/* $('#submit_icon').click(function () { - cleanErrorFields(); - - // simple validation of input fields - var label = $('#field_label').val(); - var multiplier = $('#field_multiplier').val(); - var timeSlot = $('#field_timeSlot').val(); - var password = $('#field_password').val(); - - var valid_label = validate(label,true,255,'string'); - if(valid_label === false) { - $('#field_error_label').html("Check label field: string (max 255 chars)"); - return; - } - - var valid_multiplier = validate(multiplier,true,255,'real'); - if(valid_multiplier === false){ - $('#field_error_multiplier').html("Check multiplier field: double"); - return; - } - - var valid_timeSlot = validate(timeSlot,true,255,'int'); - if(valid_timeSlot === false){ - $('#field_error_timeSlot').html("Check time slot field: int [seconds]"); - return; - } - - var valid_password = validate(password,true,45,'string'); - if(valid_password === false){ - $('#field_error_password').html("Check password field: string [max 45 chars]"); - return; - } - - var formatted_address = $('#field_address').html(); - - $(this).addClass('loader'); - marker.setMap(null); - resizeMarker.setMap(null); - circle.setOptions({fillOpacity: 0.3, fillColor: '#ff0000', strokeColor: '#ff0000'}); - - var json = '{"geo":{"lat":'+latlng.lat()+',"lng":'+latlng.lng()+',"radius":'+radius+',"faddress":"'+encodeURI(JSON.stringify(formatted_address))+'"},"starttime":'+new Date().getTime()+',"slot":'+timeSlot*1000+',"multiplier":'+multiplier+',"label":"'+encodeURI(JSON.stringify(label))+'"}'; - - // service call - $.post(service_url, - { - ctrl: 'barea', - mthd: 'insert', - pswd: password, - json: json - }, - function(data,textStatus,jqXHR) { - $('#submit_icon').removeClass('loader'); - - // service call response - if(data['result']['status'] != null && data['result']['status'].toLowerCase() == 'ok'){ - $('#submit_icon').addClass('clean').html('Bonus area has been pushed to all registered devices.
Thank you for using this nice service :-)'); - circle.setOptions(storedCircleOptions); - circle.setOptions({radius: radius, center: latlng}); - }else if(data['result']['status'] != null){ - marker.setMap(map); - resizeMarker.setMap(map); - circle.setOptions(circleOptions); - circle.setOptions({radius: radius, center: latlng}); - $('#field_password').val(''); - $('#field_error_password').html("Wrong service password"); - } - - }) - .error(function() { alert("An unexpected error occurred, please try again later !"); }); - - }); - - // clean all error fields - function cleanErrorFields(){ - $('#field_error_label').html("
"); - $('#field_error_multiplier').html("
"); - $('#field_error_timeSlot').html("
"); - $('#field_error_password').html("
"); - } - - // fit button - $('#fit_icon').click(function(){ - fitZoom(); - }); - - // get all bonus areas - $('#ref_all').click(function(){ - active = false; - $(this).addClass('active'); - $('#ref_active').removeClass('active'); - - reload(); - }); - - // get all active bonus areas - $('#ref_active').click(function(){ - active = true; - $(this).addClass('active'); - $('#ref_all').removeClass('active'); - - reload(); - });*/ - -}; - - -function updateAddress(){ - $('#field_coords').html("("+latlng.lat() +", " + latlng.lng()+")"); - new google.maps.Geocoder().geocode({'latLng': latlng, 'language': 'de_DE'}, function(results, status) { - if (status === google.maps.GeocoderStatus.OK) { - $('#field_address').html(results[0]['formatted_address']); - } - }); -} - -function updateRadius(){ - $('#field_radius').html(radius.toFixed(2)+" m"); -} - -function updateExploration(){ - /*$.getJSON(service_url+'?ctrl=data&mthd=explore&coord='+latlng.lat()+','+latlng.lng()+'&'+'radius='+radius , function(data) { - if(data.result.length > 0){ - $("#field_exploration").html(Number((1-Number(data.result[0].explore))* 100).toFixed(2) + " %"); - } - });*/ -} - -function dragCenterPoint(e){ - var curPos = e.latLng; - circle.setOptions({center: curPos}); - latlng = curPos; - resizeMarker.setPosition(GEO_FUNCTIONS.getDestination(curPos, radius, currentAngle)); - $('#field_coords').html("("+latlng.lat() +", " + latlng.lng()+")"); -} - -function fitZoom(){ - map.fitBounds( - new google.maps.LatLngBounds( - GEO_FUNCTIONS.getDestination(latlng, 2.5*radius, 1.25*Math.PI), - GEO_FUNCTIONS.getDestination(latlng, 2.5*radius, 0.25*Math.PI))); -} - -// reload markers -function reload(){ - clearOverlays(); - getStoredBonusAreas(); -} - -// Removes the overlays from the map, but keeps them in the array -function clearOverlays() { - if (storedBonusAreas) { - for (i in storedBonusAreas) { - storedBonusAreas[i].setMap(null); - } - } - storedBonusAreas = []; -} - -function getStoredBonusAreas(){ - storedBonusAreas = []; - - // service call -/* $.getJSON(service_url, - { - ctrl: 'barea', - mthd: ((active == true)?'getallactive':'getall') - }, - function(data,textStatus,jqXHR) { - // >> creat circles + storedCircleOptions + tooltip (!!! replace radius + center !!!) - var i=0; - $.each(data['result'], function(key, value) { - var sCircle = new google.maps.Circle(storedCircleOptions); - sCircle.setOptions({radius: value['radius'], center: new google.maps.LatLng(value['lat'],value['lng'])}); - storedBonusAreas[i++] = sCircle; - }); - }) - .error(function() { alert("An unexpected error occurred, please try again later !"); });*/ -} \ No newline at end of file diff --git a/sai/page/default_page/js/documentation.js b/sai/page/default_page/js/documentation.js deleted file mode 100644 index 5c22f0f..0000000 --- a/sai/page/default_page/js/documentation.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -function init(){ - // initialize content - loadContent('server_architecture'); - - /** - * generic navigation control - */ - $('div.main div#div-nav ul.nav li a').click(function () { - var id = $(this).attr("id"); - if(id !== undefined){ - console.log("Action: "+id); - - $('div.main div#div-nav ul.nav li').each(function(){ - $(this).removeClass('active'); - }); - $(this).parent().addClass('active'); - loadContent(id); - } - }); -} - -/** - * Load content - * @param {type} id - * @returns {undefined} */ -function loadContent(id){ - var splitID = id.split("_"); - if(splitID.length > 1){ - var folder = splitID[0]; - var file = splitID[1] + ".html"; - $('div#div-content').load('dasense/page/default_developer/modules/documentation/'+folder+'/'+file); - } -} diff --git a/sai/page/default_page/js/index.js b/sai/page/default_page/js/index.js index 7c90838..018e751 100644 --- a/sai/page/default_page/js/index.js +++ b/sai/page/default_page/js/index.js @@ -1,4 +1,7 @@ +var last_id = ''; +var scripts_loaded = 0; +var scripts_req = 0; /** jQuery on document ready */ $(document).ready(function() { @@ -22,22 +25,41 @@ $(document).ready(function() { $('.brand').click(function(){ location.reload(); }); + }); function loadModuleContent(id){ - $('div#content-wrapper').load('./?action=developer&sai_mod='+id, function(){}); + last_id = id; + $('div#content-wrapper').load('./?action=developer&sai_mod='+id, function(){ + $.getJSON('./?action=developer&sai_mod='+id+'&css=1', function (data) { + if(data){ + for(var i=0; i < data['result'].length; i++){ + loadCSS(data['result'][i]);} + } + }); + + $.getJSON('./?action=developer&sai_mod='+id+'&js=1', function (data) { + if(data){ + scripts_req = data['result'].length; + for(var i=0; i < data['result'].length; i++){ + loadJS(unescape(data['result'][i]));} + } + }); + - $.getJSON('./?action=developer&sai_mod='+id+'&css=1', function (data) { - if(data){ - for(var i=0; i < data['result'].length; i++){ - loadCSS(data['result'][i]);} - } - }); + }); +} + +function script_loaded(){ + scripts_loaded += 1; - $.getJSON('./?action=developer&sai_mod='+id+'&js=1', function (data) { - if(data){ - for(var i=0; i < data['result'].length; i++){ - loadJS(unescape(data['result'][i]));} - } - }); + if(scripts_loaded >= scripts_req){ + scripts_loaded = 0; + func = 'init_'+last_id; + //func = jssrc.substring(jssrc.lastIndexOf('/')+1); + func = func.replace(/\./g,'_'); + if(typeof window[func] === 'function') { + window[func](); + console.log(func+' called');} + } } \ No newline at end of file diff --git a/sai/page/default_page/js/loadcssjs.js b/sai/page/default_page/js/loadcssjs.js index 95a87ac..928c867 100644 --- a/sai/page/default_page/js/loadcssjs.js +++ b/sai/page/default_page/js/loadcssjs.js @@ -1,18 +1,19 @@ function loadJS(jssrc) { if(jssrc){ - var snode = document.createElement('script'); - snode.setAttribute('type','text/javascript'); - snode.setAttribute('src',jssrc); - document.getElementsByTagName('head')[0].appendChild(snode); + $.getScript(jssrc).done(function(script, textStatus) { + console.log('Script: '+jssrc+' - '+textStatus ); + script_loaded(); + }) } } -function loadCSS(csssrc) { - if(csssrc){ +function loadCSS(csssrc) { + if(csssrc){ var snode = document.createElement('link'); snode.setAttribute('type','text/css'); snode.setAttribute('rel', 'stylesheet'); snode.setAttribute('href',csssrc); document.getElementsByTagName('head')[0].appendChild(snode); + console.log('Css: '+csssrc+' loaded.'); } } \ No newline at end of file diff --git a/sai/page/default_page/js/monitoring.js b/sai/page/default_page/js/monitoring.js deleted file mode 100644 index f447a71..0000000 --- a/sai/page/default_page/js/monitoring.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -function init(){ - -} - diff --git a/sai/page/default_page/js/pushmessage.js b/sai/page/default_page/js/pushmessage.js deleted file mode 100644 index b947a05..0000000 --- a/sai/page/default_page/js/pushmessage.js +++ /dev/null @@ -1,35 +0,0 @@ - -/** jQuery on document ready */ -function init(){ - - selectUsers(); - - $('#select-to').change(function(e){ - $('#select-to option:selected').each(function(){ - switch($(this).val()){ - case 'users': selectUsers(); break; - case 'os': selectOS(); break; - default: selectAll(); break; - } - }); - }); - -}; - - -function selectUsers(){ - $('#element-os').hide(); - $('#element-users').show(); - // @todo: create table dynamically -} - -function selectOS(){ - $('#element-os').show(); - $('#element-users').hide(); -} - -function selectAll(){ - $('#element-os').hide(); - $('#element-users').hide(); -} - diff --git a/sai/page/default_page/js/texthandler.js b/sai/page/default_page/js/texthandler.js deleted file mode 100644 index e3243e2..0000000 --- a/sai/page/default_page/js/texthandler.js +++ /dev/null @@ -1,32 +0,0 @@ - -/** jQuery on document ready */ -function init(){ - - // initialize content - loadContent('import'); - - /** - * generic navigation control - */ - $('div.main div.tabbable ul.nav li a').click(function () { - var id = $(this).parent().attr("id"); - if(id !== undefined){ - console.log("Action: "+id); - - $('div.main div.tabbable ul.nav li').each(function(){ - $(this).removeClass('active'); - }); - $(this).parent().addClass('active'); - loadContent(id); - } - }); - -}; - -/** - * Load content - * @param {type} id - * @returns {undefined} */ -function loadContent(id){ - $('div.tab-content').load('dasense/page/default_developer/modules/texthandler/'+id+'.html'); -} \ No newline at end of file