fixing a bug with the data store and search filters sending extra ajax requests
authorAnthony Talarico <talarico@gaslightmedia.com>
Fri, 22 Feb 2019 03:32:11 +0000 (22:32 -0500)
committerAnthony Talarico <talarico@gaslightmedia.com>
Fri, 22 Feb 2019 03:32:11 +0000 (22:32 -0500)
js/memberManagement.js
views/admin/manageDashboard/components/checkbox.html
views/admin/manageDashboard/index.html

index 75e2cb7..a866905 100644 (file)
@@ -29,6 +29,33 @@ window.Glma = (function() {
             M.Sidenav.getInstance( $('.edit-screen')[0] ).open();   
         }
     }
+    var getSearchFieldValues = function(){
+        if( localStorage.getItem("glmaQueries") ){
+            var setQueries = {};
+            var queries = JSON.parse(localStorage.getItem("glmaQueries"));
+            for(var query in queries){
+                if(queries[query]){
+                    setQueries[query] = queries[query];
+                }
+            }
+            return setQueries;
+        }else{
+            return false
+        }
+    }
+    var mergeProps = function(obj1, obj2){
+        for(var prop in obj2){
+            obj1[prop] = obj2[prop];
+        }
+    }
+    var deleteProps = function(obj){
+        console.log(obj)
+        var searchFields = $(".glm-admin-search-field");
+        for(var i = 0; i < searchFields.length; i++){
+            var field = $(searchFields[i]).attr("data-search") ;
+            delete obj[field];
+        }
+    }
     var updateSearchFilterValues = function(){
         var queries = {};
         var searchFields = $(".glm-admin-search-field");
@@ -74,6 +101,10 @@ window.Glma = (function() {
         },
 
         updateSearchFilterValues: updateSearchFilterValues,
+        getSearchFieldValues: getSearchFieldValues,
+        getSearchFieldValues: getSearchFieldValues,
+        deleteProps : deleteProps,
+        mergeProps: mergeProps,
         /*
         * call this function with a data object to configure the logic
         * # glmAction
@@ -92,23 +123,25 @@ window.Glma = (function() {
                 view        : textSearchData.view 
             }
             jQuery('input#'+textSearchData.slug+'-text').autoComplete({
-                minChars: 0,
+                minChars:0,
                 source: function( request, response ) {
                     if( textSearchData.searchType == "list"){
                         listData.text_search = request;
                     }else{
                         listData.query = request;
                     }
+                    deleteProps(listData);
                     updateSearchFilterValues();
+                    var queries = getSearchFieldValues();
+                    mergeProps(listData, queries);
                     jQuery.ajax({
                         dataType: "json",
                         type : 'POST',
                         url: wp.ajax.settings.url,
                         data: listData,
                         success: function(data) {
-                            
                             if(data.searchData){
-                                console.log(data.searchData)
                                 if( textSearchData.searchType == "list"){
                                     jQuery("#member-results-container").html(data.searchData);
                                 }else{
@@ -147,7 +180,7 @@ window.Glma = (function() {
     
                 onSelect: function(e, term, item){
                     let search = jQuery(item).text();
-                    console.log(search);
+                    console.log("select")
                     
                     if(search){
                         var entityData = {
@@ -158,13 +191,13 @@ window.Glma = (function() {
                         jQuery(".edit-screen").html('');
                         entityData.memberID     = searchResults[search].entityID;
                         entityData.option       = "manage";
-                        console.log(entityData)
+    
                         Glma.manageMember(
                             entityData,
                             function(complete) {},
                             function(success) {
                                 jQuery(".edit-screen").html(success.searchData);
-                                console.log(searchResults[search].entityID)
+                   
                                 M.Sidenav.getInstance( jQuery('.edit-screen')[0] ).open(); 
                             },
                             function(error) {
index fdb5bb8..a71bd30 100644 (file)
@@ -1,4 +1,4 @@
 <label class="checkbox-search-filters">
-    <input  type="checkbox" name="{$component.id}" class="glm-admin-search-field" data-search="filter{$component.displayName}" data-searchType="checkbox"/>
+    <input  type="checkbox" name="{$component.id}" class="glm-admin-search-field glm-search-checkbox" data-search="filter{$component.displayName}" data-searchType="checkbox"/>
     <span>{$component.displayName}</span>
 </label>
\ No newline at end of file
index 9c9cc52..5bbb9fe 100644 (file)
 </style>
 <script>
     jQuery(function($){
-        function getSearchFieldValues(){
-            if( localStorage.getItem("glmaQueries") )
-                return JSON.parse(localStorage.getItem("glmQueries"));
-            else
-                return false
-        }
-        
-        if(  getSearchFieldValues() ){
-            window.Glma.queries = getSearchFieldValues();
-        }
         
-        window.Glma.updateSearchFilterValues();
+        // window.Glma.updateSearchFilterValues();
         var memberInfo, memberID;
         var listData = {
             action          : Glma.defaultData.action,
             "POST"
         );
    
-        $(".glm-admin-search-field").on("change", function(){
+        $(".glm-search-checkbox").on("change", function(){
             listData.filterArchived = $("input[name='archivedSearch']:checked").length > 0 ? true : undefined;
             listData.filterFeatured = $("input[name='featuredSearch']:checked").length > 0 ? true : undefined;
             listData.filterPending  = $("input[name='pendingSearch']:checked").length > 0 ? true : undefined;
+            window.Glma.deleteProps(listData);
             window.Glma.updateSearchFilterValues();
+            var queries = window.GlmagetSearchFieldValues();
+            window.Glma.mergeProps(listData, queries);
             Glma.manageMember(
                 listData,
                 $("#glm-admin-search-overlay").fadeOut('slow'), 
             }else{
                 listData.categorySearch = "";
             }
+            window.Glma.deleteProps(listData);
             window.Glma.updateSearchFilterValues();
+            var queries = window.GlmagetSearchFieldValues();
+            window.Glma.mergeProps(listData, queries);
             Glma.manageMember(
                 listData,
                 $("#glm-admin-search-overlay").fadeOut('slow'),