X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/c3b2d659f6405aa3bc955928ad40ec1c889f67fb..53593baa211863fbf66540cf1bcc36c8fb37257f:/js/autocomplete_part.js diff --git a/js/autocomplete_part.js b/js/autocomplete_part.js deleted file mode 100644 index db449e948..000000000 --- a/js/autocomplete_part.js +++ /dev/null @@ -1,136 +0,0 @@ -namespace('kivi', function(k){ - k.part_picker = function($real, options) { - var o = $.extend({ - limit: 20, - delay: 50, - }, options); - var STATES = { - UNIQUE: 1, - UNDEFINED: 0, - } - var real_id = $real.attr('id'); - var $dummy = $('#' + real_id + '_name'); - var $type = $('#' + real_id + '_type'); - var $column = $('#' + real_id + '_column'); - var state = STATES.PICKED; - var last_real = $real.val(); - var last_dummy = $dummy.val(); - var open_dialog = function(){ - open_jqm_window({ - url: 'controller.pl', - data: { - action: 'Part/part_picker_search', - real_id: real_id, - 'filter.all:substr::ilike': function(){ return $dummy.val() }, - 'filter.type': function(){ return $type.val() }, - 'column': function(){ return $column.val() }, - }, - id: 'part_selection', - }); - return true; - }; - - function ajax_data(term) { - return { - term: term, - type: function() { return $type.val() }, - column: function() { return $column.val()===undefined ? '' : $column.val() }, - current: function() { return $real.val() }, - obsolete: 0, - } - } - - function set_item (item) { - if (item.id) { - $real.val(item.id); - // autocomplete ui has name, ajax items have description - $dummy.val(item.name ? item.name : item.description); - } else { - $real.val(''); - $dummy.val(''); - } - state = STATES.PICKED; - last_real = $real.val(); - last_dummy = $dummy.val(); - $real.trigger('change'); - } - - function make_defined_state () { - if (state == STATES.PICKED) - return true - else if (state == STATES.UNDEFINED && $dummy.val() == '') - set_item({}) - else - set_item({ id: last_real, name: last_dummy }) - } - - $dummy.autocomplete({ - source: function(req, rsp) { - $.ajax($.extend(o, { - url: 'controller.pl?action=Part/ajax_autocomplete', - dataType: "json", - data: ajax_data(req.term), - success: function (data){ rsp(data) } - })); - }, - select: function(event, ui) { - set_item(ui.item); - }, - }); - /* In case users are impatient and want to skip ahead: - * Capture key events and check if it's a unique hit. - * If it is, go ahead and assume it was selected. If it wasn't don't do - * anything so that autocompletion kicks in. For don't prevent - * propagation. It would be nice to catch it, but javascript is too stupid - * to fire a tab event later on, so we'd have to reimplement the "find - * next active element in tabindex order and focus it". - */ - $dummy.keypress(function(event){ - if (event.keyCode == 13 || event.keyCode == 9) { // enter or tab or tab - // if string is empty assume they want to delete - if ($dummy.val() == '') { - set_item({}); - return true; - } else if (state == STATES.PICKED) { - return true; - } - $.ajax({ - url: 'controller.pl?action=Part/ajax_autocomplete', - dataType: "json", - data: ajax_data($dummy.val()), - success: function (data){ - if (data.length == 1) { - set_item(data[0]); - if (event.keyCode == 13) - $('#update_button').click(); - } else { - if (event.keyCode == 13) - open_dialog(); - else - make_defined_state(); - } - } - }); - if (event.keyCode == 13) - return false; - } else { - state = STATES.UNDEFINED; - } - }); - -// $dummy.blur(make_defined_state); // blur triggers also on open_jqm_dialog - - // 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); - } -}); - -$(function(){ - $('input.part_autocomplete').each(function(i,real){ - kivi.part_picker($(real)); - }) -});