X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=js%2Fautocomplete_part.js;h=d9bf8dbbba48f494dce4ba44cc29690f1630ce1c;hb=574855561514a864f554776c421e7037196e714d;hp=0a4886f17c4568581ea488e270d0c43593f56f6f;hpb=1e1b63133d807a460f2714981da2b91ef6cec582;p=kivitendo-erp.git diff --git a/js/autocomplete_part.js b/js/autocomplete_part.js index 0a4886f17..d9bf8dbbb 100644 --- a/js/autocomplete_part.js +++ b/js/autocomplete_part.js @@ -8,10 +8,15 @@ namespace('kivi', function(k){ ESCAPE: 27, ENTER: 13, TAB: 9, + LEFT: 37, + RIGHT: 39, + PAGE_UP: 33, + PAGE_DOWN: 34, }; var o = $.extend({ limit: 20, delay: 50, + fat_set_item: $real.hasClass('partpicker_fat_set_item'), }, options); var STATES = { UNIQUE: 1, @@ -26,22 +31,31 @@ namespace('kivi', function(k){ var state = STATES.PICKED; var last_real = $real.val(); var last_dummy = $dummy.val(); - var open_dialog = function(){ - open_jqm_window({ + var timer; + + function open_dialog () { + k.popup_dialog({ url: 'controller.pl?action=Part/part_picker_search', data: $.extend({ real_id: real_id, }, ajax_data($dummy.val())), id: 'part_selection', + dialog: { + title: k.t8('Part picker'), + width: 800, + height: 800, + } }); + window.clearTimeout(timer); return true; - }; + } function ajax_data(term) { var data = { - 'filter.all:substr::ilike': term, + 'filter.all:substr:multi::ilike': term, 'filter.obsolete': 0, 'filter.unit_obj.convertible_to': $convertible_unit && $convertible_unit.val() ? $convertible_unit.val() : '', + no_paginate: $('#no_paginate').prop('checked') ? 1 : 0, column: $column && $column.val() ? $column.val() : '', current: $real.val(), }; @@ -68,6 +82,18 @@ namespace('kivi', function(k){ last_real = $real.val(); last_dummy = $dummy.val(); $real.trigger('change'); + + if (o.fat_set_item && item.id) { + $.ajax({ + url: 'controller.pl?action=Part/show.json', + data: { id: item.id }, + success: function(rsp) { + $real.trigger('set_item:PartPicker', rsp); + }, + }); + } else { + $real.trigger('set_item:PartPicker', item); + } } function make_defined_state () { @@ -89,8 +115,23 @@ namespace('kivi', function(k){ }); }; + function result_timer (event) { + if (!$('no_paginate').prop('checked')) { + if (event.keyCode == KEY.PAGE_UP) { + $('#part_picker_result a.paginate-prev').click(); + return; + } + if (event.keyCode == KEY.PAGE_DOWN) { + $('#part_picker_result a.paginate-next').click(); + return; + } + } + window.clearTimeout(timer); + timer = window.setTimeout(update_results, 100); + } + function close_popup() { - $('#part_selection').jqmClose() + $('#part_selection').dialog('close'); }; $dummy.autocomplete({ @@ -156,14 +197,17 @@ namespace('kivi', function(k){ } }); -// $dummy.blur(make_defined_state); // blur triggers also on open_jqm_dialog + $dummy.blur(function(){ + window.clearTimeout(timer); + timer = window.setTimeout(make_defined_state, 100); + }); // now add a picker div after the original input var pcont = $('').addClass('position-absolute'); var picker = $('
'); $dummy.after(pcont); pcont.append(picker); - picker.addClass('icon16 CRM--Schnellsuche').click(open_dialog); + picker.addClass('icon16 crm--search').click(open_dialog); var pp = { real: function() { return $real }, @@ -173,16 +217,19 @@ namespace('kivi', function(k){ convertible_unit: function() { return $convertible_unit }, column: function() { return $column }, update_results: update_results, + result_timer: result_timer, set_item: set_item, reset: make_defined_state, init_results: function () { $('div.part_picker_part').each(function(){ $(this).click(function(){ set_item({ - name: $(this).children('input.part_picker_description').val(), id: $(this).children('input.part_picker_id').val(), + name: $(this).children('input.part_picker_description').val(), + unit: $(this).children('input.part_picker_unit').val(), }); close_popup(); + $dummy.focus(); return true; }); });