From 7d4f02a3457983cd53ab963ed708e315e100ee37 Mon Sep 17 00:00:00 2001 From: senator Date: Fri, 7 Jan 2011 23:05:29 +0000 Subject: [PATCH] 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/trunk@19137 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