Эх сурвалжийг харах

Stat tree edit - refresh counts on page load

Vijayakrishnan 3 жил өмнө
parent
commit
bd375ca8e3

+ 54 - 0
app/Http/Controllers/StatTreeController.php

@@ -295,7 +295,42 @@ class StatTreeController extends Controller
         return json_encode($nodes);
     }
 
+    private function cleanupClause($clauseText)
+    {
+        //Dont include empty clauses, i.e ()
+        preg_match('#\((.*?)\)#', $clauseText, $match);
+        $content = @$match[1];
+        if (!$content || empty($content)) return null;
+        return $content;
+    }
+
+    private function applyStatTreeLineQueryClauses(StatTreeLine $statTreeLine)
+    {
+        $model = $statTreeLine->statTree->model;
+        $clauses = [];
+        foreach ($statTreeLine->lineClauses as $lineClause) {
+            $clauseText = $lineClause->clause->clause_text;
+            $isValid = $this->cleanupClause($clauseText);
+            if ($isValid) {
+                array_push($clauses, $clauseText);
+            }
+        }
+        $query = 'SELECT COUNT(*) FROM '.$model.' WHERE '. implode(" AND ", $clauses);
+        return DB::select($query);
+    }
+
     public function linesJSON(Request $request, StatTree $statTree) {
+
+        // refresh counts
+        $lines = $statTree->lines;
+        foreach ($lines as $line) {
+            $query = $this->applyStatTreeLineQueryClauses($line);
+            if ($query) {
+                $line->last_refresh_count = $query[0]->count;
+                $line->save();
+            }
+        }
+
         $nodes = [];
         foreach ($statTree->rootLines as $rootLine) {
             $nodes[] = $this->lineObject($rootLine);
@@ -502,4 +537,23 @@ class StatTreeController extends Controller
 
         return TRUE;
     }
+
+    public function refreshTreeCountQueries(Request $request)
+    {
+        $statTreeID = $request->get('statTreeID');
+        if (!$statTreeID) return $this->fail('No specified stat tree!');
+
+        $statTree = StatTree::where('id', $statTreeID)->first();
+        if (!$statTree) return $this->fail('Invalid stat tree!');
+        $lines = $statTree->lines;
+        foreach ($lines as $line) {
+            $query = $this->applyStatTreeLineQueryClauses($line);
+            if ($query) {
+                $line->last_refresh_count = $query[0]->count;
+                $line->save();
+            }
+        }
+
+        return $this->pass();
+    }
 }

+ 0 - 19
app/Http/Controllers/StatTreeLineController.php

@@ -103,25 +103,6 @@ class StatTreeLineController extends Controller
         return view('app.stat-tree.stat-tree-lines.view-data', compact('line', 'rows', 'columns'));
     }
 
-    public function refreshTreeCountQueries(Request $request)
-    {
-        $statTreeID = $request->get('statTreeID');
-        if (!$statTreeID) return $this->fail('No specified stat tree!');
-
-        $statTree = StatTree::where('id', $statTreeID)->first();
-        if (!$statTree) return $this->fail('Invalid stat tree!');
-        $lines = $statTree->lines;
-        foreach ($lines as $line) {
-            $query = $this->applyStatTreeLineQueryClauses($line);
-            if ($query) {
-                $line->last_refresh_count = $query[0]->count;
-                $line->save();
-            }
-        }
-
-        return $this->pass();
-    }
-
     public function refreshCountQuery(Request $request)
     {
         $statTreeLineID = $request->get('statTreeLineID');

+ 2 - 3
resources/views/app/stat-tree/stat-trees/sub/edit.blade.php

@@ -378,6 +378,7 @@
                         this.el = $('#stat-tree-view-{{$statTree->id}}');
 
                         // get data
+                        showMask();
                         $.get('{{ route('practice-management.statTrees.view.linesJSON', $statTree) }}', _data => {
 
                             // init tree with data
@@ -464,7 +465,7 @@
                                         "state"
                                     ]
                                 });
-                        }, 'json');
+                        }, 'json').then(hideMask);
                     },
 
                     dropVisualize: function() {
@@ -883,8 +884,6 @@
                 StatTree.load();
                 initMoes();
 
-                //$('#refresh-counts').trigger('click');
-
                 addMCHook('reloadClausesTree', function() {
                     ClausesTree.load();
                 });

+ 1 - 1
routes/web.php

@@ -359,7 +359,7 @@ Route::middleware('pro.auth')->group(function () {
                 Route::post('refresh-count', 'StatTreeController@refreshCount')->name('refreshCount');
                 Route::post('replace-all-lines', 'StatTreeController@replaceAllLines')->name('replaceAllLines');
                 Route::post('replace-all-lines-json', 'StatTreeController@replaceAllLinesJSON')->name('replaceAllLinesJSON');
-                Route::post('refresh-tree-count-queries', 'StatTreeLineController@refreshTreeCountQueries')->name('refreshTreeCountQueries');
+                Route::post('refresh-tree-count-queries', 'StatTreeController@refreshTreeCountQueries')->name('refreshTreeCountQueries');
             });
 
             //Stat Tree Line