Quellcode durchsuchen

feat: dashboard

Muhammad Iqbal Afandi vor 4 Jahren
Ursprung
Commit
906c772043
42 geänderte Dateien mit 15641 neuen und 32 gelöschten Zeilen
  1. 66
    0
      app/Http/Controllers/DashboardController.php
  2. 1
    1
      app/Models/Expense.php
  3. 18
    0
      app/Services/ExpenseService.php
  4. 7
    7
      jsconfig.json
  5. 5
    0
      lang/en/messages.php
  6. 8
    0
      lang/en/words.php
  7. 8
    0
      lang/id/words.php
  8. 1
    1
      package.json
  9. 13345
    0
      public/js/node_modules_chart_js_auto_auto_esm_js.js
  10. 16
    0
      public/js/resources_js_pages_customer_Create_vue.js
  11. 16
    0
      public/js/resources_js_pages_customer_Edit_vue.js
  12. 16
    0
      public/js/resources_js_pages_customer_Index_vue.js
  13. 16
    0
      public/js/resources_js_pages_discount_Index_vue.js
  14. 16
    0
      public/js/resources_js_pages_expense_Create_vue.js
  15. 16
    0
      public/js/resources_js_pages_expense_Index_vue.js
  16. 16
    0
      public/js/resources_js_pages_expense_Show_vue.js
  17. 1508
    0
      public/js/resources_js_pages_home_Index_vue.js
  18. 16
    0
      public/js/resources_js_pages_laundry_Create_vue.js
  19. 16
    0
      public/js/resources_js_pages_laundry_Edit_vue.js
  20. 16
    0
      public/js/resources_js_pages_laundry_Index_vue.js
  21. 16
    0
      public/js/resources_js_pages_mutation_Report_vue.js
  22. 16
    0
      public/js/resources_js_pages_outlet_Create_vue.js
  23. 16
    0
      public/js/resources_js_pages_outlet_Edit_vue.js
  24. 16
    0
      public/js/resources_js_pages_outlet_Index_vue.js
  25. 16
    0
      public/js/resources_js_pages_product_Create_vue.js
  26. 16
    0
      public/js/resources_js_pages_product_Edit_vue.js
  27. 16
    0
      public/js/resources_js_pages_product_Index_vue.js
  28. 16
    0
      public/js/resources_js_pages_transaction_Create_vue.js
  29. 16
    0
      public/js/resources_js_pages_transaction_Index_vue.js
  30. 16
    0
      public/js/resources_js_pages_transaction_Report_vue.js
  31. 16
    0
      public/js/resources_js_pages_transaction_Show_vue.js
  32. 16
    0
      public/js/resources_js_pages_user_Create_vue.js
  33. 16
    0
      public/js/resources_js_pages_user_Edit_vue.js
  34. 16
    0
      public/js/resources_js_pages_user_Index_vue.js
  35. 16
    0
      public/js/resources_js_pages_user_Show_vue.js
  36. 191
    17
      public/js/vue.js
  37. 64
    0
      resources/js/pages/home/Index.vue
  38. 4
    0
      resources/js/utils/menu-admin.js
  39. 4
    0
      resources/js/utils/menu.js
  40. 2
    0
      resources/js/vue.js
  41. 4
    1
      routes/web.php
  42. 5
    5
      yarn.lock

+ 66
- 0
app/Http/Controllers/DashboardController.php Datei anzeigen

@@ -0,0 +1,66 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers;
4
+
5
+use App\Models\Expense;
6
+use App\Models\Laundry;
7
+use App\Models\Product;
8
+use App\Models\Transaction;
9
+use App\Services\ExpenseService;
10
+use App\Services\TransactionService;
11
+use Illuminate\Http\Request;
12
+use Inertia\Inertia;
13
+
14
+class DashboardController extends Controller
15
+{
16
+    /**
17
+     * Handle the incoming request.
18
+     *
19
+     * @param  \Illuminate\Http\Request  $request
20
+     * @return \Inertia\Response
21
+     */
22
+    public function __invoke(Request $request)
23
+    {
24
+        $transactions = Transaction::filter(['startDate' => today()])->get();
25
+        $expenses = Expense::filter(['startDate' => today()])->get();
26
+        $laundries = Laundry::get();
27
+        $products = Product::get();
28
+
29
+        return inertia('home/Index', [
30
+            'cardStatistics' => [
31
+                [
32
+                    'label' => __('words.transaction'),
33
+                    'icon' => 'pi pi-shopping-cart',
34
+                    'amount' => $transactions->count(),
35
+                    'amountLabel' => __('words.today'),
36
+                    'value' => (new TransactionService)->totalPriceGroupAsString($transactions),
37
+                ],
38
+                [
39
+                    'label' => __('words.expense'),
40
+                    'icon' => 'pi pi-wallet',
41
+                    'amount' => $expenses->count(),
42
+                    'amountLabel' => __('words.today'),
43
+                    'value' => (new ExpenseService)->totalPriceAsString($expenses),
44
+                ],
45
+                [
46
+                    'label' => __('words.laundry_type'),
47
+                    'icon' => 'pi pi-table',
48
+                    'amountLabel' => __('words.total'),
49
+                    'amount' => $laundries->count(),
50
+                ],
51
+                [
52
+                    'label' => __('words.product_type'),
53
+                    'icon' => 'pi pi-table',
54
+                    'amountLabel' => __('words.total'),
55
+                    'amount' => $products->count(),
56
+                ],
57
+            ],
58
+            'chartStatistics' => [
59
+                [
60
+                    'label' => __('words.transaction_statistic'),
61
+                    'data' => $transactions->groupBy([])
62
+                ],
63
+            ],
64
+        ]);
65
+    }
66
+}

+ 1
- 1
app/Models/Expense.php Datei anzeigen

@@ -32,7 +32,7 @@ class Expense extends Model
32 32
     protected function amount(): Attribute
33 33
     {
34 34
         return Attribute::make(
35
-            get:fn($value) => (new CurrencyFormatService)->setRupiahFormat(-$value, true)
35
+            get:fn($value) => (new CurrencyFormatService)->setRupiahFormat($value, true)
36 36
         );
37 37
     }
38 38
 

+ 18
- 0
app/Services/ExpenseService.php Datei anzeigen

@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+namespace App\Services;
4
+
5
+use Illuminate\Database\Eloquent\Collection;
6
+
7
+class ExpenseService extends CurrencyFormatService
8
+{
9
+    public function totalPrice(Collection $collections)
10
+    {
11
+        return $collections->sum(fn($collection) => $collection->getRawOriginal('amount'));
12
+    }
13
+
14
+    public function totalPriceAsString(Collection $collection)
15
+    {
16
+        return (new CurrencyFormatService)->setRupiahFormat($this->totalPrice($collection), true);
17
+    }
18
+}

+ 7
- 7
jsconfig.json Datei anzeigen

@@ -1,9 +1,9 @@
1 1
 {
2
-    "compilerOptions": {
3
-        "baseUrl": ".",
4
-        "paths": {
5
-            "@/*": ["resources/js/*"]
6
-        }
7
-    },
8
-    "exclude": ["node_modules", "public"]
2
+  "compilerOptions": {
3
+    "baseUrl": ".",
4
+    "paths": {
5
+      "@/*": ["resources/js/*"]
6
+    }
7
+  },
8
+  "exclude": ["node_modules", "public"]
9 9
 }

+ 5
- 0
lang/en/messages.php Datei anzeigen

@@ -29,24 +29,29 @@ return [
29 29
             'customer' => 'Customer Account successfully added',
30 30
             'outlet' => 'Outlet Data successfully added',
31 31
             'laundry' => 'Laundry Data successfully added',
32
+            'product' => 'Product Data successfully added',
32 33
         ],
33 34
         'update' => [
35
+            'change-password' => 'Password successfully changed',
34 36
             'transaction_status' => 'Transaction Status successfully changed',
35 37
             'user' => 'User Account successfully changed',
36 38
             'customer' => 'User Customer successfully changed',
37 39
             'outlet' => 'Outlet Data successfully changed',
38 40
             'laundry' => 'Laundry Data successfully changed',
41
+            'laundry' => 'Product Data successfully changed',
39 42
         ],
40 43
         'destroy' => [
41 44
             'user' => 'User Account successfully deleted',
42 45
             'customer' => 'User Customer successfully deleted',
43 46
             'outlet' => 'Outlet Date successfully deleted',
44 47
             'laundry' => 'Laundry Data successfully deleted',
48
+            'laundry' => 'Product Data successfully deleted',
45 49
         ],
