瀏覽代碼

defer report initial page load upon visiting

3.x
Andrew Wallo 1 年之前
父節點
當前提交
b659464b4d

+ 8
- 3
app/Filament/Company/Pages/Reports/BaseReportPage.php 查看文件

@@ -41,6 +41,8 @@ abstract class BaseReportPage extends Page
41 41
 
42 42
     public Company $company;
43 43
 
44
+    public bool $reportLoaded = false;
45
+
44 46
     #[Session]
45 47
     public array $toggledTableColumns = [];
46 48
 
@@ -63,8 +65,6 @@ abstract class BaseReportPage extends Page
63 65
 
64 66
         $this->loadDefaultDateRange();
65 67
 
66
-        $this->loadReportData();
67
-
68 68
         $this->loadDefaultTableColumnToggleState();
69 69
     }
70 70
 
@@ -94,6 +94,7 @@ abstract class BaseReportPage extends Page
94 94
     public function loadReportData(): void
95 95
     {
96 96
         unset($this->report);
97
+        $this->reportLoaded = true;
97 98
     }
98 99
 
99 100
     protected function loadDefaultTableColumnToggleState(): void
@@ -142,8 +143,12 @@ abstract class BaseReportPage extends Page
142 143
     }
143 144
 
144 145
     #[Computed(persist: true)]
145
-    public function report(): ExportableReport
146
+    public function report(): ?ExportableReport
146 147
     {
148
+        if ($this->reportLoaded === false) {
149
+            return null;
150
+        }
151
+
147 152
         $columns = $this->getToggledColumns();
148 153
         $reportDTO = $this->buildReport($columns);
149 154
 

+ 4
- 2
resources/views/filament/company/pages/reports/detailed-report.blade.php 查看文件

@@ -17,14 +17,16 @@
17 17
                 </form>
18 18
             </div>
19 19
             <div class="divide-y divide-gray-200 overflow-x-auto overflow-y-hidden dark:divide-white/10 dark:border-t-white/10">
20
-                <div class="flex items-center justify-center">
20
+                <div wire:init="loadReportData" class="flex items-center justify-center">
21 21
                     <div wire:loading.delay wire:target="loadReportData">
22 22
                         <x-filament::loading-indicator class="p-6 text-primary-700 dark:text-primary-300" />
23 23
                     </div>
24 24
                 </div>
25 25
 
26 26
                 <div wire:loading.remove wire:target="loadReportData">
27
-                    <x-company.tables.reports.detailed-report :report="$this->report" />
27
+                    @if($this->report)
28
+                        <x-company.tables.reports.detailed-report :report="$this->report" />
29
+                    @endif
28 30
                 </div>
29 31
             </div>
30 32
             <div class="es-table__footer-ctn border-t border-gray-200"></div>

Loading…
取消
儲存