Browse Source

fix: dashboard

Muhammad Iqbal Afandi 3 years ago
parent
commit
7caab11370

+ 7
- 10
app/Http/Controllers/DashboardController.php View File

@@ -2,9 +2,8 @@
2 2
 
3 3
 namespace App\Http\Controllers;
4 4
 
5
-use App\Services\ProductService;
6
-use App\Services\PurchaseService;
7
-use App\Services\SaleService;
5
+use App\Services\DashboardService;
6
+use App\Services\QueryService;
8 7
 use Illuminate\Http\Request;
9 8
 
10 9
 class DashboardController extends Controller
@@ -17,14 +16,12 @@ class DashboardController extends Controller
17 16
      */
18 17
     public function __invoke(Request $request)
19 18
     {
19
+        // dd(QueryService::statisticDualYear("purchase_details", "purchases"));
20
+
20 21
         return inertia("Dashboards/Index", [
21
-            "productCounts" => [
22
-                SaleService::saleAmount(),
23
-                PurchaseService::purchaseAmount(),
24
-                ProductService::productAmount(),
25
-                ProductService::stockProductAmount(),
26
-            ],
27
-            "productFavorites" => SaleService::bestSelling(),
22
+            "productAmount" => DashboardService::productAmount(),
23
+            "productFavorites" => DashboardService::productFavorites(),
24
+            "salePurchaseStatistic" => DashboardService::salePurchaseStatistic(),
28 25
         ]);
29 26
     }
30 27
 }

+ 2
- 2
app/Http/Controllers/PurchaseController.php View File

@@ -9,13 +9,13 @@ use App\Models\Purchase;
9 9
 use App\Models\Supplier;
10 10
 use App\Models\StockProduct;
11 11
 use App\Models\PurchaseDetail;
12
-use App\Services\HelperService;
13 12
 use Barryvdh\DomPDF\Facade\Pdf;
14 13
 use Illuminate\Support\Facades\DB;
15 14
 use Illuminate\Database\QueryException;
16 15
 use App\Http\Requests\Purchase\StorePurchaseRequest;
17 16
 use App\Http\Requests\Purchase\UpdatePurchaseRequest;
18 17
 use App\Models\Company;
18
+use App\Services\FunctionService;
19 19
 use App\Services\PurchaseService;
20 20
 
21 21
 class PurchaseController extends Controller
@@ -45,7 +45,7 @@ class PurchaseController extends Controller
45 45
                         "name" => $purchase->supplier->name,
46 46
                         "phone" => $purchase->supplier->phone,
47 47
                         "email" => $purchase->supplier->email,
48
-                        "price" => HelperService::rupiahFormat(
48
+                        "price" => FunctionService::rupiahFormat(
49 49
                             PurchaseService::totalPrice($purchase)
50 50
                         ),
51 51
                         "status" => $purchase->status,

+ 2
- 2
app/Http/Controllers/SalesController.php View File

@@ -7,12 +7,12 @@ use App\Models\Sale;
7 7
 use Inertia\Inertia;
8 8
 use App\Models\Customer;
9 9
 use App\Models\StockProduct;
10
-use App\Services\HelperService;
11 10
 use Illuminate\Support\Facades\DB;
12 11
 use Illuminate\Database\QueryException;
13 12
 use App\Http\Requests\Sales\StoreSaleRequest;
14 13
 use App\Http\Requests\Sales\UpdateSaleRequest;
15 14
 use App\Models\Company;
15
+use App\Services\FunctionService;
16 16
 use App\Services\SaleService;
17 17
 use Barryvdh\DomPDF\Facade\Pdf;
18 18
 
@@ -43,7 +43,7 @@ class SalesController extends Controller
43 43
                         "name" => $sale->customer->name,
44 44
                         "phone" => $sale->customer->phone,
45 45
                         "email" => $sale->customer->email,
46
-                        "price" => HelperService::rupiahFormat(
46
+                        "price" => FunctionService::rupiahFormat(
47 47
                             SaleService::totalPrice($sale)
48 48
                         ),
49 49
                         "status" => $sale->status,

+ 2
- 2
app/Http/Controllers/StockProductController.php View File

@@ -3,7 +3,7 @@
3 3
 namespace App\Http\Controllers;
4 4
 
5 5
 use App\Models\StockProduct;
6
-use App\Services\HelperService;
6
+use App\Services\FunctionService;
7 7
 use Illuminate\Http\Request;
8 8
 
9 9
 class StockProductController extends Controller
@@ -31,7 +31,7 @@ class StockProductController extends Controller
31 31
                         "id" => $stockProduct->id,
32 32
                         "updatedAt" => $stockProduct->updated_at,
33 33
                         "name" => $stockProduct->product->name,
34
-                        "price" => HelperService::rupiahFormat(
34
+                        "price" => FunctionService::rupiahFormat(
35 35
                             $stockProduct->price
36 36
                         ),
37 37
                         "qty" => $stockProduct->qty,

+ 2
- 2
app/Models/PurchaseDetail.php View File

@@ -2,7 +2,7 @@
2 2
 
3 3
 namespace App\Models;
4 4
 
5
-use App\Services\HelperService;
5
+use App\Services\FunctionService;
6 6
 use Illuminate\Database\Eloquent\Model;
7 7
 use Illuminate\Database\Eloquent\Casts\Attribute;
8 8
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -20,7 +20,7 @@ class PurchaseDetail extends Model
20 20
                 $ppn = Ppn::first()->ppn;
21 21
 
22 22
                 return $this->purchase->ppn
23
-                    ? HelperService::ppn($value, $ppn)
23
+                    ? FunctionService::ppn($value, $ppn)
24 24
                     : $value;
25 25
             }
26 26
         );

+ 2
- 2
app/Models/SaleDetail.php View File

@@ -2,7 +2,7 @@
2 2
 
3 3
 namespace App\Models;
4 4
 
5
-use App\Services\HelperService;
5
+use App\Services\FunctionService;
6 6
 use Illuminate\Database\Eloquent\Casts\Attribute;
7 7
 use Illuminate\Database\Eloquent\Factories\HasFactory;
8 8
 use Illuminate\Database\Eloquent\Model;
@@ -20,7 +20,7 @@ class SaleDetail extends Model
20 20
                 $ppn = Ppn::first()->ppn;
21 21
 
22 22
                 return $this->sale->ppn
23
-                    ? HelperService::ppn($value, $ppn)
23
+                    ? FunctionService::ppn($value, $ppn)
24 24
                     : $value;
25 25
             }
