Name: cockpit/js/parameters.js 
1:
$(document).ready(function() {
2:
  // Color of save buttons for parameter area //{{{
3:
  $('#parameters table.tabbar td.tab:not(.switch):not(.tabbehind)').click(function(event){
4:
    mark_parameters_save($(event.target).parents('div.tabbed'));
5:
  }); //}}}
6:
  
7:
  // Delete entries //{{{
8:
  $('#parameters td.del a').live('click',function(event){
9:
    var top = $(event.target).parents('.tabbed');
10:
    remove_entry($("input",$(event.target).parents('tr')).get(0),false);
11:
    mark_parameters_save(top);
12:
    return false;
13:
  }); //}}}
14:
 
15:
  // New entry //{{{
16:
  $('#parameters .tabbehind button:nth-child(1)').click(function(){
17:
    new_entry($(this).parents('div.tabbed'));
18:
  }); //}}}
19:
 
20:
  // Save entries //{{{
21:
  $('#parameters .tabbehind button:nth-child(2)').click(function(event){
22:
    save_parameters($(event.target).parents('div.tabbed'));
23:
  }); //}}}
24:
 
25:
  $('#dat_dataelements input').live('keyup',function(e){ mark_parameters_save($(e.target).parents('div.tabbed')); });
26:
  $('#dat_endpoints input').live('keyup',function(e){ mark_parameters_save($(e.target).parents('div.tabbed')); });
27:
});
28:
 
29:
function mark_parameters_save(top) { //{{{
30:
  var visid = $('table.tabbar td.tab',top).not('.switch').not('.inactive').attr('id').replace(/tab/,'');
31:
  var tab = $('#dat_' + visid);
32:
  if (serialize_inputs(tab) != save[visid]) {
33:
    $('table.tabbar .tabbehind button:nth-child(2)',top).addClass('highlight');
34:
  } else {  
35:
    $('table.tabbar .tabbehind button:nth-child(2)',top).removeClass('highlight');
36:
  }
37:
} //}}}
38:
function save_parameters(top) { //{{{
39:
  var visid = $('table.tabbar td.tab',top).not('.switch').not('.inactive').attr('id').replace(/tab/,'');
40:
  var table = $('#dat_' + visid);
41:
  var serxml = serialize_inputs(table);
42:
 
43:
  if (serxml != save[visid]) {
44:
    save[visid] = serxml;
45:
    var url = $("input[name=current-instance]").val();
46:
    $('table.tabbar .tabbehind button:nth-child(2)',top).removeClass('highlight');
47:
    $.ajax({
48:
      type: "PUT",
49:
      url: url + "/properties/values/" + visid + "/",
50:
      data: ({'content': serxml}),
51:
    });
52:
  }  
53:
} //}}}
54:
 
55:
function serialize_inputs(parent) { //{{{
56:
  var xml = $X('<content/>');
57:
  var fields = $('input',parent);
58:
  for (var i=0;i<fields.length; i+=2) {
59:
    var k = $(fields[i]).val();
60:
    var v = $(fields[i+1]).val();
61:
    if (k.match(/^[a-zA-Z][a-zA-Z0-9_]*$/)) {
62:
      xml.append($X('<' + k + '>' + v + '</' + k + '>'));
63:
    }  
64:
  }
65:
  return xml.serializeXML();
66:
} //}}}