{% extends 'admin/change_form.html' %}
{% block extrahead %} 
{{ block.super }} 
<script>
deployment_nodes = [
{% for dn in deployment_nodes %}
   [{{ dn.0 }}, {{ dn.1 }} , "{{ dn.2 }}"],
{% endfor %}
];

sites = [
{% for s in sites %}
  [{{ s.0 }}, {{ s.1 }}],
{% endfor %}
];
 

function update_nodes(deployment_select, node_select_id) {
    deployment_id = $(deployment_select).val();
    html = "<option value=''>---------</option>\n";
    for (i in deployment_nodes) {
        dn = deployment_nodes[i];
        if (dn[0] == deployment_id) {
            html = html + '<option value="' + dn[1] + '">' + dn[2] + '</option>\n'
        }
    }
    //console.log(html);
    $("#"+node_select_id).empty().append(html);
}

function update_slice_prefix(site_select, slice_name_id) {
    site_id = $(site_select).val();
    slice_prefix="";
    if (site_id in sites) {
        slice_prefix=sites[site_id]+"_";
    }
    $("#"+slice_name_id).val(slice_prefix); 
}
</script>

{% endblock %}