26 26
         );

+ 2
- 2
app/Models/StockProduct.php View File

@@ -3,7 +3,7 @@
3 3
 namespace App\Models;
4 4
 
5 5
 use App\Models\Ppn;
6
-use App\Services\HelperService;
6
+use App\Services\FunctionService;
7 7
 use Carbon\Carbon;
8 8
 use Illuminate\Database\Eloquent\Model;
9 9
 use Illuminate\Database\Eloquent\Casts\Attribute;
@@ -30,7 +30,7 @@ class StockProduct extends Model
30 30
             get: function ($value) {
31 31
                 $ppn = Ppn::first()->ppn;
32 32
 
33
-                return $this->ppn ? HelperService::ppn($value, $ppn) : $value;
33
+                return $this->ppn ? FunctionService::ppn($value, $ppn) : $value;
34 34
             }
35 35
         );
36 36
     }

+ 47
- 0
app/Services/DashboardService.php View File

@@ -0,0 +1,47 @@
1
+<?php
2
+
3
+namespace App\Services;
4
+
5
+use Illuminate\Support\Facades\DB;
6
+
7
+class DashboardService
8
+{
9
+    public static function productFavorites()
10
+    {
11
+        return DB::table("sale_details")
12
+            ->selectRaw(
13
+                "sale_details.product_number,
14
+                 products.name AS title,
15
+                 SUM(sale_details.qty) AS qty,
16
+                 products.profit"
17
+            )
18
+            ->join(
19
+                "products",
20
+                "products.number",
21
+                "=",
22
+                "sale_details.product_number"
23
+            )
24
+            ->groupByRaw("product_number")
25
+            ->orderByRaw("qty DESC")
26
+            ->limit(5)
27
+            ->get();
28
+    }
29
+
30
+    public static function productAmount()
31
+    {
32
+        return [
33
+            QueryService::amount("sales", __("words.sale")),
34
+            QueryService::amount("purchases", __("words.purchase")),
35
+            QueryService::amount("products", __("words.product")),
36
+            QueryService::amount("stock_products", __("words.stock_product")),
37
+        ];
38
+    }
39
+
40
+    public static function salePurchaseStatistic()
41
+    {
42
+        return [
43
+            __("words.sale") => QueryService::statistic("sales"),
44
+            __("words.purchase") => QueryService::statistic("purchases"),
45
+        ];
46
+    }
47
+}

app/Services/HelperService.php → app/Services/FunctionService.php View File

@@ -2,7 +2,7 @@
2 2
 
3 3
 namespace App\Services;
4 4
 
5
-class HelperService
5
+class FunctionService
6 6
 {
7 7
     public static function addPrevValue(array $array)
8 8
     {

+ 0
- 10
app/Services/ProductService.php View File

@@ -13,14 +13,4 @@ class ProductService
13 13
             $product->stockProducts()->exists() ||
14 14
             $product->purchaseDetails()->exists();
15 15
     }
16
-
17
-    public static function productAmount()
18
-    {
19
-        return QueryService::queryAmount("products", "Produk");
20
-    }
21
-
22
-    public static function stockProductAmount()
23
-    {
24
-        return QueryService::queryAmount("stock_products", "Stok Produk");
25
-    }
26 16
 }

+ 0
- 5
app/Services/PurchaseService.php View File

@@ -13,9 +13,4 @@ class PurchaseService
13 13
             return $purchaseDetail->price * $purchaseDetail->qty;
14 14
         });
15 15
     }
16
-
17
-    public static function purchaseAmount()
18
-    {
19
-        return QueryService::queryAmount("purchases", "Pembelian");
20
-    }
21 16
 }

+ 49
- 3
app/Services/QueryService.php View File

@@ -6,12 +6,12 @@ use Illuminate\Support\Facades\DB;
6 6
 
7 7
 class QueryService
8 8
 {
9
-    public static function queryAmount(string $table, string $title)
9
+    public static function amount(string $table, string $title)
10 10
     {
11 11
         return DB::table($table)
12 12
             ->selectRaw(
13
-                "COUNT(*) as amount,
14
-                (SELECT COUNT(*) FROM products WHERE DATE(updated_at) = CURDATE()) as amountToday"
13
+                "COUNT(*) AS amount,
14
+                 (SELECT COUNT(*) FROM products WHERE DATE(updated_at) = CURDATE()) AS amountToday"
15 15
             )
16 16
             ->get()
17 17
             ->transform(
@@ -23,4 +23,50 @@ class QueryService
23 23
             )
24 24
             ->first();
25 25
     }
26
+
27
+    public static function statistic(string $table)
28
+    {
29
+        return DB::table($table)
30
+            ->selectRaw(
31
+                "COUNT(*) AS amount,
32
+                 DATE_FORMAT(created_at, '%b') AS month"
33
+            )
34
+            ->groupByRaw("MONTH(created_at)")
35
+            ->get()
36
+            ->pluck("amount", "month");
37
+    }
38
+
39
+    public static function statisticDualYear(string $table, string $tableJoin)
40
+    {
41
+        return DB::table($table)
42
+            ->selectRaw(
43
+                "DATE_FORMAT($table.created_at, '%Y') AS year,
44
+                 DATE_FORMAT($table.created_at, '%b') AS month,
45
+                 IF(
46
+                 $tableJoin.ppn,
47
+                 $table.price + $table.price * ((
48
+                 SELECT
49
+                    ppn
50
+                 FROM
51
+                    ppns) / 100),
52
+                 $table.price
53
+                 ) AS price,
54
+                 COUNT(*) AS total"
55
+            )
56
+            ->join(
57
+                $tableJoin,
58
+                "$tableJoin.number",
59
+                "=",
60
+                "$table.purchase_number"
61
+            )
62
+            ->groupByRaw(
63
+                "YEAR($table.created_at),
64
+                 MONTH($table.created_at),
65
+                 year,
66
+                 month,
67
+                 price
68
+                 DESC"
69
+            )
70
+            ->get();
71
+    }
26 72
 }

