Browse Source

Add campaign search UI.

Kailash Nadh 5 years ago
parent
commit
378e8145fe

+ 2 - 1
campaigns.go

@@ -84,7 +84,8 @@ func handleGetCampaigns(c echo.Context) error {
 		single = true
 		single = true
 	}
 	}
 	if query != "" {
 	if query != "" {
-		query = string(regexFullTextQuery.ReplaceAll([]byte(query), []byte("&")))
+		query = `%` +
+			string(regexFullTextQuery.ReplaceAll([]byte(query), []byte("&"))) + `%`
 	}
 	}
 
 
 	err := app.queries.QueryCampaigns.Select(&out.Results, id, pq.StringArray(status), query, pg.Offset, pg.Limit)
 	err := app.queries.QueryCampaigns.Select(&out.Results, id, pq.StringArray(status), query, pg.Offset, pg.Limit)

+ 14 - 14
frontend/fontello/config.json

@@ -496,6 +496,20 @@
         "cancel"
         "cancel"
       ]
       ]
     },
     },
+    {
+      "uid": "110ec51ea49a7f0cc9bfbde321f3c28d",
+      "css": "magnify",
+      "code": 59427,
+      "src": "custom_icons",
+      "selected": true,
+      "svg": {
+        "path": "M396.5 125Q468.8 125 531.3 161.1T629.9 259.8 666 396.5Q666 496.1 601.6 572.3L613.3 584H646.5L853.5 791 791 853.5 584 646.5V613.3L572.3 601.6Q496.1 666 396.5 666 322.3 666 259.8 629.9T161.1 531.3 125 395.5 161.1 259.8 259.8 161.1 396.5 125ZM396.5 209Q318.4 209 263.7 263.7T209 396.5 263.7 529.3 396.5 584 529.3 529.3 584 396.5 529.3 263.7 396.5 209Z",
+        "width": 1000
+      },
+      "search": [
+        "magnify"
+      ]
+    },
     {
     {
       "uid": "f4ad3f6d071a0bfb3a8452b514ed0892",
       "uid": "f4ad3f6d071a0bfb3a8452b514ed0892",
       "css": "vector-square",
       "css": "vector-square",
@@ -12200,20 +12214,6 @@
         "magnet-on"
         "magnet-on"
       ]
       ]
     },
     },