46 50
     ],
47 51
 
48 52
     'error' => [
49 53
         'store' => [
54
+            'change-password' => 'Password invalid',
50 55
             'expense' => 'Expense failed to be added',
51 56
             'transaction' => 'Transaction failed to be added',
52 57
         ],

+ 8
- 0
lang/en/words.php Datei anzeigen

@@ -17,5 +17,13 @@ return [
17 17
     'female' => 'Female',
18 18
     'income' => 'Income',
19 19
     'expense' => 'Expense',
20
+    'today' => 'Today',
21
+    'total' => 'Total',
22
+    'transaction' => 'Transaction',
23
+    'expense' => 'Expense',
24
+    'laundry_type' => 'Laundry Type',
25
+    'product_type' => 'Product Type',
26
+    'transaction_statistic' => 'Transaction Statistic',
27
+    'expense_statistic' => 'Expense Statistic',
20 28
 
21 29
 ];

+ 8
- 0
lang/id/words.php Datei anzeigen

@@ -17,5 +17,13 @@ return [
17 17
     'female' => 'Perempuan',
18 18
     'income' => 'Pendapatan',
19 19
     'expense' => 'Pengeluaran',
20
+    'today' => 'Hari ini',
21
+    'total' => 'Total',
22
+    'transaction' => 'Transaksi',
23
+    'expense' => 'Pengeluaran',
24
+    'laundry_type' => 'Jenis Laundry',
25
+    'product_type' => 'Jenis Product',
26
+    'transaction_statistic' => 'Statistik Transaksi',
27
+    'expense_statistic' => 'Statistik Pengeluaran',
20 28
 
21 29
 ];

+ 1
- 1
package.json Datei anzeigen

@@ -17,8 +17,8 @@
17 17
     "axios": "^0.25",
18 18
     "browser-sync": "^2.27.7",
19 19
     "browser-sync-webpack-plugin": "^2.3.0",
20
+    "chart.js": "^3.7.1",
20 21
     "dayjs": "^1.11.0",
21
-    "install": "^0.13.0",
22 22
     "laravel-mix": "^6.0.6",
23 23
     "lodash": "^4.17.19",
24 24
     "postcss": "^8.1.14",

+ 13345
- 0
public/js/node_modules_chart_js_auto_auto_esm_js.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 16
- 0
public/js/resources_js_pages_customer_Create_vue.js Datei anzeigen

@@ -1275,6 +1275,14 @@ __webpack_require__.r(__webpack_exports__);
1275 1275
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1276 1276
 /* harmony export */ });