+ 0
- 32
app/Services/SaleService.php View File

@@ -3,7 +3,6 @@
3 3
 namespace App\Services;
4 4
 
5 5
 use App\Models\Sale;
6
-use Illuminate\Support\Facades\DB;
7 6
 
8 7
 class SaleService
9 8
 {
@@ -13,35 +12,4 @@ class SaleService
13 12
             return $saleDetail->price * $saleDetail->qty;
14 13
         });
15 14
     }
16
-
17
-    public static function saleAmount()
18
-    {
19
-        return QueryService::queryAmount("sales", "Penjualan");
20
-    }
21
-
22
-    public static function bestSelling()
23
-    {
24
-        return DB::table("sale_details")
25
-            ->selectRaw(
26
-                "product_number, products.name as title, SUM(qty) as qty, products.profit"
27
-            )
28
-            ->join(
29
-                "products",
30
-                "products.number",
31
-                "=",
32
-                "sale_details.product_number"
33
-            )
34
-            ->groupByRaw("product_number")
35
-            ->orderByRaw("qty DESC")
36
-            ->limit(5)
37
-            ->get();
38
-    }
39
-
40
-    public static function saleStatistic()
41
-    {
42
-        return DB::table("sales")
43
-            ->selectRaw("COUNT(*) as amount")
44
-            ->groupByRaw("MONTH(sales.created_at)")
45
-            ->get();
46
-    }
47 15
 }

+ 7
- 9
composer.lock View File

@@ -2330,16 +2330,16 @@
2330 2330
         },
2331 2331
         {
2332 2332
             "name": "monolog/monolog",
2333
-            "version": "2.7.0",
2333
+            "version": "2.8.0",
2334 2334
             "source": {
2335 2335
                 "type": "git",
2336 2336
                 "url": "https://github.com/Seldaek/monolog.git",
2337
-                "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524"
2337
+                "reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
2338 2338
             },
2339 2339
             "dist": {
2340 2340
                 "type": "zip",
2341
-                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5579edf28aee1190a798bfa5be8bc16c563bd524",
2342
-                "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524",
2341
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
2342
+                "reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
2343 2343
                 "shasum": ""
2344 2344
             },
2345 2345
             "require": {
@@ -2359,11 +2359,10 @@
2359 2359
                 "guzzlehttp/psr7": "^2.2",
2360 2360
                 "mongodb/mongodb": "^1.8",
2361 2361
                 "php-amqplib/php-amqplib": "~2.4 || ^3",
2362
-                "php-console/php-console": "^3.1.3",
2363 2362
                 "phpspec/prophecy": "^1.15",
2364 2363
                 "phpstan/phpstan": "^0.12.91",
2365 2364
                 "phpunit/phpunit": "^8.5.14",
2366
-                "predis/predis": "^1.1",
2365
+                "predis/predis": "^1.1 || ^2.0",
2367 2366
                 "rollbar/rollbar": "^1.3 || ^2 || ^3",
2368 2367
                 "ruflin/elastica": "^7",
2369 2368
                 "swiftmailer/swiftmailer": "^5.3|^6.0",
@@ -2383,7 +2382,6 @@
2383 2382
                 "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
2384 2383
                 "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
2385 2384
                 "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
2386
-                "php-console/php-console": "Allow sending log messages to Google Chrome",
2387 2385
                 "rollbar/rollbar": "Allow sending log messages to Rollbar",
2388 2386
                 "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
2389 2387
             },
@@ -2418,7 +2416,7 @@
2418 2416
             ],
2419 2417
             "support": {
2420 2418
                 "issues": "https://github.com/Seldaek/monolog/issues",
2421
-                "source": "https://github.com/Seldaek/monolog/tree/2.7.0"
2419
+                "source": "https://github.com/Seldaek/monolog/tree/2.8.0"
2422 2420
             },
2423 2421
             "funding": [
2424 2422
                 {
@@ -2430,7 +2428,7 @@
2430 2428
                     "type": "tidelift"
2431 2429
                 }
2432 2430
             ],
2433
-            "time": "2022-06-09T08:59:12+00:00"
2431
+            "time": "2022-07-24T11:55:47+00:00"
2434 2432
         },
2435 2433
         {
2436 2434
             "name": "myclabs/php-enum",

+ 4
- 0
lang/en/words.php View File

@@ -38,5 +38,9 @@ return [
38 38
     'top_up_rank' => 'Top Up',
39 39
     'top_up_number_rank' => 'Top Up :number Rank',
40 40
     'user' => 'User',
41
+    'sale' => 'Sale',
42
+    'purchase' => 'Purchase',
43
+    'product' => 'Product',
44
+    'stock_product' => 'Stock Product'
41 45
 
42 46
 ];

+ 4
- 0
lang/id/words.php View File

@@ -38,5 +38,9 @@ return [
38 38
     'top_up_rank' => 'Top Up',
39 39
     'top_up_number_rank' => 'Peringkat :number Top Up',
40 40
     'user' => 'User',
41
+    'sale' => 'Penjualan',
42
+    'purchase' => 'Pembelian',
43
+    'product' => 'Produk',
44
+    'stock_product' => 'Stok Produk'
41 45
 
42 46
 ];

+ 180
- 180
package-lock.json View File

@@ -867,16 +867,16 @@
867 867
       }
868 868
     },
