fixed-search-in-trash-in-global-search
authorPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Sat, 19 Jan 2019 10:25:15 +0000 (11:25 +0100)
committerPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Sat, 19 Jan 2019 10:25:15 +0000 (11:25 +0100)
Feature #14744

Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>

src/store/search-bar/search-bar-actions.ts
src/store/search-results-panel/search-results-middleware-service.ts

index 54651247e5f8b7609cd383c273c225823711dcbf..741fac955c97f43239b49cbcc9c02d3fd97c854c 100644 (file)
@@ -326,36 +326,38 @@ export const parseSearchQuery: (query: string) => ParseSearchQuery = (searchValu
     const properties = {};
 
     keywords.forEach(k => {
-        let p = searchValue.indexOf(k);
-        const key = k.substr(0, k.length - 1);
-
-        while (p >= 0) {
-            const l = searchValue.length;
-            keywordsCnt += 1;
-
-            let v = '';
-            let i = p + k.length;
-            while (i < l && searchValue[i] === ' ') {
-                ++i;
-            }
-            const vp = i;
-            while (i < l && searchValue[i] !== ' ') {
-                v += searchValue[i];
-                ++i;
-            }
+        if (k) {
+            let p = searchValue.indexOf(k);
+            const key = k.substr(0, k.length - 1);
+
+            while (p >= 0) {
+                const l = searchValue.length;
+                keywordsCnt += 1;
+
+                let v = '';
+                let i = p + k.length;
+                while (i < l && searchValue[i] === ' ') {
+                    ++i;
+                }
+                const vp = i;
+                while (i < l && searchValue[i] !== ' ') {
+                    v += searchValue[i];
+                    ++i;
+                }
 
-            if (hasKeywords(v)) {
-                searchValue = searchValue.substr(0, p) + searchValue.substr(vp);
-            } else {
-                if (v !== '') {
-                    if (!properties[key]) {
-                        properties[key] = [];
+                if (hasKeywords(v)) {
+                    searchValue = searchValue.substr(0, p) + searchValue.substr(vp);
+                } else {
+                    if (v !== '') {
+                        if (!properties[key]) {
+                            properties[key] = [];
+                        }
+                        properties[key].push(v);
                     }
-                    properties[key].push(v);
+                    searchValue = searchValue.substr(0, p) + searchValue.substr(i);
                 }
-                searchValue = searchValue.substr(0, p) + searchValue.substr(i);
+                p = searchValue.indexOf(k);
             }
-            p = searchValue.indexOf(k);
         }
     });
 
@@ -424,7 +426,9 @@ export const getFilters = (filterName: string, searchValue: string, sq: ParseSea
         filter
             .addILike(filterName, searchValue, GroupContentsResourcePrefix.COLLECTION)
             .addILike(filterName, searchValue, GroupContentsResourcePrefix.PROJECT)
-            .addILike(filterName, searchValue, GroupContentsResourcePrefix.PROCESS);
+            .addILike(filterName, searchValue, GroupContentsResourcePrefix.PROCESS)
+            .addEqual('is_trashed', false, GroupContentsResourcePrefix.COLLECTION)
+            .addEqual('is_trashed', false, GroupContentsResourcePrefix.PROJECT);
 
         if (isTrashed) {
             filter.addILike(filterName, searchValue, GroupContentsResourcePrefix.PROCESS);
@@ -438,7 +442,10 @@ export const getFilters = (filterName: string, searchValue: string, sq: ParseSea
             sq.values.forEach(v => {
                 filter
                     .addILike(filterName, v, GroupContentsResourcePrefix.COLLECTION)
-                    .addILike(filterName, v, GroupContentsResourcePrefix.PROJECT);
+                    .addILike(filterName, v, GroupContentsResourcePrefix.PROJECT)
+                    .addILike(filterName, v, GroupContentsResourcePrefix.PROCESS)
+                    .addEqual('is_trashed', false, GroupContentsResourcePrefix.COLLECTION)
+                    .addEqual('is_trashed', false, GroupContentsResourcePrefix.PROJECT);
 
                 if (isTrashed) {
                     filter.addILike(filterName, v, GroupContentsResourcePrefix.PROCESS);
@@ -447,8 +454,12 @@ export const getFilters = (filterName: string, searchValue: string, sq: ParseSea
         }
 
         if (isTrashed) {
-            filter.addEqual("is_trashed", true);
-            console.log(filter);
+            sq.values.forEach(v => {
+                filter.addEqual('is_trashed', true, GroupContentsResourcePrefix.COLLECTION)
+                    .addEqual('is_trashed', true, GroupContentsResourcePrefix.PROJECT)
+                    .addILike(filterName, v, GroupContentsResourcePrefix.COLLECTION)
+                    .addILike(filterName, searchValue, GroupContentsResourcePrefix.PROCESS);
+            });
         }
 
         const projectUuid = getSearchQueryFirstProp(sq, 'project');
@@ -475,9 +486,8 @@ export const getFilters = (filterName: string, searchValue: string, sq: ParseSea
         });
     }
 
-    return filter
-        .addEqual('groupClass', GroupClass.PROJECT, GroupContentsResourcePrefix.PROJECT)
-        .addIsA("uuid", buildUuidFilter(resourceKind))
+    return filter        
+    .addIsA("uuid", buildUuidFilter(resourceKind))
         .getFilters();
 };
 
index 12efbb617e395ebb07ef5e069d375865e562ccd5..12578a2dd4382eae80644d7e0b9c579c05496b88 100644 (file)
@@ -83,7 +83,8 @@ export const getParams = (dataExplorer: DataExplorer, searchValue: string, sq: P
     filters: joinFilters(
         getFilters('name', searchValue, sq),
         typeFilters(dataExplorer.columns)),
-    order: getOrder(dataExplorer)
+    order: getOrder(dataExplorer),
+    includeTrash: true
 });
 
 const getOrder = (dataExplorer: DataExplorer) => {