1277 1277
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1278
+  label: 'Home',
1279
+  items: [{
1280
+    label: 'Dashboard',
1281
+    icon: 'pi pi-home',
1282
+    to: '/dashboards',
1283
+    component: 'home/Index'
1284
+  }]
1285
+}, {
1278 1286
   label: 'Menu',
1279 1287
   items: [{
1280 1288
     label: 'Transaksi',
@@ -1352,6 +1360,14 @@ __webpack_require__.r(__webpack_exports__);
1352 1360
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1353 1361
 /* harmony export */ });
1354 1362
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1363
+  label: 'Home',
1364
+  items: [{
1365
+    label: 'Dashboard',
1366
+    icon: 'pi pi-home',
1367
+    to: '/dashboards',
1368
+    component: 'home/Index'
1369
+  }]
1370
+}, {
1355 1371
   label: 'Menu',
1356 1372
   items: [{
1357 1373
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_customer_Edit_vue.js Datei anzeigen

@@ -1803,6 +1803,14 @@ __webpack_require__.r(__webpack_exports__);
1803 1803
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1804 1804
 /* harmony export */ });
1805 1805
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1806
+  label: 'Home',
1807
+  items: [{
1808
+    label: 'Dashboard',
1809
+    icon: 'pi pi-home',
1810
+    to: '/dashboards',
1811
+    component: 'home/Index'
1812
+  }]
1813
+}, {
1806 1814
   label: 'Menu',
1807 1815
   items: [{
1808 1816
     label: 'Transaksi',
@@ -1880,6 +1888,14 @@ __webpack_require__.r(__webpack_exports__);
1880 1888
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1881 1889
 /* harmony export */ });
1882 1890
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1891
+  label: 'Home',
1892
+  items: [{
1893
+    label: 'Dashboard',
1894
+    icon: 'pi pi-home',
1895
+    to: '/dashboards',
1896
+    component: 'home/Index'
1897
+  }]
1898
+}, {
1883 1899
   label: 'Menu',
1884 1900
   items: [{
1885 1901
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_customer_Index_vue.js Datei anzeigen

@@ -1237,6 +1237,14 @@ __webpack_require__.r(__webpack_exports__);
1237 1237
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1238 1238
 /* harmony export */ });
1239 1239
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1240
+  label: 'Home',
1241
+  items: [{
1242
+    label: 'Dashboard',
1243
+    icon: 'pi pi-home',
1244
+    to: '/dashboards',
1245
+    component: 'home/Index'
1246
+  }]
1247
+}, {
1240 1248
   label: 'Menu',
1241 1249
   items: [{
1242 1250
     label: 'Transaksi',
@@ -1315,6 +1323,14 @@ __webpack_require__.r(__webpack_exports__);
1315 1323
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1316 1324
 /* harmony export */ });
1317 1325
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1326
+  label: 'Home',
1327
+  items: [{
1328
+    label: 'Dashboard',
1329
+    icon: 'pi pi-home',
1330
+    to: '/dashboards',
1331
+    component: 'home/Index'
1332
+  }]
1333
+}, {
1318 1334
   label: 'Menu',
1319 1335
   items: [{
1320 1336
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_discount_Index_vue.js Datei anzeigen

@@ -1150,6 +1150,14 @@ __webpack_require__.r(__webpack_exports__);
1150 1150
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1151 1151
 /* harmony export */ });
1152 1152
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1153
+  label: 'Home',
1154
+  items: [{
1155
+    label: 'Dashboard',
1156
+    icon: 'pi pi-home',
1157
+    to: '/dashboards',
1158
+    component: 'home/Index'
1159
+  }]
1160
+}, {
1153 1161
   label: 'Menu',
1154 1162
   items: [{
1155 1163
     label: 'Transaksi',
@@ -1227,6 +1235,14 @@ __webpack_require__.r(__webpack_exports__);
1227 1235
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1228 1236
 /* harmony export */ });
1229 1237
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1238
+  label: 'Home',
1239
+  items: [{
1240
+    label: 'Dashboard',
1241
+    icon: 'pi pi-home',
1242
+    to: '/dashboards',
1243
+    component: 'home/Index'
1244
+  }]
1245
+}, {
1230 1246
   label: 'Menu',
1231 1247
   items: [{
1232 1248
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_expense_Create_vue.js Datei anzeigen

@@ -1315,6 +1315,14 @@ __webpack_require__.r(__webpack_exports__);
1315 1315
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1316 1316
 /* harmony export */ });
1317 1317
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1318
+  label: 'Home',
1319
+  items: [{
1320
+    label: 'Dashboard',
1321
+    icon: 'pi pi-home',
1322
+    to: '/dashboards',
1323
+    component: 'home/Index'
1324
+  }]
1325
+}, {
1318 1326
   label: 'Menu',
1319 1327
   items: [{
1320 1328
     label: 'Transaksi',
@@ -1392,6 +1400,14 @@ __webpack_require__.r(__webpack_exports__);
1392 1400
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1393 1401
 /* harmony export */ });
1394 1402
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1403
+  label: 'Home',
1404
+  items: [{
1405
+    label: 'Dashboard',
1406
+    icon: 'pi pi-home',
1407
+    to: '/dashboards',
1408
+    component: 'home/Index'
1409
+  }]
1410
+}, {
1395 1411
   label: 'Menu',
1396 1412
   items: [{
1397 1413
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_expense_Index_vue.js Datei anzeigen

@@ -1297,6 +1297,14 @@ __webpack_require__.r(__webpack_exports__);
1297 1297
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1298 1298
 /* harmony export */ });
1299 1299
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1300
+  label: 'Home',
1301
+  items: [{
1302
+    label: 'Dashboard',
1303
+    icon: 'pi pi-home',
1304
+    to: '/dashboards',
1305
+    component: 'home/Index'
1306
+  }]
1307
+}, {
1300 1308
   label: 'Menu',
1301 1309
   items: [{
1302 1310
     label: 'Transaksi',
@@ -1375,6 +1383,14 @@ __webpack_require__.r(__webpack_exports__);
1375 1383
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1376 1384
 /* harmony export */ });
1377 1385
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1386
+  label: 'Home',
1387
+  items: [{
1388
+    label: 'Dashboard',
1389
+    icon: 'pi pi-home',
1390
+    to: '/dashboards',
1391
+    component: 'home/Index'
1392
+  }]
1393
+}, {
1378 1394
   label: 'Menu',
1379 1395
   items: [{
1380 1396
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_expense_Show_vue.js Datei anzeigen

@@ -980,6 +980,14 @@ __webpack_require__.r(__webpack_exports__);
980 980
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
981 981
 /* harmony export */ });
982 982
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
983
+  label: 'Home',
984
+  items: [{
985
+    label: 'Dashboard',
986
+    icon: 'pi pi-home',
987
+    to: '/dashboards',
988
+    component: 'home/Index'
989
+  }]
990
+}, {
983 991
   label: 'Menu',
984 992
   items: [{
985 993
     label: 'Transaksi',
@@ -1057,6 +1065,14 @@ __webpack_require__.r(__webpack_exports__);
1057 1065
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1058 1066
 /* harmony export */ });
1059 1067
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1068
+  label: 'Home',
1069
+  items: [{
1070
+    label: 'Dashboard',
1071
+    icon: 'pi pi-home',
1072
+    to: '/dashboards',
1073
+    component: 'home/Index'
1074
+  }]
1075
+}, {
1060 1076
   label: 'Menu',
1061 1077
   items: [{
1062 1078
     label: 'Transaksi',

+ 1508
- 0
public/js/resources_js_pages_home_Index_vue.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 16
- 0
public/js/resources_js_pages_laundry_Create_vue.js Datei anzeigen

@@ -1287,6 +1287,14 @@ __webpack_require__.r(__webpack_exports__);
1287 1287
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1288 1288
 /* harmony export */ });
1289 1289
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1290
+  label: 'Home',
1291
+  items: [{
1292
+    label: 'Dashboard',
1293
+    icon: 'pi pi-home',
1294
+    to: '/dashboards',
1295
+    component: 'home/Index'
1296
+  }]
1297
+}, {
1290 1298
   label: 'Menu',
1291 1299
   items: [{
1292 1300
     label: 'Transaksi',
@@ -1364,6 +1372,14 @@ __webpack_require__.r(__webpack_exports__);
1364 1372
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1365 1373
 /* harmony export */ });
1366 1374
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1375
+  label: 'Home',
1376
+  items: [{
1377
+    label: 'Dashboard',
1378
+    icon: 'pi pi-home',
1379
+    to: '/dashboards',
1380
+    component: 'home/Index'
1381
+  }]
1382
+}, {
1367 1383
   label: 'Menu',
1368 1384
   items: [{
1369 1385
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_laundry_Edit_vue.js Datei anzeigen

@@ -1562,6 +1562,14 @@ __webpack_require__.r(__webpack_exports__);
1562 1562
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1563 1563
 /* harmony export */ });
1564 1564
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1565
+  label: 'Home',
1566
+  items: [{
1567
+    label: 'Dashboard',
1568
+    icon: 'pi pi-home',
1569
+    to: '/dashboards',
1570
+    component: 'home/Index'
1571
+  }]
1572
+}, {
1565 1573
   label: 'Menu',
1566 1574
   items: [{
1567 1575
     label: 'Transaksi',
@@ -1639,6 +1647,14 @@ __webpack_require__.r(__webpack_exports__);
1639 1647
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1640 1648
 /* harmony export */ });
1641 1649
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1650
+  label: 'Home',
1651
+  items: [{
1652
+    label: 'Dashboard',
1653
+    icon: 'pi pi-home',
1654
+    to: '/dashboards',
1655
+    component: 'home/Index'
1656
+  }]
1657
+}, {
1642 1658
   label: 'Menu',
1643 1659
   items: [{
1644 1660
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_laundry_Index_vue.js Datei anzeigen

@@ -1216,6 +1216,14 @@ __webpack_require__.r(__webpack_exports__);
1216 1216
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1217 1217
 /* harmony export */ });
1218 1218
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1219
+  label: 'Home',
1220
+  items: [{
1221
+    label: 'Dashboard',
1222
+    icon: 'pi pi-home',
1223
+    to: '/dashboards',
1224
+    component: 'home/Index'
1225
+  }]
1226
+}, {
1219 1227
   label: 'Menu',
1220 1228
   items: [{
1221 1229
     label: 'Transaksi',
@@ -1294,6 +1302,14 @@ __webpack_require__.r(__webpack_exports__);
1294 1302
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1295 1303
 /* harmony export */ });
1296 1304
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1305
+  label: 'Home',
1306
+  items: [{
1307
+    label: 'Dashboard',
1308
+    icon: 'pi pi-home',
1309
+    to: '/dashboards',
1310
+    component: 'home/Index'
1311
+  }]
1312
+}, {
1297 1313
   label: 'Menu',
1298 1314
   items: [{
1299 1315
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_mutation_Report_vue.js Datei anzeigen

@@ -1315,6 +1315,14 @@ __webpack_require__.r(__webpack_exports__);
1315 1315
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1316 1316
 /* harmony export */ });
1317 1317
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1318
+  label: 'Home',
1319
+  items: [{
1320
+    label: 'Dashboard',
1321
+    icon: 'pi pi-home',
1322
+    to: '/dashboards',
1323
+    component: 'home/Index'
1324
+  }]
1325
+}, {
1318 1326
   label: 'Menu',
1319 1327
   items: [{
1320 1328
     label: 'Transaksi',
@@ -1393,6 +1401,14 @@ __webpack_require__.r(__webpack_exports__);
1393 1401
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1394 1402
 /* harmony export */ });
1395 1403
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1404
+  label: 'Home',
1405
+  items: [{
1406
+    label: 'Dashboard',
1407
+    icon: 'pi pi-home',
1408
+    to: '/dashboards',
1409
+    component: 'home/Index'
1410
+  }]
1411
+}, {
1396 1412
   label: 'Menu',
1397 1413
   items: [{
1398 1414
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_outlet_Create_vue.js Datei anzeigen

@@ -1198,6 +1198,14 @@ __webpack_require__.r(__webpack_exports__);
1198 1198
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1199 1199
 /* harmony export */ });
1200 1200
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1201
+  label: 'Home',
1202
+  items: [{
1203
+    label: 'Dashboard',
1204
+    icon: 'pi pi-home',
1205
+    to: '/dashboards',
1206
+    component: 'home/Index'
1207
+  }]
1208
+}, {
1201 1209
   label: 'Menu',
1202 1210
   items: [{
1203 1211
     label: 'Transaksi',
@@ -1275,6 +1283,14 @@ __webpack_require__.r(__webpack_exports__);
1275 1283
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1276 1284
 /* harmony export */ });
1277 1285
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1286
+  label: 'Home',
1287
+  items: [{
1288
+    label: 'Dashboard',
1289
+    icon: 'pi pi-home',
1290
+    to: '/dashboards',
1291
+    component: 'home/Index'
1292
+  }]
1293
+}, {
1278 1294
   label: 'Menu',
1279 1295
   items: [{
1280 1296
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_outlet_Edit_vue.js Datei anzeigen

@@ -1250,6 +1250,14 @@ __webpack_require__.r(__webpack_exports__);
1250 1250
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1251 1251
 /* harmony export */ });
1252 1252
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1253
+  label: 'Home',
1254
+  items: [{
1255
+    label: 'Dashboard',
1256
+    icon: 'pi pi-home',
1257
+    to: '/dashboards',
1258
+    component: 'home/Index'
1259
+  }]
1260
+}, {
1253 1261
   label: 'Menu',
1254 1262
   items: [{
1255 1263
     label: 'Transaksi',
@@ -1327,6 +1335,14 @@ __webpack_require__.r(__webpack_exports__);
1327 1335
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1328 1336
 /* harmony export */ });
1329 1337
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1338
+  label: 'Home',
1339
+  items: [{
1340
+    label: 'Dashboard',
1341
+    icon: 'pi pi-home',
1342
+    to: '/dashboards',
1343
+    component: 'home/Index'
1344
+  }]
1345
+}, {
1330 1346
   label: 'Menu',
1331 1347
   items: [{
1332 1348
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_outlet_Index_vue.js Datei anzeigen

@@ -1217,6 +1217,14 @@ __webpack_require__.r(__webpack_exports__);
1217 1217
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1218 1218
 /* harmony export */ });
1219 1219
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1220
+  label: 'Home',
1221
+  items: [{
1222
+    label: 'Dashboard',
1223
+    icon: 'pi pi-home',
1224
+    to: '/dashboards',
1225
+    component: 'home/Index'
1226
+  }]
1227
+}, {
1220 1228
   label: 'Menu',
1221 1229
   items: [{
1222 1230
     label: 'Transaksi',
@@ -1295,6 +1303,14 @@ __webpack_require__.r(__webpack_exports__);
1295 1303
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1296 1304
 /* harmony export */ });
1297 1305
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1306
+  label: 'Home',
1307
+  items: [{
1308
+    label: 'Dashboard',
1309
+    icon: 'pi pi-home',
1310
+    to: '/dashboards',
1311
+    component: 'home/Index'
1312
+  }]
1313
+}, {
1298 1314
   label: 'Menu',
1299 1315
   items: [{
1300 1316
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_product_Create_vue.js Datei anzeigen

@@ -1287,6 +1287,14 @@ __webpack_require__.r(__webpack_exports__);
1287 1287
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1288 1288
 /* harmony export */ });
1289 1289
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1290
+  label: 'Home',
1291
+  items: [{
1292
+    label: 'Dashboard',
1293
+    icon: 'pi pi-home',
1294
+    to: '/dashboards',
1295
+    component: 'home/Index'
1296
+  }]
1297
+}, {
1290 1298
   label: 'Menu',
1291 1299
   items: [{
1292 1300
     label: 'Transaksi',
@@ -1364,6 +1372,14 @@ __webpack_require__.r(__webpack_exports__);
1364 1372
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1365 1373
 /* harmony export */ });
1366 1374
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1375
+  label: 'Home',
1376
+  items: [{
1377
+    label: 'Dashboard',
1378
+    icon: 'pi pi-home',
1379
+    to: '/dashboards',
1380
+    component: 'home/Index'
1381
+  }]
1382
+}, {
1367 1383
   label: 'Menu',
1368 1384
   items: [{
1369 1385
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_product_Edit_vue.js Datei anzeigen

@@ -1562,6 +1562,14 @@ __webpack_require__.r(__webpack_exports__);
1562 1562
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1563 1563
 /* harmony export */ });
1564 1564
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1565
+  label: 'Home',
1566
+  items: [{
1567
+    label: 'Dashboard',
1568
+    icon: 'pi pi-home',
1569
+    to: '/dashboards',
1570
+    component: 'home/Index'
1571
+  }]
1572
+}, {
1565 1573
   label: 'Menu',
1566 1574
   items: [{
1567 1575
     label: 'Transaksi',
@@ -1639,6 +1647,14 @@ __webpack_require__.r(__webpack_exports__);
1639 1647
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1640 1648
 /* harmony export */ });
1641 1649
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1650
+  label: 'Home',
1651
+  items: [{
1652
+    label: 'Dashboard',
1653
+    icon: 'pi pi-home',
1654
+    to: '/dashboards',
1655
+    component: 'home/Index'
1656
+  }]
1657
+}, {
1642 1658
   label: 'Menu',
1643 1659
   items: [{
1644 1660
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_product_Index_vue.js Datei anzeigen

@@ -1216,6 +1216,14 @@ __webpack_require__.r(__webpack_exports__);
1216 1216
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1217 1217
 /* harmony export */ });
1218 1218
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1219
+  label: 'Home',
1220
+  items: [{
1221
+    label: 'Dashboard',
1222
+    icon: 'pi pi-home',
1223
+    to: '/dashboards',
1224
+    component: 'home/Index'
1225
+  }]
1226
+}, {
1219 1227
   label: 'Menu',
1220 1228
   items: [{
1221 1229
     label: 'Transaksi',
@@ -1294,6 +1302,14 @@ __webpack_require__.r(__webpack_exports__);
1294 1302
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1295 1303
 /* harmony export */ });
1296 1304
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1305
+  label: 'Home',
1306
+  items: [{
1307
+    label: 'Dashboard',
1308
+    icon: 'pi pi-home',
1309
+    to: '/dashboards',
1310
+    component: 'home/Index'
1311
+  }]
1312
+}, {
1297 1313
   label: 'Menu',
1298 1314
   items: [{
1299 1315
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_transaction_Create_vue.js Datei anzeigen

@@ -2369,6 +2369,14 @@ __webpack_require__.r(__webpack_exports__);
2369 2369
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2370 2370
 /* harmony export */ });
2371 2371
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
2372
+  label: 'Home',
2373
+  items: [{
2374
+    label: 'Dashboard',
2375
+    icon: 'pi pi-home',
2376
+    to: '/dashboards',
2377
+    component: 'home/Index'
2378
+  }]
2379
+}, {
2372 2380
   label: 'Menu',
2373 2381
   items: [{
2374 2382
     label: 'Transaksi',
@@ -2446,6 +2454,14 @@ __webpack_require__.r(__webpack_exports__);
2446 2454
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2447 2455
 /* harmony export */ });
2448 2456
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
2457
+  label: 'Home',
2458
+  items: [{
2459
+    label: 'Dashboard',
2460
+    icon: 'pi pi-home',
2461
+    to: '/dashboards',
2462
+    component: 'home/Index'
2463
+  }]
2464
+}, {
2449 2465
   label: 'Menu',
2450 2466
   items: [{
2451 2467
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_transaction_Index_vue.js Datei anzeigen

@@ -2203,6 +2203,14 @@ __webpack_require__.r(__webpack_exports__);
2203 2203
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2204 2204
 /* harmony export */ });
2205 2205
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
2206
+  label: 'Home',
2207
+  items: [{
2208
+    label: 'Dashboard',
2209
+    icon: 'pi pi-home',
2210
+    to: '/dashboards',
2211
+    component: 'home/Index'
2212
+  }]
2213
+}, {
2206 2214
   label: 'Menu',
2207 2215
   items: [{
2208 2216
     label: 'Transaksi',
@@ -2281,6 +2289,14 @@ __webpack_require__.r(__webpack_exports__);
2281 2289
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2282 2290
 /* harmony export */ });
2283 2291
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
2292
+  label: 'Home',
2293
+  items: [{
2294
+    label: 'Dashboard',
2295
+    icon: 'pi pi-home',
2296
+    to: '/dashboards',
2297
+    component: 'home/Index'
2298
+  }]
2299
+}, {
2284 2300
   label: 'Menu',
2285 2301
   items: [{
2286 2302
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_transaction_Report_vue.js Datei anzeigen

@@ -1340,6 +1340,14 @@ __webpack_require__.r(__webpack_exports__);
1340 1340
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1341 1341
 /* harmony export */ });
1342 1342
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1343
+  label: 'Home',
1344
+  items: [{
1345
+    label: 'Dashboard',
1346
+    icon: 'pi pi-home',
1347
+    to: '/dashboards',
1348
+    component: 'home/Index'
1349
+  }]
1350
+}, {
1343 1351
   label: 'Menu',
1344 1352
   items: [{
1345 1353
     label: 'Transaksi',
@@ -1418,6 +1426,14 @@ __webpack_require__.r(__webpack_exports__);
1418 1426
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1419 1427
 /* harmony export */ });
1420 1428
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1429
+  label: 'Home',
1430
+  items: [{
1431
+    label: 'Dashboard',
1432
+    icon: 'pi pi-home',
1433
+    to: '/dashboards',
1434
+    component: 'home/Index'
1435
+  }]
1436
+}, {
1421 1437
   label: 'Menu',
1422 1438
   items: [{
1423 1439
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_transaction_Show_vue.js Datei anzeigen

@@ -1236,6 +1236,14 @@ __webpack_require__.r(__webpack_exports__);
1236 1236
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1237 1237
 /* harmony export */ });
1238 1238
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1239
+  label: 'Home',
1240
+  items: [{
1241
+    label: 'Dashboard',
1242
+    icon: 'pi pi-home',
1243
+    to: '/dashboards',
1244
+    component: 'home/Index'
1245
+  }]
1246
+}, {
1239 1247
   label: 'Menu',
1240 1248
   items: [{
1241 1249
     label: 'Transaksi',
@@ -1313,6 +1321,14 @@ __webpack_require__.r(__webpack_exports__);
1313 1321
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1314 1322
 /* harmony export */ });
1315 1323
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1324
+  label: 'Home',
1325
+  items: [{
1326
+    label: 'Dashboard',
1327
+    icon: 'pi pi-home',
1328
+    to: '/dashboards',
1329
+    component: 'home/Index'
1330
+  }]
1331
+}, {
1316 1332
   label: 'Menu',
1317 1333
   items: [{
1318 1334
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_user_Create_vue.js Datei anzeigen

@@ -1307,6 +1307,14 @@ __webpack_require__.r(__webpack_exports__);
1307 1307
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1308 1308
 /* harmony export */ });
1309 1309
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1310
+  label: 'Home',
1311
+  items: [{
1312
+    label: 'Dashboard',
1313
+    icon: 'pi pi-home',
1314
+    to: '/dashboards',
1315
+    component: 'home/Index'
1316
+  }]
1317
+}, {
1310 1318
   label: 'Menu',
1311 1319
   items: [{
1312 1320
     label: 'Transaksi',
@@ -1384,6 +1392,14 @@ __webpack_require__.r(__webpack_exports__);
1384 1392
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1385 1393
 /* harmony export */ });
1386 1394
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1395
+  label: 'Home',
1396
+  items: [{
1397
+    label: 'Dashboard',
1398
+    icon: 'pi pi-home',
1399
+    to: '/dashboards',
1400
+    component: 'home/Index'
1401
+  }]
1402
+}, {
1387 1403
   label: 'Menu',
1388 1404
   items: [{
1389 1405
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_user_Edit_vue.js Datei anzeigen

@@ -1591,6 +1591,14 @@ __webpack_require__.r(__webpack_exports__);
1591 1591
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1592 1592
 /* harmony export */ });
1593 1593
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1594
+  label: 'Home',
1595
+  items: [{
1596
+    label: 'Dashboard',
1597
+    icon: 'pi pi-home',
1598
+    to: '/dashboards',
1599
+    component: 'home/Index'
1600
+  }]
1601
+}, {
1594 1602
   label: 'Menu',
1595 1603
   items: [{
1596 1604
     label: 'Transaksi',
@@ -1668,6 +1676,14 @@ __webpack_require__.r(__webpack_exports__);
1668 1676
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1669 1677
 /* harmony export */ });
1670 1678
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1679
+  label: 'Home',
1680
+  items: [{
1681
+    label: 'Dashboard',
1682
+    icon: 'pi pi-home',
1683
+    to: '/dashboards',
1684
+    component: 'home/Index'
1685
+  }]
1686
+}, {
1671 1687
   label: 'Menu',
1672 1688
   items: [{
1673 1689
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_user_Index_vue.js Datei anzeigen

@@ -1229,6 +1229,14 @@ __webpack_require__.r(__webpack_exports__);
1229 1229
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1230 1230
 /* harmony export */ });
1231 1231
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1232
+  label: 'Home',
1233
+  items: [{
1234
+    label: 'Dashboard',
1235
+    icon: 'pi pi-home',
1236
+    to: '/dashboards',
1237
+    component: 'home/Index'
1238
+  }]
1239
+}, {
1232 1240
   label: 'Menu',
1233 1241
   items: [{
1234 1242
     label: 'Transaksi',
@@ -1307,6 +1315,14 @@ __webpack_require__.r(__webpack_exports__);
1307 1315
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1308 1316
 /* harmony export */ });
1309 1317
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1318
+  label: 'Home',
1319
+  items: [{
1320
+    label: 'Dashboard',
1321
+    icon: 'pi pi-home',
1322
+    to: '/dashboards',
1323
+    component: 'home/Index'
1324
+  }]
1325
+}, {
1310 1326
   label: 'Menu',
1311 1327
   items: [{
1312 1328
     label: 'Transaksi',

+ 16
- 0
public/js/resources_js_pages_user_Show_vue.js Datei anzeigen

@@ -1494,6 +1494,14 @@ __webpack_require__.r(__webpack_exports__);
1494 1494
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1495 1495
 /* harmony export */ });
1496 1496
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1497
+  label: 'Home',
1498
+  items: [{
1499
+    label: 'Dashboard',
1500
+    icon: 'pi pi-home',
1501
+    to: '/dashboards',
1502
+    component: 'home/Index'
1503
+  }]
1504
+}, {
1497 1505
   label: 'Menu',
1498 1506
   items: [{
1499 1507
     label: 'Transaksi',
@@ -1571,6 +1579,14 @@ __webpack_require__.r(__webpack_exports__);
1571 1579
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1572 1580
 /* harmony export */ });
1573 1581
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1582
+  label: 'Home',
1583
+  items: [{
1584
+    label: 'Dashboard',
1585
+    icon: 'pi pi-home',
1586
+    to: '/dashboards',
1587
+    component: 'home/Index'
1588
+  }]
1589
+}, {
1574 1590
   label: 'Menu',
1575 1591
   items: [{
1576 1592
     label: 'Transaksi',

+ 191
- 17
public/js/vue.js Datei anzeigen

@@ -32742,6 +32742,170 @@ script.render = render;
32742 32742
 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (script);
32743 32743
 
32744 32744
 
32745
+/***/ }),
32746
+
32747
+/***/ "./node_modules/primevue/chart/chart.esm.js":
32748
+/*!**************************************************!*\
32749
+  !*** ./node_modules/primevue/chart/chart.esm.js ***!
32750
+  \**************************************************/
32751
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
32752
+
32753
+"use strict";
32754
+__webpack_require__.r(__webpack_exports__);
32755
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
32756
+/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
32757
+/* harmony export */ });
32758
+/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js");
32759
+
32760
+
32761
+var script = {
32762
+    name: 'Chart',
32763
+    emits: ['select', 'loaded'],
32764
+    props: {
32765
+        type: String,
32766
+        data: null,
32767
+        options: null,
32768
+        plugins: null,
32769
+        width: {
32770
+            type: Number,
32771
+            default: 300
32772
+        },
32773
+        height: {
32774
+            type: Number,
32775
+            default: 150
32776
+        },
32777
+    },
32778
+    chart: null,
32779
+    mounted() {
32780
+        this.initChart();
32781
+    },
32782
+    beforeUnmount() {
32783
+        if (this.chart) {
32784
+            this.chart.destroy();
32785
+            this.chart = null;
32786
+        }
32787
+    },
32788
+    watch: {
32789
+        /*
32790
+         * Use deep watch to enable triggering watch for changes within structure
32791
+         * otherwise the entire data object needs to be replaced to trigger watch
32792
+         */
32793
+        data: {
32794
+            handler() {
32795
+                this.reinit();
32796
+            },
32797
+            deep: true
32798
+        },
32799
+        type() {
32800
+            this.reinit();
32801
+        },
32802
+        options() {
32803
+            this.reinit();
32804
+        }
32805
+    },
32806
+    methods: {
32807
+        initChart() {
32808
+            __webpack_require__.e(/*! import() */ "node_modules_chart_js_auto_auto_esm_js").then(__webpack_require__.bind(__webpack_require__, /*! chart.js/auto */ "./node_modules/chart.js/auto/auto.esm.js")).then((module) => {
32809
+                if (this.chart) {
32810
+                    this.chart.destroy();
32811
+                    this.chart = null;
32812
+                }
32813
+
32814
+                if (module && module.default) {
32815
+                    this.chart = new module.default(this.$refs.canvas, {
32816
+                        type: this.type,
32817
+                        data: this.data,
32818
+                        options: this.options,
32819
+                        plugins: this.plugins
32820
+                    });
32821
+                }
32822
+
32823
+                this.$emit('loaded', this.chart);
32824
+            });
32825
+        },
32826
+        getCanvas() {
32827
+            return this.$canvas;
32828
+        },
32829
+        getChart() {
32830
+            return this.chart;
32831
+        },
32832
+        getBase64Image() {
32833
+            return this.chart.toBase64Image();
32834
+        },
32835
+        refresh() {
32836
+            if (this.chart) {
32837
+                this.chart.update();
32838
+            }
32839
+        },
32840
+        reinit() {
32841
+            this.initChart();
32842
+        },
32843
+        onCanvasClick(event) {
32844
+            if (this.chart) {
32845
+                const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);
32846
+                const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);
32847
+
32848
+                if (element && element[0] && dataset) {
32849
+                    this.$emit('select', {originalEvent: event, element: element[0], dataset: dataset});
32850
+                }
32851
+            }
32852
+        },
32853
+        generateLegend() {
32854
+            if (this.chart) {
32855
+                return this.chart.generateLegend();
32856
+            }
32857
+        }
32858
+    }
32859
+};
32860
+
32861
+const _hoisted_1 = { class: "p-chart" };
32862
+
32863
+function render(_ctx, _cache, $props, $setup, $data, $options) {
32864
+  return ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)("div", _hoisted_1, [
32865
+    (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)("canvas", {
32866
+      ref: "canvas",
32867
+      width: $props.width,
32868
+      height: $props.height,
32869
+      onClick: _cache[1] || (_cache[1] = $event => ($options.onCanvasClick($event)))
32870
+    }, null, 8, ["width", "height"])
32871
+  ]))
32872
+}
32873
+
32874
+function styleInject(css, ref) {
32875
+  if ( ref === void 0 ) ref = {};
32876
+  var insertAt = ref.insertAt;
32877
+
32878
+  if (!css || typeof document === 'undefined') { return; }
32879
+
32880
+  var head = document.head || document.getElementsByTagName('head')[0];
32881
+  var style = document.createElement('style');
32882
+  style.type = 'text/css';
32883
+
32884
+  if (insertAt === 'top') {
32885
+    if (head.firstChild) {
32886
+      head.insertBefore(style, head.firstChild);
32887
+    } else {
32888
+      head.appendChild(style);
32889
+    }
32890
+  } else {
32891
+    head.appendChild(style);
32892
+  }
32893
+
32894
+  if (style.styleSheet) {
32895
+    style.styleSheet.cssText = css;
32896
+  } else {
32897
+    style.appendChild(document.createTextNode(css));
32898
+  }
32899
+}
32900
+
32901
+var css_248z = "\n.p-chart {\n    position: relative;\n}\n";
32902
+styleInject(css_248z);
32903
+
32904
+script.render = render;
32905
+
32906
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (script);
32907
+
32908
+
32745 32909
 /***/ }),