869 869
     "node_modules/electron-to-chromium": {
870
-      "version": "1.4.199",
871
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz",
872
-      "integrity": "sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg==",
870
+      "version": "1.4.200",
871
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz",
872
+      "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==",
873 873
       "dev": true,
874 874
       "peer": true
875 875
     },
876 876
     "node_modules/esbuild": {
877
-      "version": "0.14.49",
878
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz",
879
-      "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==",
877
+      "version": "0.14.50",
878
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.50.tgz",
879
+      "integrity": "sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==",
880 880
       "dev": true,
881 881
       "hasInstallScript": true,
882 882
       "bin": {
@@ -886,32 +886,32 @@
886 886
         "node": ">=12"
887 887
       },
888 888
       "optionalDependencies": {
889
-        "esbuild-android-64": "0.14.49",
890
-        "esbuild-android-arm64": "0.14.49",
891
-        "esbuild-darwin-64": "0.14.49",
892
-        "esbuild-darwin-arm64": "0.14.49",
893
-        "esbuild-freebsd-64": "0.14.49",
894
-        "esbuild-freebsd-arm64": "0.14.49",
895
-        "esbuild-linux-32": "0.14.49",
896
-        "esbuild-linux-64": "0.14.49",
897
-        "esbuild-linux-arm": "0.14.49",
898
-        "esbuild-linux-arm64": "0.14.49",
899
-        "esbuild-linux-mips64le": "0.14.49",
900
-        "esbuild-linux-ppc64le": "0.14.49",
901
-        "esbuild-linux-riscv64": "0.14.49",
902
-        "esbuild-linux-s390x": "0.14.49",
903
-        "esbuild-netbsd-64": "0.14.49",
904
-        "esbuild-openbsd-64": "0.14.49",
905
-        "esbuild-sunos-64": "0.14.49",
906
-        "esbuild-windows-32": "0.14.49",
907
-        "esbuild-windows-64": "0.14.49",
908
-        "esbuild-windows-arm64": "0.14.49"
889
+        "esbuild-android-64": "0.14.50",
890
+        "esbuild-android-arm64": "0.14.50",
891
+        "esbuild-darwin-64": "0.14.50",
892
+        "esbuild-darwin-arm64": "0.14.50",
893
+        "esbuild-freebsd-64": "0.14.50",
894
+        "esbuild-freebsd-arm64": "0.14.50",
895
+        "esbuild-linux-32": "0.14.50",
896
+        "esbuild-linux-64": "0.14.50",
897
+        "esbuild-linux-arm": "0.14.50",
898
+        "esbuild-linux-arm64": "0.14.50",
899
+        "esbuild-linux-mips64le": "0.14.50",
900
+        "esbuild-linux-ppc64le": "0.14.50",
901
+        "esbuild-linux-riscv64": "0.14.50",
902
+        "esbuild-linux-s390x": "0.14.50",
903
+        "esbuild-netbsd-64": "0.14.50",
904
+        "esbuild-openbsd-64": "0.14.50",
905
+        "esbuild-sunos-64": "0.14.50",
906
+        "esbuild-windows-32": "0.14.50",
907
+        "esbuild-windows-64": "0.14.50",
908
+        "esbuild-windows-arm64": "0.14.50"
909 909
       }
910 910
     },
911 911
     "node_modules/esbuild-android-64": {
912
-      "version": "0.14.49",
913
-      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz",
914
-      "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==",
912
+      "version": "0.14.50",
913
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.50.tgz",
914
+      "integrity": "sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==",
915 915
       "cpu": [
916 916
         "x64"
917 917
       ],
@@ -925,9 +925,9 @@
925 925
       }
926 926
     },
927 927
     "node_modules/esbuild-android-arm64": {
928
-      "version": "0.14.49",
929
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz",
930
-      "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==",
928
+      "version": "0.14.50",
929
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.50.tgz",
930
+      "integrity": "sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==",
931 931
       "cpu": [
932 932
         "arm64"
933 933
       ],
@@ -941,9 +941,9 @@
941 941
       }
942 942
     },
943 943
     "node_modules/esbuild-darwin-64": {
944
-      "version": "0.14.49",
945
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz",
946
-      "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==",
944
+      "version": "0.14.50",
945
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.50.tgz",
946
+      "integrity": "sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==",
947 947
       "cpu": [
948 948
         "x64"
949 949
       ],
@@ -957,9 +957,9 @@
957 957
       }
958 958
     },
959 959
     "node_modules/esbuild-darwin-arm64": {
960
-      "version": "0.14.49",
961
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz",
962
-      "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==",
960
+      "version": "0.14.50",
961
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.50.tgz",
962
+      "integrity": "sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==",
963 963
       "cpu": [
964 964
         "arm64"
965 965
       ],
@@ -973,9 +973,9 @@
973 973
       }
974 974
     },
975 975
     "node_modules/esbuild-freebsd-64": {
976
-      "version": "0.14.49",
977
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz",
978
-      "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==",
976
+      "version": "0.14.50",
977
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.50.tgz",
978
+      "integrity": "sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==",
979 979
       "cpu": [
980 980
         "x64"
981 981
       ],
@@ -989,9 +989,9 @@
989 989
       }
990 990
     },
991 991
     "node_modules/esbuild-freebsd-arm64": {
992
-      "version": "0.14.49",
993
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz",
994
-      "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==",
992
+      "version": "0.14.50",
993
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.50.tgz",
994
+      "integrity": "sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==",
995 995
       "cpu": [
996 996
         "arm64"
997 997
       ],
@@ -1005,9 +1005,9 @@
1005 1005
       }
1006 1006
     },
1007 1007
     "node_modules/esbuild-linux-32": {
1008
-      "version": "0.14.49",
1009
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz",
1010
-      "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==",
1008
+      "version": "0.14.50",
1009
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.50.tgz",
1010
+      "integrity": "sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==",
1011 1011
       "cpu": [
1012 1012
         "ia32"
1013 1013
       ],
@@ -1021,9 +1021,9 @@
1021 1021
       }
