Vijayakrishnan пре 3 година
родитељ
комит
9fac1c8076

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

@@ -90,6 +90,24 @@ class StatTreeLineController extends Controller
         ]);
     }
 
+    public function viewData(Request $request, StatTreeLine $line) {
+        $rows = [];
+        $columns = [];
+        $selectColumns = [];
+        foreach ($line->reportColumns as $reportColumn) {
+            $columns[] = [
+                "label" => $reportColumn->label,
+                "column" => $reportColumn->display_key,
+                "as" => "v_{$reportColumn->id}"
+            ];
+            $selectColumns[] = "{$reportColumn->display_key} as v_{$reportColumn->id}";
+        }
+        if(count($line->reportColumns)) {
+            $rows = $this->queryStatTreeLineData($line, $selectColumns);
+        }
+        return view('app.stat-tree.stat-tree-lines.view-data', compact('line', 'rows', 'columns'));
+    }
+
     public function refreshTreeCountQueries(Request $request)
     {
         $statTreeID = $request->get('statTreeID');
@@ -156,6 +174,38 @@ class StatTreeLineController extends Controller
         return DB::select($query);
     }
 
+    protected function queryStatTreeLineData(StatTreeLine $statTreeLine, $selectColumns)
+    {
+
+
+
+        $model = $statTreeLine->statTree->model;
+        // $query = null;
+        // if (strcasecmp($model, 'client') == 0) {
+        //     $query = Client::query();
+        // }
+        // if (strcasecmp($model, 'pro') == 0) {
+        //     $query = Pro::query();
+        // }
+        // if (!$query) return null;
+
+
+
+
+        $clauses = [];
+        foreach ($statTreeLine->lineClauses as $lineClause) {
+            $clauseText = $lineClause->clause->clause_text;
+            $isValid = $this->cleanupClause($clauseText);
+            if ($isValid) {
+                array_push($clauses, $clauseText);
+            }
+        }
+
+        $query = 'SELECT ' . implode(", ", $selectColumns) . ' FROM '.$model.' WHERE '. implode(" AND ", $clauses);
+
+        return DB::select($query);
+    }
+
     protected function cleanupClause($clauseText)
     {
         //Dont include empty clauses, i.e ()

+ 27 - 0
resources/views/app/stat-tree/stat-tree-lines/view-data.blade.php

@@ -0,0 +1,27 @@
+<div class="mcp-theme-1 p-3 border-top mt-3">
+    @if(!count($columns))
+        <div class="text-secondary">
+            <i class="fa fa-exclamation-triangle"></i>
+            Report columns not configured for this report!
+        </div>
+    @else
+        <table class="table table-sm table-striped table-bordered">
+            <thead>
+            <tr>
+                @foreach($columns as $column)
+                <th class="border-bottom-0 text-left">{{$column['label']}}</th>
+                @endforeach
+            </tr>
+            </thead>
+            <tbody>
+            @foreach($rows as $row)
+                <tr>
+                    @foreach($columns as $column)
+                        <td>{{ $row->{$column['as']} }}</td>
+                    @endforeach
+                </tr>
+            @endforeach
+            </tbody>
+        </table>
+    @endif
+</div>

+ 13 - 29
resources/views/app/stat-tree/stat-trees/sub/edit.blade.php

@@ -132,10 +132,8 @@
 
                 function onSelected(_e, _data) {
                     let selected = selectedNode();
-                    // if(!selected.is('[data-line-uid]')) {
-                    //     $('#report-column').text('Node not saved yet!');
-                    //     return;
-                    // }
+
+                    localStorage.selectedSTNode_{{$statTree->id}} = selected.closest('li').attr('id');
 
                     let rptColumn = $('#report-column');
                     rptColumn.find('[line-label]').text(selected.find('>span').first().text());
@@ -163,29 +161,6 @@
                         }
                     }
 
-                    /*$.post('/practice-management/stat-tree-lines/report-columns', {
-                        uid:
-                        columns: JSON.stringify(columns)
-                    }, _data => {
-                        rptColumn.html(_data);
-                        initMoes();
-                        initStagSuggest();
-                        rptColumn.find('input[stag-suggest][name="displayKey"]')
-                            .off('stag-suggest-selected')
-                            .on('stag-suggest-selected', (_e, _input, _data) => {
-                                $.post("{{ route('practice-management.api.statTreeLineReportColumn.create') }}", {
-                                    _token: '{{csrf_token()}}',
-                                    statTreeLineId: $(_input).attr('data-line-id'),
-                                    label: _data.label,
-                                    displayKey: _data.text,
-                                }, function (response) {
-                                    if(!hasResponseError(response)) {
-                                        onSelected()
-                                    }
-                                }, 'json');
-                                return false;
-                            });
-                    });*/
                 }
 
                 $('#stat-tree-view-{{$statTree->id}}')
@@ -206,7 +181,12 @@
                                     "data": {
                                         "label": "<span class='text-sm'>View Data</span>",
                                         "action": function (obj) {
-
+                                            let uid = $(obj.reference).find('>div.stat-tree-line').attr('data-line-uid');
+                                            openDynamicStagPopup('/practice-management/stat-tree-lines/view-data/' + uid,
+                                                null,
+                                                $(obj.reference).find('>div.stat-tree-line>span').first().text(),
+                                                false,
+                                                'medium');
                                         },
                                     },
                                     "remove": {
@@ -308,7 +288,7 @@
                             statTreeID: "{{ $statTree->id }}"
                         }, function (response) {
                             if(!hasResponseError(response)) {
-                                fastReload()
+                                fastLoad("{{ route('practice-management.statTrees.view.dashboard', $statTree) }}");
                             }
                         }, 'json');
                         return false;
@@ -358,6 +338,10 @@
                     });
 
                 initMoes();
+
+                if(localStorage.selectedSTNode_{{$statTree->id}}) {
+                    $('#stat-tree-view-{{$statTree->id}}>ul').jstree('select_node', localStorage.selectedSTNode_{{$statTree->id}});
+                }
             }
             addMCInitializer('stat-tree-edit-page', init, '#statTreeEdit')
         }).call(window);

+ 1 - 0
routes/web.php

@@ -329,6 +329,7 @@ Route::middleware('pro.auth')->group(function () {
                 Route::get('', 'StatTreeLineController@dashboard')->name('dashboard');
             });
             Route::post('report-columns/{line}', 'StatTreeLineController@reportColumns')->name('report-columns');
+            Route::get('view-data/{line}', 'StatTreeLineController@viewData')->name('view-data');
         });