MT#3977 populate PBX field dev form on prof change

agranig/peering-route
Andreas Granig 12 years ago
parent 03e4d574b6
commit 1c8179164a

@ -74,6 +74,7 @@ has_field 'line.line' => (
rel => ['tooltip'],
title => ['The line/key to use'],
},
element_class => [qw/ngcp-linekey-select/],
);
@ -86,6 +87,7 @@ has_field 'line.type' => (
rel => ['tooltip'],
title => ['The type of feature to use on this line/key'],
},
element_class => [qw/ngcp-linetype-select/],
);

@ -45,6 +45,11 @@ sub render_repeatable_js {
// increment index of repeatable fields
index++;
rep_index[data_rep_id] = index;
// initiate callback if there is a handler for that
if(repeatadd_handler) {
repeatadd_handler.onAdd(index-1);
}
});
\$(document).on('click', '.rm_element', function() {
@ -52,6 +57,13 @@ sub render_repeatable_js {
var esc_id = id.replace(/[.]/g, '\\\\.');
var rm_elem = \$('#' + esc_id);
rm_elem.remove();
// initiate callback if there is a handler for that
if(repeatadd_handler) {
var idx_id = id.replace(/^.+\\.(\\d+)\$/, "\$1");
repeatadd_handler.onRm(idx_id);
}
event.preventDefault();
});

@ -517,11 +517,38 @@
[% IF c.config.features.cloudpbx -%]
<script>
var aaData;
$('#line\\.0\\.line option').remove();
$('#line\\.0\\.type option').remove();
var AddLineHandler = (function() {
function AddLineHandler(){};
AddLineHandler.prototype.onAdd = function(index) {
console.log("new line added, index is", index);
//handle_add_line(index);
};
AddLineHandler.prototype.onRm = function(index) {
console.log("old line removed, index is", index);
//handle_rm_line(index);
};
return AddLineHandler;
})();
var repeatadd_handler = new AddLineHandler();
/*
function handle_add_line(range_id) {
$('#line\\.' + range_id + '\\.line').append('<option value=""></option>');
for(var j = 0; j < range.num_lines; ++j) {
$('#line\\.' + index + '\\.line').append('<option id="line.' + i + '.line.' + j + '" value="' + i + '.' + j + '">' + range.name + ' - Key/Line ' + j + '</option>');
}
}
*/
[% IF create_flag == 1 -%]
$('.ngcp-linekey-select option').remove();
$('.ngcp-linetype-select option').remove();
[% END -%]
$('div.controls #profile_id').change(function() {
$('#line\\.0\\.line option').remove();
$('#line\\.0\\.type option').remove();
$('.ngcp-linekey-select option').remove();
$('.ngcp-linetype-select option').remove();
console.log("profile_id changed");
var prof_id;
$('div.controls #profile_id option:selected').each(function() {
@ -533,37 +560,51 @@
}).done(function(data) {
aaData = data.aaData;
console.log("got data", data);
for(var i = 0; i < aaData.length; ++i) {
var range = aaData[i];
// TODO: do it for all line.$id.line/type
// foreach line/key repeatable block:
$('#line .controls .control-group.hfh-repinst').each(function(line_index, line_value) {
console.log("handling line block");
console.log("line_index", line_index);
console.log("line_value", line_value);
var line_id = $(line_value).attr("id").replace(/^.+\.(\d+)$/, "$1");
console.log("range_id=", line_id);
$('#line\\.0\\.line').append('<option value=""></option>');
for(var j = 0; j < range.num_lines; ++j) {
$('#line\\.0\\.line').append('<option id="line.' + i + '.line.' + j + '" value="' + i + '.' + j + '">' + range.name + ' - Key/Line ' + j + '</option>');
for(var i = 0; i < aaData.length; ++i) {
var range = aaData[i];
$('#line\\.' + line_id + '\\.line').append('<option value=""></option>');
for(var j = 0; j < range.num_lines; ++j) {
$('#line\\.' + line_id + '\\.line').append('<option id="line.' + line_id + '.line.' + j + '" value="' + i + '.' + j + '">' + range.name + ' - Key/Line ' + j + '</option>');
}
}
}
// TODO: do this based on line.$id.line being selected!
$('#line\\.0\\.line').change(function() {
});
$('.ngcp-linekey-select').change(function(obj) {
var line_id;
$('#line\\.0\\.line option:selected').each(function() {
line_id = $(this).attr('value'); // e.g. "2.1"
var range_id;
var key_id;
line_id = $(obj.currentTarget).attr("id").replace(/^line\.(\d+)\..+$/, "$1");
$(obj.currentTarget).find('option:selected').each(function() {
console.log("selected line key ", $(this).attr('value'));
range_id = $(this).attr('value').replace(/^(\d+)\.(\d+)$/, "$1");
key_id = $(this).attr('value').replace(/^(\d+)\.(\d+)$/, "$2");
});
console.log("selected line_id " + line_id);
var range_id = Math.floor(line_id);
var range = aaData[range_id];
console.log("range for range_id " + range_id + " is ", range);
console.log("setting line_id " + line_id + ", range for range_id " + range_id + " is ", range);
$('#line\\.0\\.type option').remove();
if(+range.can_private) { // cast to int
$('#line\\.0\\.type').append('<option value="private">Private Line</option>');
$('#line\\.' + line_id + '\\.type option').remove();
if(range && +range.can_private) { // cast to int
$('#line\\.' + line_id + '\\.type').append('<option value="private">Private Line</option>');
}
if(+range.can_shared) {
$('#line\\.0\\.type').append('<option value="shared">Shared Line</option>');
if(range && +range.can_shared) {
$('#line\\.' + line_id + '\\.type').append('<option value="shared">Shared Line</option>');
}
if(+range.can_blf) {
$('#line\\.0\\.type').append('<option value="blf">BLF Key</option>');
if(range && +range.can_blf) {
$('#line\\.' + line_id + '\\.type').append('<option value="blf">BLF Key</option>');
}
});
});

Loading…
Cancel
Save