- // now add a picker div after the original input
- var popup_button = $('<span>').addClass('ppp_popup_button');
- $dummy.after(popup_button);
- popup_button.click(open_dialog);
-
- var pp = {
- real: function() { return $real },
- dummy: function() { return $dummy },
- part_type: function() { return $part_type },
- classification_id: function() { return $classification_id },
- unit: function() { return $unit },
- convertible_unit: function() { return $convertible_unit },
- update_results: update_results,
- result_timer: result_timer,
- set_item: set_item,
- reset: make_defined_state,
- is_defined_state: function() { return state == STATES.PICKED },
- init_results: function () {
- $('div.part_picker_part').each(function(){
- $(this).click(function(){
- set_item({
- id: $(this).children('input.part_picker_id').val(),
- name: $(this).children('input.part_picker_description').val(),
- classification_id: $(this).children('input.part_picker_classification_id').val(),
- unit: $(this).children('input.part_picker_unit').val(),
- partnumber: $(this).children('input.part_picker_partnumber').val(),
- description: $(this).children('input.part_picker_description').val(),
- });
- close_popup();
- $dummy.focus();
- return true;
+ ns.PickerPopup.prototype = {
+ open_dialog: function() {
+ var self = this;
+ kivi.popup_dialog({
+ url: 'controller.pl?action=Part/part_picker_search',
+ data: $.extend({
+ real_id: self.pp.real_id,
+ }, self.pp.ajax_data(this.pp.$dummy.val())),
+ id: 'part_selection',
+ dialog: {
+ title: kivi.t8('Part picker'),
+ width: 800,
+ height: 800,
+ },
+ load: function() { self.init_search(); }
+ });
+ window.clearTimeout(this.timer);
+ return true;
+ },
+ init_search: function() {
+ var self = this;
+ $('#part_picker_filter').keypress(function(e) { self.result_timer(e); }).focus();
+ $('#no_paginate').change(function() { self.update_results(); });
+ this.update_results();
+ },
+ update_results: function() {
+ var self = this;
+ $.ajax({
+ url: 'controller.pl?action=Part/part_picker_result',
+ data: $.extend({
+ no_paginate: $('#no_paginate').prop('checked') ? 1 : 0,
+ }, self.pp.ajax_data(function(){
+ var val = $('#part_picker_filter').val();
+ return val === undefined ? '' : val;
+ })),
+ success: function(data){
+ $('#part_picker_result').html(data);
+ self.init_results();
+ }
+ });
+ },
+ init_results: function() {
+ var self = this;
+ $('div.part_picker_part').each(function(){
+ $(this).click(function(){
+ self.pp.set_item({
+ id: $(this).children('input.part_picker_id').val(),
+ name: $(this).children('input.part_picker_description').val(),
+ classification_id: $(this).children('input.part_picker_classification_id').val(),
+ ean: $(this).children('input.part_picker_ean').val(),
+ unit: $(this).children('input.part_picker_unit').val(),
+ partnumber: $(this).children('input.part_picker_partnumber').val(),
+ description: $(this).children('input.part_picker_description').val(),