32746 32910
 
32747 32911
 /***/ "./node_modules/primevue/column/column.esm.js":
@@ -57469,6 +57633,14 @@ var map = {
57469 57633
 		"./resources/js/pages/expense/TableHeader.js",
57470 57634
 		"resources_js_pages_expense_TableHeader_js"
57471 57635
 	],
57636
+	"./home/Index": [
57637
+		"./resources/js/pages/home/Index.vue",
57638
+		"resources_js_pages_home_Index_vue"
57639
+	],
57640
+	"./home/Index.vue": [
57641
+		"./resources/js/pages/home/Index.vue",
57642
+		"resources_js_pages_home_Index_vue"
57643
+	],
57472 57644
 	"./laundry/Create": [
57473 57645
 		"./resources/js/pages/laundry/Create.vue",
57474 57646
 		"resources_js_pages_laundry_Create_vue"
@@ -57778,7 +57950,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
57778 57950
 /******/ 		// This function allow to reference async chunks
57779 57951
 /******/ 		__webpack_require__.u = (chunkId) => {
57780 57952
 /******/ 			// return url for filenames based on template
57781
-/******/ 			return "js/" + chunkId + ".js?id=" + {"resources_js_pages_Access_vue":"a18ed856923fae52","resources_js_pages_auth_ForgotPassword_vue":"c9f401672b6f2423","resources_js_pages_auth_Login_vue":"cb0cb153b976d2c1","resources_js_pages_auth_ResetPassword_vue":"1078df5cebf2e3c6","resources_js_pages_auth_VerifyEmail_vue":"a0ee23b849c826b1","resources_js_pages_customer_Create_vue":"a3cba38b65a678ea","resources_js_pages_customer_Edit_vue":"6529085778080d36","resources_js_pages_customer_Index_vue":"aea07a25c21bfc45","resources_js_pages_customer_TableHeader_js":"71be5afdca048a9c","resources_js_pages_discount_Index_vue":"31e829a87f7e517d","resources_js_pages_expense_Create_vue":"f625b4fbdf8889af","resources_js_pages_expense_Index_vue":"ad6478718f2fbf90","resources_js_pages_expense_Show_vue":"4801bedc7912088f","resources_js_pages_expense_TableHeader_js":"72e3dee74175b1c0","resources_js_pages_laundry_Create_vue":"17128fbd0e28898d","resources_js_pages_laundry_Edit_vue":"2bd6d1f463c9a9a3","resources_js_pages_laundry_Index_vue":"96eee4afb428456e","resources_js_pages_laundry_TableHeader_js":"494e577855bbcaf6","resources_js_pages_mutation_Report_vue":"aaaf24154a43b9f5","resources_js_pages_mutation_TableHeader_js":"82c2999bd7d098a1","resources_js_pages_outlet_Create_vue":"bdf868378013b7e7","resources_js_pages_outlet_Edit_vue":"77775fdca5fe7621","resources_js_pages_outlet_Index_vue":"2e36a83555378ccb","resources_js_pages_outlet_TableHeader_js":"498bf7e64bc0d0c4","resources_js_pages_product_Create_vue":"0d0dddb2e60ec31c","resources_js_pages_product_Edit_vue":"59d0ee7b5403f776","resources_js_pages_product_Index_vue":"73a854a747e35d21","resources_js_pages_product_TableHeader_js":"b8eaaa9de25a2322","resources_js_pages_transaction_Create_vue":"ea4b3be68403cd31","resources_js_pages_transaction_Index_vue":"1dcdc1cb350a954b","resources_js_pages_transaction_Report_vue":"bd0a1b87dd8a494b","resources_js_pages_transaction_Show_vue":"ebd8059da08e93b1","resources_js_pages_transaction_TableHeader_js":"be63e672e103818b","resources_js_pages_user_Create_vue":"da0b02d8fda8f9a0","resources_js_pages_user_Edit_vue":"cf9a306d21f40913","resources_js_pages_user_Index_vue":"badcb54776b8c7e0","resources_js_pages_user_Show_vue":"1474a0ad843dc2d5","resources_js_pages_user_TableHeader_js":"5653ecbcd70fd235"}[chunkId] + "";
57953
+/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_Access_vue":"a18ed856923fae52","resources_js_pages_auth_ForgotPassword_vue":"c9f401672b6f2423","resources_js_pages_auth_Login_vue":"cb0cb153b976d2c1","resources_js_pages_auth_ResetPassword_vue":"1078df5cebf2e3c6","resources_js_pages_auth_VerifyEmail_vue":"a0ee23b849c826b1","resources_js_pages_customer_Create_vue":"4eb00b7c0775dd1a","resources_js_pages_customer_Edit_vue":"407b38d3ec33b8b6","resources_js_pages_customer_Index_vue":"eafddf3436e2b29d","resources_js_pages_customer_TableHeader_js":"71be5afdca048a9c","resources_js_pages_discount_Index_vue":"327c24c11bd53001","resources_js_pages_expense_Create_vue":"9f6647ce9c66b103","resources_js_pages_expense_Index_vue":"a5e56c318045f4f1","resources_js_pages_expense_Show_vue":"0c0ebfedc527579a","resources_js_pages_expense_TableHeader_js":"72e3dee74175b1c0","resources_js_pages_home_Index_vue":"12befeb6d38abe88","resources_js_pages_laundry_Create_vue":"17d4fff3f6a0d4e0","resources_js_pages_laundry_Edit_vue":"fe0751be3876e35b","resources_js_pages_laundry_Index_vue":"25198930a0d0f20d","resources_js_pages_laundry_TableHeader_js":"494e577855bbcaf6","resources_js_pages_mutation_Report_vue":"f819d667c2cadeb7","resources_js_pages_mutation_TableHeader_js":"82c2999bd7d098a1","resources_js_pages_outlet_Create_vue":"0326fbf87091b62e","resources_js_pages_outlet_Edit_vue":"6dd0ae9ed18a73a6","resources_js_pages_outlet_Index_vue":"cb5a9b7dfa2a0b91","resources_js_pages_outlet_TableHeader_js":"498bf7e64bc0d0c4","resources_js_pages_product_Create_vue":"96daef068f670441","resources_js_pages_product_Edit_vue":"826dfb5798505c8c","resources_js_pages_product_Index_vue":"f5218c4863b86c19","resources_js_pages_product_TableHeader_js":"b8eaaa9de25a2322","resources_js_pages_transaction_Create_vue":"6008f897e5067e30","resources_js_pages_transaction_Index_vue":"19eb0dbf87a58e45","resources_js_pages_transaction_Report_vue":"ecb8a20a69a65ae7","resources_js_pages_transaction_Show_vue":"ac25925f62d145de","resources_js_pages_transaction_TableHeader_js":"be63e672e103818b","resources_js_pages_user_Create_vue":"21f3591e9d0b4199","resources_js_pages_user_Edit_vue":"76820bdf6c8bfc24","resources_js_pages_user_Index_vue":"4433ed4ee64b6df6","resources_js_pages_user_Show_vue":"b8e5b5a526f42dbd","resources_js_pages_user_TableHeader_js":"5653ecbcd70fd235"}[chunkId] + "";
57782 57954
 /******/ 		};
57783 57955
 /******/ 	})();
