var project={"_id":"5fad878fab233e849925eda3","id":"0e2e4771434c39785244436a92ccac6429a6e451","name":"ACI AHA - ISTAR Map","user":"5969034e9b111eaf654f4aab","description":"","created":"2020-11-10T14:10:54.948Z","shared":false,"server":"micro","datafiles":[{"file":{"link":"https://spreadsheets.google.com/feeds/list/1retJ789ZtML93Zyfr1PlXzWavRan3wkKo8QQrbn8Gt0/1/public/values?alt=json","type":"URL/API","url":"https://spreadsheets.google.com/feeds/list/1retJ789ZtML93Zyfr1PlXzWavRan3wkKo8QQrbn8Gt0/1/public/values?alt=json","message":{"error":false,"text":""}},"varname":"accredited","title":"Google","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":"","sendtojs":true},{"file":{"link":"https://spreadsheets.google.com/feeds/list/1retJ789ZtML93Zyfr1PlXzWavRan3wkKo8QQrbn8Gt0/2/public/values?alt=json","type":"URL/API","url":"https://spreadsheets.google.com/feeds/list/1retJ789ZtML93Zyfr1PlXzWavRan3wkKo8QQrbn8Gt0/2/public/values?alt=json","message":{"error":false,"text":""}},"varname":"participants","title":"Google","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":"","sendtojs":true}],"packs":["bootstrap","highcharts","jquery","Datatables"],"container":"mainpart","js":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/0e2e4771434c39785244436a92ccac6429a6e451/script.js"},"title":"Javascript","activated":true,"name":"js","linkedtofile":false,"optional":true,"content":"var accreditedAirports =[], participantsAirports=[];\nvar errorAirportList = [], noAirportCoordinate = [];\nvar accreditedColor = \"rgb(60,186,159)\", participantsColor=\"rgb(235,185,21)\";\nvar accreditedBackgroundColor =\"rgb(60,186,159,0.1)\", participantsBackgroundColor =\"rgb(235,185,21,0.1)\";\n\nmain();\n\nfunction main(){\n $(\"#err\").hide();\n init();\n}\n\nfunction init(){\n \n accredited.feed.entry.forEach(function(v){\n var temp = {};\n temp.aciregion = v.gsx$aciregion.$t;\n temp.airportcode = v.gsx$airportcode.$t;\n temp.airportname = v.gsx$airportname.$t;\n temp.city = v.gsx$city.$t;\n temp.country = v.gsx$country.$t;\n temp.long = v.gsx$long.$t;\n temp.lat = v.gsx$lat.$t;\n temp.status = v.gsx$status.$t;\n temp.icaoregion = v.gsx$icaoregion.$t;\n\n accreditedAirports.push(temp);\n });\n \n participants.feed.entry.forEach(function(v){\n var temp = {};\n temp.aciregion = v.gsx$aciregion.$t;\n temp.airportcode = v.gsx$airportcode.$t;\n temp.airportname = v.gsx$airportname.$t;\n temp.city = v.gsx$city.$t;\n temp.country = v.gsx$country.$t;\n temp.long = v.gsx$long.$t;\n temp.lat = v.gsx$lat.$t;\n temp.status = v.gsx$status.$t;\n temp.icaoregion = v.gsx$icaoregion.$t;\n\n participantsAirports.push(temp);\n });\n \n //console.log(accreditedAirports,participantsAirports)\n \n drawParticipantsTables();\n drawAccreditedTables();\n //drawAccreditedChart();\n //drawparticipantsChart();\n drawDataChart2();\n drawSumChart2();\n drawAciRegionChart2();\n drawIcaoRegionChart2();\n \n if(errorAirportList.length >0){\n $(\"#err\").show();\n drawTables();\n }\n}\n\nfunction drawIcaoRegionChart2(){\n var data1 = distributionBykey(accreditedAirports,\"icaoregion\");\n var data2 = distributionBykey(participantsAirports,\"icaoregion\");\n var categories = [];\n var dataSeries1 = [];\n var dataSeries2 = [];\n data1.forEach(function(v){\n categories.push(v.key);\n dataSeries1.push(v.count);\n });\n data2.forEach(function(v){\n dataSeries2.push(v.count);\n });\n \n var barChartData = {\n labels: categories,\n datasets: [{ \n data: dataSeries1,\n label: \"Accredited Airports\",\n borderColor: accreditedColor,\n backgroundColor: accreditedBackgroundColor,\n borderWidth:2\n }, { \n data: dataSeries2,\n label: \"Participants Airports\",\n borderColor: participantsColor,\n backgroundColor: participantsBackgroundColor,\n borderWidth:2\n }]\n };\n //console.log(barChartData);\n var ctx = document.getElementById('icaoRegionChart').getContext('2d');\n new Chart(ctx, {\n\t\t\t\ttype: 'bar',\n\t\t\t\tdata: barChartData,\n\t\t\t\toptions: {\n\t\t\t\t\tresponsive: true,\n\t\t\t\t\tlegend: {\n\t\t\t\t\t\tposition: 'bottom',\n\t\t\t\t\t},\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\ttext: 'Distribution by ICAO Region'\n\t\t\t\t\t},scales: {\n yAxes: [{\n ticks: {\n beginAtZero: true\n }\n }]\n },\n hover: {\n animationDuration: 0\n },\n animation: {\n duration: 1,\n onComplete: function () {\n var chartInstance = this.chart,\n ctx = chartInstance.ctx;\n ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'bottom';\n \n this.data.datasets.forEach(function (dataset, i) {\n var meta = chartInstance.controller.getDatasetMeta(i);\n meta.data.forEach(function (bar, index) {\n var data = dataset.data[index]; \n ctx.fillText(data, bar._model.x, bar._model.y - 5);\n });\n });\n }\n }\n\t\t\t\t}\n\t\t\t});\n}\n\nfunction drawIcaoRegionChart(){\n var temp =[], temp2 =[];\n accreditedAirports.forEach(function(v){\n var region = v.icaoregion;\n if(region != \"\" && region != null)\n temp.push({ro:region});\n else\n console.log(v,region)\n });\n \n participantsAirports.forEach(function(v){\n var region = v.icaoregion;\n if(region != \"\" && region != null)\n temp2.push({ro:region});\n else\n console.log(v,region)\n });\n //console.log(temp,temp2);\n \n var data1 = distributionBykey(temp2,\"ro\");\n var data2 = distributionBykey(temp,\"ro\");\n var categories = [];\n var dataSeries1 = [];\n var dataSeries2 = [];\n data1.forEach(function(v){\n categories.push(v.key);\n dataSeries1.push(v.count);\n });\n data2.forEach(function(v){\n dataSeries2.push(v.count);\n });\n \n Highcharts.chart('icaoRegionChart', {\n chart: {\n type: 'column'\n },\n title: {\n text: 'Distribution by ICAO Region'\n },\n subtitle: {\n text: ''\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Airports Number'\n }\n },\n \n series: [{\n name: 'Accredited Airports',\n data: dataSeries2\n\n },{\n name: 'Participants Airports',\n data: dataSeries1\n\n }]\n});\n}\n\nfunction drawAciRegionChart2(){\n var data1 = distributionBykey(participantsAirports,\"aciregion\");\n var data2 = distributionBykey(accreditedAirports,\"aciregion\");\n var categories = [];\n var dataSeries1 = [];\n var dataSeries2 = [];\n data1.forEach(function(v){\n categories.push(v.key);\n dataSeries1.push(v.count);\n });\n data2.forEach(function(v){\n dataSeries2.push(v.count);\n });\n \n var barChartData = {\n labels: categories,\n datasets: [{ \n data: dataSeries2,\n label: \"Accredited Airports\",\n borderColor: accreditedColor,\n backgroundColor: accreditedBackgroundColor,\n borderWidth:2\n }, { \n data: dataSeries1,\n label: \"Participants Airports\",\n borderColor: participantsColor,\n backgroundColor: participantsBackgroundColor,\n borderWidth:2\n }]\n };\n //console.log(barChartData);\n var ctx = document.getElementById('aciRegionChart').getContext('2d');\n new Chart(ctx, {\n\t\t\t\ttype: 'bar',\n\t\t\t\tdata: barChartData,\n\t\t\t\toptions: {\n\t\t\t\t\tresponsive: true,\n\t\t\t\t\tlegend: {\n\t\t\t\t\t\tposition: 'bottom',\n\t\t\t\t\t},\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\ttext: 'Distribution by ACI Region'\n\t\t\t\t\t},scales: {\n yAxes: [{\n ticks: {\n beginAtZero: true\n }\n }]\n },\n hover: {\n animationDuration: 0\n },\n animation: {\n duration: 1,\n onComplete: function () {\n var chartInstance = this.chart,\n ctx = chartInstance.ctx;\n ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'bottom';\n \n this.data.datasets.forEach(function (dataset, i) {\n var meta = chartInstance.controller.getDatasetMeta(i);\n meta.data.forEach(function (bar, index) {\n var data = dataset.data[index]; \n ctx.fillText(data, bar._model.x, bar._model.y - 5);\n });\n });\n }\n }\n\t\t\t\t}\n\t\t\t});\n}\n\nfunction drawAciRegionChart(){\n var data1 = distributionBykey(participantsAirports,\"aciregion\");\n var data2 = distributionBykey(accreditedAirports,\"aciregion\");\n var categories = [];\n var dataSeries1 = [];\n var dataSeries2 = [];\n data1.forEach(function(v){\n categories.push(v.key);\n dataSeries1.push(v.count);\n });\n data2.forEach(function(v){\n dataSeries2.push(v.count);\n });\n \n Highcharts.chart('aciRegionChart', {\n chart: {\n type: 'column'\n },\n title: {\n text: 'Distribution by ACI Region'\n },\n subtitle: {\n text: ''\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Airports Number'\n }\n },\n \n series: [{\n name: 'Accredited Airports',\n data: dataSeries2\n\n },{\n name: 'Participants Airports',\n data: dataSeries1\n\n }]\n});\n}\n\nfunction drawSumChart2(){\n \n var barChartData = {\n labels: [\"Airports\"],\n datasets: [{ \n data: [accreditedAirports.length],\n label: \"Accredited Airports\",\n borderColor: accreditedColor,\n backgroundColor: accreditedBackgroundColor,\n borderWidth:2\n }, { \n data: [participantsAirports.length],\n label: \"Participants Airports\",\n borderColor: participantsColor,\n backgroundColor: participantsBackgroundColor,\n borderWidth:2\n }]\n };\n //console.log(barChartData);\n var ctx = document.getElementById('sumChart').getContext('2d');\n new Chart(ctx, {\n\t\t\t\ttype: 'bar',\n\t\t\t\tdata: barChartData,\n\t\t\t\toptions: {\n\t\t\t\t\tresponsive: true,\n\t\t\t\t\tlegend: {\n\t\t\t\t\t\tposition: 'bottom',\n\t\t\t\t\t},\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\ttext: 'Summary'\n\t\t\t\t\t},scales: {\n yAxes: [{\n ticks: {\n beginAtZero: true\n }\n }]\n },\n hover: {\n animationDuration: 0\n },\n animation: {\n duration: 1,\n onComplete: function () {\n var chartInstance = this.chart,\n ctx = chartInstance.ctx;\n ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'bottom';\n \n this.data.datasets.forEach(function (dataset, i) {\n var meta = chartInstance.controller.getDatasetMeta(i);\n meta.data.forEach(function (bar, index) {\n var data = dataset.data[index]; \n ctx.fillText(data, bar._model.x, bar._model.y - 5);\n });\n });\n }\n }\n\t\t\t\t}\n\t\t\t});\n}\n\nfunction drawSumChart(){\n var data1 = [{name:\"Accredited Airports\", y: accreditedAirports.length},{name:\"Participants Airports\", y: participantsAirports.length}];\n //var data2 = [{name:\"Accredited Airports\", y: accreditedAirports.length},{name:\"Participants Airports\", y: participantsAirports.length}];;\n Highcharts.chart('sumChart', {\n chart: {\n type: 'column'\n },\n title: {\n text: 'Summary'\n },\n subtitle: {\n text: ''\n },\n xAxis: {\n type: 'category'\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Airports Number'\n }\n },\n tooltip: {\n headerFormat: '{series.name}
',\n pointFormat: '{point.name}: {point.y}
'\n },\n \n series: [{\n name: 'Airports',\n colorByPoint: true,\n data: data1\n\n },/*{\n name: 'States',\n y: data2\n\n }*/]\n});\n}\n\nfunction drawDataChart2(){\n var data1 = distributionBykey(participantsAirports,\"country\");\n var data2 = distributionBykey(accreditedAirports,\"country\");\n //console.log(data1);\n //console.log(data2)\n var categories = [];\n var dataSeries1 = [];\n var dataSeries2 = [];\n var total = [];\n \n /*data1.forEach(function(v){\n categories.push(v.key);\n total.push(v.count);\n dataSeries1.push(v.count);\n dataSeries2.push(0);\n });\n \n data2.forEach(function(v){\n var i;\n for(i = 0; i {point.x}
',\n pointFormat: '{series.name}: {point.y}
Participants Airports: {point.stackTotal}'\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n dataLabels: {\n enabled: false\n }\n }\n },\n series: [{\n name: 'Accredited Airports',\n data: dataSeries2\n\n },{\n name: 'Not Accredited Airports',\n data: dataSeries1\n\n }]\n});\n}\n\nfunction drawAccreditedChart(){\n var data = distributionBykey(accreditedAirports,\"country\");\n //console.log(data);\n var categories = [];\n var dataSeries = [];\n \n data.forEach(function(v){\n categories.push(v.key);\n dataSeries.push(v.count);\n });\n \n Highcharts.chart('accreditedChart', {\n chart: {\n type: 'column'\n },\n title: {\n text: 'State Distribution of Accredited Airports'\n },\n subtitle: {\n text: ''\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Accredited Airports Number'\n }\n },\n series: [{\n name: 'Accredited Airports Number',\n data: dataSeries\n\n }]\n});\n}\n\nfunction drawparticipantsChart(){\n var data = distributionBykey(participantsAirports,\"country\");\n //console.log(data);\n var categories = [];\n var dataSeries = [];\n \n data.forEach(function(v){\n categories.push(v.key);\n dataSeries.push(v.count);\n });\n \n Highcharts.chart('participantsChart', {\n chart: {\n type: 'column'\n },\n title: {\n text: 'State Distribution of Participants Airports'\n },\n subtitle: {\n text: ''\n },\n xAxis: {\n categories: categories,\n crosshair: true\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Participants Airports Number'\n }\n },\n series: [{\n name: 'Participants Airports Number',\n data: dataSeries\n\n }]\n});\n}\n\n\nfunction drawAccreditedTables(){\n var data = [];\n \n $('#accreditedTable tfoot th').each( function () {\n var title = $(this).text();\n $(this).html('' );\n } );\n \n accreditedAirports.forEach(function(v){\n data.push([v.airportcode, v.airportname, v.city, v.country, v.icaoregion, v.aciregion]);\n });\n \n $('#accreditedTable').DataTable({\n\t data:data,\n\t destroy: true,\n\t responsive: true,\n\t //bFilter: false,\n\t //searching: true,\n\t //dom: 't',\n\t initComplete: function () {\n // Apply the search\n this.api().columns().every( function () {\n var that = this;\n\n $( 'input', this.footer() ).on( 'keyup change clear', function () {\n if ( that.search() !== this.value ) {\n that\n .search( this.value )\n .draw();\n }\n } );\n } );\n }\n\t});\n\t\n\t$(\"#accreditedTable_filter\").hide();\n}\n\n\nfunction drawParticipantsTables(){\n var data = [];\n \n participantsAirports.forEach(function(v){\n data.push([v.airportcode, v.airportname, v.city, v.country, v.icaoregion, v.aciregion]);\n });\n \n $('#participantsTable tfoot th').each( function () {\n var title = $(this).text();\n $(this).html( '' );\n } );\n \n $('#participantsTable').DataTable({\n\t data:data,\n\t destroy: true,\n\t responsive: true,\n\t initComplete: function () {\n // Apply the search\n this.api().columns().every( function () {\n var that = this;\n \n $( 'input', this.footer() ).on( 'keyup change clear', function () {\n if ( that.search() !== this.value ) {\n that\n .search( this.value )\n .draw();\n }\n } );\n } );\n }\n\t});\n\t\n\t$(\"#participantsTable_filter\").hide();\n}\n\n\nfunction drawTables(){\n var data1 = [], data2=[];\n \n errorAirportList.forEach(function(v){\n data1.push([v.airportcode, v.airportname, v.city, v.country, v.aciregion]);\n });\n \n \n var table1 = $('#errorAirportCode').DataTable({\n\t data:data1,\n\t destroy: true,\n\t responsive: true\n\t});\n\t\n\tif(noAirportCoordinate.length > 0)\n\t{\n\t noAirportCoordinate.forEach(function(v){\n data2.push([v.airportcode, v.airportname, v.city, v.country, v.aciregion]);\n });\n\t var table2 = $('#noAirportCoordinate').DataTable({\n \t data:data2,\n \t destroy: true,\n \t responsive: true\n \t});\n\t}else{\n\t $(\".noCoordinate\").hide();\n\t}\n}\n\n\nfunction distributionBykey(arraylist,key){\n var keyList = [];\n arraylist.forEach(function(v){\n var flag = true;\n var i;\n for( i = 0; i < keyList.length; i++)\n {\n if(v[key].toLowerCase() == keyList[i].key.toLowerCase())\n {\n keyList[i].count++;\n flag = false;\n break;\n }\n }\n \n if(flag)\n keyList.push({key : v[key], count:1});\n });\n \n keyList = keyList.sort(function(a,b){\n if(a.key.toLowerCase() > b.key.toLowerCase())\n return 1;\n if(a.key.toLowerCase() < b.key.toLowerCase())\n return -1;\n if(a.key.toLowerCase() == b.key.toLowerCase())\n return 0;\n });\n \n return keyList;\n}\n"},"css":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"}},"title":"Cascading Style Sheet (CSS)","activated":true,"name":"css","linkedtofile":false,"optional":true,"content":"tfoot input {\n width: 100%;\n padding: 3px;\n box-sizing: border-box;\n }\n \n.fl-rich-text a {\n border-bottom: 2px solid rgba(86,146,201,.35);\n}\n\n.fl-rich-text a {\n font-weight: 700;\n color: #fff;\n background-color: #28557c;\n padding: 10px 20px;\n text-align: center;\n display: inline-block;\n width: auto;\n box-shadow: 0 2px 5px 0 rgba(0,0,0,.1), 0 2px 4px 0 rgba(0,0,0,.19);\n transition: all .3s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}"},"jade":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/0e2e4771434c39785244436a92ccac6429a6e451/main.jade"},"title":"Jade","activated":true,"name":"jade","linkedtofile":false,"optional":false,"content":".container(style=\"max-width:1200px\")\n .row(style=\"margin-top:40px;margin-bottom:20px;\")\n img(src='https://istarsshare.s3.amazonaws.com/Logo.png',style=\"height:70px;width:400px\")\n img(src='https://istarsshare.s3.amazonaws.com/2C_WORLDsq.png' , style=\"height:100px;width:150px;float:right;\")\n h1.text-center(style=\"width:90%;margin-top:40px;margin-bottom:40px;margin-left:auto;margin-right:auto;\") ICAO - ACI collaboration on Airport Health Accreditation\n\n .row(style=\"width:90%;margin-top:40px;margin-bottom:40px;margin-left:auto;margin-right:auto;\")\n p(style=\"font-size: 20px;\")\n |   The ACI Airport Health Accreditation (AHA) programme provides to airports an assessment of how their health measures are aligned with the ICAO Council Aviation Restart Task Force recommendations, ACI Aviation Business Restart and Recovery guidelines, and industry best practices.\n\n .row.fl-rich-text(style=\"width:90%;margin-top:40px;margin-bottom:40px;margin-left:auto;margin-right:auto;\")\n //p(style=\"font-size: 20px;\") The programme is open to all ACI member airports of all sizes in all regions.\n \n p(style='text-align: center;')\n a(href='https://www.google.com/maps/d/viewer?mid=1-Ry5jFeByZiKinMYxTaAzQPn15D5sVJk&hl=en&usp=sharing' target='_blank' rel='noopener') See map of accredited airports\n \n //.panel.panel-info\n // .panel.panel-heading\n // h2 Airport Health Accreditation (AHA) Map\n // .panel.panel-body\n // iframe(src='https://www.google.com/maps/d/embed?mid=1-Ry5jFeByZiKinMYxTaAzQPn15D5sVJk&hl=en' width='100%' height='600')\n\n \n \n .panel.panel-info\n .panel.panel-heading\n h2 Statistics\n .panel.panel-body\n div(style=\"width:400px;height:400px;margin:auto\")\n canvas#sumChart(style=\"width:100%;height:100%;margin:auto\")\n br\n br\n .row(style=\"width:500px;height:400px;margin:auto\")\n canvas#aciRegionChart(style=\"width:100%;height:100%;margin:auto\")\n br\n br\n .row(style=\"width:600px;height:400px;margin:auto\")\n canvas#icaoRegionChart(style=\"width:100%;height:100%;margin:auto\")\n br\n br\n .row(style=\"width:90%;height:3000px;margin:auto\")\n canvas#dataChart(style=\"width:100%;height:100%;margin:auto\")\n \n \n .panel.panel-info\n .panel.panel-heading\n h2 Airport Health Accreditation (AHA) Tables\n .panel.panel-body\n .row(style=\"width:90%;margin:auto\")\n h3.text-center Accredited Airports\n .row(style=\"width:90%;margin:auto\")\n table#accreditedTable\n thead\n tr\n th Airport Code\n th Airport Name\n th City\n th Country\n th ICAO Region\n th ACI Region\n tfoot\n tr\n th Airport Code\n th Airport Name\n th City\n th Country\n th ICAO Region\n th ACI Region\n .row\n br\n br\n br\n br\n \n .row(style=\"width:90%;margin:auto\")\n h3.text-center Participants Airports\n .row(style=\"width:90%;margin:auto\")\n table#participantsTable\n thead\n tr\n th Airport Code\n th Airport Name\n th City\n th Country\n th ICAO Region\n th ACI Region\n tfoot\n tr\n th Airport Code\n th Airport Name\n th City\n th Country\n th ICAO Region\n th ACI Region\n \n\n #err.panel.panel-info\n .panel.panel-heading\n h2 The following data is not handled\n .panel.panel-body\n .row\n h3(style='text-align: center') The Airport Codes could not be found\n .row(style=\"width:90%;margin:auto\")\n table#errorAirportCode\n thead\n tr\n th Airport Code\n th Airport Name\n th City\n th Country\n th ACI Region\n .row\n br\n br\n br\n .noCoordinate.row\n h3(style='text-align: center') The Airports without Coordinates in our DB\n .noCoordinate.row(style=\"width:90%;margin:auto\")\n table#noAirportCoordinate\n thead\n tr\n th Airport Code\n th Airport Name\n th City\n th Country\n th ACI Region \n \n "},"morejs":[{"url":"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"}],"morecss":null,"deploydate":"2021-02-12T21:01:04.364Z","capture":"https://quipslibistars.s3.amazonaws.com/prod/0e2e4771434c39785244436a92ccac6429a6e451/capture.png","prod":true,"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":"5672b2dbf36b083214f3e63c","description":"","key":"","version":"4.2.0","link":"https://code.highcharts.com/highcharts.js","name":"highcharts","__v":0,"haskey":false,"required":false,"website":"Highcharts.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]() } } }) }