-    {
-      "uid": "110ec51ea49a7f0cc9bfbde321f3c28d",
-      "css": "magnify",
-      "code": 59416,
-      "src": "custom_icons",
-      "selected": false,
-      "svg": {
-        "path": "M396.5 125Q468.8 125 531.3 161.1T629.9 259.8 666 396.5Q666 496.1 601.6 572.3L613.3 584H646.5L853.5 791 791 853.5 584 646.5V613.3L572.3 601.6Q496.1 666 396.5 666 322.3 666 259.8 629.9T161.1 531.3 125 395.5 161.1 259.8 259.8 161.1 396.5 125ZM396.5 209Q318.4 209 263.7 263.7T209 396.5 263.7 529.3 396.5 584 529.3 529.3 584 396.5 529.3 263.7 396.5 209Z",
-        "width": 1000
-      },
-      "search": [
-        "magnify"
-      ]
-    },
     {
     {
       "uid": "cd529f71c055cf2da4843aafc1d70c8d",
       "uid": "cd529f71c055cf2da4843aafc1d70c8d",
       "css": "magnify-minus",
       "css": "magnify-minus",

+ 1 - 0
frontend/src/assets/icons/fontello.css

@@ -75,3 +75,4 @@
 .mdi-arrow-up:before { content: '\e820'; } /* '' */
 .mdi-arrow-up:before { content: '\e820'; } /* '' */
 .mdi-arrow-down:before { content: '\e821'; } /* '' */
 .mdi-arrow-down:before { content: '\e821'; } /* '' */
 .mdi-cancel:before { content: '\e822'; } /* '' */
 .mdi-cancel:before { content: '\e822'; } /* '' */
+.mdi-magnify:before { content: '\e823'; } /* '' */

BIN
frontend/src/assets/icons/fontello.woff2


+ 13 - 1
frontend/src/views/Campaigns.vue

@@ -3,7 +3,7 @@
     <header class="columns">
     <header class="columns">
       <div class="column is-two-thirds">
       <div class="column is-two-thirds">
         <h1 class="title is-4">Campaigns
         <h1 class="title is-4">Campaigns
-          <span v-if="campaigns.total > 0">({{ campaigns.total }})</span>
+          <span v-if="!isNaN(campaigns.total)">({{ campaigns.total }})</span>
         </h1>
         </h1>
       </div>
       </div>
       <div class="column has-text-right">
       <div class="column has-text-right">
@@ -12,6 +12,16 @@
       </div>
       </div>
     </header>
     </header>
 
 
+    <form @submit.prevent="getCampaigns">
+      <b-field grouped>
+          <b-input v-model="queryParams.query"
+            placeholder="Name or subject" icon="magnify" ref="query"
+            :disabled="isSearchAdvanced"></b-input>
+          <b-button native-type="submit" type="is-primary" icon-left="magnify"
+            :disabled="isSearchAdvanced"></b-button>
+      </b-field>
+    </form>
+
     <b-table
     <b-table
       :data="campaigns.results"
       :data="campaigns.results"
       :loading="loading.campaigns"
       :loading="loading.campaigns"
@@ -207,6 +217,7 @@ export default Vue.extend({
       previewItem: null,
       previewItem: null,
       queryParams: {
       queryParams: {
         page: 1,
         page: 1,
+        query: '',
       },
       },
       pollID: null,
       pollID: null,
       campaignStatsData: {},
       campaignStatsData: {},
@@ -271,6 +282,7 @@ export default Vue.extend({
     getCampaigns() {
     getCampaigns() {
       this.$api.getCampaigns({
       this.$api.getCampaigns({
         page: this.queryParams.page,
         page: this.queryParams.page,
+        query: this.queryParams.query,
       });
       });
     },
     },
 
 

+ 3 - 1
frontend/src/views/Lists.vue

@@ -2,7 +2,9 @@
   <section class="lists">
   <section class="lists">
     <header class="columns">
     <header class="columns">
       <div class="column is-two-thirds">
       <div class="column is-two-thirds">
-        <h1 class="title is-4">Lists <span v-if="lists.total > 0">({{ lists.total }})</span></h1>
+        <h1 class="title is-4">Lists
+          <span v-if="!isNaN(lists.total)">({{ lists.total }})</span>
+        </h1>
       </div>
       </div>
       <div class="column has-text-right">
       <div class="column has-text-right">
         <b-button type="is-primary" icon-left="plus" @click="showNewForm">New</b-button>
         <b-button type="is-primary" icon-left="plus" @click="showNewForm">New</b-button>

+ 4 - 5
frontend/src/views/Subscribers.vue

@@ -3,8 +3,7 @@
     <header class="columns">
     <header class="columns">
       <div class="column is-half">
       <div class="column is-half">
         <h1 class="title is-4">Subscribers
         <h1 class="title is-4">Subscribers
-          <span v-if="subscribers.total > 0">({{ subscribers.total }})</span>
-
+          <span v-if="!isNaN(subscribers.total)">({{ subscribers.total }})</span>
           <span v-if="currentList">
           <span v-if="currentList">
             &raquo; {{ currentList.name }}
             &raquo; {{ currentList.name }}
           </span>
           </span>
@@ -21,9 +20,9 @@
           <div>
           <div>
             <b-field grouped>
             <b-field grouped>
               <b-input @input="onSimpleQueryInput" v-model="queryInput"
               <b-input @input="onSimpleQueryInput" v-model="queryInput"
-                placeholder="E-mail or name" icon="account-search-outline" ref="query"
+                placeholder="E-mail or name" icon="magnify" ref="query"
                 :disabled="isSearchAdvanced"></b-input>
                 :disabled="isSearchAdvanced"></b-input>
-              <b-button native-type="submit" type="is-primary" icon-left="account-search-outline"
+              <b-button native-type="submit" type="is-primary" icon-left="magnify"
                 :disabled="isSearchAdvanced"></b-button>
                 :disabled="isSearchAdvanced"></b-button>
             </b-field>
             </b-field>
 
 
@@ -51,7 +50,7 @@
 
 
               <div class="buttons">
               <div class="buttons">
                 <b-button native-type="submit" type="is-primary"
                 <b-button native-type="submit" type="is-primary"
-                  icon-left="account-search-outline">Query</b-button>
+                  icon-left="magnify">Query</b-button>
                 <b-button @click.prevent="toggleAdvancedSearch" icon-left="cancel">Reset</b-button>
                 <b-button @click.prevent="toggleAdvancedSearch" icon-left="cancel">Reset</b-button>
               </div>
               </div>
             </div><!-- advanced query -->
             </div><!-- advanced query -->

+ 1 - 1
queries.sql

@@ -380,7 +380,7 @@ SELECT COUNT(*) OVER () AS total, campaigns.*, (
 FROM campaigns
 FROM campaigns
 WHERE ($1 = 0 OR id = $1)
 WHERE ($1 = 0 OR id = $1)
     AND status=ANY(CASE WHEN ARRAY_LENGTH($2::campaign_status[], 1) != 0 THEN $2::campaign_status[] ELSE ARRAY[status] END)
     AND status=ANY(CASE WHEN ARRAY_LENGTH($2::campaign_status[], 1) != 0 THEN $2::campaign_status[] ELSE ARRAY[status] END)
-    AND ($3 = '' OR (to_tsvector(name || subject) @@ to_tsquery($3)))
+    AND ($3 = '' OR CONCAT(name, subject) ILIKE $3)
 ORDER BY campaigns.updated_at DESC OFFSET $4 LIMIT $5;
 ORDER BY campaigns.updated_at DESC OFFSET $4 LIMIT $5;
 
 
 -- name: get-campaign
 -- name: get-campaign