57784 57956
 /******/ 	
@@ -57993,21 +58165,23 @@ __webpack_require__.r(__webpack_exports__);
57993 58165
 /* harmony import */ var primevue_button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! primevue/button */ "./node_modules/primevue/button/button.esm.js");
57994 58166
 /* harmony import */ var primevue_calendar__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! primevue/calendar */ "./node_modules/primevue/calendar/calendar.esm.js");
57995 58167
 /* harmony import */ var primevue_card__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! primevue/card */ "./node_modules/primevue/card/card.esm.js");
57996
-/* harmony import */ var primevue_column__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! primevue/column */ "./node_modules/primevue/column/column.esm.js");
57997
-/* harmony import */ var primevue_datatable__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! primevue/datatable */ "./node_modules/primevue/datatable/datatable.esm.js");
57998
-/* harmony import */ var primevue_dialog__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! primevue/dialog */ "./node_modules/primevue/dialog/dialog.esm.js");
57999
-/* harmony import */ var primevue_divider__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! primevue/divider */ "./node_modules/primevue/divider/divider.esm.js");
58000
-/* harmony import */ var primevue_dropdown__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! primevue/dropdown */ "./node_modules/primevue/dropdown/dropdown.esm.js");
58001
-/* harmony import */ var primevue_editor__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! primevue/editor */ "./node_modules/primevue/editor/editor.esm.js");
58002
-/* harmony import */ var primevue_inputnumber__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! primevue/inputnumber */ "./node_modules/primevue/inputnumber/inputnumber.esm.js");
58003
-/* harmony import */ var primevue_inputtext__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! primevue/inputtext */ "./node_modules/primevue/inputtext/inputtext.esm.js");
58004
-/* harmony import */ var primevue_message__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! primevue/message */ "./node_modules/primevue/message/message.esm.js");
58005
-/* harmony import */ var primevue_paginator__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! primevue/paginator */ "./node_modules/primevue/paginator/paginator.esm.js");
58006
-/* harmony import */ var primevue_password__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! primevue/password */ "./node_modules/primevue/password/password.esm.js");
58007
-/* harmony import */ var primevue_ripple__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! primevue/ripple */ "./node_modules/primevue/ripple/ripple.esm.js");
58008
-/* harmony import */ var primevue_tabview__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! primevue/tabview */ "./node_modules/primevue/tabview/tabview.esm.js");
58009
-/* harmony import */ var primevue_tabpanel__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! primevue/tabpanel */ "./node_modules/primevue/tabpanel/tabpanel.esm.js");
58010
-/* harmony import */ var primevue_tooltip__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! primevue/tooltip */ "./node_modules/primevue/tooltip/tooltip.esm.js");
58168
+/* harmony import */ var primevue_chart__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! primevue/chart */ "./node_modules/primevue/chart/chart.esm.js");
58169
+/* harmony import */ var primevue_column__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! primevue/column */ "./node_modules/primevue/column/column.esm.js");
58170
+/* harmony import */ var primevue_datatable__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! primevue/datatable */ "./node_modules/primevue/datatable/datatable.esm.js");
58171
+/* harmony import */ var primevue_dialog__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! primevue/dialog */ "./node_modules/primevue/dialog/dialog.esm.js");
58172
+/* harmony import */ var primevue_divider__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! primevue/divider */ "./node_modules/primevue/divider/divider.esm.js");
58173
+/* harmony import */ var primevue_dropdown__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! primevue/dropdown */ "./node_modules/primevue/dropdown/dropdown.esm.js");
58174
+/* harmony import */ var primevue_editor__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! primevue/editor */ "./node_modules/primevue/editor/editor.esm.js");
58175
+/* harmony import */ var primevue_inputnumber__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! primevue/inputnumber */ "./node_modules/primevue/inputnumber/inputnumber.esm.js");
58176
+/* harmony import */ var primevue_inputtext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! primevue/inputtext */ "./node_modules/primevue/inputtext/inputtext.esm.js");
58177
+/* harmony import */ var primevue_message__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! primevue/message */ "./node_modules/primevue/message/message.esm.js");
58178
+/* harmony import */ var primevue_paginator__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! primevue/paginator */ "./node_modules/primevue/paginator/paginator.esm.js");
58179
+/* harmony import */ var primevue_password__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! primevue/password */ "./node_modules/primevue/password/password.esm.js");
58180
+/* harmony import */ var primevue_ripple__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! primevue/ripple */ "./node_modules/primevue/ripple/ripple.esm.js");
58181
+/* harmony import */ var primevue_tabview__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! primevue/tabview */ "./node_modules/primevue/tabview/tabview.esm.js");
58182
+/* harmony import */ var primevue_tabpanel__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! primevue/tabpanel */ "./node_modules/primevue/tabpanel/tabpanel.esm.js");
58183
+/* harmony import */ var primevue_tooltip__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! primevue/tooltip */ "./node_modules/primevue/tooltip/tooltip.esm.js");
58184
+
58011 58185
 
