Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 759e7200

Von Bernd Bleßmann vor fast 7 Jahren hinzugefügt

  • ID 759e7200b66eced8b4da70dba0f48739d883da2c
  • Vorgänger bba88a1b
  • Nachfolger 6cac3ff6

Auftrags-Controller: multi items dialog: JavaScript aus html-Template raus

Unterschiede anzeigen:

js/kivi.Order.js
$.post("controller.pl", data, kivi.eval_json_result);
};
ns.setup_multi_items_dialog = function() {
$('#multi_items_filter_table input, #multi_items_filter_table select').keydown(function(event) {
if (event.keyCode == 13) {
event.preventDefault();
ns.multi_items_dialog_update_result();
return false;
}
});
$('#multi_items_filter_all_substr_multi_ilike').focus();
};
ns.show_multi_items_dialog = function() {
if (!ns.check_cv()) return;
$('#row_table_id thead a img').remove();
kivi.popup_dialog({
url: 'controller.pl?action=Order/show_multi_items_dialog',
data: { type: $('#type').val(),
callback: 'Order/add_multi_items',
callback_data_id: 'order_form' },
id: 'jq_multi_items_dialog',
url: 'controller.pl?action=Order/show_multi_items_dialog',
data: { type: $('#type').val() },
id: 'jq_multi_items_dialog',
load: kivi.Order.setup_multi_items_dialog,
dialog: {
title: kivi.t8('Add multiple items'),
width: 800,
......
$('#jq_multi_items_dialog').dialog('close');
};
ns.multi_items_dialog_update_result = function() {
var data = $('#multi_items_form').serializeArray();
data.push({ name: 'type', value: $('#type').val() });
$.ajax({
url: 'controller.pl?action=Order/multi_items_update_result',
data: data,
method: 'post',
success: function(data) {
$('#multi_items_result').html(data);
ns.multi_items_dialog_enable_continue();
ns.multi_items_result_setup_events();
}
});
};
ns.multi_items_dialog_disable_continue = function() {
// disable keydown-event and continue button to prevent
// impatient users to add parts multiple times
$('#multi_items_result input').off("keydown");
$('#multi_items_dialog_continue_button').prop('disabled', true);
};
ns.multi_items_dialog_enable_continue = function() {
$('#multi_items_result input').keydown(function(event) {
if(event.keyCode == 13) {
event.preventDefault();
ns.add_multi_items();
return false;
}
});
$('#multi_items_dialog_continue_button').prop('disabled', false);
};
ns.multi_items_result_setup_events = function() {
$('#multi_items_all_qty').change(ns.reformat_number);
$('#multi_items_all_qty').change(function(event) {
$('.multi_items_qty').val($(event.target).val());
});
$('.multi_items_qty').change(ns.reformat_number);
}
ns.add_multi_items = function() {
// rows at all
var n_rows = $('.multi_items_qty').length;
if (n_rows == 0) return;
// filled rows
n_rows = $('.multi_items_qty').filter(function() {
return $(this).val().length > 0;
}).length;
if (n_rows == 0) return;
ns.multi_items_dialog_disable_continue();
var data = $('#order_form').serializeArray();
data = data.concat($('#multi_items_form').serializeArray());
data.push({ name: 'action', value: 'Order/add_multi_items' });
$.post("controller.pl", data, kivi.eval_json_result);
};
ns.set_input_to_one = function(clicked) {
if ($(clicked).val() == '') {
$(clicked).val(kivi.format_amount(1.00, -2));
}
$(clicked).select();
};
ns.delete_order_item_row = function(clicked) {
var row = $(clicked).parents("tbody").first();
$(row).remove();
templates/webpages/order/tabs/_multi_items_dialog.html
<tr>
</table>
[% L.button_tag('update_result()', LxERP.t8('Filter')) %]
[% L.button_tag('kivi.Order.multi_items_dialog_update_result()', LxERP.t8('Filter')) %]
[% L.button_tag('$("#multi_items_form").resetForm()', LxERP.t8('Reset')) %]
<hr>
<div id='multi_items_result'></div>
<hr>
[% L.button_tag('add_multi_items()', LxERP.t8('Continue'), id='continue_button') %]
[% L.button_tag('kivi.Order.add_multi_items()', LxERP.t8('Continue'), id='multi_items_dialog_continue_button') %]
<a href="#" onclick="kivi.Order.close_multi_items_dialog();">[%- LxERP.t8("Cancel") %]</a>
<script type='text/javascript'>
function update_result() {
var data = $('#multi_items_form').serializeArray();
data.push({ name: 'type', value: '[%- FORM.type %]' });
$.ajax({
url: 'controller.pl?action=Order/multi_items_update_result',
data: data,
method: 'post',
success: function(data){
$('#multi_items_result').html(data);
enable_continue();
}
});
}
function disable_continue() {
// disable keydown-event and continue button to prevent
// impatient users to add parts multiple times
$('#multi_items_result input').off("keydown");
$('#continue_button').prop('disabled', true);
}
function enable_continue() {
$('#multi_items_result input').keydown(function(event) {
if(event.keyCode == 13) {
event.preventDefault();
add_multi_items();
return false;
}
});
$('#continue_button').prop('disabled', false);
}
function add_multi_items() {
// rows at all
var n_rows = $('.multi_items_qty').length;
if ( n_rows == 0) { return; }
// filled rows
n_rows = $('.multi_items_qty').filter(function() {
return $(this).val().length > 0;
}).length;
if ( n_rows == 0) { return; }
disable_continue();
var data = $('#[%- FORM.callback_data_id %]').serializeArray();
data = data.concat($('#multi_items_form').serializeArray());
data.push({ name: 'action', value: '[%- FORM.callback %]' });
$.post("controller.pl", data, kivi.eval_json_result);
}
$('#multi_items_filter_table input, #multi_items_filter_table select').keydown(function(event) {
if(event.keyCode == 13) {
event.preventDefault();
update_result();
return false;
}
});
$('#multi_items_filter_all_substr_multi_ilike').focus();
</script>
</form>
templates/webpages/order/tabs/_multi_items_result.html
<td>
[% L.hidden_tag("add_multi_items[+].parts_id", item.id) %]
[% L.input_tag("add_multi_items[].qty_as_number", '', size = 5,
class = 'multi_items_qty numeric', onclick = 'set_qty_to_one(this)') %]
class = 'multi_items_qty numeric', onclick = 'kivi.Order.set_input_to_one(this)') %]
</td>
<td>[% HTML.escape(item.unit) %]</td>
<td>[% HTML.escape(item.partnumber) %]</td>
......
</tr>
[%- END %]
</table>
<script type='text/javascript'>
function set_qty_to_one(clicked) {
if ($(clicked).val() == '') {
$(clicked).val('[%- LxERP.format_amount(1.00, -2) %]');
}
$(clicked).select();
}
$('#multi_items_all_qty').change(function(event){
$('.multi_items_qty').val($(event.target).val());
});
</script>

Auch abrufbar als: Unified diff