exact match funktion wieder hergestellt nach dem letzten commit
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 10 Jul 2013 17:18:42 +0000 (19:18 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 11 Jul 2013 09:08:14 +0000 (11:08 +0200)
SL/Controller/Part.pm
SL/Presenter/Part.pm

index 4d8da25..9b4744e 100644 (file)
@@ -44,8 +44,23 @@ sub action_ajax_autocomplete {
 
   # if someone types something, and hits enter, assume he entered the full name.
   # if something matches, treat that as sole match
+  # unfortunately get_models can't do more than one per package atm, so we d it
+  # the oldfashioned way.
   if ($::form->{prefer_exact}) {
-    # TODO!
+    my $exact_matches;
+    if (1 == scalar @{ $exact_matches = SL::DB::Manager::Part->get_all(
+      query => [
+        obsolete => 0,
+        SL::DB::Manager::Part->type_filter($::form->{filter}{type}),
+        or => [
+          description => { ilike => $::form->{filter}{'all:substr::ilike'} },
+          partnumber  => { ilike => $::form->{filter}{'all:substr::ilike'} },
+        ]
+      ],
+      limit => 2,
+    ) }) {
+      $self->parts($exact_matches);
+    }
   }
 
   my @hashes = map {
@@ -57,7 +72,7 @@ sub action_ajax_autocomplete {
      description => $_->description,
      type        => $_->type,
     }
-  } @{ $self->parts };
+  } @{ $self->parts }; # neato: if exact match triggers we don't even need the init_parts
 
   $self->render(\ SL::JSON::to_json(\@hashes), { layout => 0, type => 'json', process => 0 });
 }
index bef55a3..e2ca020 100644 (file)
@@ -49,10 +49,14 @@ section C<PART PICKER SPECIFICATION>.
 
 C<VALUE> can be an id or C<Rose::DB:Object> instance.
 
-If C<PARAMS> contains C<type> only parts of this type will be used for autocompletion.
+If C<PARAMS> contains C<type> only parts of this type will be used for
+autocompletion. Currently only one type may be specified.
 
 Obsolete parts will by default not displayed for selection. However they are
-accepted as default values and can persist during updates.
+accepted as default values and can persist during updates. As with other
+selectors though, they are not selecatble once overridden.
+
+
 
 =back