58012 58186
 
58013 58187
 
@@ -58060,7 +58234,7 @@ __webpack_require__.r(__webpack_exports__);
58060 58234
       methods: {
58061 58235
         route: route
58062 58236
       }
58063
-    }).directive('styleclass', primevue_styleclass__WEBPACK_IMPORTED_MODULE_9__["default"]).directive('ripple', primevue_ripple__WEBPACK_IMPORTED_MODULE_26__["default"]).directive('tooltip', primevue_tooltip__WEBPACK_IMPORTED_MODULE_29__["default"]).component('AutoComplete', primevue_autocomplete__WEBPACK_IMPORTED_MODULE_10__["default"]).component('Button', primevue_button__WEBPACK_IMPORTED_MODULE_12__["default"]).component('Badge', primevue_badge__WEBPACK_IMPORTED_MODULE_11__["default"]).component('Card', primevue_card__WEBPACK_IMPORTED_MODULE_14__["default"]).component('Calendar', primevue_calendar__WEBPACK_IMPORTED_MODULE_13__["default"]).component('Column', primevue_column__WEBPACK_IMPORTED_MODULE_15__["default"]).component('DataTable', primevue_datatable__WEBPACK_IMPORTED_MODULE_16__["default"]).component('Dialog', primevue_dialog__WEBPACK_IMPORTED_MODULE_17__["default"]).component('Divider', primevue_divider__WEBPACK_IMPORTED_MODULE_18__["default"]).component('Dropdown', primevue_dropdown__WEBPACK_IMPORTED_MODULE_19__["default"]).component('Editor', primevue_editor__WEBPACK_IMPORTED_MODULE_20__["default"]).component('InputNumber', primevue_inputnumber__WEBPACK_IMPORTED_MODULE_21__["default"]).component('InputText', primevue_inputtext__WEBPACK_IMPORTED_MODULE_22__["default"]).component('Message', primevue_message__WEBPACK_IMPORTED_MODULE_23__["default"]).component('Paginator', primevue_paginator__WEBPACK_IMPORTED_MODULE_24__["default"]).component('Password', primevue_password__WEBPACK_IMPORTED_MODULE_25__["default"]).component('TabView', primevue_tabview__WEBPACK_IMPORTED_MODULE_27__["default"]).component('TabPanel', primevue_tabpanel__WEBPACK_IMPORTED_MODULE_28__["default"]).mount(el);
58237
+    }).directive('styleclass', primevue_styleclass__WEBPACK_IMPORTED_MODULE_9__["default"]).directive('ripple', primevue_ripple__WEBPACK_IMPORTED_MODULE_27__["default"]).directive('tooltip', primevue_tooltip__WEBPACK_IMPORTED_MODULE_30__["default"]).component('AutoComplete', primevue_autocomplete__WEBPACK_IMPORTED_MODULE_10__["default"]).component('Button', primevue_button__WEBPACK_IMPORTED_MODULE_12__["default"]).component('Badge', primevue_badge__WEBPACK_IMPORTED_MODULE_11__["default"]).component('Card', primevue_card__WEBPACK_IMPORTED_MODULE_14__["default"]).component('Calendar', primevue_calendar__WEBPACK_IMPORTED_MODULE_13__["default"]).component('Chart', primevue_chart__WEBPACK_IMPORTED_MODULE_15__["default"]).component('Column', primevue_column__WEBPACK_IMPORTED_MODULE_16__["default"]).component('DataTable', primevue_datatable__WEBPACK_IMPORTED_MODULE_17__["default"]).component('Dialog', primevue_dialog__WEBPACK_IMPORTED_MODULE_18__["default"]).component('Divider', primevue_divider__WEBPACK_IMPORTED_MODULE_19__["default"]).component('Dropdown', primevue_dropdown__WEBPACK_IMPORTED_MODULE_20__["default"]).component('Editor', primevue_editor__WEBPACK_IMPORTED_MODULE_21__["default"]).component('InputNumber', primevue_inputnumber__WEBPACK_IMPORTED_MODULE_22__["default"]).component('InputText', primevue_inputtext__WEBPACK_IMPORTED_MODULE_23__["default"]).component('Message', primevue_message__WEBPACK_IMPORTED_MODULE_24__["default"]).component('Paginator', primevue_paginator__WEBPACK_IMPORTED_MODULE_25__["default"]).component('Password', primevue_password__WEBPACK_IMPORTED_MODULE_26__["default"]).component('TabView', primevue_tabview__WEBPACK_IMPORTED_MODULE_28__["default"]).component('TabPanel', primevue_tabpanel__WEBPACK_IMPORTED_MODULE_29__["default"]).mount(el);
58064 58238
   }