1022 1022
     },
1023 1023
     "node_modules/esbuild-linux-64": {
1024
-      "version": "0.14.49",
1025
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz",
1026
-      "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==",
1024
+      "version": "0.14.50",
1025
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.50.tgz",
1026
+      "integrity": "sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==",
1027 1027
       "cpu": [
1028 1028
         "x64"
1029 1029
       ],
@@ -1037,9 +1037,9 @@
1037 1037
       }
1038 1038
     },
1039 1039
     "node_modules/esbuild-linux-arm": {
1040
-      "version": "0.14.49",
1041
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz",
1042
-      "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==",
1040
+      "version": "0.14.50",
1041
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.50.tgz",
1042
+      "integrity": "sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==",
1043 1043
       "cpu": [
1044 1044
         "arm"
1045 1045
       ],
@@ -1053,9 +1053,9 @@
1053 1053
       }
1054 1054
     },
1055 1055
     "node_modules/esbuild-linux-arm64": {
1056
-      "version": "0.14.49",
1057
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz",
1058
-      "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==",
1056
+      "version": "0.14.50",
1057
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.50.tgz",
1058
+      "integrity": "sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==",
1059 1059
       "cpu": [
1060 1060
         "arm64"
1061 1061
       ],
@@ -1069,9 +1069,9 @@
1069 1069
       }
1070 1070
     },
1071 1071
     "node_modules/esbuild-linux-mips64le": {
1072
-      "version": "0.14.49",
1073
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz",
1074
-      "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==",
1072
+      "version": "0.14.50",
1073
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.50.tgz",
1074
+      "integrity": "sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==",
1075 1075
       "cpu": [
1076 1076
         "mips64el"
1077 1077
       ],
@@ -1085,9 +1085,9 @@
1085 1085
       }
1086 1086
     },
1087 1087
     "node_modules/esbuild-linux-ppc64le": {
1088
-      "version": "0.14.49",
1089
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz",
1090
-      "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==",
1088
+      "version": "0.14.50",
1089
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.50.tgz",
1090
+      "integrity": "sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==",
1091 1091
       "cpu": [
1092 1092
         "ppc64"
1093 1093
       ],
@@ -1101,9 +1101,9 @@
1101 1101
       }
1102 1102
     },
1103 1103
     "node_modules/esbuild-linux-riscv64": {
1104
-      "version": "0.14.49",
1105
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz",
1106
-      "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==",
1104
+      "version": "0.14.50",
1105
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.50.tgz",
1106
+      "integrity": "sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==",
1107 1107
       "cpu": [
1108 1108
         "riscv64"
1109 1109
       ],
@@ -1117,9 +1117,9 @@
1117 1117
       }
1118 1118
     },
1119 1119
     "node_modules/esbuild-linux-s390x": {
1120
-      "version": "0.14.49",
1121
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz",
1122
-      "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==",
1120
+      "version": "0.14.50",
1121
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.50.tgz",
1122
+      "integrity": "sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==",
1123 1123
       "cpu": [
1124 1124
         "s390x"
1125 1125
       ],
@@ -1133,9 +1133,9 @@
1133 1133
       }
1134 1134
     },
1135 1135
     "node_modules/esbuild-netbsd-64": {
1136
-      "version": "0.14.49",
1137
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz",
1138
-      "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==",
1136
+      "version": "0.14.50",
1137
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.50.tgz",
1138
+      "integrity": "sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==",
1139 1139
       "cpu": [
1140 1140
         "x64"
1141 1141
       ],
@@ -1149,9 +1149,9 @@
1149 1149
       }
1150 1150
     },
1151 1151
     "node_modules/esbuild-openbsd-64": {
1152
-      "version": "0.14.49",
1153
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz",
1154
-      "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==",
1152
+      "version": "0.14.50",
1153
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.50.tgz",
1154
+      "integrity": "sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==",
1155 1155
       "cpu": [
1156 1156
         "x64"
1157 1157
       ],
@@ -1165,9 +1165,9 @@
1165 1165
       }
1166 1166
     },
1167 1167
     "node_modules/esbuild-sunos-64": {
1168
-      "version": "0.14.49",
1169
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz",
1170
-      "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==",
1168
+      "version": "0.14.50",
1169
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.50.tgz",
1170
+      "integrity": "sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==",
1171 1171
       "cpu": [
1172 1172
         "x64"
1173 1173
       ],
@@ -1181,9 +1181,9 @@
1181 1181
       }
1182 1182
     },
1183 1183
     "node_modules/esbuild-windows-32": {
1184
-      "version": "0.14.49",
1185
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz",
1186
-      "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==",
1184
+      "version": "0.14.50",
1185
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.50.tgz",
1186
+      "integrity": "sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==",
1187 1187
       "cpu": [
1188 1188
         "ia32"
1189 1189
       ],
@@ -1197,9 +1197,9 @@
1197 1197
       }
1198 1198
     },
1199 1199
     "node_modules/esbuild-windows-64": {
1200
-      "version": "0.14.49",
1201
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz",
1202
-      "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==",
1200
+      "version": "0.14.50",
1201
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.50.tgz",
1202
+      "integrity": "sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==",
1203 1203
       "cpu": [
1204 1204
         "x64"
1205 1205
       ],
@@ -1213,9 +1213,9 @@
1213 1213
       }
1214 1214
     },
1215 1215
     "node_modules/esbuild-windows-arm64": {
1216
-      "version": "0.14.49",
1217
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz",
1218
-      "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==",
1216
+      "version": "0.14.50",
1217
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.50.tgz",
1218
+      "integrity": "sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==",
1219 1219
       "cpu": [
1220 1220
         "arm64"
1221 1221
       ],
@@ -2024,9 +2024,9 @@
2024 2024
       }
2025 2025
     },
