var project={"_id":"5fae013dab233e84992f0600","id":"91a81aeb494a33d681c62d615f9d0d0e832906d8","name":"NOTAMETER_OLD","user":"56a2838637025efe6412eb12","description":"","created":"2020-06-09T17:46:10.682Z","shared":false,"server":"micro","datafiles":[{"file":{"link":"https://n2ep8ya9xb.execute-api.us-east-1.amazonaws.com/prod/calendar?TableName=notammeter&action=newscan","type":"URL/API","url":"https://n2ep8ya9xb.execute-api.us-east-1.amazonaws.com/prod/calendar?TableName=notammeter&action=newscan","message":{"error":false,"text":""}},"varname":"dataall","title":"gaps","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":"","sendtojs":true},{"file":{"link":"https://s3.amazonaws.com/istarsshare/worldcountry.txt","type":"URL/API","url":"https://s3.amazonaws.com/istarsshare/worldcountry.txt","message":{"error":false,"text":""}},"varname":"collection","title":"Collection","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":"","sendtojs":true}],"packs":["highcharts","jquery","D3","Datatables"],"container":"mainpart","js":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/91a81aeb494a33d681c62d615f9d0d0e832906d8/script.js"},"title":"Javascript","activated":true,"name":"js","linkedtofile":false,"optional":true,"content":"var width = 960,\n height = 500,\n centered;\nvar metricsel=\"mainmap2\"\n \n var colors={\"NR\":\"lightgray\",\n\"NS\":\"#ffdead\",\n\"IP\":\"#99ccff\",\n\"LOI\":\"purple\",\n\"IMP\":\"#3366cc\",\n\"LOA\":\"#004d2a\",\n\"STA\":\"#b95600\"\n\n}\nvar colorslevels={\"old\":\"#ffaa00\",\n\"veryold\":\"#c90000\",\n\"current\":\"#387713\"\n\n}\nvar therefdate=\"2021-01-01\"\nvar data={Items:dataall.Items.filter(function(d){return d.dateextract==\"2022-04-01\"})}\n\ndata.Items=data.Items.sort(function(a,b){return Number(a.old_95to364days)-Number(b.old_95to364days)})\nvar total=0\n$(data.Items).each(function(i,v){\n total+=Number(v.old_95to364days)\n})\n\n\n$(data.Items).each(function(i,v){\n v.rankold=100*i/193\n v.shareold=400*Number(v.old_95to364days)/total\n})\ndata.Items=data.Items.sort(function(a,b){return Number(a.old_365days)-Number(b.old_365days)})\n\n$(data.Items).each(function(i,v){\n v.rankveryold=100*i/193\n v.shareveryold=400*Number(v.old_365days)/total\n})\ndata.Items=data.Items.sort(function(a,b){return Number(a.compliant)-Number(b.compliant)})\n\n$(data.Items).each(function(i,v){\n v.rankcompliant=100*i/193\n v.sharecompliant=400*Number(v.compliant)/total\n})\n\nconsole.log(data.Items)\n\nvar stagescolors=[\"#ffdaba\",\"#ffab62\",\"#ff9235\",\"#ef6e00\",\"#b95600\"]\nstagescolors=[\"#fff0ba\",\"#ffbd52\",\"#ef9800\",\"#ef6e00\",\"#b95600\"]\n\nvar nongrouptoggle=false\nvar color;\nvar allcolors={\n \"mainmap1\": {\n cols:[\"#bdfe9d\",\"#76ec30\",\"#41ae00\"],\n element:\"mainmap\",\n validate:function(e){return Number(e.compliant)>=0},\n //field:\"rankcompliant\",\n field:\"notams\",\n title:\"Total NOTAM\",\n //field:\"share\",\n color:d3.scale.linear()\n .domain([0,50,100])\n .range([\"#bdfe9d\",\"#76ec30\",\"#41ae00\"])},\n\n \"mainmap2pc\": {\n cols:[\"#ffcea6\",\"#ff9034\",\"#c75a00\"],\n element:\"mainmap\",\n validate:function(e){return Number(e.compliant)>=0},\n //field:\"rankold\",\n field:\"old_95to364days_pc\",\n title:\"Old NOTAM\",\n //field:\"share\",\n color:d3.scale.linear()\n .domain([0,50,100])\n .range([\"#ffcea6\",\"#ff9034\",\"#c75a00\"])},\n \n \"mainmap2prog\": {\n cols:[\"#FFFCA2\",\"#7D7AB2\",\"#FFB0A2\"],\n element:\"mainmap\",\n validate:function(e){return Number(e.compliant)>=0},\n //field:\"rankold\",\n \n field:\"progress_old_95to364days_pc\",\n title:\"Old NOTAM\",\n colupper:[\"#D4AA63\",\"#D47463\"],\n collower:[\"#7BBA56\",\"#B7CC5F\"],\n splitted:true,\n neutral:\"lightgray\",\n r:20,\n //field:\"share\",\n color:d3.scale.linear()\n .domain([-20,0,0,20])\n .range([\"#7BBA56\",\"#B7CC5F\",\"#D4AA63\",\"#D47463\"])},\n\n \"mainmap3prog\": {\n cols:[\"#FFFCA2\",\"#7D7AB2\",\"#FFB0A2\"],\n element:\"mainmap\",\n validate:function(e){return Number(e.compliant)>=0},\n //field:\"rankold\",\n \n field:\"progress_old_365days_pc\",\n title:\"Very Old NOTAM\",\n colupper:[\"#D4AA63\",\"#D47463\"],\n collower:[\"#7BBA56\",\"#B7CC5F\"],\n splitted:true,\n neutral:\"lightgray\",\n r:20,\n //field:\"share\",\n color:d3.scale.linear()\n .domain([-20,0,0,20])\n .range([\"#7BBA56\",\"#B7CC5F\",\"#D4AA63\",\"#D47463\"])},\n \n \"mainmap3pc\": {\n cols:[\"#ff8d8d\",\"#ff2d2d\",\"#c90000\"],\n element:\"mainmap\",\n validate:function(e){return Number(e.compliant)>=0},\n //field:\"rankveryold\",\n title:\"Very Old NOTAM (%)\",\n field:\"old_365days_pc\",\n //field:\"share\",\n //ranked:false,\n color:d3.scale.linear()\n .domain([0,50,100])\n .range([\"#ff8d8d\",\"#ff2d2d\",\"#c90000\"])},\n \n \"mainmap3n\": {\n cols:[\"#ff8d8d\",\"#ff2d2d\",\"#c90000\"],\n element:\"mainmap\",\n validate:function(e){return Number(e.compliant)>=0},\n //field:\"rankveryold\",\n title:\"Very Old NOTAM (%)\",\n field:\"old_365days_pc\",\n //field:\"share\",\n ranked:true,\n color:d3.scale.linear()\n .domain([0,50,100])\n .range([\"#ff8d8d\",\"#ff2d2d\",\"#c90000\"])},\n \n \"measure_mainmap\":{\n cols:[\"#26dc89\",\"#008f4e\",\"#004d2a\"],\n validate:function(e){return Number(e.notreviewed_measures)==0},\n field:\"adopted_measures\",\n\n color:d3.scale.linear()\n .domain([0,50,100])\n .range([\"#26dc89\",\"#008f4e\",\"#004d2a\"])},\n \n \n \"rs_mainmap\":{\n cols:stagescolors,\n validate:function(e){return true},\n field:\"stage_estimated\",\n\n color:d3.scale.linear()\n .domain([0,1,2,3,4])\n .range(stagescolors)}\n}\n\nvar projection = d3.geo.equirectangular()\n .scale(150)\n .translate([width / 2, height / 2]);\n\nvar path = d3.geo.path()\n .projection(projection);\nvar svg1,g1\nvar svg2,g2\nvar svg,g\n\nvar legend,legend2;\n\ndrawit(\"mainmap2pc\")\nfunction dolegend1(el){\n svg.append(\"defs:linearGradient\")\n\t.attr(\"id\",\"grad1\"+allcolors[el].element)\n\t.attr(\"x1\",\"0%\")\n\t.attr(\"x2\",\"100%\")\n\t.attr(\"y1\",\"0%\")\n\t.attr(\"y2\",\"0%\")\nsvg.select(\"#grad1\"+allcolors[el].element)\n\t.append(\"stop\")\n\t.attr(\"offset\",\"0%\")\n\t.style(\"stop-color\",(allcolors[el].splitted?allcolors[el].collower[0]:allcolors[el].cols[0]))\n\t.style(\"stop-opacity\",1)\nsvg.select(\"#grad1\"+allcolors[el].element)\n\t.append(\"stop\")\n\t.attr(\"offset\",\"100%\")\n\t.style(\"stop-color\",(allcolors[el].splitted?allcolors[el].collower[1]:allcolors[el].cols[1]))\n\t.style(\"stop-opacity\",1)\nsvg.append(\"defs:linearGradient\")\n\t.attr(\"id\",\"grad2\"+allcolors[el].element)\n\t.attr(\"x1\",\"0%\")\n\t.attr(\"x2\",\"100%\")\n\t.attr(\"y1\",\"0%\")\n\t.attr(\"y2\",\"0%\")\nsvg.select(\"#grad2\"+allcolors[el].element)\n\t.append(\"stop\")\n\t.attr(\"offset\",\"0%\")\n\t.style(\"stop-color\",(allcolors[el].splitted?allcolors[el].colupper[0]:allcolors[el].cols[1]))\n\t.style(\"stop-opacity\",1)\nsvg.select(\"#grad2\"+allcolors[el].element)\n\t.append(\"stop\")\n\t.attr(\"offset\",\"100%\")\n\t.style(\"stop-color\",(allcolors[el].splitted?allcolors[el].colupper[1]:allcolors[el].cols[2]))\n\t.style(\"stop-opacity\",1)\n\t \n\t svg.append(\"rect\")\n\t.attr(\"id\",\"legendbox1\"+allcolors[el].element)\n\t.attr(\"class\",\"mainlegend\")\n\t.attr(\"x\",20)\n\t.attr(\"y\",height-20)\n\t.attr(\"width\",50)\n\t.attr(\"height\",10)\n\t.style(\"fill\",\"url(#grad1\"+allcolors[el].element+\")\")\nsvg.append(\"rect\")\n\t.attr(\"id\",\"legendbox2\"+allcolors[el].element)\n\t.attr(\"class\",\"mainlegend\")\n\t.attr(\"x\",70)\n\t.attr(\"y\",height-20)\n\t.attr(\"width\",50)\n\t.attr(\"height\",10)\n\t.style(\"fill\",\"url(#grad2\"+allcolors[el].element+\")\") \n\t\n\t\n\tsvg.append(\"text\")\n\t.attr(\"id\",\"mintext\"+allcolors[el].element)\n\t.attr(\"x\",15)\n\t.attr(\"y\",height-23)\n\t.style(\"font-size\",\"10px\")\n svg.append(\"text\")\n\t.attr(\"id\",\"midtext\"+allcolors[el].element)\n\t.attr(\"x\",65)\n\t.attr(\"y\",height-23)\n\t.style(\"font-size\",\"10px\") \nsvg.append(\"text\")\n\t.attr(\"id\",\"maxtext\"+allcolors[el].element)\n\t.attr(\"x\",115)\n\t.attr(\"y\",height-23)\n\t.style(\"font-size\",\"10px\")\t\n svg.append(\"text\")\n\t.attr(\"id\",\"metrictext\"+allcolors[el].element)\n\t.attr(\"x\",15)\n\t.attr(\"y\",height-33)\n\t.style(\"font-size\",\"10px\")\t\n\t\nvar mintext=\"0%\"\nvar midtext=\"50%\"\nvar maxtext=\"100%\"\nif (allcolors[el].splitted) {\n mintext=\"-\"+allcolors[el].r+\"%\"\n midtext=\"0%\"\n maxtext=allcolors[el].r+\"%\"\n}\n$(\"#midtext\"+allcolors[el].element).text(midtext)\n$(\"#mintext\"+allcolors[el].element).text(mintext)\n$(\"#maxtext\"+allcolors[el].element).text(maxtext)\n}\nglobalgraph()\n\nfunction drawit(el){\n$(\"#\"+allcolors[el].element).html(\"\")\nsvg = d3.select(\"#\"+allcolors[el].element).append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height)\n\t.attr(\"overflow\", \"hidden\");\n\nsvg.append(\"rect\")\n .attr(\"class\", \"background\")\n .attr(\"width\", width)\n .attr(\"height\", height)\n //.on(\"click\", clicked);\n\ng = svg.append(\"g\");\nif (el!=\"rs_mainmap\") \n dolegend1(el)\nelse\n dolegend2()\n\n\t\n\t\n\n //d3.json(\"/space/Tools%20and%20addons/jslibrary/worldcountry.txt\", function(error, collection) {\n var col2=collection.features\n\n\tg.append(\"g\")\n .attr(\"id\", \"states\"+allcolors[el].element)\n .selectAll(\"path\")\n .data(col2)\n .enter().append(\"path\")\n .attr(\"d\", path)\n\t .attr(\"id\",function(d){return allcolors[el].element+\"_\"+d.id})\n\t .style(\"fill\",\"lightgray\")\n\t .style(\"stroke\",\"#fff\")\n\t .style(\"stroke-width\", 0.5)\n\t //.on(\"click\", clicked);\n //.on(\"mouseover\", hover)\n //.on(\"mouseout\", hoverout);\n\n g.append(\"g\")\n .attr(\"id\", \"labels\"+allcolors[el].element)\n\t .selectAll(\".countryname\")\n .data(col2)\n\t .enter().append(\"text\")\n\t.attr(\"transform\", function(d) { return \"translate(\" + path.centroid(d) + \")\"; })\n .attr(\"dy\", \".35em\")\n .attr(\"font-size\", \"2px\")\n .attr(\"font-weight\", \"bold\")\n\t.attr(\"class\", \"countryname\")\n\t.style(\"display\",\"none\")\n\t.attr(\"id\",function(d){return allcolors[el].element+\"_C_\"+d.id})\n .text(\"\");\n\n\n\tsvg.append(\"rect\")\n\t.attr(\"id\",\"legendbox3\"+allcolors[el].element)\n\t.attr(\"class\",\"secondlegend\")\n\t.attr(\"x\",20)\n\t.attr(\"y\",height-20)\n\t.attr(\"width\",10)\n\t.attr(\"height\",10)\n\t.style(\"display\",\"none\")\nsvg.append(\"rect\")\n\t.attr(\"id\",\"legendbox4\"+allcolors[el].element)\n\t.attr(\"class\",\"secondlegend\")\n\t.attr(\"x\",30)\n\t.attr(\"y\",height-20)\n\t.attr(\"width\",80)\n\t.attr(\"height\",10)\n\t.style(\"display\",\"none\")\nsvg.append(\"rect\")\n\t.attr(\"id\",\"legendbox5\"+allcolors[el].element)\n\t.attr(\"class\",\"secondlegend\")\n\t.attr(\"x\",110)\n\t.attr(\"y\",height-20)\n\t.attr(\"width\",10)\n\t.attr(\"height\",10)\n\t.style(\"display\",\"none\")\n\n\n\ndisplayit(el)\n//}); \n\n}\n\n$(\".bb\").click(function(e){\n e.preventDefault()\n metricsel=$(this).attr(\"element\")\n var el=metricsel+$(\"#metrictype button.active\").attr(\"element\")\n drawit(el)\n\n $(\"#mtit\").text(allcolors[metricsel+$(\"#metrictype button.active\").attr(\"element\")].title+\" - \"+$(\"#modules button.active\").text())\n})\n$(\"#metrictype button\").click(function(e){\n e.preventDefault()\n $(\"#metrictype button\").removeClass(\"active\")\n $(this).addClass(\"active\")\n var el=metricsel+$(this).attr(\"element\")\n drawit(el)\n $(\"#mtit2\").text($(this).text())\n})\n\ntrendgraph()\nfunction trendgraph(){\nvar cat=[\"2020-06-01\",\"2020-07-01\",\"2020-08-01\",\"2020-09-01\",\"2020-10-01\",\"2020-11-01\",\"2020-12-01\",\"2021-01-01\",\"2021-02-01\",\"2021-03-01\",\"2021-04-01\",\"2021-05-01\",\"2021-06-01\",\"2021-07-01\",\"2021-08-01\",\"2021-09-01\",\"2021-10-01\",\"2021-11-01\",\"2021-12-01\",\"2022-01-01\",\"2022-02-01\",\"2022-04-01\"] \nvar tot=[],old=[],veryold=[],told=[null,null,null,null,null,null,null,null,null,null,null,null],tvold=[null,null,null,null,null,null,null,null,null,null,null,null]\n\n$(cat).each(function(i,v){\n var l=dataall.Items.filter(function(d){return d.dateextract==v})\n if ($(\"#modules button.active\").text()!=\"WORLD\") {\n l=dataall.Items.filter(function(d){return d.dateextract==v && d.ICAO_regional_office==$(\"#modules button.active\").text()})\n }\n console.log(l)\n var t=0,o=0,vo=0\n $(l).each(function(j,u){\n t+=Number(u.notams)\n o+=Number(u.old_95to364days)\n vo+=Number(u.old_365days)\n })\n tot.push(t)\n old.push(o)\n veryold.push(vo)\n if (i<2) {\n told.push(o)\n tvold.push(vo)\n }\n})\n Highcharts.chart('mainnotamtrend', {\n chart: {\n type: 'line'\n },\n title: {\n text: 'Global Trend'\n },\n title: {\n text: 'NOTAM per month'\n },\n subtitle: {\n text: $(\"#modules button.active\").text()\n },\n xAxis: {\n categories: cat,\n plotLines:[\n { value:cat.indexOf(therefdate),\n label:{\n text:\"Reference\",\n rotation:0\n }\n \n }]\n },\n yAxis: {\n title: {\n text: 'NOTAM'\n }\n },\n plotOptions: {\n line: {\n dataLabels: {\n enabled: true\n },\n enableMouseTracking: false\n }\n },\n series: [{\n name: 'Total',\n data: tot,\n visible:false\n }, {\n name: 'Old',\n data: old,\n color:'#ffaa00'\n }, {\n name: 'Very old',\n data: veryold,\n color:'#c90000'\n }\n /*\n , {\n name: 'Old Y-1',\n data: told\n }, {\n name: 'Very old Y-1',\n data: tvold\n }\n */\n ]\n});\n \n \n}\n\n\nfunction displayit(el) {\n\n//setcolor()\n\nvar region=$(\"#modules button.active\").text()\n\n\n$(\"#states\"+allcolors[el].element+\" path\").each(function(){\nvar d=this\n\nif ($(\"#modules button.active\").text()!=\"WORLD\") {\n\t$(\"#togglestates\").removeAttr(\"disabled\")\n\t\n\tif (nongrouptoggle) {\n\n\t\tif (currentgroup.Composition.indexOf(this.id)<0) {\n\t\t\t$(this).hide() }\n\t\telse {\n\t\t\t$(this).show() }\n\t}\n\telse {\n\t\t$(this).show()}\n\t}\nelse {\n\t$(\"#togglestates\").attr(\"disabled\",\"disabled\")\nnongrouptoggle=false\n\t$(this).show()\n\t}\nvar statecode=d.id.slice(-3)\nif (statecode==\"GRL\") {statecode=\"DNK\"}\nelse if (statecode==\"ESH\") {statecode=\"MAR\"}\nelse if (statecode==\"GUF\") {statecode=\"FRA\"}\nvar thisdata=data.Items.filter(function(e){return e.iso_3_code==statecode && allcolors[el].validate(e)})[0]\n \n\nif (thisdata) {\n\tvar metval=Number(thisdata[allcolors[el].field])\n\t\t\n\n\t\t$(this).css(\"fill\",allcolors[el].color(metval)) \n if (allcolors[el].splitted && metval==0) {\n\t\t $(this).css(\"fill\",allcolors[el].neutral) \n }\t\t\n if (region!=\"WORLD\") {\n if (thisdata.ICAO_regional_office!=region) {\n $(this).css(\"fill\",\"#f3f3f3\")\n }\n }\n $(\"#\"+allcolors[el].element+\"_C_\"+this.id.slice(-3)).text(statecode+\": \"+metval+\n\t\t$(\"#metric option:selected\").attr(\"unit\"))\n\t$(\"#\"+allcolors[el].element+\"_C_\"+this.id.slice(-3)).addClass(\"inscope\")\n\t}\n\telse {\n\t$(this).css(\"fill\",\"lightgray\")\n\t$(\"#\"+allcolors[el].element+\"_C_\"+this.id.slice(-3)).text(this.id)\n\t$(\"#\"+allcolors[el].element+\"_C_\"+this.id.slice(-3)).removeClass(\"inscope\")\n\t\n\t}\n})\n}\n\n\n\n\nfunction filterregion(){\n var el=\"mainmap\"\n var region=$(\"#modules button.active\").text()\n var arr=riskvals.map(function(d){return d.statecode})\n if (region!=\"WORLD\") {\n arr=riskvals.filter(function(d){return d.region==region}).map(function(d){return d.statecode})\n //zoomregion(region)\n }\n else {\n //zoomout()\n }\n $(\"#states\"+el+\" path\").each(function(){\n var d=this\n \n var statecode=d.id.slice(-3)\n if (statecode==\"GRL\") {statecode=\"DNK\"}\n else if (statecode==\"ESH\") {statecode=\"MAR\"}\n else if (statecode==\"GUF\") {statecode=\"FRA\"}\n if (arr.indexOf(statecode)>=0) {\n var metval=$(this).attr(\"riskval\")\n\t $(this).css(\"fill\",colors[metval])\n\n //$(this).show()\n }\n else {\n $(this).css(\"fill\",\"#f3f3f3\")\n //$(this).hide()\n }\n })\n \n}\n\n$(\"#modules button\").click(function(e){\n e.preventDefault()\n $(\"#modules button\").removeClass(\"active\")\n $(this).addClass(\"active\")\n var region=$(this).text()\n regraph(region)\n drawit(metricsel+$(\"#metrictype button.active\").attr(\"element\"))\n $(\"#mtit\").text(allcolors[metricsel+$(\"#metrictype button.active\").attr(\"element\")].title+\" - \"+$(\"#modules button.active\").text())\n if ($(\"#modules button.active\").text()==\"WORLD\") {\n table\n .column(1)\n .search( \"\" )\n .draw();\n }\n else {\n //console.log(\"jere\")\n table\n .column(1)\n .search( $(\"#modules button.active\").text() )\n .draw(); \n }\n trendgraph()\n //graphall()\n\n \n})\n\nfunction globalgraph(){\n var toldr=[],tveryoldr=[],tnormalr=[]\n var thedata=data.Items\n var notams=0,old=0,veryold=0\n $(thedata).each(function(i,v){\n notams+=Number(v.notams)\n old+=Number(v.old_95to364days)\n veryold+=Number(v.old_365days)\n })\n var vo=Math.round(1000*veryold/notams)/10\n var o=Math.round(1000*old/notams)/10\n var no=Math.round(10*(100-o-vo))/10\n toldr.push(old)\n tveryoldr.push(veryold)\n tnormalr.push(notams-old-veryold)\n \n //oldr.push(o)\n //veryoldr.push(vo)\n //normalr.push(no)\n \n\n Highcharts.chart('mainnotam3', {\n chart: {\n type: 'bar'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'NOTAM'\n },\n subtitle: {\n text: 'WORLD'\n },\n xAxis: {\n categories: [\"WORLD\"]\n },\n yAxis: {\n min: 0,\n //max:100,\n labels:{\n format:\"{value}\"\n },\n title: {\n text: 'Notams'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n bar: {\n minPointLength: 3,\n dataLabels: {\n enabled: true,\n format:\"{y}\"\n },\n stacking:\"stacked\"\n }\n },\n series: [{\n name: \"Very old\",\n data: tveryoldr,\n color:colorslevels.veryold,\n dataLabels:{\n enabled:true\n }\n },{\n name: \"Old\",\n data: toldr,\n color:colorslevels.old,\n dataLabels:{\n enabled:true\n }\n },{\n name: \"Current\",\n data: tnormalr,\n color:colorslevels.current,\n dataLabels:{\n enabled:true\n }\n }]\n});\n}\nfunction regraph(region){\n var notams=0,old=0,veryold=0\n var thedata=data.Items\n if (region!=\"WORLD\") {\n thedata=data.Items.filter(function(d){return d.ICAO_regional_office==region})\n }\n $(thedata).each(function(i,v){\n notams+=Number(v.notams)\n old+=Number(v.old_95to364days)\n veryold+=Number(v.old_365days)\n })\n $(\"#notams\").text(notams)\n $(\"#compliantnotams\").text(notams-old-veryold+\" (\"+Math.round(1000*(notams-old-veryold)/notams)/10+\"%)\")\n $(\"#oldnotams\").text(old+\" (\"+Math.round(1000*old/notams)/10+\"%)\")\n $(\"#veryoldnotams\").text(veryold+\" (\"+Math.round(1000*veryold/notams)/10+\"%)\")\n\n\n\n}\nregraph(\"WORLD\")\nfunction mainnotams(){\n var regs=[\"APAC\",\"ESAF\",\"EUR/NAT\",\"MID\",\"NACC\",\"SAM\",\"WACAF\"]\n var oldr=[],veryoldr=[],normalr=[],toldr=[],tveryoldr=[],tnormalr=[]\n $(regs).each(function(j,r){\n var thedata=data.Items.filter(function(d){return d.ICAO_regional_office==r})\n var notams=0,old=0,veryold=0\n $(thedata).each(function(i,v){\n notams+=Number(v.notams)\n old+=Number(v.old_95to364days)\n veryold+=Number(v.old_365days)\n })\n var vo=Math.round(1000*veryold/notams)/10\n var o=Math.round(1000*old/notams)/10\n var no=Math.round(10*(100-o-vo))/10\n toldr.push(old)\n tveryoldr.push(veryold)\n tnormalr.push(notams-old-veryold)\n \n oldr.push(o)\n veryoldr.push(vo)\n normalr.push(no)\n })\n\n Highcharts.chart('mainnotam', {\n chart: {\n type: 'bar'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'NOTAM Age Distribution'\n },\n subtitle: {\n text: 'Relative, per region'\n },\n xAxis: {\n categories: regs\n },\n yAxis: {\n min: 0,\n max:100,\n labels:{\n format:\"{value}%\"\n },\n title: {\n text: 'Notams (%)'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n bar: {\n minPointLength: 3,\n dataLabels: {\n enabled: true,\n format:\"{y}%\"\n },\n stacking:\"stacked\"\n }\n },\n series: [{\n name: \"Very old\",\n data: veryoldr,\n color:colorslevels.veryold,\n dataLabels:{\n enabled:true\n }\n },{\n name: \"Old\",\n data: oldr,\n color:colorslevels.old,\n dataLabels:{\n enabled:true\n }\n },{\n name: \"Current\",\n data: normalr,\n color:colorslevels.current,\n dataLabels:{\n enabled:true\n }\n }]\n});\n\n\n Highcharts.chart('mainnotam2', {\n chart: {\n type: 'bar'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'NOTAM Age Distribution'\n },\n subtitle: {\n text: 'Absolute, per region'\n },\n xAxis: {\n categories: regs\n },\n yAxis: {\n //min: 0,\n //max:100,\n type: 'logarithmic',\n labels:{\n format:\"{value}\"\n },\n title: {\n text: 'Notams (logscale)'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n bar: {\n minPointLength: 3,\n dataLabels: {\n enabled: true,\n format:\"{y}\"\n },\n stacking:\"normal\"\n }\n },\n series: [{\n name: \"Very old\",\n data: tveryoldr,\n color:colorslevels.veryold,\n dataLabels:{\n enabled:true\n }\n },{\n name: \"Old\",\n data: toldr,\n color:colorslevels.old,\n dataLabels:{\n enabled:true\n }\n },{\n name: \"Current\",\n data: tnormalr,\n color:colorslevels.current,\n dataLabels:{\n enabled:true\n }\n }]\n});\n}\n\nmainnotams()\njQuery.extend(jQuery.fn.dataTableExt.oSort,{\n \n \"progress-asc\": function(a,b){\n //console.log($(a).first())\n var a1=Number($(a).first().text())\n var b1=Number($(b).first().text())\n //console.log(a1)\n\n return a1-b1\n \n },\n \"progress-desc\": function(a,b){\n var a1=Number($(a).first().text())\n var b1=Number($(b).first().text())\n\n return b1-a1\n }\n });\t\n \nvar table=$('#maintable').DataTable({\n \"paging\": false,\n columnDefs: [\n {\n targets: [1,2,3,4,5,6],\n className: 'dt-right '\n },\n {\n targets: [4,6],\n type: 'progress'\n } ]\n } );\n\n\n\n\nvar colors={\"NR\":\"lightgray\",\n\"NS\":\"#ffdead\",\n\"IP\":\"#99ccff\",\n\"IMP\":\"#3366cc\"\n}\n\n\nfunction graphall() {\ngraphbyrec()\nmaingraph()\nalleviations()\noverallmeasuresgraph()\nmainmeasuresdistgraph()\n//graphitstage()\n$(\".rec\").each(function(i,v){\n graphitrec($(v).attr(\"rec\"))\n})\nmaindistgraph()\n}\nfunction puttext(rec,x){\n var s=\"In the region, \"+rec+\" has been reported as fully implemented by \"+x[\"IMP\"]+\"% of the States. \"\n s+=x[\"NR\"]+\"% of the States have not yet reviewed this recommendation.\"\n $(\"#text\"+rec).text(s)\n}\nfunction puttextmeasure(x){\n var s=\"In average, States in the region have reported so far \"+Math.round(10*x.AD)/10+\"% of the measures listed in the take-off document as adopted.\"\n s+=\" In average, State have not reviewed yet \"+Math.round(10*x.NR)/10+\"% of the measures.\"\n $(\"#textmeasures\").text(s)\n}\nfunction graphitrec(rec){\n var region=$(\"#modules button.active\").text()\n var x=JSON.parse(data.Items.filter(function(d){return d.key==region})[0][rec])\n console.log(x)\n var d=[{y:x[\"IMP\"],color:colors[\"IMP\"]},\n {y:x[\"IP\"],color:colors[\"IP\"]},\n {y:x[\"NS\"],color:colors[\"NS\"]},\n {y:x[\"NR\"],color:colors[\"NR\"]}] \n console.log(d)\n //var imp=0,ns=0,ip=0\n puttext(rec,x)\n Highcharts.chart('graph'+rec, {\n chart: {\n type: 'bar'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'Implementation Status'\n },\n xAxis: {\n categories: [\"Fully implemented\",\"In progress\",\"Not started\",\"Not reviewed\"]\n },\n yAxis: {\n min: 0,\n max:100,\n labels:{\n format:\"{value}%\"\n },\n title: {\n text: 'States (%)'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n column: {\n minPointLength: 3,\n dataLabels: {\n enabled: true,\n format:\"{y}%\"\n }\n }\n },\n series: [{\n name: region,\n data: d,\n //color:\"purple\",\n dataLabels:{\n enabled:true\n }\n }]\n});\n}\n\nfunction graphitstage(){\n var region=$(\"#modules button.active\").text()\n var d=JSON.parse(data.Items.filter(function(d){return d.key==region})[0].stages)\n console.log(d)\n //var imp=0,ns=0,ip=0\n Highcharts.chart('graphstage', {\n chart: {\n type: 'column'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'Stages'\n },\n xAxis: {\n categories: [\"0\",\"1\",\"2\",\"3\",\"4\"]\n },\n yAxis: {\n min: 0,\n max:100,\n labels:{\n format:\"{value}%\"\n },\n title: {\n text: 'States (%)'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n column: {\n minPointLength: 3,\n dataLabels: {\n enabled: true,\n format:\"{y}%\"\n }\n }\n },\n series: [{\n name: region,\n data: d,\n color:\"purple\",\n dataLabels:{\n enabled:true\n }\n }]\n});\n}\n\n\n//graphall()\n\n\nfunction maingraph(){\n var region=$(\"#modules button.active\").text()\n console.log(data.Items.filter(function(d){return d.key==region})[0])\n var details=JSON.parse(data.Items.filter(function(d){return d.key==region})[0].overalldetails)\n console.log(details)\n var imp=details.IMP\n var ip=details.IP\n var ns=details.NS\n var nr=details.NR\n //var imp=0,ns=0,ip=0\n Highcharts.chart('maingraph', {\n chart: {\n type: 'bar'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'Overall Implementation Status'\n },\n xAxis: {\n categories: [region]\n },\n yAxis: {\n min: 0,\n max:100,\n title: {\n text: 'Recommendations (%)'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n animation: false\n }\n },\n series: [{\n name: 'Not reviewed',\n data: [nr],\n color:\"lightgray\"\n },{\n name: 'Not started',\n data: [ns],\n color:colors[\"NS\"]\n },{\n name: 'In progress',\n data: [ip],\n color:colors[\"IP\"]\n }, {\n name: 'Fully implemented',\n data: [imp],\n color:colors[\"IMP\"]\n }]\n});\n}\nfunction overallmeasuresgraph(){\n var region=$(\"#modules button.active\").text()\n console.log(data.Items.filter(function(d){return d.key==region})[0])\n var details=JSON.parse(data.Items.filter(function(d){return d.key==region})[0].measuredetails)\n console.log(details)\n puttextmeasure(details)\n var ado=details.AD\n var nad=details.NA\n var nr=details.NR\n //var imp=0,ns=0,ip=0\n Highcharts.chart('graphmeasures', {\n chart: {\n type: 'bar'\n },\n credits:{\n enabled:false\n },\n title: {\n text: 'Overall Status of Measure Adoption'\n },\n xAxis: {\n categories: [region]\n },\n yAxis: {\n min: 0,\n max:100,\n title: {\n text: 'Measures (%)'\n }\n },\n legend: {\n reversed: true\n },\n plotOptions: {\n series: {\n stacking: 'normal',\n animation: false\n }\n },\n series: [{\n name: 'Not reviewed',\n data: [nr],\n color:\"lightgray\"\n },{\n name: 'Not selected',\n data: [nad],\n color:colors[\"NS\"]\n },{\n name: 'Adopted',\n data: [ado],\n color:colors[\"IMP\"]\n }]\n});\n}\nfunction maindistgraph(){\n var region=$(\"#modules button.active\").text()\n var regstates\n if (region!=\"WORLD\") {\n regstates=data.Items.filter(function(d){return d.ICAO_regional_office==region})\n \n }\n else {\n regstates=data.Items.filter(function(d){return d.ICAO_regional_office})\n \n }\n console.log(regstates[0])\n regstates.sort(function(a,b){return (a.UN_state_name0)\n - var url=\"https://n2ep8ya9xb.execute-api.us-east-1.amazonaws.com/prod/calendar?TableName=notameternotams&format=csv&action=query2\"\n - url+=\"&filtervalue=\"+d.iso_3_code\n - url+=\"&filterfield=State\"\n - url+=\"&filtervalue2=2022-04-01\"\n - url+=\"&filterfield2=date_extract\"\n \n a(style=\"margin-left:5px;color:lightgray\",href=url,target=\"_blank\")\n i.fas.fa-file-download\n td.leftb=d.old_95to364days\n th\n //if (!Number.isNaN(Number(d.old_95to364days_pc)))\n if (Number(d.old_95to364days))\n span(class=(Number(d.old_95to364days_pc)>0?\"bad\":\"good\"))=Math.round(10*Number(d.old_95to364days_pc))/10\n - var variation=d.progress_old_95to364days_pc\n .badge.badge-light(style=\"margin-left:3px;font-size:8px;background-color:\"+(variation<0?\"#e0f9a2\":(variation==0?\"lightgray\":\"#FFa8a6\")))\n if (variation>0)\n i.fas.fa-arrow-up\n else if (variation ==0 )\n i.fas.fa-minus\n \n else\n i.fas.fa-arrow-down\n span=\" \"+Math.round(10*variation)/10\n td.leftb=d.old_365days\n th\n //if (!Number.isNaN(Number(d.old_365days_pc)))\n if (Number(d.old_365days)>0)\n span(class=(Number(d.old_365days_pc)>0?\"bad\":\"good\"))=Math.round(10*Number(d.old_365days_pc))/10\n - var variation=d.progress_old_365days_pc\n .badge.badge-light(style=\"margin-left:3px;font-size:8px;background-color:\"+(variation<0?\"#e0f9a2\":(variation==0?\"lightgray\":\"#FFa8a6\")))\n if (variation>0)\n i.fas.fa-arrow-up\n else if (variation ==0 )\n i.fas.fa-minus\n else\n i.fas.fa-arrow-down\n span=\" \"+Math.round(10*variation)/10\n\n\n \n"},"morejs":[{"url":"https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"},{"url":"https://kit.fontawesome.com/f8cac8be67.js"}],"morecss":[{"url":"https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"}],"capture":"https://quipslibistars.s3.amazonaws.com/prod/91a81aeb494a33d681c62d615f9d0d0e832906d8/capture.png","prod":true,"deploydate":"2022-04-04T19:00:10.354Z","libs":[{"_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":"568c42d091ce286c15af73fd","required":false,"description":"A JavaScript library for visualizing data with HTML, SVG and CSS.","haskey":false,"version":"3","link":"//d3js.org/d3.v3.min.js,//d3js.org/topojson.v0.min.js","name":"D3","__v":0,"website":"http://d3js.org"},{"_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]() } } }) }