3 my $svcdb = $opt{table};
4 my $field = $opt{field} || 'svcnum';
5 my $id = $opt{id} || $opt{field};
6 my $curr_value = [ split(',', $opt{curr_value} || '') ];
7 my $label = $opt{name_col} || 'label';
9 # cut-down, jquerified version of select-tiered
10 # XXX do we need to agent-virt this? edit/part_svc is Configuration-access.
11 my @part_svc = qsearch('part_svc', {
15 my %labels; # service labels, of some kind
18 foreach my $part_svc (@part_svc) {
20 foreach my $svc_x (qsearch({
21 'table' => 'cust_svc',
22 'addl_from' => " JOIN $svcdb USING (svcnum)",
23 'select' => "$svcdb.*, cust_svc.svcpart",
24 'hashref' => { 'svcpart' => $part_svc->svcpart },
27 push @l, $svc_x->$label;
28 push @all_l, $svc_x->$label;
29 push @v, $svc_x->svcnum;
30 push @all_v, $svc_x->svcnum;
32 $labels{ $part_svc->svcpart } = \@l;
33 $values{ $part_svc->svcpart } = \@v;
35 $labels{ '' } = \@all_l;
36 $values{ '' } = \@all_v;
39 <& /elements/select-table.html,
40 'table' => 'part_svc',
41 'records' => \@part_svc,
42 'id' => $id.'_svcpart',
44 'empty_label' => 'any',
46 'field' => $id.'_svcpart', # avoid confusion with any other field
49 <& /elements/select.html,
55 $().ready(function() {
56 var labels = <% encode_json(\%labels) %>;
57 var values = <% encode_json(\%values) %>;
58 var select_svcpart = $('#<% $id.'_svcpart' %>');
59 var select_svcnum = $('#<% $id %>');
60 var onchange_svcpart = function() {
61 var l = labels[ this.value ];
62 var v = values[ this.value ];
63 select_svcnum.empty();
64 for (var i = 0; i < v.length; i++) {
65 var opt = $('<option />').val(v[i]).text(l[i]);
66 select_svcnum.append(opt);
69 select_svcpart.on('change', onchange_svcpart);
70 select_svcpart.change();
71 select_svcnum.val(<% encode_json($curr_value) %>);