From ba93aeecf161653f414e302e4a259a487d83a2af Mon Sep 17 00:00:00 2001 From: senator Date: Fri, 7 Jan 2011 23:06:10 +0000 Subject: [PATCH] Backport r19137 from trunk Make openils.PermaCrud.Store use a default order_by clause in common situations This avoids an issue where, using a FilteringSelect dijit, sometimes you type a couple letters, let's says "ABC", and you get a set of matches like this: "ABCDE" "ABCD" "ABC" just because there happens to be no specific ordering. If you click the ABC match and tab away too quickly, the dijit will reset itself to the first match, "ABCDE". This is probably a Dojo/Dijit bug, as I've been able to duplicate the problem with other stores, but that's all murky. This avoids the issue by making sure the shortest match is at the top of the list. git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@19138 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/js/dojo/openils/PermaCrud/Store.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Open-ILS/web/js/dojo/openils/PermaCrud/Store.js b/Open-ILS/web/js/dojo/openils/PermaCrud/Store.js index 205cc383c4..df982ecee1 100644 --- a/Open-ILS/web/js/dojo/openils/PermaCrud/Store.js +++ b/Open-ILS/web/js/dojo/openils/PermaCrud/Store.js @@ -236,6 +236,7 @@ if (!dojo._hasResource["openils.PermaCrud.Store"]) { if (qkeys.length < 1) throw new PCSError("Not enough meat on that query"); + var first_term; for (var qkey in req.query) { var value = req.query[qkey]; var type = typeof value; @@ -282,6 +283,7 @@ if (!dojo._hasResource["openils.PermaCrud.Store"]) { if (req.queryOptions && req.queryOptions.ignoreCase) op = "ilike"; + if (!first_term) first_term = key; if (op) { pcrud_query[key] = {}; pcrud_query[key][op] = term; @@ -315,6 +317,9 @@ if (!dojo._hasResource["openils.PermaCrud.Store"]) { /* XXX not sure whether multiple columns will work as such. */ hashkey = "order_by:" + opts.order_by[this.fmclass] + ":" + hashkey; + } else if (first_term) { + opts.order_by = {}; + opts.order_by[this.fmclass] = first_term + " ASC"; } opts.id_list = this.stubby; -- 2.11.0