var project={"_id":"5703cec3de78eca41cc5a74a","id":"2fb3f8b1860937761bc7ed698a7aca9dccb7b75e","name":"RST Webpage (public)","user":"566ac9850286a8f9080cdd79","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/17EQVDjb8FkbdifUWTTjKdYFz3EU-MhPsjJdaaR7Js-U/default/public/full?alt=json","type":"URL/API","url":"https://spreadsheets.google.com/feeds/list/17EQVDjb8FkbdifUWTTjKdYFz3EU-MhPsjJdaaR7Js-U/default/public/full?alt=json","message":{"error":false,"text":""}},"varname":"rst","title":"Runway Safety Teams","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/2fb3f8b1860937761bc7ed698a7aca9dccb7b75e/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: \"http://www.blackberrydownload.net/img/flysmart-be-an-airport-insider-large-icon.png\", // url\n scaledSize: new google.maps.Size(30, 30), // 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.geometry) {\n var marker = new google.maps.Marker({\n position: {lat:ap.geometry.coordinates[1],lng:ap.geometry.coordinates[0]},\n map: map,\n icon:icon,\n title: 'Hello World!'\n });\n marker.addListener('click', function() {\n var infowindow = new google.maps.InfoWindow({\n content: ap.airportName+\" (\"+ap.airportCode+\"), \"+ap.cityName\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/2fb3f8b1860937761bc7ed698a7aca9dccb7b75e/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 table(style=\"width:100%\"): tbody\n tr\n td(style=\"width:50%;text-align:center\")\n a.btn.btn-lg.btn-info(href=\"https://docs.google.com/forms/d/1IwKKgQGso-94kaYwsz-hxrgd7pIylORj2zv2y_uTbUI/viewform\",target=\"_blank\") Register a Team\n td(style=\"width:50%;text-align:center\")\n a.btn.btn-lg.btn-info(href=\"mailto:space@icao.int?Subject=RST\") Contact us\n br\n .counter(style=\"margin-left:200px\")\n h2.text-center Teams Registered\n p.text-center: em\n - newrst.forEach(function(v){v.created=new Date(v.gsx$timestamp.$t).getTime()})\n - var lastweek=new Date().getTime()-7*24*60*60*1000\n | +\n span=newrst.filter(function(d){return (d.created>=lastweek)}).length\n | in last 7 days\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/City\n td Country\n td Created\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=allairports.filter(function(d){return (d.airportCode==code)})[0]\n - ap=(ap?ap:{airportName:\"\",cityName:\"\",countryName:\"\"})\n tr.airports(ap=JSON.stringify(ap))\n td=code\n td=ap.airportName+\" - \"+ap.cityName\n td=ap.countryName\n td=r.gsx$dateofestablishement.$t"},"google maps apikey":"","capture":"https://quipslibistars.s3.amazonaws.com/prod/2fb3f8b1860937761bc7ed698a7aca9dccb7b75e/capture.png","prod":true,"sharedwith":["568e92dc437f1f671e76a9fd"],"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"}],"deploydate":"2016-10-17T13:09:00.287Z","morecss":[{"url":"https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.css"}],"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]() } } }) }