GDDN services

by Alcarin

HTML

<div style="display:none;">
  <p><span>ASI_FUC_GSS_A</span><span>ASI_GDDR_RTR_01</span><span>GigabitEthernet0/0</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>ASI_GDDR_RTR_01</span><span>Serial0/0/0</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>ASI_GDDR_SDM_01</span><span>-</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>FUC_GDDR_SDM_22</span><span>-</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>FUC_GDDR_RTR_03</span><span>Serial0/2/1</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>FUC_GDDR_RTR_03</span><span>GigabitEthernet0/1</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>FUC_GDDR_SWT_13</span><span>GigabitEthernet1/29</span></p>
  <p><span>ASI_FUC_GSS_A</span><span>FUC_GDDR_SWT_13</span><span>GigabitEthernet1/11</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>ASI_GDDR_RTR_11</span><span>GigabitEthernet0/0</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>ASI_GDDR_RTR_11</span><span>Serial0/0/0</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>ASI_GDDR_SDM_11</span><span>-</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>OBE_ERU2_SDM_22</span><span>-</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>OBE_ERU2_RTR_03</span><span>Serial0/2/1</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>OBE_ERU2_RTR_03</span><span>GigabitEthernet0/1</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>OBE_ERU2_SWT_13</span><span>GigabitEthernet1/29</span></p>
  <p><span>ASI_OBE_GSS_B</span><span>OBE_ERU2_SWT_13</span><span>GigabitEthernet1/11</span></p>
  <p><span>ASI_FUC_GSS_B</span><span>ASI_GDDR_RTR_11</span><span>GigabitEthernet0/0</span></p>
  <p><span>ASI_FUC_GSS_B</span><span>ASI_GDDR_RTR_11</span><span>Serial0/0/0</span></p>
  <p><span>ASI_FUC_GSS_B</span><span>ASI_GDDR_SDM_11</span><span>-</span></p>
  <p><span>ASI_FUC_GSS_B</span><span>OBE_ERU2_SDM_22</span><span>-</span></p>
  <p><span>ASI_FUC_GSS_B</span><span>OBE_ERU2_RTR_03</span><span>Serial0/2/1</span></p>
  <p><span>ASI_FUC_GSS_B</span><span>OBE_ERU2_RTR_03</span><span>GigabitEthernet0/1</span></p>
 ...

JavaScript

var rete = {};
$("div p").each(function() {
  //console.log($("span:eq(1)",this).text());
  if (typeof rete[$("span:eq(1)", this).text()] == "undefined") {
    rete[$("span:eq(1)", this).text()] = {};
  }
  if (typeof rete[$("span:eq(1)", this).text()][$("span:eq(2)", this).text()] == "undefined") {
    rete[$("span:eq(1)", this).text()][$("span:eq(2)", this).text()] = []
  }
  rete[$("span:eq(1)", this).text()][$("span:eq(2)", this).text()].push($("span:eq(0)", this).text());
});
var apparati = [];
$.each(rete, function(key, value) {
  apparati.push(key);
});
$("input#apparato").autocomplete({
  source: apparati,
  select: function(event, ui) {
    $("div.out p#results").html("");
    $("select#interfacce").change(function() {});
    $("select#interfacce").html("<option value=''></option><option value='all'>all</option>");
    $.each(rete[ui.item.label], function(key, value) {
      $("select#interfacce").append("<option value='" + key + "'>" + key + "</option>");
    });
    $("select#interfacce").change(function() {
      apparato = $("input#apparato").val();
      interfaccia = $("select#interfacce option:selected").val();
      servizi = [];
      if (interfaccia == 'all') {
        $.each(rete[apparato], function(key, value) {
          servizi = servizi.concat(value);
        })
      } else {
        $.each(rete[apparato][interfaccia], function(index, value) {
          servizi.push(value);
        })
      }
      $("div.out p#results").html(unique(servizi).join("\n<br>"))
    });
  }
});
//$("div.out").text(JSON.stringify(rete));
//console.log(rete);

function unique(array) {
  return $.grep(array, function(el, index) {
    return index == $.inArray(el, array);
  });
}