2026 2026
     "node_modules/vite": {
2027
-      "version": "3.0.2",
2028
-      "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.2.tgz",
2029
-      "integrity": "sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==",
2027
+      "version": "3.0.3",
2028
+      "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.3.tgz",
2029
+      "integrity": "sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==",
2030 2030
       "dev": true,
2031 2031
       "dependencies": {
2032 2032
         "esbuild": "^0.14.47",
@@ -2753,177 +2753,177 @@
2753 2753
       }
2754 2754
     },
2755 2755
     "electron-to-chromium": {
2756
-      "version": "1.4.199",
2757
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz",
2758
-      "integrity": "sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg==",
2756
+      "version": "1.4.200",
2757
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz",
2758
+      "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==",
2759 2759
       "dev": true,
2760 2760
       "peer": true
2761 2761
     },
2762 2762
     "esbuild": {
2763
-      "version": "0.14.49",
2764
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz",
2765
-      "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==",
2766
-      "dev": true,
2767
-      "requires": {
2768
-        "esbuild-android-64": "0.14.49",
2769
-        "esbuild-android-arm64": "0.14.49",
2770
-        "esbuild-darwin-64": "0.14.49",
2771
-        "esbuild-darwin-arm64": "0.14.49",
2772
-        "esbuild-freebsd-64": "0.14.49",
2773
-        "esbuild-freebsd-arm64": "0.14.49",
2774
-        "esbuild-linux-32": "0.14.49",
2775
-        "esbuild-linux-64": "0.14.49",
2776
-        "esbuild-linux-arm": "0.14.49",
2777
-        "esbuild-linux-arm64": "0.14.49",
2778
-        "esbuild-linux-mips64le": "0.14.49",
2779
-        "esbuild-linux-ppc64le": "0.14.49",
2780
-        "esbuild-linux-riscv64": "0.14.49",
2781
-        "esbuild-linux-s390x": "0.14.49",
2782
-        "esbuild-netbsd-64": "0.14.49",
2783
-        "esbuild-openbsd-64": "0.14.49",
2784
-        "esbuild-sunos-64": "0.14.49",
2785
-        "esbuild-windows-32": "0.14.49",
2786
-        "esbuild-windows-64": "0.14.49",
2787
-        "esbuild-windows-arm64": "0.14.49"
2763
+      "version": "0.14.50",
2764
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.50.tgz",
2765
+      "integrity": "sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==",
2766
+      "dev": true,
2767
+      "requires": {
2768
+        "esbuild-android-64": "0.14.50",
2769
+        "esbuild-android-arm64": "0.14.50",
2770
+        "esbuild-darwin-64": "0.14.50",
2771
+        "esbuild-darwin-arm64": "0.14.50",
2772
+        "esbuild-freebsd-64": "0.14.50",
2773
+        "esbuild-freebsd-arm64": "0.14.50",
2774
+        "esbuild-linux-32": "0.14.50",
2775
+        "esbuild-linux-64": "0.14.50",
2776
+        "esbuild-linux-arm": "0.14.50",
2777
+        "esbuild-linux-arm64": "0.14.50",
2778
+        "esbuild-linux-mips64le": "0.14.50",
2779
+        "esbuild-linux-ppc64le": "0.14.50",
2780
+        "esbuild-linux-riscv64": "0.14.50",
2781
+        "esbuild-linux-s390x": "0.14.50",
2782
+        "esbuild-netbsd-64": "0.14.50",
2783
+        "esbuild-openbsd-64": "0.14.50",
2784
+        "esbuild-sunos-64": "0.14.50",
2785
+        "esbuild-windows-32": "0.14.50",
2786
+        "esbuild-windows-64": "0.14.50",
2787
+        "esbuild-windows-arm64": "0.14.50"
2788 2788
       }
2789 2789
     },
2790 2790
     "esbuild-android-64": {
2791
-      "version": "0.14.49",
2792
-      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz",
2793
-      "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==",
2791
+      "version": "0.14.50",
2792
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.50.tgz",
2793
+      "integrity": "sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==",
2794 2794
       "dev": true,
2795 2795
       "optional": true
2796 2796
     },
2797 2797
     "esbuild-android-arm64": {
2798
-      "version": "0.14.49",
2799
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz",
2800
-      "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==",
2798
+      "version": "0.14.50",
2799
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.50.tgz",
2800
+      "integrity": "sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==",
2801 2801
       "dev": true,
2802 2802
       "optional": true
2803 2803
     },
2804 2804
     "esbuild-darwin-64": {
2805
-      "version": "0.14.49",
2806
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz",
2807
-      "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==",
2805
+      "version": "0.14.50",
2806
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.50.tgz",
2807
+      "integrity": "sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==",
2808 2808
       "dev": true,
2809 2809
       "optional": true
2810 2810
     },
2811 2811
     "esbuild-darwin-arm64": {
2812
-      "version": "0.14.49",
2813
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz",
2814
-      "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==",
2812
+      "version": "0.14.50",
2813
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.50.tgz",
2814
+      "integrity": "sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==",
2815 2815
       "dev": true,
2816 2816
       "optional": true
2817 2817
     },
2818 2818
     "esbuild-freebsd-64": {
2819
-      "version": "0.14.49",
2820
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz",
2821
-      "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==",
2819
+      "version": "0.14.50",
2820
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.50.tgz",
2821
+      "integrity": "sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==",
2822 2822
       "dev": true,
2823 2823
       "optional": true
2824 2824
     },
2825 2825
     "esbuild-freebsd-arm64": {
2826
-      "version": "0.14.49",
2827
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz",
2828
-      "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==",
2826
+      "version": "0.14.50",
2827
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.50.tgz",
2828
+      "integrity": "sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==",
2829 2829
       "dev": true,
2830 2830
       "optional": true
2831 2831
     },
2832 2832
     "esbuild-linux-32": {
2833
-      "version": "0.14.49",
2834
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz",
2835
-      "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==",
2833
+      "version": "0.14.50",
2834
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.50.tgz",
2835
+      "integrity": "sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==",
2836 2836
       "dev": true,
2837 2837
       "optional": true
2838 2838
     },
2839 2839
     "esbuild-linux-64": {
2840
-      "version": "0.14.49",
2841
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz",
2842
-      "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==",
2840
+      "version": "0.14.50",
2841
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.50.tgz",
2842
+      "integrity": "sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==",
2843 2843
       "dev": true,
2844 2844
       "optional": true
2845 2845
     },
2846 2846
     "esbuild-linux-arm": {
2847
-      "version": "0.14.49",
2848
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz",
2849
-      "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==",
2847
+      "version": "0.14.50",
2848
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.50.tgz",
2849
+      "integrity": "sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==",
2850 2850
       "dev": true,
2851 2851
       "optional": true
2852 2852
     },
2853 2853
     "esbuild-linux-arm64": {
2854
-      "version": "0.14.49",
2855
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz",
2856
-      "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==",
2854
+      "version": "0.14.50",
2855
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.50.tgz",
2856
+      "integrity": "sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==",
2857 2857
       "dev": true,
2858 2858
       "optional": true
2859 2859
     },
2860 2860
     "esbuild-linux-mips64le": {
2861
-      "version": "0.14.49",
2862
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz",
2863
-      "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==",
2861
+      "version": "0.14.50",
2862
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.50.tgz",
2863
+      "integrity": "sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==",
2864 2864
       "dev": true,
2865 2865
       "optional": true
2866 2866
     },
2867 2867
     "esbuild-linux-ppc64le": {
2868
-      "version": "0.14.49",
2869
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz",
2870
-      "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==",
2868
+      "version": "0.14.50",
2869
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.50.tgz",
2870
+      "integrity": "sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==",
2871 2871
       "dev": true,
2872 2872
       "optional": true
2873 2873
     },
2874 2874
     "esbuild-linux-riscv64": {
2875
-      "version": "0.14.49",
2876
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz",
2877
-      "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==",
2875
+      "version": "0.14.50",
2876
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.50.tgz",
2877
+      "integrity": "sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==",
2878 2878
       "dev": true,
2879 2879
       "optional": true
2880 2880
     },
2881 2881
     "esbuild-linux-s390x": {
2882
-      "version": "0.14.49",
2883
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz",
2884
-      "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==",
2882
+      "version": "0.14.50",
2883
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.50.tgz",
2884
+      "integrity": "sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==",
2885 2885
       "dev": true,
2886 2886
       "optional": true
2887 2887
     },
2888 2888
     "esbuild-netbsd-64": {
2889
-      "version": "0.14.49",
2890
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz",
2891
-      "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==",
2889
+      "version": "0.14.50",
2890
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.50.tgz",
2891
+      "integrity": "sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==",
2892 2892
       "dev": true,
2893 2893
       "optional": true
2894 2894
     },
2895 2895
     "esbuild-openbsd-64": {
2896
-      "version": "0.14.49",
2897
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz",
2898
-      "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==",
2896
+      "version": "0.14.50",
2897
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.50.tgz",
2898
+      "integrity": "sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==",
2899 2899
       "dev": true,
2900 2900
       "optional": true
2901 2901
     },
2902 2902
     "esbuild-sunos-64": {
2903
-      "version": "0.14.49",
2904
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz",
2905
-      "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==",
2903
+      "version": "0.14.50",
2904
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.50.tgz",
2905
+      "integrity": "sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==",
2906 2906
       "dev": true,
2907 2907
       "optional": true
2908 2908
     },
2909 2909
     "esbuild-windows-32": {
2910
-      "version": "0.14.49",
2911
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz",
2912
-      "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==",
2910
+      "version": "0.14.50",
2911
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.50.tgz",
2912
+      "integrity": "sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==",
2913 2913
       "dev": true,
2914 2914
       "optional": true
2915 2915
     },
2916 2916
     "esbuild-windows-64": {
2917
-      "version": "0.14.49",
2918
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz",
2919
-      "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==",
2917
+      "version": "0.14.50",
2918
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.50.tgz",
2919
+      "integrity": "sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==",
2920 2920
       "dev": true,
2921 2921
       "optional": true
2922 2922
     },
2923 2923
     "esbuild-windows-arm64": {
2924
-      "version": "0.14.49",
2925
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz",
2926
-      "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==",
2924
+      "version": "0.14.50",
2925
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.50.tgz",
2926
+      "integrity": "sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==",
2927 2927
       "dev": true,
2928 2928
       "optional": true
2929 2929
     },
@@ -3484,9 +3484,9 @@
3484 3484
       }
