var project={"_id":"59ef8882df4fb1d0b2954851","id":"35529c84a6a34a061e6402b5de23240474dd7488","name":"RS Go Team Missions","user":"57dfeb1654955f1127d5672b","description":"Public website with the RST list","created":"2016-01-08T22:15:38.599Z","shared":false,"server":"micro","datafiles":[{"file":{"link":"https://spreadsheets.google.com/feeds/list/1f9eIvRBz39nG7br0u2GOiSaTbTiE88pb3SquXpohyj0/default/public/full?alt=json","type":"URL/API","url":"https://spreadsheets.google.com/feeds/list/1f9eIvRBz39nG7br0u2GOiSaTbTiE88pb3SquXpohyj0/default/public/full?alt=json","message":{"error":false,"text":""}},"varname":"rst","title":"Runway Safety Go Team Missions","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":"","sendtojs":true},{"file":{"link":" https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/allindicators-list","type":"URL/API","url":" https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/allindicators-list","message":{"error":false,"text":""}},"varname":"allairports","title":"Aerodromes","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":""},{"file":{"link":"https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/operational-list?api_key=7c3cb620-ed23-11e5-a5f9-adff4fb3e3e1","type":"URL/API","url":"https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/operational-list?api_key=7c3cb620-ed23-11e5-a5f9-adff4fb3e3e1","message":{"error":false,"text":""}},"varname":"aerodromes","title":"AllAirports","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":""}],"packs":["bootstrap","jquery","Datatables"],"container":"mainpart","js":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/35529c84a6a34a061e6402b5de23240474dd7488/script.js"},"title":"Javascript","activated":true,"name":"js","linkedtofile":false,"optional":true,"content":" var map = new google.maps.Map(document.getElementById('map'), {\n center: {lat: 20, lng: 20},\n //scrollwheel: false,\n zoom: 1\n });\nvar icon = {\n url: \"https://s3.amazonaws.com/istarsshare/airplane_icon.png\", // url\n scaledSize: new google.maps.Size(20, 20), // scaled size\n origin: new google.maps.Point(0,0), // origin\n anchor: new google.maps.Point(10, 30) // anchor\n};\n\n$(\"tr.airports\").each(function(i,v){\n var ap=JSON.parse($(v).attr(\"ap\"))\n \n if (ap) {\n var marker = new google.maps.Marker({\n position: {lat:ap.latitude,lng:ap.longitude},\n map: map,\n icon:icon,\n title: ap.airportCode\n });\n marker.addListener('click', function() {\n var infowindow = new google.maps.InfoWindow({\n content: ap.airportName+\" (\"+ap.airportCode+\")\"\n });\n infowindow.open(map, marker);\n });\n}\n })\nvar newrst=[],mem=[]\nrst.feed.entry.forEach(function(v){var code=v.gsx$aerodrome.$t.toUpperCase().trim();if (mem.indexOf(code)<0){newrst.push(v)};mem.push(code)})\n\nvar clock = $('.counter').FlipClock(newrst.length, {\n\t\tclockFace: 'Counter'\n\t});\n\n $(\"#rstlist\").dataTable()\n"},"css":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"}},"title":"Cascading Style Sheet (CSS)","activated":false,"name":"css","linkedtofile":false,"optional":true},"jade":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/35529c84a6a34a061e6402b5de23240474dd7488/main.jade"},"title":"Jade","activated":true,"name":"jade","linkedtofile":false,"optional":false,"content":".container(style=\"width:600px\")\n //h1.text-center Runway Safety Teams\n - var newrst=[],mem=[]\n - rst.feed.entry.forEach(function(v){var code=v.gsx$aerodrome.$t.toUpperCase().trim();if (mem.indexOf(code)<0){newrst.push(v)};mem.push(code)})\n br\n .counter(style=\"margin-left:200px\")\n h2.text-center Completed ICAO Runway Safety Go-Team Missions\n \n div(style=\"margin:auto\")\n #map(style=\"width:600px;height:300px\")\n br\n table#rstlist.display(style=\"width:100%\")\n thead\n tr\n td Airport Code\n td Name\n td Country\n td Go-Team Mission Date\n tbody\n for r in newrst\n - var code=r.gsx$aerodrome.$t.toUpperCase().trim()\n - if (code.length==3) {var x=aerodromes.filter(function(d){return d.iatacode==code})[0];code=(x?x.airportCode:code)}\n - var ap=aerodromes.filter(function(d){return (d.airportCode==code)})[0]\n - ap=(ap?ap:{airportName:\"\",countryName:\"\"})\n tr.airports(ap=JSON.stringify(ap))\n td=code\n td=ap.airportName\n td=ap.countryName\n td=r.gsx$datesofmission.$t"},"google maps apikey":"","capture":"https://quipslibistars.s3.amazonaws.com/prod/35529c84a6a34a061e6402b5de23240474dd7488/capture.png","prod":true,"sharedwith":["57dfeb1654955f1127d5672b"],"morejs":[{"url":"https://maps.googleapis.com/maps/api/js?key=AIzaSyDIwmr3eZMyXQsnn3H11aIC-_XvUs-_hZE&libraries=visualization"},{"url":"https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.js"}],"morecss":[{"url":"https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.css"}],"deploydate":"2017-10-27T16:22:14.300Z","libs":[{"_id":"5672b285f36b083214f3e63b","description":"A sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.","key":"","version":"3.3.6","link":"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js","name":"bootstrap","__v":0,"haskey":false,"required":false,"website":"http://www.getbootstrap.com"},{"_id":"5672b602f36b083214f3e63e","description":"The Write Less, Do More, JavaScript Library","key":"","version":"2.1.1","link":"https://code.jquery.com/jquery-2.1.4.js","name":"jquery","__v":0,"required":true,"haskey":false,"website":"https://jquery.com"},{"_id":"568eb9222043a726661b0ad2","required":false,"description":"A plug-in for the jQuery Javascript Library. It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table.","haskey":false,"version":"1.10.10","link":"https://cdn.datatables.net/s/dt/dt-1.10.10/datatables.min.css,https://cdn.datatables.net/s/dt/dt-1.10.10/datatables.min.js","name":"Datatables","__v":0,"website":"https://www.datatables.net"}],"host":"https://quips.anbdata.com","version":"prod"} function loadjquery(url,callback) { if(typeof jQuery=='undefined') { loadScript(url,callback) } else { callback() } } function loadScript(url, callback) { var script = document.createElement("script") script.type = "text/javascript"; if (script.readyState) { //IE script.onreadystatechange = function () { if (script.readyState == "loaded" || script.readyState == "complete") { script.onreadystatechange = null; callback(); } }; } else { //Others script.onload = function () { callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); } (function () { loadjquery("https://code.jquery.com/jquery-2.1.4.js", function () { //jQuery loaded $("#"+project.container).html("") var libs=[] $(project.libs).each(function(i,v){ if (v.name!="jquery") { $(v.link.split(",")).each(function(j,u){ if (u.slice(-2)=="js") { libs.push(u+(v.haskey?"?key="+project[v.name+"key"]:"")) } else { $("head").append("") } }) } }) if (project.morejs) { $(project.morejs).each(function(i,v){ if ((v.url.substring(0,2)=="//")||(v.url.substring(0,8)=="https://")||(v.url.substring(0,7)=="http://")) { libs.push(v.url) } }) } if (project.morecss) { $(project.morecss).each(function(i,v){ $("head").append("") }) } loadlibs(libs.reverse()) }); })(); function loadlibs(libs){ if (libs.length>0) { var l=libs.pop() loadScript(l,function(){ //$.getScript(l,function(res){ loadlibs(libs) }) //.fail(function(e){ // loadlibs(libs) // //}) } else { start() } } function putscriptcontent(content){ var script = document.createElement("script") script.type = "text/javascript"; $(script).text(content) document.getElementsByTagName("head")[0].appendChild(script); } function start(){ //load jade $.getJSON(project.host+"/project/"+project.version+"/"+project.id+"/render?callback=?"+(project.datachange?"&data="+project.datachange:""),function(res){ $("#"+project.container).html(res.html) if (project.css.activated) { if (project.css.linkedtofile) { $("head").append("")} else { $("head").append("")} } if (project.js.activated) { if (project.js.linkedtofile) { $.getScript(project.js.file[(project.prod?"depurl":"url")])} else { putscriptcontent(project.js.content)} if (project.mainjs) { window[project.mainjs]() } } }) }