58065 58239
 });
58066 58240
 _inertiajs_progress__WEBPACK_IMPORTED_MODULE_7__.InertiaProgress.init({

+ 64
- 0
resources/js/pages/home/Index.vue Datei anzeigen

@@ -0,0 +1,64 @@
1
+<script setup>
2
+import { ref } from 'vue'
3
+import { Head } from '@inertiajs/inertia-vue3'
4
+import AppLayout from '@/layouts/AppLayout.vue'
5
+
6
+defineProps({
7
+  cardStatistics: Object,
8
+  chartStatistics: Object,
9
+})
10
+
11
+const basicData = ref({
12
+  labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
13
+  datasets: [
14
+    {
15
+      label: 'My First dataset',
16
+      backgroundColor: '#42A5F5',
17
+      data: [65, 59, 80, 81, 56, 55, 40],
18
+    },
19
+    {
20
+      label: 'My Second dataset',
21
+      backgroundColor: '#FFA726',
22
+      data: [28, 48, 40, 19, 86, 27, 90],
23
+    },
24
+  ],
25
+})
26
+</script>
27
+
28
+<template>
29
+  <AppLayout>
30
+    <Head title="Dashboard" />
31
+
32
+    <div class="grid">
33
+      <div v-for="cardStatistic in cardStatistics" class="col-12 md:col-3">
34
+        <Card class="h-full">
35
+          <template #content>
36
+            <div class="flex justify-content-between mb-3">
37
+              <div>
38
+                <span class="block text-500 font-medium mb-3">{{ cardStatistic.label }}</span>
39
+                <div v-if="cardStatistic.value" class="text-900 font-medium text-xl">{{ cardStatistic.value }}</div>
40
+              </div>
41
+              <div
42
+                class="flex align-items-center justify-content-center bg-orange-100 border-round"
43
+                style="width: 2.5rem; height: 2.5rem"
44
+              >
45
+                <i class="text-orange-500 text-xl" :class="cardStatistic.icon"></i>
46
+              </div>
47
+            </div>
48
+            <span class="text-green-500 font-medium">{{ cardStatistic.amount }} </span>
49
+            <span class="text-500"> {{ ' ' + cardStatistic.amountLabel }}</span>
50
+          </template>
51
+        </Card>
52
+      </div>
53
+
54
+      <div class="col-12 md:col-6">
55
+        <Card>
56
+          <template #title>Statistik Transaksi</template>
57
+          <template #content>
58
+            <Chart type="bar" :data="basicData" />
59
+          </template>
60
+        </Card>
61
+      </div>
62
+    </div>
63
+  </AppLayout>
64
+</template>

+ 4
- 0
resources/js/utils/menu-admin.js Datei anzeigen

@@ -1,4 +1,8 @@
1 1
 export default [
2
+  {
3
+    label: 'Home',
4
+    items: [{ label: 'Dashboard', icon: 'pi pi-home', to: '/dashboards', component: 'home/Index' }],
5
+  },
2 6
   {
3 7
     label: 'Menu',
4 8
     items: [

+ 4
- 0
resources/js/utils/menu.js Datei anzeigen

@@ -1,4 +1,8 @@
1 1
 export default [
2
+  {
3
+    label: 'Home',
4
+    items: [{ label: 'Dashboard', icon: 'pi pi-home', to: '/dashboards', component: 'home/Index' }],
5
+  },
2 6
   {
3 7
     label: 'Menu',
4 8
     items: [

+ 2
- 0
resources/js/vue.js Datei anzeigen

@@ -14,6 +14,7 @@ import Badge from 'primevue/badge'
14 14
 import Button from 'primevue/button'
15 15
 import Calendar from 'primevue/calendar'
16 16
 import Card from 'primevue/card'
17
+import Chart from 'primevue/chart'
17 18
 import Column from 'primevue/column'
18 19
 import DataTable from 'primevue/datatable'
19 20
 import Dialog from 'primevue/dialog'
@@ -46,6 +47,7 @@ createInertiaApp({
46 47
       .component('Badge', Badge)
47 48
       .component('Card', Card)
48 49
       .component('Calendar', Calendar)
50
+      .component('Chart', Chart)
49 51
       .component('Column', Column)
50 52
       .component('DataTable', DataTable)
51 53
       .component('Dialog', Dialog)

+ 4
- 1
routes/web.php Datei anzeigen

@@ -1,6 +1,7 @@
1 1
 <?php
2 2
 
3 3
 use App\Http\Controllers\CustomerController;
4
+use App\Http\Controllers\DashboardController;
4 5
 use App\Http\Controllers\DiscountController;
5 6
 use App\Http\Controllers\ExpenseController;
6 7
 use App\Http\Controllers\LaundryController;
@@ -25,7 +26,9 @@ use Illuminate\Support\Facades\Route;
25 26
  */
26 27
 
27 28
 Route::middleware(['auth', 'verified'])->group(function () {
28
-    Route::get('/', [TransactionController::class, 'index']);
29
+    Route::get('/', DashboardController::class);
30
+
31
+    Route::get('/dashboards', DashboardController::class);
29 32
 
30 33
     Route::delete('/users/block/{user}', [UserController::class, 'block'])->name('users.block');
31 34
     Route::post('/users/change-password/{user}', [UserController::class, 'changePassword'])->name('users.change-password');

+ 5
- 5
yarn.lock Datei anzeigen

@@ -2069,6 +2069,11 @@ charenc@0.0.2:
2069 2069
   resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
2070 2070
   integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
2071 2071
 
2072
+chart.js@^3.7.1:
2073
+  version "3.7.1"
2074
+  resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.7.1.tgz#0516f690c6a8680c6c707e31a4c1807a6f400ada"
2075
+  integrity sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==
2076
+
2072 2077
 "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3:
2073 2078
   version "3.5.3"
2074 2079
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
@@ -3542,11 +3547,6 @@ inherits@2.0.3:
3542 3547
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
3543 3548
   integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
3544 3549
 
3545
-install@^0.13.0:
3546
-  version "0.13.0"
3547
-  resolved "https://registry.yarnpkg.com/install/-/install-0.13.0.tgz#6af6e9da9dd0987de2ab420f78e60d9c17260776"
3548
-  integrity sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==
3549
-
3550 3550
 interpret@^2.2.0:
3551 3551
   version "2.2.0"
3552 3552
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"