3485 3485
     },
3486 3486
     "vite": {
3487
-      "version": "3.0.2",
3488
-      "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.2.tgz",
3489
-      "integrity": "sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==",
3487
+      "version": "3.0.3",
3488
+      "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.3.tgz",
3489
+      "integrity": "sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==",
3490 3490
       "dev": true,
3491 3491
       "requires": {
3492 3492
         "esbuild": "^0.14.47",

+ 42
- 48
resources/js/pages/Dashboards/Index.vue View File

@@ -2,47 +2,49 @@
2 2
 import CardCount from './Components/CardCount.vue'
3 3
 import CardProductFavorite from './Components/CardProductFavorite.vue'
4 4
 import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
5
+import { computed } from '@vue/reactivity'
5 6
 
6 7
 const props = defineProps([
7
-  'productCounts',
8
+  'productAmount',
8 9
   'productFavorites',
9
-  'saleStatistic',
10
+  'salePurchaseStatistic',
10 11
 ])
11 12
 
12
-const purchaseAndSale = {
13
-  labels: [
14
-    'Jan',
15
-    'Feb',
16
-    'Mar',
17
-    'Apr',
18
-    'May',
19
-    'Jun',
20
-    'Jul',
21
-    'Aug',
22
-    'Sep',
23
-    'Oct',
24
-    'Nov',
25
-    'Dec',
26
-  ],
27
-  datasets: [
28
-    {
29
-      label: 'Pembelian',
30
-      data: [65, 59, 80, 81, 56, 55, 40],
31
-      fill: false,
32
-      backgroundColor: '#2f4860',
33
-      borderColor: '#2f4860',
34
-      tension: 0.4,
35
-    },
36
-    {
37
-      label: 'Penjualan',
38
-      data: [28, 48, 40, 19, 86, 27, 90],
39
-      fill: false,
40
-      backgroundColor: '#00bb7e',
41
-      borderColor: '#00bb7e',
42
-      tension: 0.4,
43
-    },
44
-  ],
45
-}
13
+const salePurchase = computed(() => {
14
+  const data = {
15
+    datasets: [
16
+      {
17
+        label: null,
18
+        data: null,
19
+        fill: false,
20
+        backgroundColor: '#2f4860',
21
+        borderColor: '#2f4860',
22
+        tension: 0.4,
23
+      },
24
+      {
25
+        label: null,
26
+        data: null,
27
+        fill: false,
28
+        backgroundColor: '#00bb7e',
29
+        borderColor: '#00bb7e',
30
+        tension: 0.4,
31
+      },
32
+    ],
33
+  }
34
+
35
+  let index = 0
36
+
37
+  for (const key in props.salePurchaseStatistic) {
38
+    data.datasets[index].label = key
39
+    data.datasets[index].data = props.salePurchaseStatistic[key]
40
+
41
+    console.info(props.salePurchaseStatistic[key])
42
+
43
+    index++
44
+  }
45
+
46
+  return data
47
+})
46 48
 
47 49
 const barData = {
48 50
   labels: [
@@ -84,10 +86,6 @@ const barData = {
84 86
     },
85 87
   ],
86 88
 }
87
-
88
-const lineOptions = null
89
-
90
-const productCounts = props.productCounts
91 89
 </script>
92 90
 
93 91
 <template>
@@ -95,7 +93,7 @@ const productCounts = props.productCounts
95 93
     <div class="grid">
96 94
       <div class="col-12">
97 95
         <div class="grid">
98
-          <CardCount :products="productCounts" />
96
+          <CardCount :products="productAmount" />
99 97
         </div>
100 98
       </div>
101 99
 
@@ -105,11 +103,7 @@ const productCounts = props.productCounts
105 103
             <div class="card">
106 104
               <h5>Pembelian dan Penjualan</h5>
107 105
 
108
-              <Chart
109
-                type="line"
110
-                :data="purchaseAndSale"
111
-                :options="lineOptions"
112
-              />
106
+              <Chart type="line" :data="salePurchase" />
113 107
             </div>
114 108
           </div>
115 109
 
@@ -125,7 +119,7 @@ const productCounts = props.productCounts
125 119
             <div class="card">
126 120
               <h5>Pembelian</h5>
127 121
 
128
-              <Chart type="bar" :data="barData" :options="lineOptions" />
122
+              <Chart type="bar" :data="barData" />
129 123
             </div>
130 124
           </div>
131 125
 
@@ -133,7 +127,7 @@ const productCounts = props.productCounts
133 127
             <div class="card">
134 128
               <h5>Pendapatan</h5>
135 129
 
136
-              <Chart type="bar" :data="barData" :options="lineOptions" />
130
+              <Chart type="bar" :data="barData" />
137 131
             </div>
138 132
           </div>
139 133
         </div>

+ 3
- 3
resources/views/PDF/Purchases/Invoice.blade.php View File

@@ -160,10 +160,10 @@
160 160
                         <td>{{ $purchaseDetail->qty }}</td>
161 161
                         <td>UNIT</td>
162 162
                         <td style="text-align: right;">
163
-                            {{ App\Services\HelperService::rupiahFormat($purchaseDetail->price) }}
163
+                            {{ App\Services\FunctionService::rupiahFormat($purchaseDetail->price) }}
164 164
                         </td>
165 165
                         <td style="text-align: right;">
166
-                            {{ App\Services\HelperService::rupiahFormat($purchaseDetail->price * $purchaseDetail->qty) }}
166
+                            {{ App\Services\FunctionService::rupiahFormat($purchaseDetail->price * $purchaseDetail->qty) }}
167 167
                         </td>
168 168
                     </tr>
169 169
                 @endforeach
@@ -172,7 +172,7 @@
172 172
                 <tr>
173 173
                     <td colspan="4"></td>
174 174
                     <td>TOTAL</td>
175
-                    <td>{{ App\Services\HelperService::rupiahFormat(App\Services\PurchaseService::totalPrice($purchase)) }}
175
+                    <td>{{ App\Services\FunctionService::rupiahFormat(App\Services\PurchaseService::totalPrice($purchase)) }}
176 176
                     </td>
177 177
                 </tr>
178 178
                 {{-- <tr>

+ 3
- 3
resources/views/PDF/Sales/Invoice.blade.php View File

@@ -160,9 +160,9 @@
160 160
                         <td>{{ $saleDetail->qty }}</td>
161 161
                         <td>UNIT</td>
162 162
                         <td style="text-align: right;">
163
-                            {{ App\Services\HelperService::rupiahFormat($saleDetail->price) }}</td>
163
+                            {{ App\Services\FunctionService::rupiahFormat($saleDetail->price) }}</td>
164 164
                         <td style="text-align: right;">
165
-                            {{ App\Services\HelperService::rupiahFormat($saleDetail->price * $saleDetail->qty) }}
165
+                            {{ App\Services\FunctionService::rupiahFormat($saleDetail->price * $saleDetail->qty) }}
166 166
                         </td>
167 167
                     </tr>
168 168
                 @endforeach
@@ -171,7 +171,7 @@
171 171
                 <tr>
172 172
                     <td colspan="4"></td>
173 173
                     <td>TOTAL</td>
174
-                    <td>{{ App\Services\HelperService::rupiahFormat(App\Services\SaleService::totalPrice($sale)) }}
174
+                    <td>{{ App\Services\FunctionService::rupiahFormat(App\Services\SaleService::totalPrice($sale)) }}
175 175
                     </td>
176 176
                 </tr>
177 177
                 {{-- <tr>