1var static_perifereies = []; 2window.popups = []; 3var initialColors = Highcharts.getOptions().colors; 4initialColors1 = [ 5 "#4B68B6", 6 "#D4312C", 7 "#67A94F", 8 "#DBE300", 9 "#481097", 10 "#811717", 11 "#e6beff", 12 "#008080", 13 "#d2f53c", 14 "#E8D64C", 15 "#911eb4", 16 "#C2C08D", 17 "#808000", 18 "#D37FB1", 19 "#fffac8", 20 "#f032e6" 21]; 22initialColors2 = [ 23 "#DBE300", 24 "#4B68B6", 25 "#D4312C", 26 "#67A94F", 27 "#481097", 28 "#811717", 29 "#e6beff", 30 "#008080", 31 "#d2f53c", 32 "#E8D64C", 33 "#911eb4", 34 "#C2C08D", 35 "#808000", 36 "#D37FB1", 37 "#fffac8", 38 "#f032e6" 39]; 40//initialColors = shuffle(initialColors); //random on each page load 41Highcharts.getOptions().colors = Highcharts.map(initialColors1, function (color) { 42 return { 43 radialGradient: { 44 cx: 0.5, 45 cy: 0.3, 46 r: 0.7 47 }, 48 stops: [ 49 [0, color], 50 [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken 51 ] 52 }; 53}); 54$.views.helpers({ 55 getTitle: function (data, key) { 56 return window.english ? data[key + "_en"] : data[key]; 57 } 58}); 59var moduleMode = 1; 60var path = "/DesktopModules/AVMap.HomePage_Map/"; 61var digimap; 62var digiContainer; 63var zoomRequest; 64var nomTitleChanged = false; 65var clickProjectShown = false; 66var proj; 67var highlightCtrl; 68var selectCtrl; 69var zoomMode = -1; 70var previousPerifCode; 71var previousNomCode; 72var olStyle; 73var currentlySelected = -1; 74var activeTab = 0; 75var kmlLayer; 76var refreshMap = null; 77var selectedThematics = []; 78var selectedEP = []; 79var selectedFunds = []; 80var selectedAreas = []; 81var loadedQueries = 0; 82var maxQueries = 0; 83 84if (!Object.keys) { 85 Object.keys = function (obj) { 86 var keys = []; 87 88 for (var i in obj) { 89 if (obj.hasOwnProperty(i)) { 90 keys.push(i); 91 } 92 } 93 94 return keys; 95 }; 96} 97if (typeof jQuery.when.all === 'undefined') { 98 jQuery.when.all = function (deferreds, key) { 99 var retObj = jQuery.Deferred(function (def) { 100 jQuery.when.apply(jQuery, deferreds).then( 101 function () { 102 if (key) this.hashKey = key; 103 def.resolveWith(this, [Array.prototype.slice.call(arguments)]); 104 }, 105 function () { 106 if (key) this.hashKey = key; 107 def.rejectWith(this, [Array.prototype.slice.call(arguments)]); 108 }); 109 }); 110 return retObj; 111 } 112} 113 114var thematicTemplate = jQuery.templates("#thematicTemplate"); 115var fundingTemplate = jQuery.templates("#fundingTemplate"); 116var epTemplate = jQuery.templates("#epTemplate"); 117var itemSelectionTmpl = jQuery.templates("#itemSelectionTemplate"); 118var avtranslate = jQuery.templates("#translateTemplate"); 119loadThematics = function () { 120 jQuery.ajax({ 121 url: "/GetData.ashx?queryType=lists&queryArgument=thematic_objectives", 122 success: function (data) { 123 var items = []; 124 for (var i = 0; i < data.items.length; i++) { 125 items.push({ 126 code: data.items[i].code, 127 title: window.english ? data.items[i].title_en : data.items[i].title 128 }); 129 } 130 var tmplData = { 131 thematics: items 132 }; 133 jQuery("#thematicContainer").html(thematicTemplate.render(tmplData)); 134 } 135 }); 136} 137loadFunding = function () { 138 jQuery.ajax({ 139 url: "/GetData.ashx?queryType=lists&queryArgument=funding", 140 success: function (data) { 141 var tmplData = { 142 funding: data.items 143 }; 144 jQuery("#fundingContainer").html(fundingTemplate.render(tmplData)); 145 } 146 }); 147} 148loadEP = function () { 149 jQuery.ajax({ 150 url: "/GetData.ashx?queryType=lists&queryArgument=operational_programmes", 151 success: function (data) { 152 var tmplData = { 153 ep: data.items 154 }; 155 jQuery("#epContainer").html(epTemplate.render(tmplData)); 156 } 157 });
158} 159function shuffle(a) { 160 var j, x, i; 161 for (i = a.length; i; i--) { 162 j = Math.floor(Math.random() * i); 163 x = a[i - 1]; 164 a[i - 1] = a[j]; 165 a[j] = x; 166 } 167 return a; 168} 169function sortObj(obj,weird) { 170 //console.log('called sort',obj,weird); 171 weird=true; 172 Object.keys(obj).sort(function (a, b) { 173 return a.localeCompare(b); 174 }).forEach(function (key) { 175 var value = obj[key]; 176 delete obj[key]; 177 obj[key] = value; 178 if (weird) { 179 obj[key].areas = obj[key].areas.sort(function (a, b) { 180 try{ 181 return (parseInt((a.key=="-"?"9999":a.key)) > parseInt((b.key=="-"?"9999":b.key))); 182 }catch(ex){ 183 return a.key > b.key; 184 } 185 186 }); 187 } 188 }); 189 //console.log('after sort', obj); 190 return obj; 191} 192function initMap() { 193 proj = new OpenLayers.Projection("EPSG:4326"); 194 195 digimap = new OpenLayers.Map(digiContainer.id, { 196 controls: [], 197 projection: new OpenLayers.Projection("EPSG:900913"), 198 displayProjection: proj, 199 layers: [ 200 new OpenLayers.Layer.Google( 201 "Google Streets", // the default 202 { numZoomLevels: 20, opacity: 0 }, 203 { isBaseLayer: true, opacity: 0 } 204 ) 205 ], 206 center: new OpenLayers.LonLat(24.165735, 38.24609).transform(this.displayProjection, this.projection) 207 }); 208 olStyle = new OpenLayers.StyleMap({ 209 "default": new OpenLayers.Style({ 210 strokeColor: "#666666", 211 strokeOpacity: 1, 212 strokeWidth: 1, 213 fillColor: "#d4d8e3", 214 fillOpacity: 1, 215 cursor: "pointer", 216 graphicZIndex: 0 217 }), 218 "temporary": new OpenLayers.Style({ 219 strokeColor: "#666666", //, 220 strokeOpacity: 1, 221 strokeWidth: 2, 222 fillColor: "#5e8df7", 223 fillOpacity: 1, 224 graphicZIndex: 100, 225 cursor: "pointer" 226 }), 227 "select": new OpenLayers.Style({ 228 strokeColor: "#666666", //, 229 strokeOpacity: 1, 230 strokeWidth: 2, 231 fillColor: "#5e8df7", 232 fillOpacity: 1, 233 graphicZIndex: 100, 234 cursor: "pointer" 235 }) 236 }); 237 var keyboardControl = new OpenLayers.Control(); 238 239 var keyHandler = new OpenLayers.Handler.Keyboard(keyboardControl, { 240 keydown: function (evt) { 241 if (evt.which === 9) { 242 evt.preventDefault(); 243 var layer = digimap.layers[1]; 244 if (currentlySelected > -1) { 245 highlightCtrl.unhighlight(layer.features[currentlySelected]); 246 highlightCtrl.unselect(layer.features[currentlySelected]); 247 } 248 currentlySelected++; 249 if (currentlySelected > layer.features.length - 1) { 250 currentlySelected = 0; 251 } 252 highlightCtrl.highlight(layer.features[currentlySelected]); 253 highlightCtrl.select(layer.features[currentlySelected]); 254 } 255 if (evt.which === 13 && highlightCtrl.layer.selectedFeatures) { 256 mapFeatureClicked(highlightCtrl.layer.selectedFeatures[0]); 257 } 258 }, 259 }); 260 keyHandler.activate(); 261 digimap.addControl(keyboardControl); 262 fixZoom(); 263} 264 265function fixZoom(optCenter, optZoom) { 266 if (optCenter) { 267 digimap.setCenter(optCenter, optZoom); 268 } else { 269 switch (zoomMode) { 270 case -1: 271 digimap.setCenter(new OpenLayers.LonLat(24.165735, 38.24609).transform(digimap.displayProjection, digimap.projection), 6); 272 break; 273 case 0: 274 digimap.zoomToExtent(kmlLayer.getDataExtent()); 275 break; 276 case 1: 277 digimap.zoomToExtent(kmlLayer.getDataExtent()); 278 break; 279 case 2: 280 281 break; 282 } 283 } 284} 285 286function mapFeatureClicked(e) { 287 for (var i = 0; i < window.popups.length; i++) { 288 digimap.removePopup(window.popups[i]); 289 } 290 window.popups.length = 0; 291 var data = e.attributes.name; 292 if (selectedAreas.indexOf(data) == -1) { 293 selectedAreas.push(data); 294 getAreas(); 295 } 296 performSearch(); 297} 298function mapFeatureRemoved(e) { 299 var data = e.attributes.name; 300 if (selectedAreas.indexOf(data) >= 0) { 301 selectedAreas.splice(selectedAreas.indexOf(data), 1); 302 getAreas(); 303 } 304} 305 306 307function showTooltip(evt) { 308 for (var i = 0; i < window.popups.length; i++) { 309 digimap.removePopup(window.popups[i]); 310 } 311 window.popups.length = 0; 312 var center = evt.feature.geometry.getBounds().getCenterLonLat(); 313 var lonlat = center; 314 315 var html = ""; 316 var zoom = digimap.getZoom(); 317 var code = ""; 318 html = returnPerifName(evt.feature.attributes.name); 319 320 var popup = new OpenLayers.Popup.AnchoredBubble( 321 'myPopup', 322 lonlat, 323 new OpenLayers.Size(150, 60), 324 html, 325 { size: { w: 14, h: 14 }, offset: { x: -7, y: -7 } }, 326 false 327 ); 328 window.popups.push(popup); 329 evt.feature.popup = popup; 330 digimap.addPopup(popup); 331} 332function hideTooltip(evt) { 333 digimap.removePopup(evt.feature.popup); 334} 335 336function addKML() { 337 kmlLayer = getKMLLayer("/DesktopModules/AVMap.HomePage_Map/KML/KML_Country.kml"); 338 digimap.addLayers([kmlLayer]); 339 try { 340 digimap.removeControl(highlightCtrl); 341 digimap.removeControl(selectCtrl); 342 } catch (err) { } 343
344 highlightCtrl = new OpenLayers.Control.SelectFeature(kmlLayer, { 345 hover: true, 346 highlightOnly: true, 347 renderIntent: "temporary", 348 eventListeners: { 349 featurehighlighted: showTooltip, 350 featureunhighlighted: hideTooltip 351 } 352 }); 353 selectCtrl = new OpenLayers.Control.SelectFeature(kmlLayer, { 354 clickout: false, 355 hover: false, 356 toggle: true, 357 multiple: false, 358 onSelect: mapFeatureClicked, 359 onUnselect: mapFeatureRemoved 360 }); 361 digimap.addControls([highlightCtrl, selectCtrl]); 362 highlightCtrl.activate(); 363 selectCtrl.activate(); 364 kmlLayer.events.register("loadend", kmlLayer, function () { 365 for (var i = 0; i < kmlLayer.features.length; i++) { 366 var item = kmlLayer.features[i].attributes; 367 item.clabel = returnPerifName(item.name); 368 } 369 digimap.setCenter(new OpenLayers.LonLat(24.165735, 38.24609).transform(digimap.displayProjection, digimap.projection), 6); 370 }); 371} 372 373function returnPerifName(perif_ID) { 374 var found = false; 375 var retvalue = ""; 376 var counter = 0; 377 var comp_id = parseInt(perif_ID) < 10 ? "0" + perif_ID : perif_ID; 378 var prefix = window.english ? "Region" : "ΠεÏιÏÎÏεια"; 379 while (!found && counter < static_perifereies.length) { 380 if (static_perifereies[counter].id == comp_id) { 381 found = true; 382 retvalue = static_perifereies[counter].value; 383 } else { 384 counter++; 385 } 386 } 387 return prefix + " " + retvalue; 388} 389 390function clearMap() { 391 digimap.removeLayer(digimap.layers[1]); 392} 393 394function addPerifKML(code) { 395 var codes = ["03", "09", "17", "22", "28", "33", "38", "42", "48", "55", "58", "62", "65"]; 396 397 kmlLayers = []; 398 for (var i = 0; i < codes.length; i++) { 399 kmlLayers.push(getKMLLayer("/DesktopModules/AVMap.HomePage_Map/KML/KML_Perif" + codes[i] + ".kml")); 400 } 401 digimap.addLayers(kmlLayers); 402 highlightCtrl = new OpenLayers.Control.SelectFeature(kmlLayers, { 403 hover: true, 404 highlightOnly: true, 405 renderIntent: "temporary", 406 eventListeners: { 407 //featurehighlighted: showTooltip 408 } 409 }); 410 selectCtrl = new OpenLayers.Control.SelectFeature(kmlLayers, { 411 clickout: false, 412 toggle: true, 413 multiple: true, 414 onSelect: mapFeatureClicked, 415 onUnselect: mapFeatureRemoved 416 }); 417 digimap.addControls([highlightCtrl, selectCtrl]); 418 highlightCtrl.activate(); 419 selectCtrl.activate(); 420} 421function getKMLLayer(curl) { 422 var layer = new OpenLayers.Layer.Vector("KML", { 423 projection: digimap.displayProjection, 424 strategies: [new OpenLayers.Strategy.Fixed()], 425 protocol: new OpenLayers.Protocol.HTTP({ 426 url: curl, 427 format: new OpenLayers.Format.KML({ 428 extractStyles: false, 429 extractAttributes: true 430 431 }) 432 }), 433 styleMap: olStyle, 434 }, 435 { 436 isBaseLayer: false 437 } 438 ); 439 return layer; 440} 441 442function toggleThematic(event) { 443 if (event.which === 13 || event.type === 'click') { 444 jQuery("#thematicContainer .thematicLink").removeClass("selected"); 445 jQuery(this).toggleClass("selected"); 446 event.preventDefault(); 447 event.stopPropagation(); 448 getThematics(); 449 performSearch(); 450 } 451} 452function toggleEP(event) { 453 if (event.which === 13 || event.type === 'click') { 454 jQuery("#epContainer .epLink").removeClass("selected"); 455 jQuery(this).toggleClass("selected"); 456 event.preventDefault(); 457 event.stopPropagation(); 458 getEP(); 459 performSearch(); 460 } 461} 462function toggleFund(event) { 463 if (event.which === 13 || event.type === 'click') { 464 jQuery("#fundingContainer .fundingLink").removeClass("selected"); 465 jQuery(this).toggleClass("selected"); 466 event.preventDefault(); 467 event.stopPropagation(); 468 getFunds(); 469 performSearch(); 470 } 471} 472 473function getEP() { 474 var selected = jQuery("#epContainer .selected"); 475 jQuery("#epSelection").empty(); 476 selectedEP = []; 477 if (selected.length) { 478 jQuery.each(selected, function (i, selection) { 479 var title = jQuery(selection).find(".epLabel").text(); 480 var code = jQuery(selection).find(".epLabel").attr("data-code"); 481 selectedEP.push(code); 482 jQuery("#epSelection").append(itemSelectionTmpl.render({ code: code, title: title })); 483 }); 484 } else { 485 jQuery("#epSelection").html(itemSelectionTmpl.render({ code: "-", title: og.allEP })); 486 } 487} 488function getFunds() { 489 var selected = jQuery("#fundingContainer .selected"); 490 jQuery("#fundingSelection").empty(); 491 selectedFunds = []; 492 if (selected.length) { 493 jQuery.each(selected, function (i, selection) { 494 var title = jQuery(selection).find(".fundingLabel").text(); 495 var code = jQuery(selection).find(".fundingLabel").attr("data-code"); 496 selectedFunds.push(code); 497 jQuery("#fundingSelection").append(itemSelectionTmpl.render({ code: code, title: title })); 498 }); 499 } else { 500 jQuery("#fundingSelection").html(itemSelectionTmpl.render({ code: "-", title: og.allFunds })); 501 } 502} 503 504function getThematics() { 505 var selected = jQuery("#thematicContainer .selected"); 506 jQuery("#thematicSelection").empty(); 507 selectedThematics = []; 508 if (selected.length) { 509 jQuery.each(selected, function (i, selection) { 510 var title = jQuery(selection).find(".thematicLabel").text(); 511 var code = jQuery(selection).find(".icon").attr("class").replace("icon ", ""); 512 selectedThematics.push(code); 513 jQuery("#thematicSelection").append(itemSelectionTmpl.render({ code: code, title: title })); 514 }); 515 } else { 516 jQuery("#thematicSelection").html(itemSelectionTmpl.render({ code: "-", title: og.allThematics })); 517 } 518} 519function getAreas() { 520 jQuery("#mapSelection").empty(); 521 if (selectedAreas.length) { 522 jQuery.each(selectedAreas, function (i, selection) { 523 var title = getAreaTitle(selection); 524 var code = selection; 525 jQuery("#mapSelection").append(itemSelectionTmpl.render({ code: code, title: title })); 526 }); 527 } else { 528 jQuery("#mapSelection").html(itemSelectionTmpl.render({ code: "-", title: (moduleMode == 2) ? og.allPrefectures : og.allRegions })); 529 } 530} 531 532function getEPTitle(code) { 533 var retvalue = code; 534 var text = jQuery("#epContainer .epLink .epLabel[data-code='" + parseInt(code) + "']").text(); 535 return text ? text : retvalue; 536} 537function getFundingTitle(code) { 538 var retvalue = code; 539 var text = jQuery("#fundingContainer .fundingLink .fundingLabel[data-code='" + code + "']").text(); 540 return text ? text : retvalue; 541}
542function getThematicTitle(code) { 543 var retvalue = code; 544 var text = jQuery("#thematicContainer .thematicLink .thematicLabel[data-code='" + code + "']").text(); 545 return text ? text : retvalue; 546} 547 548function getAreaTitle(code) { 549 var list; 550 list = moduleMode == 2 ? static_nomoi : static_perifereies; 551 var found = false; 552 var retvalue = code; 553 var counter = 0; 554 if (moduleMode == 2) { 555 while (!found && counter < list.length) { 556 //god damn disparencies... 557 var idParts = list[counter].id.split("_"); 558 var codeParts = code.split("_"); 559 if (parseFloat(idParts[0]) == parseFloat(codeParts[0]) && 560 parseFloat(idParts[1]) == parseFloat(codeParts[1])) { 561 found = true; 562 retvalue = list[counter].value; 563 } 564 counter++; 565 } 566 } else { 567 while (!found && counter < list.length) { 568 if (parseFloat(list[counter].id) == parseFloat(code)) { 569 found = true; 570 retvalue = list[counter].value; 571 } 572 counter++; 573 } 574 } 575 576 return retvalue; 577} 578function getAllThematics() { 579 var retvalue = []; 580 jQuery.each(static_anapt, function (i, anapt) { 581 retvalue.push(anapt.key); 582 }); 583 return retvalue; 584} 585function getAllEP() { 586 var retvalue = []; 587 var links = jQuery("#epContainer .epLink .epLabel"); 588 jQuery.each(links, function (i, link) { 589 retvalue.push(jQuery(link).attr("data-code")); 590 }); 591 return retvalue; 592} 593function getAllFunding() { 594 var retvalue = []; 595 var links = jQuery("#fundingContainer .fundingLink .fundingLabel"); 596 jQuery.each(links, function (i, link) { 597 retvalue.push(jQuery(link).attr("data-code")); 598 }); 599 return retvalue; 600} 601 602function getAllAreas() { 603 var list; 604 list = moduleMode == 2 ? static_nomoi : static_perifereies; 605 var retvalue = []; 606 if (moduleMode == 2) { 607 jQuery.each(list, function (i, listitem) { 608 retvalue.push(listitem.id.toString()); 609 }); 610 } else { 611 jQuery.each(list, function (i, listitem) { 612 retvalue.push(parseFloat(listitem.id).toString()); 613 }); 614 } 615 616 return retvalue; 617} 618function linkChartSeries(chart) { 619 /* 620 Until current version (v5.0.12) linked pie charts are not supported automatically. 621 So they must be linked manually. 622 See https://github.com/highcharts/highcharts/issues/2079 623 Workaround: http://jsfiddle.net/highcharts/u7FQS/278/ 624 */ 625 $(chart.series[0].data).each(function (i, e) { 626 e.legendItem.on('click', function (event) { 627 var legendItem = e.name; 628 event.stopPropagation(); 629 $(chart.series).each(function (j, f) { 630 $(this.data).each(function (k, z) { 631 if (z.name == legendItem) { 632 if (z.visible) { 633 z.setVisible(false); 634 } 635 else { 636 z.setVisible(true); 637 } 638 } 639 }); 640 }); 641 }); 642 e.legendItem.on('mouseover', function (event) { 643 var legendItem = e.name; 644 event.stopPropagation(); 645 $(chart.series).each(function (j, f) { 646 $(this.data).each(function (k, z) { 647 if (z.name == legendItem) { 648 z.setState('hover') 649 } 650 }); 651 }); 652 }); 653 e.legendItem.on('mouseout', function (event) { 654 var legendItem = e.name; 655 656 event.stopPropagation(); 657 658 $(chart.series).each(function (j, f) { 659 $(this.data).each(function (k, z) { 660 if (z.name == legendItem) { 661 z.setState('') 662 } 663 }); 664 }); 665 }); 666 }); 667} 668 669function searchMode1() { //Thematics per region 670 var areas = selectedAreas; 671 var thematics = selectedThematics; 672 if (thematics.length == 0) { 673 thematics = getAllThematics(); 674 } 675 var deferreds = []; 676 var results = {}; 677 var language = window.english ? "en-US" : "el-GR"; 678 maxQueries = thematics.length; 679 for (var i = 0; i < thematics.length; i++) { //Fire a request for each op 680 var key = "" + thematics[i]; 681 var urlKey = key.replace("stoxos_", ""); 682 deferreds.push( 683 $.ajax({
684 ajax_key: key, 685 url: "/GetData.ashx?queryType=statistics&queryArgument=thematic_objectives&queryFilter=region&queryCode=" + urlKey, 686 success: function (data) { 687 results[this.ajax_key] = data; 688 loadedQueries += 1; 689 updateProgressBar(); 690 } 691 }) 692 ); 693 } 694 var retValue = { 695 hashKey: 'searchMode1', 696 def: jQuery.when.all(deferreds, 'searchMode1'), 697 cb: function (objects) { 698 var targets = {}; 699 jQuery.each(results, function (key, result) { 700 for (var i = 0; i < result.items.length; i++) { 701 var record = result.items[i]; 702 if (selectedAreas.indexOf(record.code) >= 0 || selectedAreas.length == 0) { 703 var keyCode = parseInt(key.replace("stoxos_", "")); 704 var finalKeyCode = keyCode.toString(); 705 if (keyCode < 10) { 706 finalKeyCode = "0" + keyCode; 707 } 708 if (!targets["stoxos_" + finalKeyCode]) { 709 targets["stoxos_" + finalKeyCode] = { 710 title: getThematicTitle(key.replace("stoxos_", "")), 711 areas: [] 712 }; 713 } 714 var f1 = parseInt(record.code); 715 var f2 = f1.toString(); 716 if (f1 < 10) { 717 f2 = "0" + f1; 718 } 719 targets["stoxos_" + finalKeyCode].areas.push({ 720 key: f2, 721 budget: parseFloat(record.budget.replace(/\./g, "")), 722 contracts: parseFloat(record.contracts.replace(/\./g, "")), 723 payments: parseFloat(record.payments.replace(/\./g, "")), 724 //commitments: parseFloat(record.commitments.replace(/\./g, "")) 725 }); 726 } 727 } 728 }); 729 targets = sortObj(targets); 730 renderCharts(targets, 'bar', 'searchMode1'); 731 } 732 }; 733 return retValue; 734} 735/* 736function searchMode1() { //Thematics per region 737 var areas = selectedAreas; 738 if (selectedAreas.length == 0) { 739 areas = getAllAreas(); 740 } 741 var deferreds = []; 742 var results = {}; 743 var language = window.english ? "en-US" : "el-GR"; 744 maxQueries = areas.length; 745 for (var i = 0; i < areas.length; i++) { //Fire a request for each region 746 var key = "" + areas[i]; 747 deferreds.push( 748 $.ajax({ 749 ajax_key: key, 750 url: "/DesktopModules/AVMap.HomePage_Map/SearchHandler.ashx?queryType=Anapt&mapZoom=perif_" + areas[i] + "&language=" + language, //This should be replaced with API call in 2020 site 751 success: function (data) { 752 results[this.ajax_key] = data; 753 loadedQueries += 1; 754 updateProgressBar(); 755 } 756 }) 757 ); 758 } 759 var retValue = { 760 hashKey: 'searchMode1', 761 def: jQuery.when.all(deferreds, 'searchMode1'), 762 cb: function (objects) { 763 var targets = {}; 764 jQuery.each(results, function (key, result) { //Pivot all results by thematic 765 for (var i = 0; i < result.Rows.length; i++) { 766 var record = result.Rows[i]; 767 if (record) { 768 if (selectedThematics.indexOf(record.ClassName) >= 0 || selectedThematics.length == 0) { 769 if (!targets[record.ClassName]) { 770 targets[record.ClassName] = { 771 title: record.Title, 772 areas: [] 773 } 774 } 775 targets[record.ClassName].areas.push({ 776 key: key, 777 budget: parseFloat(record.Budget.replace(/\./g, "")),
778 contracts: parseFloat(record.Contracts.replace(/\./g, "")), 779 payments: parseFloat(record.Payments.replace(/\./g, "")) 780 }); 781 } 782 } 783 } 784 }); 785 targets = sortObj(targets); 786 renderCharts(targets, 'bar', 'searchMode1'); 787 } 788 }; 789 return retValue; 790}*/ 791 792/* 793function searchMode2(){ //Thematics per prefecture 794 var areas=selectedAreas; 795 if (selectedAreas.length==0){ 796 areas =getAllAreas(); 797 } 798 var deferreds = []; 799 var results = {}; 800 var language=window.english?"en-US":"el-GR"; 801 maxQueries=areas.length; 802 for (var i=0;i<areas.length;i++){ //Fire a request for each nom 803 var key=""+areas[i]; 804 var keyParts = areas[i].split("_"); 805 var urlKey=parseFloat(keyParts[0])+"_"+parseFloat(keyParts[1]); //handle disparencies 806 deferreds.push( 807 $.ajax({ 808 ajax_key: key, 809 url: "/DesktopModules/AVMap.HomePage_Map/SearchHandler.ashx?queryType=Anapt&mapZoom=nom_"+urlKey+"&language="+language, //This should be replaced with API call in 2020 site 810 success: function(data){ 811 results[this.ajax_key]=data; 812 loadedQueries+=1; 813 updateProgressBar(); 814 } 815 }) 816 ); 817 } 818 jQuery.when.all(deferreds).then(function(objects){ 819 var targets={}; 820 jQuery.each(results,function(key,result){ //Pivot all results by thematic 821 for (var i=0;i<result.Rows.length;i++){ 822 var record =result.Rows[i]; 823 if (record){ 824 if (selectedThematics.indexOf(record.ClassName)>=0 || selectedThematics.length==0){ 825 if (!targets[record.ClassName]){ 826 targets[record.ClassName]={ 827 title: record.Title, 828 areas: [] 829 } 830 } 831 targets[record.ClassName].areas.push({ 832 key: key, 833 budget: parseFloat(record.Budget.replace(/\./g,"")), 834 contracts: parseFloat(record.Contracts.replace(/\./g,"")), 835 payments: parseFloat(record.Payments.replace(/\./g,"")) 836 }); 837 } 838 } 839 } 840 }); 841 renderCharts(targets); 842 }); 843} 844*/ 845function searchMode3() { //Thematics per o.p. 846 var eps = selectedEP; 847 var thematics = selectedThematics; 848 if (thematics.length == 0) { 849 thematics = getAllThematics(); 850 } 851 var deferreds = []; 852 var results = {}; 853 var language = window.english ? "en-US" : "el-GR"; 854 maxQueries = thematics.length; 855 for (var i = 0; i < thematics.length; i++) { //Fire a request for each op 856 var key = "" + thematics[i]; 857 var urlKey = key.replace("stoxos_", ""); 858 deferreds.push( 859 $.ajax({ 860 ajax_key: key, 861 url: "/GetData.ashx?queryType=statistics&queryArgument=thematic_objectives&queryFilter=operational_programme&queryCode=" + urlKey, 862 success: function (data) { 863 results[this.ajax_key] = data; 864 loadedQueries += 1; 865 updateProgressBar(); 866 } 867 }) 868 ); 869 } 870 var retValue = { 871 hashKey: 'searchMode3', 872 def: jQuery.when.all(deferreds, 'searchMode3'), 873 cb: function (objects) { 874 var targets = {}; 875 jQuery.each(results, function (key, result) { 876 for (var i = 0; i < result.items.length; i++) { 877 var record = result.items[i]; 878 if (selectedEP.indexOf(record.code) >= 0 || selectedEP.length == 0) { 879 var keyCode = parseInt(key.replace("stoxos_", "")); 880 var finalKeyCode = keyCode.toString(); 881 if (keyCode < 10) { 882 finalKeyCode = "0" + keyCode; 883 } 884 if (!targets["stoxos_" + finalKeyCode]) { 885 targets["stoxos_" + finalKeyCode] = { 886 title: getThematicTitle(key.replace("stoxos_", "")), 887 areas: [] 888 }; 889 } 890 var f1 = parseInt(record.code); 891 var f2 = f1.toString(); 892 if (f1 < 10) { 893 f2 = "0" + f1; 894 } 895 targets["stoxos_" + finalKeyCode].areas.push({ 896 key: f2, 897 budget: parseFloat(record.budget.replace(/\./g, "")), 898 contracts: parseFloat(record.contracts.replace(/\./g, "")), 899 payments: parseFloat(record.payments.replace(/\./g, "")), 900 commitments: parseFloat(record.commitments.replace(/\./g, "")) 901 }); 902 } 903 } 904 }); 905 //console.log('before', targets); 906 targets = sortObj(targets,true); 907 //console.log('after', targets); 908 renderCharts(targets, 'bar', 'searchMode3'); 909 } 910 }; 911 return retValue; 912} 913function searchMode4() { //Thematics per fund 914 var funds = selectedFunds; 915 var thematics = selectedThematics; 916 if (thematics.length == 0) { 917 thematics = getAllThematics(); 918 } 919 var deferreds = []; 920 var results = {}; 921 var language = window.english ? "en-US" : "el-GR"; 922 maxQueries = thematics.length; 923 for (var i = 0; i < thematics.length; i++) { //Fire a request for each fund 924 var key = "" + thematics[i]; 925 var urlKey = key.replace("stoxos_", ""); 926 deferreds.push( 927 $.ajax({
928 ajax_key: key, 929 url: "/GetData.ashx?queryType=statistics&queryArgument=thematic_objectives&queryFilter=fund&queryCode=" + urlKey, 930 success: function (data) { 931 results[this.ajax_key] = data; 932 loadedQueries += 1; 933 updateProgressBar(); 934 } 935 }) 936 ); 937 } 938 var retValue = { 939 hashKey: 'searchMode4', 940 def: jQuery.when.all(deferreds, 'searchMode4'), 941 cb: function (objects) { 942 var targets = {}; 943 jQuery.each(results, function (key, result) { 944 for (var i = 0; i < result.items.length; i++) { 945 var record = result.items[i]; 946 if (selectedFunds.indexOf(record.code) >= 0 || selectedFunds.length == 0) { 947 if (!targets["stoxos_" + key.replace("stoxos_", "")]) { 948 targets["stoxos_" + key.replace("stoxos_", "")] = { 949 title: getThematicTitle(key.replace("stoxos_", "")), 950 areas: [] 951 }; 952 } 953 targets["stoxos_" + key.replace("stoxos_", "")].areas.push({ 954 key: record.code, 955 budget: parseFloat(record.budget.replace(/\./g, "")), 956 contracts: parseFloat(record.contracts.replace(/\./g, "")), 957 payments: parseFloat(record.payments.replace(/\./g, "")), 958 commitments: parseFloat(record.commitments.replace(/\./g, "")) 959 }); 960 } 961 } 962 }); 963 targets = sortObj(targets); 964 renderCharts(targets, 'pie', 'searchMode4'); 965 } 966 }; 967 return retValue; 968} 969function searchMode5() { //Region per o.p. 970 var eps = selectedEP; 971 var areas = selectedAreas; 972 if (selectedAreas.length == 0) { 973 areas = getAllAreas(); 974 } 975 var deferreds = []; 976 var results = {}; 977 var language = window.english ? "en-US" : "el-GR"; 978 maxQueries = areas.length; 979 for (var i = 0; i < areas.length; i++) { //Fire a request for each ep 980 var key = "" + areas[i]; 981 var urlKey = key; 982 deferreds.push( 983 $.ajax({ 984 ajax_key: key, 985 url: "/GetData.ashx?queryType=statistics&queryArgument=regions&queryFilter=operational_programme&queryCode=" + urlKey, 986 success: function (data) { 987 results[this.ajax_key] = data; 988 loadedQueries += 1; 989 updateProgressBar(); 990 } 991 }) 992 ); 993 } 994 var retValue = { 995 hashKey: 'searchMode5', 996 def: jQuery.when.all(deferreds, 'searchMode5'), 997 cb: function (objects) { 998 var targets = {}; 999 jQuery.each(results, function (key, result) { 1000 for (var i = 0; i < result.items.length; i++) { 1001 var record = result.items[i]; 1002 if (selectedEP.indexOf(record.code) >= 0 || selectedEP.length == 0) { 1003 if (!targets[key]) { 1004 targets[key] = {
1005 title: getAreaTitle(key), 1006 areas: [] 1007 }; 1008 } 1009 targets[key].areas.push({ 1010 key: record.code, 1011 budget: parseFloat(record.budget.replace(/\./g, "")), 1012 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1013 payments: parseFloat(record.payments.replace(/\./g, "")) 1014 }); 1015 } 1016 } 1017 }); 1018 targets = sortObj(targets); 1019 renderCharts(targets, 'bar', 'searchMode5'); 1020 } 1021 }; 1022 return retValue; 1023} 1024function searchMode6() { //Region per fund 1025 var funds = selectedFunds; 1026 var areas = selectedAreas; 1027 if (selectedAreas.length == 0) { 1028 areas = getAllAreas(); 1029 } 1030 var deferreds = []; 1031 var results = {}; 1032 var language = window.english ? "en-US" : "el-GR"; 1033 maxQueries = areas.length; 1034 for (var i = 0; i < areas.length; i++) { //Fire a request for each ep 1035 var key = "" + areas[i]; 1036 var urlKey = key; 1037 deferreds.push( 1038 $.ajax({ 1039 ajax_key: key, 1040 url: "/GetData.ashx?queryType=statistics&queryArgument=regions&queryFilter=fund&queryCode=" + urlKey, 1041 success: function (data) { 1042 results[this.ajax_key] = data; 1043 loadedQueries += 1; 1044 updateProgressBar(); 1045 } 1046 }) 1047 ); 1048 } 1049 var retValue = { 1050 hashKey: 'searchMode6', 1051 def: jQuery.when.all(deferreds, 'searchMode6'), 1052 cb: function (objects) { 1053 var targets = {}; 1054 jQuery.each(results, function (key, result) { 1055 for (var i = 0; i < result.items.length; i++) { 1056 var record = result.items[i]; 1057 if (selectedFunds.indexOf(record.code) >= 0 || selectedFunds.length == 0) { 1058 if (!targets[key]) { 1059 targets[key] = {
1060 title: getAreaTitle(key), 1061 areas: [] 1062 }; 1063 } 1064 targets[key].areas.push({ 1065 key: record.code, 1066 budget: parseFloat(record.budget.replace(/\./g, "")), 1067 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1068 payments: parseFloat(record.payments.replace(/\./g, "")) 1069 }); 1070 } 1071 } 1072 }); 1073 targets = sortObj(targets); 1074 renderCharts(targets, 'pie', 'searchMode6'); 1075 } 1076 }; 1077 return retValue; 1078} 1079function searchMode7() { //Region per thematic 1080 var areas = selectedAreas; 1081 if (selectedAreas.length == 0) { 1082 areas = getAllAreas(); 1083 } 1084 var deferreds = []; 1085 var results = {}; 1086 var language = window.english ? "en-US" : "el-GR"; 1087 maxQueries = areas.length; 1088 for (var i = 0; i < areas.length; i++) { //Fire a request for each ep 1089 var key = "" + areas[i]; 1090 var urlKey = key; 1091 deferreds.push( 1092 $.ajax({ 1093 ajax_key: key, 1094 url: "/GetData.ashx?queryType=statistics&queryArgument=regions&queryFilter=thematic&queryCode=" + urlKey, 1095 success: function (data) { 1096 results[this.ajax_key] = data; 1097 loadedQueries += 1; 1098 updateProgressBar(); 1099 } 1100 }) 1101 ); 1102 } 1103 var retValue = { 1104 hashKey: 'searchMode7', 1105 def: jQuery.when.all(deferreds, 'searchMode7'), 1106 cb: function (objects) { 1107 var targets = {}; 1108 jQuery.each(results, function (key, result) { 1109 for (var i = 0; i < result.items.length; i++) { 1110 var record = result.items[i]; 1111 if (selectedThematics.indexOf(record.code) >= 0 || selectedThematics.length == 0) { 1112 if (!targets[key]) { 1113 targets[key] = {
1114 title: getAreaTitle(key), 1115 areas: [] 1116 }; 1117 } 1118 targets[key].areas.push({ 1119 key: record.code, 1120 budget: parseFloat(record.budget.replace(/\./g, "")), 1121 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1122 payments: parseFloat(record.payments.replace(/\./g, "")) 1123 }); 1124 } 1125 } 1126 }); 1127 targets = sortObj(targets); 1128 renderCharts(targets, 'bar', 'searchMode7'); 1129 } 1130 }; 1131 return retValue; 1132} 1133function searchMode8() { //OP per region 1134 var eps = selectedEP; 1135 if (selectedEP.length == 0) { 1136 eps = getAllEP(); 1137 } 1138 var deferreds = []; 1139 var results = {}; 1140 var language = window.english ? "en-US" : "el-GR"; 1141 maxQueries = eps.length; 1142 for (var i = 0; i < eps.length; i++) { //Fire a request for each ep 1143 var key = "" + eps[i]; 1144 var urlKey = key; 1145 deferreds.push( 1146 $.ajax({ 1147 ajax_key: key, 1148 url: "/GetData.ashx?queryType=statistics&queryArgument=oprogrammes&queryFilter=region&queryCode=" + urlKey, 1149 success: function (data) { 1150 results[this.ajax_key] = data; 1151 loadedQueries += 1; 1152 updateProgressBar(); 1153 } 1154 }) 1155 ); 1156 } 1157 var retValue = { 1158 hashKey: 'searchMode8', 1159 def: jQuery.when.all(deferreds, 'searchMode8'), 1160 cb: function (objects) { 1161 var targets = {}; 1162 jQuery.each(results, function (key, result) { 1163 for (var i = 0; i < result.items.length; i++) { 1164 var record = result.items[i]; 1165 if (selectedAreas.indexOf(record.code) >= 0 || selectedAreas.length == 0) { 1166 if (!targets[key]) { 1167 targets[key] = { 1168 title: getEPTitle(key), 1169 areas: [] 1170 }; 1171 } 1172 targets[key].areas.push({ 1173 key: record.code, 1174 budget: parseFloat(record.budget.replace(/\./g, "")), 1175 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1176 payments: parseFloat(record.payments.replace(/\./g, "")) 1177 1178 }); 1179 } 1180 } 1181 }); 1182 targets = sortObj(targets); 1183 renderCharts(targets, 'bar', 'searchMode8'); 1184 } 1185 }; 1186 return retValue; 1187} 1188function searchMode9() { //OP per fund 1189 var eps = selectedEP; 1190 if (selectedEP.length == 0) { 1191 eps = getAllEP(); 1192 } 1193 var deferreds = []; 1194 var results = {}; 1195 var language = window.english ? "en-US" : "el-GR"; 1196 maxQueries = eps.length; 1197 for (var i = 0; i < eps.length; i++) { //Fire a request for each ep 1198 var key = "" + eps[i]; 1199 var urlKey = key; 1200 deferreds.push( 1201 $.ajax({ 1202 ajax_key: key, 1203 url: "/GetData.ashx?queryType=statistics&queryArgument=oprogrammes&queryFilter=fund&queryCode=" + urlKey, 1204 success: function (data) { 1205 results[this.ajax_key] = data; 1206 loadedQueries += 1; 1207 updateProgressBar(); 1208 } 1209 }) 1210 ); 1211 } 1212 var retValue = { 1213 hashKey: 'searchMode9', 1214 def: jQuery.when.all(deferreds, 'searchMode9'), 1215 cb: function (objects) { 1216 var targets = {}; 1217 jQuery.each(results, function (key, result) { 1218 for (var i = 0; i < result.items.length; i++) { 1219 var record = result.items[i]; 1220 if (selectedFunds.indexOf(record.code) >= 0 || selectedFunds.length == 0) { 1221 if (!targets[key]) { 1222 targets[key] = {
1223 title: getEPTitle(key), 1224 areas: [] 1225 }; 1226 } 1227 targets[key].areas.push({ 1228 key: record.code, 1229 budget: parseFloat(record.budget.replace(/\./g, "")), 1230 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1231 payments: parseFloat(record.payments.replace(/\./g, "")), 1232 commitments: parseFloat(record.commitments.replace(/\./g, "")) 1233 }); 1234 } 1235 } 1236 }); 1237 targets = sortObj(targets); 1238 renderCharts(targets, 'pie', 'searchMode9'); 1239 } 1240 }; 1241 return retValue; 1242 1243} 1244function searchMode10() { //OP per thematic 1245 var eps = selectedEP; 1246 if (selectedEP.length == 0) { 1247 eps = getAllEP(); 1248 } 1249 var deferreds = []; 1250 var results = {}; 1251 var language = window.english ? "en-US" : "el-GR"; 1252 maxQueries = eps.length; 1253 for (var i = 0; i < eps.length; i++) { //Fire a request for each ep 1254 var key = "" + eps[i]; 1255 var urlKey = key; 1256 deferreds.push( 1257 $.ajax({ 1258 ajax_key: key, 1259 url: "/GetData.ashx?queryType=statistics&queryArgument=oprogrammes&queryFilter=thematic&queryCode=" + urlKey, 1260 success: function (data) { 1261 results[this.ajax_key] = data; 1262 loadedQueries += 1; 1263 updateProgressBar(); 1264 } 1265 }) 1266 ); 1267 } 1268 var retValue = { 1269 hashKey: 'searchMode10', 1270 def: jQuery.when.all(deferreds, 'searchMode10'), 1271 cb: function (objects) { 1272 var targets = {}; 1273 jQuery.each(results, function (key, result) { 1274 for (var i = 0; i < result.items.length; i++) { 1275 var record = result.items[i]; 1276 if (selectedThematics.indexOf(record.code) >= 0 || selectedThematics.length == 0) { 1277 if (!targets[key]) { 1278 targets[key] = { 1279 title: getEPTitle(key), 1280 areas: [] 1281 }; 1282 } 1283 targets[key].areas.push({ 1284 key: record.code, 1285 budget: parseFloat(record.budget.replace(/\./g, "")), 1286 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1287 payments: parseFloat(record.payments.replace(/\./g, "")), 1288 commitments: parseFloat(record.commitments.replace(/\./g, "")), 1289 }); 1290 } 1291 } 1292 }); 1293 targets = sortObj(targets); 1294 renderCharts(targets, 'bar', 'searchMode10'); 1295 } 1296 }; 1297 return retValue; 1298} 1299function searchMode11() { //Fund per region 1300 var funds = selectedFunds; 1301 if (selectedFunds.length == 0) { 1302 funds = getAllFunding(); 1303 } 1304 var deferreds = []; 1305 var results = {}; 1306 var language = window.english ? "en-US" : "el-GR"; 1307 maxQueries = funds.length; 1308 for (var i = 0; i < funds.length; i++) { //Fire a request for each fund 1309 var key = "" + funds[i]; 1310 var urlKey = key; 1311 deferreds.push( 1312 $.ajax({ 1313 ajax_key: key, 1314 url: "/GetData.ashx?queryType=statistics&queryArgument=funds&queryFilter=region&queryCode=" + urlKey, 1315 success: function (data) { 1316 results[this.ajax_key] = data; 1317 loadedQueries += 1; 1318 updateProgressBar(); 1319 } 1320 }) 1321 ); 1322 } 1323 var retValue = { 1324 hashKey: 'searchMode11', 1325 def: jQuery.when.all(deferreds, 'searchMode11'), 1326 cb: function (objects) { 1327 var targets = {}; 1328 jQuery.each(results, function (key, result) { 1329 for (var i = 0; i < result.items.length; i++) { 1330 var record = result.items[i]; 1331 if (selectedAreas.indexOf(record.code) >= 0 || selectedAreas.length == 0) { 1332 if (!targets[key]) { 1333 targets[key] = {
1334 title: getFundingTitle(key), 1335 areas: [] 1336 }; 1337 } 1338 targets[key].areas.push({ 1339 key: record.code, 1340 budget: parseFloat(record.budget.replace(/\./g, "")), 1341 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1342 payments: parseFloat(record.payments.replace(/\./g, "")) 1343 }); 1344 } 1345 } 1346 }); 1347 targets = sortObj(targets); 1348 renderCharts(targets, 'bar', 'searchMode11'); 1349 } 1350 }; 1351 return retValue; 1352} 1353function searchMode12() { //Fund per op 1354 var funds = selectedFunds; 1355 if (selectedFunds.length == 0) { 1356 funds = getAllFunding(); 1357 } 1358 var deferreds = []; 1359 var results = {}; 1360 var language = window.english ? "en-US" : "el-GR"; 1361 maxQueries = funds.length; 1362 for (var i = 0; i < funds.length; i++) { //Fire a request for each fund 1363 var key = "" + funds[i]; 1364 var urlKey = key; 1365 deferreds.push( 1366 $.ajax({ 1367 ajax_key: key, 1368 url: "/GetData.ashx?queryType=statistics&queryArgument=funds&queryFilter=operational_programme&queryCode=" + urlKey, 1369 success: function (data) { 1370 results[this.ajax_key] = data; 1371 loadedQueries += 1; 1372 updateProgressBar(); 1373 } 1374 }) 1375 ); 1376 } 1377 var retValue = { 1378 hashKey: 'searchMode12', 1379 def: jQuery.when.all(deferreds, 'searchMode12'), 1380 cb: function (objects) { 1381 var targets = {}; 1382 jQuery.each(results, function (key, result) { 1383 for (var i = 0; i < result.items.length; i++) { 1384 var record = result.items[i]; 1385 if (selectedEP.indexOf(record.code) >= 0 || selectedEP.length == 0) { 1386 if (!targets[key]) { 1387 targets[key] = { 1388 title: getFundingTitle(key), 1389 areas: [] 1390 }; 1391 } 1392 targets[key].areas.push({ 1393 key: record.code, 1394 budget: parseFloat(record.budget.replace(/\./g, "")), 1395 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1396 payments: parseFloat(record.payments.replace(/\./g, "")), 1397 commitments: parseFloat(record.commitments.replace(/\./g, "")) 1398 }); 1399 } 1400 } 1401 }); 1402 targets = sortObj(targets); 1403 renderCharts(targets, 'bar', 'searchMode12'); 1404 } 1405 }; 1406 return retValue; 1407} 1408function searchMode13() { //Fund per thematic 1409 var funds = selectedFunds; 1410 if (selectedFunds.length == 0) { 1411 funds = getAllFunding(); 1412 } 1413 var deferreds = []; 1414 var results = {}; 1415 var language = window.english ? "en-US" : "el-GR"; 1416 maxQueries = funds.length; 1417 for (var i = 0; i < funds.length; i++) { //Fire a request for each fund 1418 var key = "" + funds[i]; 1419 var urlKey = key; 1420 deferreds.push( 1421 $.ajax({ 1422 ajax_key: key, 1423 url: "/GetData.ashx?queryType=statistics&queryArgument=funds&queryFilter=thematic&queryCode=" + urlKey, 1424 success: function (data) { 1425 results[this.ajax_key] = data; 1426 loadedQueries += 1; 1427 updateProgressBar(); 1428 } 1429 }) 1430 ); 1431 } 1432 var retValue = { 1433 hashKey: 'searchMode13', 1434 def: jQuery.when.all(deferreds, 'searchMode13'), 1435 cb: function (objects) { 1436 var targets = {}; 1437 jQuery.each(results, function (key, result) { 1438 for (var i = 0; i < result.items.length; i++) { 1439 var record = result.items[i]; 1440 if (selectedThematics.indexOf(record.code) >= 0 || selectedThematics.length == 0) { 1441 if (!targets[key]) { 1442 targets[key] = {
1443 title: getFundingTitle(key), 1444 areas: [] 1445 }; 1446 } 1447 targets[key].areas.push({ 1448 key: record.code, 1449 budget: parseFloat(record.budget.replace(/\./g, "")), 1450 contracts: parseFloat(record.contracts.replace(/\./g, "")), 1451 payments: parseFloat(record.payments.replace(/\./g, "")), 1452 commitments: parseFloat(record.commitments.replace(/\./g, "")) 1453 }); 1454 } 1455 } 1456 }); 1457 targets = sortObj(targets); 1458 renderCharts(targets, 'bar', 'searchMode13'); 1459 } 1460 }; 1461 return retValue; 1462} 1463 1464 1465function updateProgressBar() { 1466 var width = parseInt((100 * loadedQueries) / maxQueries); 1467 jQuery("#loadingProgress .progress-bar").css("width", width + "%"); 1468 jQuery("#loadingProgress .progress-bar").text(width + "%"); 1469 if (width == 100) { 1470 jQuery("#loadingProgress").hide(); 1471 } 1472} 1473function resetProgressBar() { 1474 loadedQueries = 0; 1475 maxQueries = 0; 1476 jQuery("#loadingProgress .progress-bar").css("width", 0 + "%"); 1477 jQuery("#loadingProgress .progress-bar").text(0 + "%"); 1478 jQuery("#loadingProgress").show(); 1479} 1480 1481function performSearch(event) { 1482 if (event) { 1483 event.preventDefault(); 1484 event.stopPropagation(); 1485 } 1486 jQuery("#section3").show(); 1487 resetProgressBar(); 1488 jQuery("#results").empty(); 1489 var atLeastOne = false; 1490 var gatherCBs = {}; 1491 switch (moduleMode) { 1492 case 1: 1493 if ($("#modePerRegion")[0].checked) { 1494 var result = searchMode1(); //thematics per region 1495 gatherCBs[result.hashKey] = result; 1496 atLeastOne = true; 1497 } 1498 if ($("#modePerOP")[0].checked) { 1499 var result = searchMode3(); //thematics per op 1500 gatherCBs[result.hashKey] = result; 1501 atLeastOne = true; 1502 } 1503 if ($("#modePerFund")[0].checked) { 1504 var result = searchMode4(); //thematics per fund 1505 gatherCBs[result.hashKey] = result; 1506 atLeastOne = true; 1507 } 1508 break; 1509 case 5: 1510 if ($("#modePerOP")[0].checked) { 1511 var result = searchMode5(); //region per op 1512 gatherCBs[result.hashKey] = result; 1513 atLeastOne = true; 1514 } 1515 if ($("#modePerFund")[0].checked) { 1516 var result = searchMode6(); //region per fund 1517 gatherCBs[result.hashKey] = result; 1518 atLeastOne = true; 1519 } 1520 if ($("#modePerThematic")[0].checked) { 1521 var result = searchMode7(); //region per thematic 1522 gatherCBs[result.hashKey] = result; 1523 atLeastOne = true; 1524 } 1525 break; 1526 case 7: 1527 if ($("#modePerRegion")[0].checked) { 1528 var result = searchMode8(); //op per region 1529 gatherCBs[result.hashKey] = result; 1530 atLeastOne = true; 1531 } 1532 if ($("#modePerFund")[0].checked) { 1533 var result = searchMode9(); //op per fund 1534 gatherCBs[result.hashKey] = result; 1535 atLeastOne = true; 1536 } 1537 if ($("#modePerThematic")[0].checked) { 1538 var result = searchMode10(); //op per thematic 1539 gatherCBs[result.hashKey] = result; 1540 atLeastOne = true; 1541 } 1542 break; 1543 case 8: 1544 if ($("#modePerRegion")[0].checked) { 1545 var result = searchMode11(); //fund per region 1546 gatherCBs[result.hashKey] = result; 1547 atLeastOne = true; 1548 } 1549 if ($("#modePerOP")[0].checked) { 1550 var result = searchMode12(); //fund per op 1551 gatherCBs[result.hashKey] = result; 1552 atLeastOne = true; 1553 } 1554 if ($("#modePerThematic")[0].checked) { 1555 var result = searchMode13(); //fund per thematic 1556 gatherCBs[result.hashKey] = result; 1557 atLeastOne = true; 1558 } 1559 break; 1560 } 1561 if (!atLeastOne) { 1562 alert(og.selectSomething); 1563 jQuery("#section3").hide(); 1564 } 1565 var gatherDefs = []; 1566 jQuery.each(gatherCBs, function (i, obj) { 1567 gatherDefs.push(obj.def); 1568 });
1569 1570 jQuery.when.all(gatherDefs).then(function (x) { 1571 /* This all merry go-round has been done in order to: 1572 a) Retrieve async the data in no particular order 1573 b) Render the charts in particular order 1574 The wtfness of this code is partly because of weeks in-between requirements. 1575 */ 1576 //First "per OP" charts: 1577 if (typeof gatherCBs['searchMode3'] !== 'undefined') { 1578 gatherCBs['searchMode3'].cb(); 1579 } 1580 if (typeof gatherCBs['searchMode5'] !== 'undefined') { 1581 gatherCBs['searchMode5'].cb(); 1582 } 1583 if (typeof gatherCBs['searchMode12'] !== 'undefined') { 1584 gatherCBs['searchMode12'].cb(); 1585 } 1586 1587 //Second "per Thematic" charts: 1588 if (typeof gatherCBs['searchMode7'] !== 'undefined') { 1589 gatherCBs['searchMode7'].cb(); 1590 } 1591 if (typeof gatherCBs['searchMode10'] !== 'undefined') { 1592 gatherCBs['searchMode10'].cb(); 1593 } 1594 if (typeof gatherCBs['searchMode13'] !== 'undefined') { 1595 gatherCBs['searchMode13'].cb(); 1596 } 1597 1598 //Third "per Fund" charts: 1599 if (typeof gatherCBs['searchMode4'] !== 'undefined') { 1600 gatherCBs['searchMode4'].cb(); 1601 } 1602 if (typeof gatherCBs['searchMode6'] !== 'undefined') { 1603 gatherCBs['searchMode6'].cb(); 1604 } 1605 if (typeof gatherCBs['searchMode9'] !== 'undefined') { 1606 gatherCBs['searchMode9'].cb(); 1607 } 1608 1609 //Finally, "per Region" charts: 1610 if (typeof gatherCBs['searchMode1'] !== 'undefined') { 1611 gatherCBs['searchMode1'].cb(); 1612 } 1613 if (typeof gatherCBs['searchMode2'] !== 'undefined') { 1614 gatherCBs['searchMode2'].cb(); 1615 } 1616 if (typeof gatherCBs['searchMode8'] !== 'undefined') { 1617 gatherCBs['searchMode8'].cb(); 1618 } 1619 if (typeof gatherCBs['searchMode11'] !== 'undefined') { 1620 gatherCBs['searchMode11'].cb(); 1621 } 1622 1623 var focusedDiv = $($(".chartContainer")[0]).find(">div")[0]; 1624 focusedDiv.focus(); 1625 }); 1626} 1627 1628function mergeArrays(a, b) { 1629 var hash = {}, i; 1630 for (i = 0; i < a.length; i++) { 1631 hash[a[i]] = true; 1632 } 1633 for (i = 0; i < b.length; i++) { 1634 hash[b[i]] = true; 1635 } 1636 return Object.keys(hash); 1637} 1638 1639function getDistinctCategories(data) { 1640 var retvalue = []; 1641 for (var i = 0; i < data.length; i++) { 1642 retvalue.push(data[i].name); 1643 } 1644 return retvalue; 1645} 1646 1647function deMorphGroupedDataSeries(series, chartType) { 1648 /* 1649 To display a chart with groups and categories, we need: 1650 - the series data to be in the same order as the categories 1651 - the series data to be simple values (not objects) 1652 Input: multiple series, with data like: 1653 { 1654 name: 'XXXX', //same as category name 1655 data: [ value ] 1656 } 1657 Output: the expected structure 1658 */ 1659 var retvalue = []; 1660 if (chartType == 'pie') { 1661 for (var i = 0; i < series.length; i++) { 1662 id = series[i].name; 1663 switch (series[i].name) { 1664 case "commitments": 1665 pieInner = '90%'; 1666 pieOuter = '100%'; 1667 depth = 25; 1668 linkedTo = ''; 1669 showInLegend = false; 1670 break; 1671 case "budget": 1672 pieInner = '75%'; 1673 pieOuter = '85%'; 1674 depth = 25; 1675 linkedTo = ''; 1676 showInLegend = true; 1677 break; 1678 case "contracts": 1679 pieInner = '50%'; 1680 pieOuter = '60%'; 1681 depth = 25; 1682 linkedTo = ':previous'; 1683 showInLegend = false; 1684 break; 1685 case "payments": 1686 pieInner = 0; 1687 pieOuter = '25%'; 1688 depth = 25; 1689 linkedTo = ':previous'; 1690 showInLegend = false; 1691 break; 1692 default: 1693 //showInLegend=true; 1694 } 1695 var data = []; 1696 /* 1697 var sortedData = series[i].data[0].data.sort(function (a, b) { 1698 return a.name.localeCompare(b.name); 1699 }); 1700 */ 1701 var sortedData = series[i].data[0].data; 1702 for (var j = 0; j < sortedData.length; j++) { 1703 data.push(sortedData[j]); 1704 } 1705 retvalue.push({ 1706 name: og[series[i].name], 1707 data: data, 1708 innerSize: pieInner,
1709 size: pieOuter, 1710 depth: depth, 1711 id: series[i].name, 1712 linkedTo: linkedTo, 1713 showInLegend: showInLegend 1714 }); 1715 } 1716 1717 } else { 1718 for (var i = 0; i < series.length; i++) { 1719 var data = []; 1720 /* 1721 var sortedData = series[i].data.sort(function (a, b) { 1722 return a.name.localeCompare(b.name); 1723 }); 1724 */ 1725 var sortedData = series[i].data; 1726 for (var j = 0; j < sortedData.length; j++) { 1727 data.push(sortedData[j].data[0]); 1728 } 1729 retvalue.push({ 1730 name: og[series[i].name], 1731 data: data 1732 }); 1733 } 1734 } 1735 return retvalue; 1736} 1737 1738function getSeriesTitle(area, chartMode) { 1739 var areaTitle = area.key; 1740 switch (chartMode) { 1741 case 'searchMode1': 1742 areaTitle = getAreaTitle(area.key); 1743 break; 1744 case 'searchMode3': 1745 areaTitle = getEPTitle(area.key); 1746 break; 1747 case 'searchMode4': 1748 areaTitle = getFundingTitle(area.key); 1749 break; 1750 case 'searchMode5': 1751 areaTitle = getEPTitle(area.key); 1752 break; 1753 case 'searchMode6': 1754 areaTitle = getFundingTitle(area.key); 1755 break; 1756 case 'searchMode7': 1757 areaTitle = getThematicTitle(area.key); 1758 break; 1759 case 'searchMode8': 1760 areaTitle = getAreaTitle(area.key); 1761 break; 1762 case 'searchMode9': 1763 areaTitle = getFundingTitle(area.key); 1764 break; 1765 case 'searchMode10': 1766 areaTitle = getThematicTitle(area.key); 1767 break; 1768 case 'searchMode11': 1769 areaTitle = getAreaTitle(area.key); 1770 break; 1771 case 'searchMode12': 1772 areaTitle = getEPTitle(area.key); 1773 break; 1774 case 'searchMode13': 1775 areaTitle = getThematicTitle(area.key); 1776 break; 1777 } 1778 return areaTitle; 1779} 1780 1781function getAdditionalTitle(mode) { 1782 var additionalTitle = ""; 1783 switch (mode) { 1784 case 'searchMode1': 1785 additionalTitle = og['perRegion']; 1786 break; 1787 case 'searchMode3': 1788 additionalTitle = og['perOP']; 1789 break; 1790 case 'searchMode4': 1791 additionalTitle = og['perFund']; 1792 break; 1793 case 'searchMode5': 1794 additionalTitle = og['perOP']; 1795 break; 1796 case 'searchMode6': 1797 additionalTitle = og['perFund']; 1798 break; 1799 case 'searchMode7': 1800 additionalTitle = og['perThematic']; 1801 break; 1802 case 'searchMode8': 1803 additionalTitle = og['perRegion']; 1804 break; 1805 case 'searchMode9': 1806 additionalTitle = og['perFund']; 1807 break; 1808 case 'searchMode10': 1809 additionalTitle = og['perThematic']; 1810 break; 1811 case 'searchMode11': 1812 additionalTitle = og['perRegion']; 1813 break; 1814 case 'searchMode12': 1815 additionalTitle = og['perOP']; 1816 break; 1817 case 'searchMode13': 1818 additionalTitle = og['perThematic']; 1819 break; 1820 } 1821 return additionalTitle; 1822} 1823 1824function getMorphedChartData(ajaxData, chartMode, chartType, field, isGroup) { 1825 1826 var seriesData = []; 1827 var actualData = []; 1828 var dataMax = 0; 1829 jQuery.each(ajaxData.areas, function (i, area) { 1830 dataMax += area[field]; 1831 1832 }); 1833 for (var i = 0; i < ajaxData.areas.length; i++) { 1834 var area = ajaxData.areas[i]; 1835 var seriesTitle = getSeriesTitle(area, chartMode); 1836 if (chartType == 'pie') { 1837 if (area[field]) { //skip zero values 1838 var color = "#000"; 1839 switch (area.key) { 1840 case "1": //erdf 1841 color = "#006a6e"; 1842 break; 1843 case "2": //esf 1844 color = "#a654c6"; 1845 break; 1846 case "4": //maritime 1847 color = "#497bef"; 1848 break; 1849 case "6": //cohesion 1850 color = "#da710f"; 1851 break; 1852 case "7": //youth 1853 color = "#ed4985"; 1854 break; 1855 } 1856 actualData.push( 1857 { color: color, code: area.key, name: seriesTitle, y: area[field], percentage: Math.round(((100 * area[field]) / dataMax) * 100) / 100 } 1858 ); 1859 } 1860 } else { 1861 if (area[field] > -1) { 1862 var cvalues; 1863 if (isGroup) { 1864 cvalues = { 1865 code: area.key, 1866 name: seriesTitle, 1867 data: [area[field]] 1868 }; 1869 } else { 1870 cvalues = { 1871 code: area.key, 1872 name: seriesTitle, 1873 data: [{ name: seriesTitle, y: area[field] }] 1874 } 1875 } 1876 seriesData.push(cvalues); 1877 } 1878 1879 } 1880 } 1881 jQuery.each(ajaxData.areas, function (i, area) { 1882 1883 1884 });
1885 1886 if (chartType == 'pie') { 1887 seriesData = [ 1888 { 1889 name: ajaxData.title, 1890 type: chartType, 1891 data: actualData 1892 } 1893 ]; 1894 }else{ 1895 //console.log('before before',seriesData); 1896 1897 seriesData = seriesData.sort(function(a,b){ 1898 return (parseInt((a.code=="-"?"9999":a.code)) > parseInt((b.code=="-"?"9999":b.code))); 1899 }); 1900 //console.log('after after',seriesData); 1901 } 1902 1903 return seriesData; 1904} 1905 1906function renderSingleChart(chartType, key, height, options3d, seriesData, categories, headerTitle) { 1907 1908 var pieInner; 1909 var pieOuter; 1910 var className = 'chart-' + chartType + (categories ? '-grouped' : ''); 1911 1912 switch (true) { 1913 case (!categories): 1914 default: 1915 pieInner = 0; 1916 pieOuter = '100%'; 1917 break; 1918 1919 } 1920 var smallScreen = (window.innerWidth<1400); 1921 var absLeft = 0; //((smallScreen&&(className == 'chart-pie-grouped'))?jQuery("#chart_" + key).width()/2:0); 1922 var absTop=0; 1923 var absMargin=0; 1924 if (false){//(className == 'chart-pie-grouped'){ 1925 if (smallScreen){ 1926 absLeft=(jQuery("#chart_" + key).width()/2)+"px"; 1927 absTop="200px"; 1928 }else{ 1929 absLeft=0; 1930 absTop=0; 1931 } 1932 absMargin=10; 1933 }else{ 1934 if (smallScreen){ 1935 //absMargin=70; 1936 }else{ 1937 1938 } 1939 absMargin=160; 1940 absLeft=0; 1941 absTop="-80px"; 1942 } 1943 1944 console.log(className,smallScreen,absLeft,absMargin); 1945 var x = new Highcharts.Chart({ 1946 chart: { 1947 renderTo: "chart_" + key, 1948 defaultSeriesType: chartType, 1949 spacing: [10, 0, 0, 0], 1950 height: height, 1951 options3d: options3d, 1952 marginLeft: absMargin, 1953 className: className, 1954 }, 1955 accessibility: { 1956 keyboardNavigation: { 1957 mode: "serialize" 1958 } 1959 }, 1960 title: { 1961 text: headerTitle, 1962 useHTML: true, 1963 }, 1964 subtitle: { 1965 enabled: false, 1966 }, 1967 labels: { 1968 items: [ 1969 { 1970 html: (className == 'chart-pie-grouped')?"":'<div class="chartSuperLabel">'+og['tips'] + (className == 'chart-pie-grouped' ? ('<br />' + og['farOuterCircle'] + '<br />'+og['outerCircle'] + '<br />' + og['innerCircle'] + '<br />' + og['innerMostCircle']) : ''+'</div>') 1971 } 1972 ], 1973 style: { 1974 color: "#333333", 1975 position: "absolute", 1976 left: absLeft, 1977 //right: absLeft, 1978 //left: (className == 'chart-pie-grouped' ? "-60px" : "-160px"), 1979 top: absTop, //(className == 'chart-pie-grouped'?(smallScreen?200:0):"-80px"), 1980 textAlign: "center" 1981 } 1982 }, 1983 plotOptions: { 1984 pie: { 1985 dataLabels: { 1986 enabled: false 1987 }, 1988 innerSize: pieInner, 1989 size: pieOuter, 1990 depth: 35, 1991 center: smallScreen?["25%","50%"]:[null,null], 1992 showInLegend: true 1993 }, 1994 column: { 1995 depth: 50, 1996 minPointLength: 1 1997 }, 1998 bar: { 1999 depth: 50, 2000 minPointLength: 1 2001 }, 2002 series: { 2003 //groupPadding: 0.025, 2004 maxPointWidth: 40, //not current 2005 //pointWidth: 25 2006 } 2007 }, 2008 xAxis: { 2009 categories: categories, 2010 title: { 2011 text: "" 2012 }, 2013 opposite: false, 2014 labels: { 2015 useHTML: true, 2016 reserveSpace: (jQuery(window).width() > 480) ? true : false, 2017 //rotation: (chartType=='bar')?0:-45, 2018 //autoRotationLimit: (jQuery(window).width()>480)?80:10, 2019 align: 'center', 2020 //align: (chartType=='bar')?(jQuery(window).width()>480?'right':'center'):'center', //highcharts bug: https://github.com/highcharts/highcharts/issues/5286 2021 enabled: !!categories, 2022 staggerLines: (chartType == 'bar') ? (jQuery(window).width() > 480 ? 2 : 1) : 1, 2023 style: { 2024 "color": "#666666",
2025 "cursor": "default", 2026 "fontSize": jQuery(window).width() > 480 ? "11px" : "8px", 2027 "fontWeight": "bold", 2028 "textAlign": "center", 2029 "whiteSpace": (chartType == 'bar') ? "normal" : "normal", 2030 "textOverflow": (chartType == 'bar') ? "ellipsis" : "none", 2031 "width": (jQuery(window).width() > 480) ? "150px" : "30px" 2032 }, 2033 y: (chartType == 'bar') ? 0 : 30, 2034 x: (chartType == 'bar') ? ((jQuery(window).width() > 480) ? 5 : -50) : 0, 2035 }, 2036 maxPadding: 0.1, 2037 minPadding: 0.1, 2038 }, 2039 yAxis: { 2040 title: { 2041 text: (window.english ? "in m. Euros" : "Ïε εκαÏ. ÎÏ ÏÏ"), 2042 align: 'low', 2043 position3d: 'chart' 2044 }, 2045 labels: { 2046 2047 formatter: function () { 2048 var m = this.value; 2049 return Math.round(m * 100) / 100 / 1000000; 2050 }, 2051 skew3d: true, 2052 style: { 2053 "fontSize": jQuery(window).width() > 480 ? "13px" : "8px" 2054 } 2055 }, 2056 }, 2057 tooltip: { 2058 formatter: function () { 2059 var nStr = this.y; 2060 var newY; 2061 x = nStr.toString().split('.'); 2062 x1 = x[0]; 2063 x2 = x.length > 1 ? '.' + x[1] : ''; 2064 var rgx = /(\d+)(\d{3})/; 2065 while (rgx.test(x1)) { 2066 x1 = x1.replace(rgx, '$1' + '.' + '$2'); 2067 } 2068 x2 = x2.replace(".", ","); 2069 newY = x1 + x2; 2070 newY = newY.replace(/\./g, og.thousandsSeparator); 2071 if (chartType == 'pie') { 2072 return this.point.name + '. ' + this.point.series.name+': ' + newY + " â¬"; 2073 } else { 2074 var myXValue = (this.point.category) ? this.point.category + " - <b>" + this.point.series.name : this.point.name; 2075 return myXValue + ': ' + newY + " â¬</b>"; 2076 } 2077 2078 } 2079 }, 2080 legend: { 2081 layout: (className == 'chart-pie-grouped'?'vertical':'horizontal'), 2082 align: (className == 'chart-pie-grouped'?'right':'center'), 2083 verticalAlign: 'top', 2084 x: 0, 2085 y: (className == 'chart-pie-grouped'?0:20), 2086 floating: false, 2087 borderWidth: 1, 2088 backgroundColor: '#FFFFFF', 2089 shadow: true 2090 }, 2091 credits: { 2092 enabled: false 2093 }, 2094 series: seriesData 2095 }); 2096 if (className == 'chart-pie-grouped'){ 2097 var htmlLabels = '<div class="chartSuperLabel">'+og['tips'] + (className == 'chart-pie-grouped' ? ('<br />' + og['farOuterCircle'] + '<br />'+og['outerCircle'] + '<br />' + og['innerCircle'] + '<br />' + og['innerMostCircle']) : ''+'</div>'); 2098 jQuery("#chart_" + key).closest('.chartContainer').append(htmlLabels); 2099 } 2100 x.reflow(); 2101 2102 return x; 2103} 2104 2105function renderCharts(data, chartType, additionalKey) { 2106 if (!chartType) { 2107 chartType = 'column'; 2108 } 2109 tabIndex = 1; 2110 jQuery.each(data, function (key, record) { 2111 var theme = ""; 2112 switch (key) { 2113 case "stoxos_01": 2114 case "stoxos_02": 2115 case "stoxos_03": 2116 case "stoxos_04": 2117 theme = "theme1"; 2118 break; 2119 case "stoxos_05": 2120 case "stoxos_06": 2121 case "stoxos_07": 2122 theme = "theme2"; 2123 break; 2124 case "stoxos_08": 2125 case "stoxos_09": 2126 case "stoxos_10": 2127 case "stoxos_11": 2128 theme = "theme3"; 2129 break; 2130 default: 2131 theme = "theme4"; 2132 } 2133 2134 var colClass = ""; 2135 var additionalTitle = getAdditionalTitle(additionalKey); 2136 2137 var threeDAlpha; 2138 var threeDBeta; 2139 2140 var separateCharts = jQuery("#separateChartsMode")[0].checked; 2141 if (separateCharts) { 2142 switch (chartType) { 2143 case 'bar': 2144 threeDAlpha = 0;
2145 threeDBeta = 15; 2146 break; 2147 case 'column': 2148 threeDAlpha = 15; 2149 threeDBeta = 0; 2150 break; 2151 case 'pie': 2152 threeDAlpha = 45; 2153 threeDBeta = 0; 2154 break; 2155 } 2156 var options3d = { 2157 enabled: true, 2158 alpha: threeDAlpha, 2159 beta: threeDBeta 2160 }; 2161 for (var k = 0; k < 4; k++) { 2162 var field = ''; 2163 switch (k) { 2164 case 0: 2165 field = 'budget'; 2166 break; 2167 case 1: 2168 field = 'contracts'; 2169 break; 2170 case 2: 2171 field = 'payments'; 2172 break; 2173 case 3: 2174 field = 'commitments'; 2175 break; 2176 } 2177 var seriesData = getMorphedChartData(record, additionalKey, chartType, field); 2178 var compositeKey = additionalKey + '_' + key + '_' + field; 2179 var headerTitle = record.title + additionalTitle; 2180 if (moduleMode == 5) { 2181 headerTitle = og['labelRegion'] + headerTitle; 2182 } 2183 switch (field) { 2184 case 'budget': 2185 headerTitle += " - <span class='fieldType'>" + og[field] + "</span>"; 2186 break; 2187 case 'contracts': 2188 headerTitle += " - <span class='fieldType'>" + og[field] + "</span>"; 2189 break; 2190 case 'payments': 2191 headerTitle += " - <span class='fieldType'>" + og[field] + "</span>"; 2192 break; 2193 case 'commitments': 2194 headerTitle += " - <span class='fieldType'>" + og[field] + "</span>"; 2195 break; 2196 } 2197 var div = "<div class='" + colClass + " " + theme + "'><div class='chartContainer'><h3>" + headerTitle + "</h3><div id='chart_" + compositeKey + "' ></div></div></div>"; 2198 jQuery("#results").append(div); 2199 var height; 2200 var multiplier = (chartType == 'column') ? 40 : 50; 2201 if (chartType == 'pie') { 2202 height = 400; 2203 } else { 2204 height = Math.max(Math.min(600, (multiplier) * seriesData.length), 150); 2205 } 2206 renderSingleChart(chartType, compositeKey, height, options3d, seriesData, null, headerTitle); 2207 } 2208 } else { 2209 switch (chartType) { 2210 case 'bar': 2211 threeDAlpha = 0; 2212 threeDBeta = 0; 2213 break; 2214 case 'column': 2215 threeDAlpha = 15; 2216 threeDBeta = 0; 2217 break; 2218 case 'pie': 2219 threeDAlpha = 45; 2220 threeDBeta = 0; 2221 break; 2222 } 2223 var options3d = { 2224 enabled: (chartType != 'pie'), 2225 alpha: threeDAlpha, 2226 beta: threeDBeta 2227 }; 2228 var allData = []; 2229 var categories = []; 2230 2231 var limit; 2232 switch (additionalKey) { //reverse limit change 2233 //case 'searchMode1': //Thematics per region 2234 case 'searchMode3': //Thematics per o.p. 2235 case 'searchMode4': //Thematics per fund 2236 case 'searchMode9': //OP per fund 2237 case 'searchMode10': //OP per thematic 2238 case 'searchMode12': //fund per op 2239 case 'searchMode13': //fund per thematic 2240 limit = 0; //for these cases (where we have data), enable the 4th dimension 2241 Highcharts.getOptions().colors = Highcharts.map(initialColors2, function (color) { 2242 return { 2243 radialGradient: { 2244 cx: 0.5, 2245 cy: 0.3, 2246 r: 0.7 2247 }, 2248 stops: [ 2249 [0, color], 2250 [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken 2251 ] 2252 }; 2253 }); 2254 break; 2255 default: 2256 Highcharts.getOptions().colors = Highcharts.map(initialColors1, function (color) { 2257 return { 2258 radialGradient: { 2259 cx: 0.5, 2260 cy: 0.3, 2261 r: 0.7 2262 }, 2263 stops: [ 2264 [0, color], 2265 [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken 2266 ] 2267 }; 2268 }); 2269 limit = 1; 2270 } 2271 for (var k = limit; k < 4; k++) { 2272 var field = ''; 2273 switch (k) { 2274 case 0: 2275 field = 'commitments'; 2276 break; 2277 case 1: 2278 field = 'budget'; 2279 2280 break; 2281 case 2: 2282 field = 'contracts'; 2283 2284 break; 2285 case 3: 2286 field = 'payments'; 2287 break; 2288 } 2289 //console.log('record before',record); 2290 var data = getMorphedChartData(record, additionalKey, chartType, field, true); 2291 allData.push({ 2292 name: field, 2293 data: data 2294 }); 2295 // console.log('data after',allData); 2296 categories = mergeArrays(categories, getDistinctCategories(data)); 2297 } 2298 2299 //categories.sort(function (a, b) { 2300 // return a.localeCompare(b) 2301 //}); 2302 2303 allData = deMorphGroupedDataSeries(allData, chartType); 2304 2305 var compositeKey = additionalKey + '_' + key; 2306 var headerTitle = record.title + additionalTitle; 2307 if (moduleMode == 5) { 2308 headerTitle = og['labelRegion'] + headerTitle; 2309 } 2310 if (additionalKey == 'searchMode8') { //OP per region 2311 headerTitle = og['geoAnalysis']; 2312 } 2313 var div = "<div class='" + colClass + " " + theme + "'><div class='chartContainer'><h3>" + headerTitle + "</h3><div id='chart_" + compositeKey + "' tabindex='" + (3 + tabIndex) + "'></div></div></div>"; 2314 jQuery("#results").append(div); 2315 var height; 2316 height = 400; 2317 console.log('chartType: ' + chartType + ', key: ' + additionalKey + ', allData: ' + allData.length + ', categories: ' + categories.length); 2318 2319 var multiplier = 400; 2320 if (chartType == 'pie') { 2321 height = 400; 2322 } else { 2323 if (categories.length > allData.length) { 2324 height = Math.max(Math.min(600, (multiplier / 5) * categories.length), 150); 2325 } else { 2326 height = Math.max(Math.min(600, multiplier * (allData.length / 3)), 150); 2327 } 2328 2329 } 2330 2331 2332 switch (additionalKey) { 2333 case 'searchMode1': //Thematic per Region, chartType: bar 2334 height = 200 + (60 * categories.length); 2335 break;
2336 case 'searchMode3': //Thematic per OP, chartType: bar 2337 height = 200 + (60 * categories.length); 2338 break; 2339 case 'searchMode4': //Thematic per Fund, chartType: pie 2340 height = 350 + (60 * categories.length); 2341 break; 2342 2343 case 'searchMode5': //Region per OP, chartType: bar 2344 height = 200 + (60 * categories.length); 2345 break; 2346 case 'searchMode6': //Region per Fund, chartType: pie 2347 height = 350 + (60 * categories.length); 2348 break; 2349 case 'searchMode7': //Region per thematic, chartType: bar 2350 height = 200 + (60 * categories.length); 2351 break; 2352 2353 case 'searchMode8': //OP per region, chartType: bar 2354 height = 200 + (60 * categories.length); 2355 break; 2356 case 'searchMode9': //OP per fund, chartType: pie 2357 height = 350 + (60 * categories.length); 2358 break; 2359 case 'searchMode10': //OP per thematic, chartType: bar 2360 height = 200 + (60 * categories.length); 2361 break; 2362 2363 case 'searchMode11': //Fund per OP, chartType: bar 2364 height = 200 + (60 * categories.length); 2365 break; 2366 case 'searchMode12': //Fund per Thematic, chartType: bar 2367 height = 200 + (60 * categories.length); 2368 break; 2369 case 'searchMode13': //Fund per Region, chartType: bar 2370 height = 200 + (60 * categories.length); 2371 break; 2372 2373 2374 } 2375 var chart = renderSingleChart(chartType, compositeKey, height, options3d, allData, categories, headerTitle); 2376 if (chartType == 'pie') { 2377 linkChartSeries(chart); 2378 } 2379 } 2380 }); 2381 jQuery(document).scrollTop(jQuery("#section3").offset().top); 2382 jQuery("svg title").remove(); 2383} 2384function getModeSelectTitle() { 2385 var mode = jQuery("#modeInp").val(); 2386 if (mode) { 2387 moduleMode = parseFloat(mode.replace("mode", "")); 2388 } 2389 var title = ""; 2390 switch (moduleMode) { 2391 case 1: 2392 title = og.menuItemThematic; 2393 break; 2394 case 5: 2395 title = og.menuItemRegion; 2396 break; 2397 case 7: 2398 title = og.menuItemOperationalProgramme; 2399 break; 2400 case 8: 2401 title = og.menuItemFund; 2402 break; 2403 } 2404 2405 return title; 2406} 2407function initControls(mode) { 2408 digiContainer = jQuery("#map")[0]; 2409 loadThematics(); 2410 jQuery("#mapSelection").show(); 2411 jQuery("#epSelection").show(); 2412 loadEP(); 2413 jQuery("#fundingSelection").show(); 2414 loadFunding(); 2415 2416 switch (mode) { 2417 case 1: 2418 jQuery("#thematicContainer").show(); 2419 jQuery("#modePerRegionContainer").show(); 2420 jQuery("#modePerFundContainer").show(); 2421 jQuery("#modePerOPContainer").show(); 2422 //jQuery("#modePerThematic").show(); 2423 jQuery("#criteriaSelection .moduleHelp").attr("href", "/Portals/0/AVMap/siteHelp/2.2.1.pdf"); 2424 break; 2425 case 5: 2426 jQuery("#mapContainer").show(); 2427 //jQuery("#modePerRegionContainer").show(); 2428 jQuery("#modePerFundContainer").show(); 2429 jQuery("#modePerOPContainer").show(); 2430 jQuery("#modePerThematicContainer").show(); 2431 jQuery("#criteriaSelection .moduleHelp").attr("href", "/Portals/0/AVMap/siteHelp/2.2.2.pdf"); 2432 initMap(); 2433 addKML(); 2434 break; 2435 case 7: 2436 jQuery("#epContainer").show(); 2437 jQuery("#modePerRegionContainer").show(); 2438 jQuery("#modePerFundContainer").show(); 2439 //jQuery("#modePerOPContainer").show(); 2440 jQuery("#modePerThematicContainer").show(); 2441 jQuery("#criteriaSelection .moduleHelp").attr("href", "/Portals/0/AVMap/siteHelp/2.2.3.pdf"); 2442 break; 2443 case 8: 2444 jQuery("#fundingContainer").show(); 2445 jQuery("#modePerRegionContainer").show(); 2446 //jQuery("#modePerFundContainer").show(); 2447 jQuery("#modePerOPContainer").show(); 2448 jQuery("#modePerThematicContainer").show(); 2449 jQuery("#criteriaSelection .moduleHelp").attr("href", "/Portals/0/AVMap/siteHelp/2.2.4.pdf"); 2450 break; 2451 2452 } 2453} 2454 2455jQuery(document).ready(function ($) { 2456 var mode = jQuery("#modeInp").val(); 2457 if (mode) { 2458 moduleMode = parseFloat(mode.replace("mode", "")); 2459 }
2460 initControls(moduleMode); 2461 jQuery.when( 2462 jQuery.get("/GetData.ashx?queryType=lists&queryArgument=regions") 2463 ).done(function (regions) { 2464 var regions = regions.items; 2465 jQuery.each(regions, function (i, region) { 2466 static_perifereies.push({ 2467 id: region.code, 2468 value: window.english ? region.title_en : region.title 2469 }); 2470 }); 2471 }); 2472 jQuery("#buttonContainer .trans").html(avtranslate.render({ text: og.buttonSearch })); 2473 2474 jQuery("#mapSelection").html(itemSelectionTmpl.render({ code: "-", title: (moduleMode == 2) ? og.allPrefectures : og.allRegions })); 2475 jQuery("#thematicSelection").html(itemSelectionTmpl.render({ code: "-", title: og.allThematics })); 2476 jQuery("#fundingSelection").html(itemSelectionTmpl.render({ code: "-", title: og.allFunds })); 2477 jQuery("#epSelection").html(itemSelectionTmpl.render({ code: "-", title: og.allEP })); 2478 jQuery("#searchCriteriaExplain .trans").html(avtranslate.render({ text: og.criteriaRecap })); 2479 2480 jQuery("#thematicContainer").on("keypress click", ".thematicLink", toggleThematic); 2481 jQuery("#fundingContainer").on("keypress click", ".fundingLink", toggleFund); 2482 jQuery("#epContainer").on("keypress click", ".epLink", toggleEP); 2483 jQuery("#buttonContainer").on("keypress click", "#searchBtn", performSearch); 2484 2485 jQuery("#criteriaSelection .trans").html(avtranslate.render({ text: og.section1 })); 2486 var modeSelect = getModeSelectTitle(); 2487 jQuery(".selectedMenuItem").html(avtranslate.render({ text: modeSelect })); 2488 jQuery("#criteriaRecount .trans").html(avtranslate.render({ text: og.section2 })); 2489 jQuery("#criteriaResults .trans").html(avtranslate.render({ text: og.section3 })); 2490 2491 jQuery("#chartsAdvancedModeContainer .trans").html(avtranslate.render({ text: og.btnAdvanced })); 2492 2493 jQuery("#chartsModeContainer .trans").html(avtranslate.render({ text: og.separateCharts })); 2494 jQuery("#modePerRegionContainer .trans").html(avtranslate.render({ text: og.btnPerRegion })); 2495 jQuery("#modePerFundContainer .trans").html(avtranslate.render({ text: og.btnPerFund })); 2496 jQuery("#modePerOPContainer .trans").html(avtranslate.render({ text: og.btnPerOP })); 2497 jQuery("#modePerThematicContainer .trans").html(avtranslate.render({ text: og.btnPerThematic })); 2498 2499 2500 $('#chartsAdvancedMode').bootstrapToggle({ 2501 on: og['btnOn'], 2502 off: og['btnOff'], 2503 size: 'mini', 2504 onstyle: 'success', 2505 offstyle: 'danger' 2506 }).change(function () { 2507 jQuery("#advancedTogglers").toggle(); 2508 }); 2509 2510 $('#separateChartsMode').bootstrapToggle({ 2511 on: og['btnOn'], 2512 off: og['btnOff'], 2513 size: 'mini', 2514 onstyle: 'success', 2515 offstyle: 'danger' 2516 }).change(function () { 2517 if (jQuery("#thematicContainer .thematicLink.selected").length > 0) { 2518 getThematics(); 2519 performSearch(); 2520 } 2521 }); 2522 2523 $('#modePerRegion').bootstrapToggle({ 2524 on: og['btnOn'], 2525 off: og['btnOff'], 2526 size: 'mini', 2527 onstyle: 'success', 2528 offstyle: 'danger' 2529 }); 2530 $('#modePerFund').bootstrapToggle({ 2531 on: og['btnOn'], 2532 off: og['btnOff'], 2533 size: 'mini', 2534 onstyle: 'success', 2535 offstyle: 'danger' 2536 }); 2537 $('#modePerOP').bootstrapToggle({ 2538 on: og['btnOn'], 2539 off: og['btnOff'], 2540 size: 'mini', 2541 onstyle: 'success', 2542 offstyle: 'danger' 2543 }); 2544 $('#modePerThematic').bootstrapToggle({ 2545 on: og['btnOn'], 2546 off: og['btnOff'], 2547 size: 'mini', 2548 onstyle: 'success', 2549 offstyle: 'danger' 2550 }); 2551});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.