Browse Source

Stat trees - support USER clause arg values

Vijayakrishnan 3 years ago
parent
commit
395463f708

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

@@ -228,6 +228,12 @@ class StatTreeLineController extends Controller
                 $value = null;
                 foreach ($lineClause->lineClauseArgs as $lineClauseArg) {
                     if($lineClauseArg->clause_arg_id === $clauseArg->id) {
+
+                        // if there is a query-line override, give that priority
+                        if($request->input('st_' . $clauseArg->arg_text)) {
+                            $lineClauseArg->value = $request->input('st_' . $clauseArg->arg_text);
+                        }
+
                         $value = $lineClauseArg->value;
                     }
                 }

+ 20 - 1
resources/views/app/stat-tree/stat-tree-lines/view-data-inline.blade.php

@@ -11,6 +11,9 @@
                 Report columns not configured for this report!
             </div>
         @else
+            <?php
+            $userClauseArgs = [];
+            ?>
             <div class="mb-2 d-flex flex-wrap">
                 @foreach($line->lineClauses as $lineClause)
                     <div class="border rounded px-2 py-1 mr-2 bg-light clause-label-part">{{$lineClause->clause_label}}
@@ -20,6 +23,9 @@
                             foreach($lineClause->lineClauseArgs as $lineClauseArg) {
                                 $argLabel = $lineClauseArg->clauseArg->arg_text . ': ' . $lineClauseArg->value;
                                 $argsLabel[] = $argLabel;
+                                if($lineClauseArg->access_level === 'USER') {
+                                    $userClauseArgs[] = $lineClauseArg->clauseArg->arg_text;
+                                }
                             }
                             ?>
                             [{{implode(', ', $argsLabel)}}]
@@ -29,8 +35,21 @@
             </div>
 
             <!-- filters -->
-            <a href="#" class="toggle-filters" onclick="$('#view-data-filters-form').toggle(); return false;">Toggle Filter</a>
+            <a href="#" class="toggle-filters d-block mb-2" onclick="$('#view-data-filters-form').toggle(); return false;">Toggle Filter</a>
             <form action="" id="view-data-filters-form" onsubmit="return false;">
+
+                @if(count($userClauseArgs))
+                    <div class="px-2 pt-2 border bg-light">
+                        <div class="font-weight-bold text-secondary mb-2">Override Arguments</div>
+                        @foreach($userClauseArgs as $userClauseArg)
+                            <div class="d-flex align-items-baseline mb-2">
+                                <label class="m-0 width-70px">{{$userClauseArg}}</label>
+                                <input type="text" class="form-control form-control-sm min-width-unset flex-grow-1" name="st_{{$userClauseArg}}" value="{{request()->input('st_' . $userClauseArg)}}">
+                            </div>
+                        @endforeach
+                    </div>
+                @endif
+
                 <input type="hidden" name="sort_by" value="{{request()->input('sort_by')}}">
                 <input type="hidden" name="sort_dir" value="{{request()->input('sort_dir')}}">
                 <table class="table table-sm table-striped table-bordered mb-0 mt-2 bg-aliceblue">

+ 24 - 5
resources/views/app/stat-tree/stat-tree-lines/view-data.blade.php

@@ -11,6 +11,9 @@
                 Report columns not configured for this report!
             </div>
         @else
+            <?php
+            $userClauseArgs = [];
+            ?>
             <div class="mb-2 d-flex flex-wrap">
                 @foreach($line->lineClauses as $lineClause)
                     <div class="border rounded px-2 py-1 mr-2 bg-light clause-label-part">{{$lineClause->clause_label}}
@@ -20,6 +23,9 @@
                             foreach($lineClause->lineClauseArgs as $lineClauseArg) {
                                 $argLabel = $lineClauseArg->clauseArg->arg_text . ': ' . $lineClauseArg->value;
                                 $argsLabel[] = $argLabel;
+                                if($lineClauseArg->access_level === 'USER') {
+                                    $userClauseArgs[] = $lineClauseArg->clauseArg->arg_text;
+                                }
                             }
                             ?>
                             [{{implode(', ', $argsLabel)}}]
@@ -29,8 +35,21 @@
             </div>
 
             <!-- filters -->
-            <a href="#" class="toggle-filters" onclick="$('#view-data-filters-form').toggle(); return false;">Toggle Filter</a>
-            <form action="" id="view-data-filters-form">
+            <a href="#" class="toggle-filters d-block mb-2" onclick="$('#view-data-filters-form').toggle(); return false;">Toggle Filter</a>
+            <form action="" id="view-data-filters-form" onsubmit="return false;">
+
+                @if(count($userClauseArgs))
+                    <div class="px-2 pt-2 border bg-light">
+                        <div class="font-weight-bold text-secondary mb-2">Override Arguments</div>
+                        @foreach($userClauseArgs as $userClauseArg)
+                            <div class="d-flex align-items-baseline mb-2">
+                                <label class="m-0 width-70px">{{$userClauseArg}}</label>
+                                <input type="text" class="form-control form-control-sm min-width-unset flex-grow-1" name="st_{{$userClauseArg}}" value="{{request()->input('st_' . $userClauseArg)}}">
+                            </div>
+                        @endforeach
+                    </div>
+                @endif
+
                 <input type="hidden" name="sort_by" value="{{request()->input('sort_by')}}">
                 <input type="hidden" name="sort_dir" value="{{request()->input('sort_dir')}}">
                 <table class="table table-sm table-striped table-bordered mb-0 mt-2 bg-aliceblue">
@@ -38,9 +57,9 @@
                         <?php $lastColumnRendered = false; ?>
                         @foreach($columns as $column)
                             <tr>
-                                <th class="border-bottom-0 width-150px font-weight-normal text-nowrap {{request()->input($column['as'] . '_op') ? 'font-weight-bold text-info' : ''}}">{{$column['label']}}</th>
+                                <th class="border-bottom-0 width-150px font-weight-normal align-middle text-nowrap {{request()->input($column['as'] . '_op') ? 'font-weight-bold text-info' : ''}}">{{$column['label']}}</th>
 
-                                <th class="border-bottom-0 width-150px p-0">
+                                <th class="border-bottom-0 width-150px p-0 align-middle">
                                     <select class="form-control form-control-sm min-width-unset border-0 rounded-0 shadow-none" name="{{$column['as']}}_op">
                                         <option value="">-- select --</option>
                                         <?php
@@ -84,7 +103,7 @@
                                     </select>
                                 </th>
 
-                                <th class="border-bottom-0 p-0">
+                                <th class="border-bottom-0 p-0 align-middle">
                                     <div class="d-flex align-items-center">
                                     <?php
                                     switch($column['type']) {