diff --git a/app/Http/Controllers/WarehouseManagement/MutationsController.php b/app/Http/Controllers/WarehouseManagement/MutationsController.php
index 2516f13..395b4fe 100755
--- a/app/Http/Controllers/WarehouseManagement/MutationsController.php
+++ b/app/Http/Controllers/WarehouseManagement/MutationsController.php
@@ -10,6 +10,7 @@ use App\Enums\MutationStatus;
use App\Models\Menu;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
use Yajra\DataTables\DataTables;
class MutationsController extends Controller
@@ -19,13 +20,18 @@ class MutationsController extends Controller
$menu = Menu::where('link','mutations.index')->first();
if ($request->ajax()) {
+ Log::info('Mutations DataTables request', [
+ 'order' => $request->get('order'),
+ 'columns' => $request->get('columns'),
+ 'user_id' => auth()->id()
+ ]);
+
// Use a more specific query to avoid join conflicts
$data = Mutation::query()
->with(['fromDealer', 'toDealer', 'requestedBy.role', 'approvedBy.role', 'receivedBy.role'])
->select([
'mutations.*'
- ])
- ->orderBy('mutations.id', 'desc'); // Default order by ID desc
+ ]); // Remove default ordering to let DataTables handle it
// Filter berdasarkan dealer jika user bukan admin
if (auth()->user()->dealer_id) {
@@ -60,7 +66,7 @@ class MutationsController extends Controller
return number_format($row->total_items, 0);
})
->addColumn('created_at', function($row) {
- return $row->created_at->format('d/m/Y H:i');
+ return $row->created_at->format('d M Y, H:i');
})
->addColumn('action', function($row) {
return view('warehouse_management.mutations._action', compact('row'))->render();
@@ -426,7 +432,7 @@ class MutationsController extends Controller
return number_format($row->total_items, 0);
})
->addColumn('created_at', function($row) {
- return $row->created_at->format('d/m/Y H:i');
+ return $row->created_at->format('d M Y, H:i');
})
->addColumn('action', function($row) use ($dealerId) {
$buttons = '';
@@ -478,7 +484,7 @@ class MutationsController extends Controller
]);
// Format created_at
- $mutation->created_at_formatted = $mutation->created_at->format('d/m/Y H:i');
+ $mutation->created_at_formatted = $mutation->created_at->format('d M Y, H:i');
// Add status color and label
$mutation->status_color = $mutation->status_color;
diff --git a/app/Http/Controllers/WarehouseManagement/ProductsController.php b/app/Http/Controllers/WarehouseManagement/ProductsController.php
index 67da483..9e649f8 100755
--- a/app/Http/Controllers/WarehouseManagement/ProductsController.php
+++ b/app/Http/Controllers/WarehouseManagement/ProductsController.php
@@ -12,6 +12,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Gate;
+use Illuminate\Support\Facades\DB;
use Yajra\DataTables\Facades\DataTables;
use Illuminate\Validation\Rule;
@@ -26,45 +27,89 @@ class ProductsController extends Controller
{
$menu = Menu::where('link','products.index')->first();
if($request->ajax()){
- $data = Product::with(['category'])
- ->select('products.*')
- ->leftJoin('product_categories', 'products.product_category_id', '=', 'product_categories.id');
+ Log::info('Products DataTables request received');
+ Log::info('Request parameters:', $request->all());
- return DataTables::of($data)
- ->addIndexColumn()
- ->addColumn('category_name', function ($row) {
- return $row->category ? $row->category->name : '-';
- })
- ->addColumn('total_stock', function ($row){
- return number_format($row->current_total_stock, 2);
- })
- ->addColumn('action', function ($row) use ($menu) {
- $btn = '
';
+ try {
+ // Check if products exist
+ $productCount = Product::count();
+ Log::info('Total products in database: ' . $productCount);
- if (Gate::allows('update', $menu)) {
- $btn .= '
Edit';
- $btn .= '
';
- }
- $btn .= '
';
+ $data = Product::with(['category', 'stocks'])
+ ->select(['id', 'code', 'name', 'product_category_id', 'unit', 'active']);
+
+ Log::info('Query built, executing DataTables...');
+
+ return DataTables::of($data)
+ ->addIndexColumn()
+ ->addColumn('code', function ($row) {
+ return $row->code;
+ })
+ ->addColumn('name', function ($row) {
+ return $row->name;
+ })
+ ->addColumn('category_name', function ($row) {
+ return $row->category ? $row->category->name : '-';
+ })
+ ->addColumn('unit', function ($row) {
+ return $row->unit ?? '-';
+ })
+ ->addColumn('total_stock', function ($row){
+ try {
+ $totalStock = $row->stocks()->sum('quantity');
+ return number_format($totalStock, 2);
+ } catch (\Exception $e) {
+ Log::error('Error calculating total stock for product ' . $row->id . ': ' . $e->getMessage());
+ return '0.00';
+ }
+ })
+ ->addColumn('action', function ($row) use ($menu) {
+ $btn = '
';
+
+ if (Gate::allows('update', $menu)) {
+ $btn .= '
Edit';
+ $btn .= '
';
+ }
+ $btn .= '
';
- $btn .= '
';
-
- return $btn;
- })
- ->filterColumn('category_name', function($query, $keyword) {
- $query->where('product_categories.name', 'like', "%{$keyword}%");
- })
- ->orderColumn('category_name', function ($query, $order) {
- $query->orderBy('product_categories.name', $order);
- })
- ->rawColumns(['action'])
- ->make(true);
+ $btn .= '
';
+
+ return $btn;
+ })
+ ->filterColumn('category_name', function($query, $keyword) {
+ $query->whereHas('category', function($q) use ($keyword) {
+ $q->where('name', 'like', "%{$keyword}%");
+ });
+ })
+ ->orderColumn('code', function ($query, $order) {
+ $query->orderBy('products.code', $order);
+ })
+ ->orderColumn('name', function ($query, $order) {
+ $query->orderBy('products.name', $order);
+ })
+ ->orderColumn('category_name', function ($query, $order) {
+ $query->orderBy(
+ DB::raw('(SELECT name FROM product_categories WHERE product_categories.id = products.product_category_id)'),
+ $order
+ );
+ })
+ ->orderColumn('unit', function ($query, $order) {
+ $query->orderBy('products.unit', $order);
+ })
+ ->rawColumns(['action'])
+ ->make(true);
+
+ } catch (\Exception $e) {
+ Log::error('Products DataTables error: ' . $e->getMessage());
+ Log::error('Stack trace: ' . $e->getTraceAsString());
+ return response()->json(['error' => 'Failed to load data'], 500);
+ }
}
return view('warehouse_management.products.index');
}
diff --git a/public/js/warehouse_management/mutations/index.js b/public/js/warehouse_management/mutations/index.js
index 628cf21..53943cc 100755
--- a/public/js/warehouse_management/mutations/index.js
+++ b/public/js/warehouse_management/mutations/index.js
@@ -15,7 +15,7 @@
\**************************************************************/
/***/ (() => {
-eval("$(document).ready(function () {\n console.log(\"Mutations index.js loaded\"); // Check if DataTables is available\n\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables not available!\");\n return;\n } // Destroy existing table if any\n\n\n if ($.fn.DataTable.isDataTable(\"#mutations-table\")) {\n $(\"#mutations-table\").DataTable().destroy();\n } // Initialize DataTable\n\n\n var table = $(\"#mutations-table\").DataTable({\n processing: true,\n serverSide: true,\n destroy: true,\n ajax: {\n url: $(\"#mutations-table\").data(\"url\"),\n type: \"GET\",\n error: function error(xhr, _error, code) {\n console.error(\"DataTables AJAX error:\", _error, code);\n }\n },\n columnDefs: [{\n targets: 0,\n // No. column\n orderable: false,\n searchable: false,\n width: \"5%\"\n }, {\n targets: [1, 2, 3, 4, 5, 6, 7],\n // All sortable columns\n orderable: true,\n searchable: true\n }, {\n targets: 8,\n // Action column\n orderable: false,\n searchable: false,\n width: \"20%\",\n className: \"text-center\"\n }, {\n targets: [6, 7],\n // Total Items and Status columns\n className: \"text-center\"\n }],\n columns: [{\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\"\n }, {\n data: \"mutation_number\",\n name: \"mutation_number\"\n }, {\n data: \"created_at\",\n name: \"created_at\"\n }, {\n data: \"from_dealer\",\n name: \"fromDealer.name\"\n }, {\n data: \"to_dealer\",\n name: \"toDealer.name\"\n }, {\n data: \"requested_by\",\n name: \"requestedBy.name\"\n }, {\n data: \"total_items\",\n name: \"total_items\"\n }, {\n data: \"status\",\n name: \"status\"\n }, {\n data: \"action\",\n name: \"action\"\n }],\n order: [[1, \"desc\"]],\n // Order by mutation_number desc (which follows ID order)\n pageLength: 10,\n responsive: true\n }); // Handle Cancel Button Click with SweetAlert\n\n $(document).on(\"click\", \".btn-cancel\", function () {\n var mutationId = $(this).data(\"id\");\n\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Batalkan Mutasi?\",\n text: \"Apakah Anda yakin ingin membatalkan mutasi ini?\",\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#3085d6\",\n confirmButtonText: \"Ya, Batalkan\",\n cancelButtonText: \"Batal\"\n }).then(function (result) {\n if (result.isConfirmed) {\n cancelMutation(mutationId);\n }\n });\n } else {\n if (confirm(\"Apakah Anda yakin ingin membatalkan mutasi ini?\")) {\n cancelMutation(mutationId);\n }\n }\n });\n\n function cancelMutation(mutationId) {\n $.ajax({\n url: \"/warehouse/mutations/\" + mutationId + \"/cancel\",\n type: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\")\n },\n success: function success(response) {\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Berhasil!\",\n text: \"Mutasi berhasil dibatalkan\",\n icon: \"success\",\n timer: 2000,\n showConfirmButton: false\n });\n } else {\n alert(\"Mutasi berhasil dibatalkan\");\n }\n\n table.ajax.reload();\n },\n error: function error(xhr) {\n var _xhr$responseJSON;\n\n var errorMsg = ((_xhr$responseJSON = xhr.responseJSON) === null || _xhr$responseJSON === void 0 ? void 0 : _xhr$responseJSON.message) || \"Gagal membatalkan mutasi\";\n\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Error!\",\n text: errorMsg,\n icon: \"error\"\n });\n } else {\n alert(\"Error: \" + errorMsg);\n }\n }\n });\n } // Handle form submissions with loading state\n\n\n $(document).on(\"submit\", \".approve-form\", function () {\n $(this).find('button[type=\"submit\"]').prop(\"disabled\", true).html(\"Memproses...\");\n }); // Validate quantity approved in receive modal\n\n $(document).on(\"input\", 'input[name*=\"quantity_approved\"]', function () {\n var maxValue = parseFloat($(this).attr(\"max\"));\n var currentValue = parseFloat($(this).val());\n\n if (maxValue && currentValue > maxValue) {\n $(this).val(maxValue);\n $(this).addClass(\"is-invalid\");\n\n if (!$(this).siblings(\".invalid-feedback\").length) {\n $(this).after('Quantity tidak boleh melebihi yang diminta
');\n }\n } else {\n $(this).removeClass(\"is-invalid\");\n $(this).siblings(\".invalid-feedback\").remove();\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImNvbnNvbGUiLCJsb2ciLCJmbiIsIkRhdGFUYWJsZSIsImVycm9yIiwiaXNEYXRhVGFibGUiLCJkZXN0cm95IiwidGFibGUiLCJwcm9jZXNzaW5nIiwic2VydmVyU2lkZSIsImFqYXgiLCJ1cmwiLCJkYXRhIiwidHlwZSIsInhociIsImNvZGUiLCJjb2x1bW5EZWZzIiwidGFyZ2V0cyIsIm9yZGVyYWJsZSIsInNlYXJjaGFibGUiLCJ3aWR0aCIsImNsYXNzTmFtZSIsImNvbHVtbnMiLCJuYW1lIiwib3JkZXIiLCJwYWdlTGVuZ3RoIiwicmVzcG9uc2l2ZSIsIm9uIiwibXV0YXRpb25JZCIsIlN3YWwiLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsInNob3dDYW5jZWxCdXR0b24iLCJjb25maXJtQnV0dG9uQ29sb3IiLCJjYW5jZWxCdXR0b25Db2xvciIsImNvbmZpcm1CdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsInRoZW4iLCJyZXN1bHQiLCJpc0NvbmZpcm1lZCIsImNhbmNlbE11dGF0aW9uIiwiY29uZmlybSIsIl90b2tlbiIsImF0dHIiLCJzdWNjZXNzIiwicmVzcG9uc2UiLCJ0aW1lciIsInNob3dDb25maXJtQnV0dG9uIiwiYWxlcnQiLCJyZWxvYWQiLCJlcnJvck1zZyIsInJlc3BvbnNlSlNPTiIsIm1lc3NhZ2UiLCJmaW5kIiwicHJvcCIsImh0bWwiLCJtYXhWYWx1ZSIsInBhcnNlRmxvYXQiLCJjdXJyZW50VmFsdWUiLCJ2YWwiLCJhZGRDbGFzcyIsInNpYmxpbmdzIiwibGVuZ3RoIiwiYWZ0ZXIiLCJyZW1vdmVDbGFzcyIsInJlbW92ZSJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvbXV0YXRpb25zL2luZGV4LmpzPzdhNGUiXSwic291cmNlc0NvbnRlbnQiOlsiJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICAgIGNvbnNvbGUubG9nKFwiTXV0YXRpb25zIGluZGV4LmpzIGxvYWRlZFwiKTtcblxuICAgIC8vIENoZWNrIGlmIERhdGFUYWJsZXMgaXMgYXZhaWxhYmxlXG4gICAgaWYgKHR5cGVvZiAkLmZuLkRhdGFUYWJsZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRGF0YVRhYmxlcyBub3QgYXZhaWxhYmxlIVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlc3Ryb3kgZXhpc3RpbmcgdGFibGUgaWYgYW55XG4gICAgaWYgKCQuZm4uRGF0YVRhYmxlLmlzRGF0YVRhYmxlKFwiI211dGF0aW9ucy10YWJsZVwiKSkge1xuICAgICAgICAkKFwiI211dGF0aW9ucy10YWJsZVwiKS5EYXRhVGFibGUoKS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBEYXRhVGFibGVcbiAgICB2YXIgdGFibGUgPSAkKFwiI211dGF0aW9ucy10YWJsZVwiKS5EYXRhVGFibGUoe1xuICAgICAgICBwcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgICBzZXJ2ZXJTaWRlOiB0cnVlLFxuICAgICAgICBkZXN0cm95OiB0cnVlLFxuICAgICAgICBhamF4OiB7XG4gICAgICAgICAgICB1cmw6ICQoXCIjbXV0YXRpb25zLXRhYmxlXCIpLmRhdGEoXCJ1cmxcIiksXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIsIGVycm9yLCBjb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkRhdGFUYWJsZXMgQUpBWCBlcnJvcjpcIiwgZXJyb3IsIGNvZGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY29sdW1uRGVmczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldHM6IDAsIC8vIE5vLiBjb2x1bW5cbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjUlXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldHM6IFsxLCAyLCAzLCA0LCA1LCA2LCA3XSwgLy8gQWxsIHNvcnRhYmxlIGNvbHVtbnNcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0czogOCwgLy8gQWN0aW9uIGNvbHVtblxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiMjAlXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInRleHQtY2VudGVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldHM6IFs2LCA3XSwgLy8gVG90YWwgSXRlbXMgYW5kIFN0YXR1cyBjb2x1bW5zXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInRleHQtY2VudGVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJEVF9Sb3dJbmRleFwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiRFRfUm93SW5kZXhcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJtdXRhdGlvbl9udW1iZXJcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIm11dGF0aW9uX251bWJlclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJmcm9tX2RlYWxlclwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZnJvbURlYWxlci5uYW1lXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwidG9fZGVhbGVyXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJ0b0RlYWxlci5uYW1lXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwicmVxdWVzdGVkX2J5XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJyZXF1ZXN0ZWRCeS5uYW1lXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwidG90YWxfaXRlbXNcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInRvdGFsX2l0ZW1zXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJzdGF0dXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImFjdGlvblwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3JkZXI6IFtbMSwgXCJkZXNjXCJdXSwgLy8gT3JkZXIgYnkgbXV0YXRpb25fbnVtYmVyIGRlc2MgKHdoaWNoIGZvbGxvd3MgSUQgb3JkZXIpXG4gICAgICAgIHBhZ2VMZW5ndGg6IDEwLFxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIENhbmNlbCBCdXR0b24gQ2xpY2sgd2l0aCBTd2VldEFsZXJ0XG4gICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBcIi5idG4tY2FuY2VsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG11dGF0aW9uSWQgPSAkKHRoaXMpLmRhdGEoXCJpZFwiKTtcblxuICAgICAgICBpZiAodHlwZW9mIFN3YWwgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiQmF0YWxrYW4gTXV0YXNpP1wiLFxuICAgICAgICAgICAgICAgIHRleHQ6IFwiQXBha2FoIEFuZGEgeWFraW4gaW5naW4gbWVtYmF0YWxrYW4gbXV0YXNpIGluaT9cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjZDMzXCIsXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6IFwiIzMwODVkNlwiLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIllhLCBCYXRhbGthblwiLFxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiQmF0YWxcIixcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNDb25maXJtZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsTXV0YXRpb24obXV0YXRpb25JZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY29uZmlybShcIkFwYWthaCBBbmRhIHlha2luIGluZ2luIG1lbWJhdGFsa2FuIG11dGFzaSBpbmk/XCIpKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsTXV0YXRpb24obXV0YXRpb25JZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNhbmNlbE11dGF0aW9uKG11dGF0aW9uSWQpIHtcbiAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgIHVybDogXCIvd2FyZWhvdXNlL211dGF0aW9ucy9cIiArIG11dGF0aW9uSWQgKyBcIi9jYW5jZWxcIixcbiAgICAgICAgICAgIHR5cGU6IFwiUE9TVFwiLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIF90b2tlbjogJCgnbWV0YVtuYW1lPVwiY3NyZi10b2tlblwiXScpLmF0dHIoXCJjb250ZW50XCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgU3dhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiQmVyaGFzaWwhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBcIk11dGFzaSBiZXJoYXNpbCBkaWJhdGFsa2FuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbGVydChcIk11dGFzaSBiZXJoYXNpbCBkaWJhdGFsa2FuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YWJsZS5hamF4LnJlbG9hZCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoeGhyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9yTXNnID1cbiAgICAgICAgICAgICAgICAgICAgeGhyLnJlc3BvbnNlSlNPTj8ubWVzc2FnZSB8fCBcIkdhZ2FsIG1lbWJhdGFsa2FuIG11dGFzaVwiO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgU3dhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlcnJvck1zZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoXCJFcnJvcjogXCIgKyBlcnJvck1zZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGZvcm0gc3VibWlzc2lvbnMgd2l0aCBsb2FkaW5nIHN0YXRlXG4gICAgJChkb2N1bWVudCkub24oXCJzdWJtaXRcIiwgXCIuYXBwcm92ZS1mb3JtXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKVxuICAgICAgICAgICAgLmZpbmQoJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJylcbiAgICAgICAgICAgIC5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSlcbiAgICAgICAgICAgIC5odG1sKFwiTWVtcHJvc2VzLi4uXCIpO1xuICAgIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgcXVhbnRpdHkgYXBwcm92ZWQgaW4gcmVjZWl2ZSBtb2RhbFxuICAgICQoZG9jdW1lbnQpLm9uKFwiaW5wdXRcIiwgJ2lucHV0W25hbWUqPVwicXVhbnRpdHlfYXBwcm92ZWRcIl0nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBtYXhWYWx1ZSA9IHBhcnNlRmxvYXQoJCh0aGlzKS5hdHRyKFwibWF4XCIpKTtcbiAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHBhcnNlRmxvYXQoJCh0aGlzKS52YWwoKSk7XG5cbiAgICAgICAgaWYgKG1heFZhbHVlICYmIGN1cnJlbnRWYWx1ZSA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgICAkKHRoaXMpLnZhbChtYXhWYWx1ZSk7XG4gICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKFwiaXMtaW52YWxpZFwiKTtcbiAgICAgICAgICAgIGlmICghJCh0aGlzKS5zaWJsaW5ncyhcIi5pbnZhbGlkLWZlZWRiYWNrXCIpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICQodGhpcykuYWZ0ZXIoXG4gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlF1YW50aXR5IHRpZGFrIGJvbGVoIG1lbGViaWhpIHlhbmcgZGltaW50YTwvZGl2PidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhcImlzLWludmFsaWRcIik7XG4gICAgICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKFwiLmludmFsaWQtZmVlZGJhY2tcIikucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQUEsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQixZQUFZO0VBQzFCQyxPQUFPLENBQUNDLEdBQVIsQ0FBWSwyQkFBWixFQUQwQixDQUcxQjs7RUFDQSxJQUFJLE9BQU9KLENBQUMsQ0FBQ0ssRUFBRixDQUFLQyxTQUFaLEtBQTBCLFdBQTlCLEVBQTJDO0lBQ3ZDSCxPQUFPLENBQUNJLEtBQVIsQ0FBYywyQkFBZDtJQUNBO0VBQ0gsQ0FQeUIsQ0FTMUI7OztFQUNBLElBQUlQLENBQUMsQ0FBQ0ssRUFBRixDQUFLQyxTQUFMLENBQWVFLFdBQWYsQ0FBMkIsa0JBQTNCLENBQUosRUFBb0Q7SUFDaERSLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCTSxTQUF0QixHQUFrQ0csT0FBbEM7RUFDSCxDQVp5QixDQWMxQjs7O0VBQ0EsSUFBSUMsS0FBSyxHQUFHVixDQUFDLENBQUMsa0JBQUQsQ0FBRCxDQUFzQk0sU0FBdEIsQ0FBZ0M7SUFDeENLLFVBQVUsRUFBRSxJQUQ0QjtJQUV4Q0MsVUFBVSxFQUFFLElBRjRCO0lBR3hDSCxPQUFPLEVBQUUsSUFIK0I7SUFJeENJLElBQUksRUFBRTtNQUNGQyxHQUFHLEVBQUVkLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCZSxJQUF0QixDQUEyQixLQUEzQixDQURIO01BRUZDLElBQUksRUFBRSxLQUZKO01BR0ZULEtBQUssRUFBRSxlQUFVVSxHQUFWLEVBQWVWLE1BQWYsRUFBc0JXLElBQXRCLEVBQTRCO1FBQy9CZixPQUFPLENBQUNJLEtBQVIsQ0FBYyx3QkFBZCxFQUF3Q0EsTUFBeEMsRUFBK0NXLElBQS9DO01BQ0g7SUFMQyxDQUprQztJQVd4Q0MsVUFBVSxFQUFFLENBQ1I7TUFDSUMsT0FBTyxFQUFFLENBRGI7TUFDZ0I7TUFDWkMsU0FBUyxFQUFFLEtBRmY7TUFHSUMsVUFBVSxFQUFFLEtBSGhCO01BSUlDLEtBQUssRUFBRTtJQUpYLENBRFEsRUFPUjtNQUNJSCxPQUFPLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQixDQUFoQixFQUFtQixDQUFuQixDQURiO01BQ29DO01BQ2hDQyxTQUFTLEVBQUUsSUFGZjtNQUdJQyxVQUFVLEVBQUU7SUFIaEIsQ0FQUSxFQVlSO01BQ0lGLE9BQU8sRUFBRSxDQURiO01BQ2dCO01BQ1pDLFNBQVMsRUFBRSxLQUZmO01BR0lDLFVBQVUsRUFBRSxLQUhoQjtNQUlJQyxLQUFLLEVBQUUsS0FKWDtNQUtJQyxTQUFTLEVBQUU7SUFMZixDQVpRLEVBbUJSO01BQ0lKLE9BQU8sRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBRGI7TUFDcUI7TUFDakJJLFNBQVMsRUFBRTtJQUZmLENBbkJRLENBWDRCO0lBbUN4Q0MsT0FBTyxFQUFFLENBQ0w7TUFDSVYsSUFBSSxFQUFFLGFBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0FESyxFQUtMO01BQ0lYLElBQUksRUFBRSxpQkFEVjtNQUVJVyxJQUFJLEVBQUU7SUFGVixDQUxLLEVBU0w7TUFDSVgsSUFBSSxFQUFFLFlBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0FUSyxFQWFMO01BQ0lYLElBQUksRUFBRSxhQURWO01BRUlXLElBQUksRUFBRTtJQUZWLENBYkssRUFpQkw7TUFDSVgsSUFBSSxFQUFFLFdBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0FqQkssRUFxQkw7TUFDSVgsSUFBSSxFQUFFLGNBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0FyQkssRUF5Qkw7TUFDSVgsSUFBSSxFQUFFLGFBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0F6QkssRUE2Qkw7TUFDSVgsSUFBSSxFQUFFLFFBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0E3QkssRUFpQ0w7TUFDSVgsSUFBSSxFQUFFLFFBRFY7TUFFSVcsSUFBSSxFQUFFO0lBRlYsQ0FqQ0ssQ0FuQytCO0lBeUV4Q0MsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFELEVBQUksTUFBSixDQUFELENBekVpQztJQXlFbEI7SUFDdEJDLFVBQVUsRUFBRSxFQTFFNEI7SUEyRXhDQyxVQUFVLEVBQUU7RUEzRTRCLENBQWhDLENBQVosQ0FmMEIsQ0E2RjFCOztFQUNBN0IsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWTZCLEVBQVosQ0FBZSxPQUFmLEVBQXdCLGFBQXhCLEVBQXVDLFlBQVk7SUFDL0MsSUFBSUMsVUFBVSxHQUFHL0IsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRZSxJQUFSLENBQWEsSUFBYixDQUFqQjs7SUFFQSxJQUFJLE9BQU9pQixJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO01BQzdCQSxJQUFJLENBQUNDLElBQUwsQ0FBVTtRQUNOQyxLQUFLLEVBQUUsa0JBREQ7UUFFTkMsSUFBSSxFQUFFLGlEQUZBO1FBR05DLElBQUksRUFBRSxTQUhBO1FBSU5DLGdCQUFnQixFQUFFLElBSlo7UUFLTkMsa0JBQWtCLEVBQUUsTUFMZDtRQU1OQyxpQkFBaUIsRUFBRSxTQU5iO1FBT05DLGlCQUFpQixFQUFFLGNBUGI7UUFRTkMsZ0JBQWdCLEVBQUU7TUFSWixDQUFWLEVBU0dDLElBVEgsQ0FTUSxVQUFDQyxNQUFELEVBQVk7UUFDaEIsSUFBSUEsTUFBTSxDQUFDQyxXQUFYLEVBQXdCO1VBQ3BCQyxjQUFjLENBQUNkLFVBQUQsQ0FBZDtRQUNIO01BQ0osQ0FiRDtJQWNILENBZkQsTUFlTztNQUNILElBQUllLE9BQU8sQ0FBQyxpREFBRCxDQUFYLEVBQWdFO1FBQzVERCxjQUFjLENBQUNkLFVBQUQsQ0FBZDtNQUNIO0lBQ0o7RUFDSixDQXZCRDs7RUF5QkEsU0FBU2MsY0FBVCxDQUF3QmQsVUFBeEIsRUFBb0M7SUFDaEMvQixDQUFDLENBQUNhLElBQUYsQ0FBTztNQUNIQyxHQUFHLEVBQUUsMEJBQTBCaUIsVUFBMUIsR0FBdUMsU0FEekM7TUFFSGYsSUFBSSxFQUFFLE1BRkg7TUFHSEQsSUFBSSxFQUFFO1FBQ0ZnQyxNQUFNLEVBQUUvQyxDQUFDLENBQUMseUJBQUQsQ0FBRCxDQUE2QmdELElBQTdCLENBQWtDLFNBQWxDO01BRE4sQ0FISDtNQU1IQyxPQUFPLEVBQUUsaUJBQVVDLFFBQVYsRUFBb0I7UUFDekIsSUFBSSxPQUFPbEIsSUFBUCxLQUFnQixXQUFwQixFQUFpQztVQUM3QkEsSUFBSSxDQUFDQyxJQUFMLENBQVU7WUFDTkMsS0FBSyxFQUFFLFdBREQ7WUFFTkMsSUFBSSxFQUFFLDRCQUZBO1lBR05DLElBQUksRUFBRSxTQUhBO1lBSU5lLEtBQUssRUFBRSxJQUpEO1lBS05DLGlCQUFpQixFQUFFO1VBTGIsQ0FBVjtRQU9ILENBUkQsTUFRTztVQUNIQyxLQUFLLENBQUMsNEJBQUQsQ0FBTDtRQUNIOztRQUNEM0MsS0FBSyxDQUFDRyxJQUFOLENBQVd5QyxNQUFYO01BQ0gsQ0FuQkU7TUFvQkgvQyxLQUFLLEVBQUUsZUFBVVUsR0FBVixFQUFlO1FBQUE7O1FBQ2xCLElBQUlzQyxRQUFRLEdBQ1Isc0JBQUF0QyxHQUFHLENBQUN1QyxZQUFKLHdFQUFrQkMsT0FBbEIsS0FBNkIsMEJBRGpDOztRQUVBLElBQUksT0FBT3pCLElBQVAsS0FBZ0IsV0FBcEIsRUFBaUM7VUFDN0JBLElBQUksQ0FBQ0MsSUFBTCxDQUFVO1lBQ05DLEtBQUssRUFBRSxRQUREO1lBRU5DLElBQUksRUFBRW9CLFFBRkE7WUFHTm5CLElBQUksRUFBRTtVQUhBLENBQVY7UUFLSCxDQU5ELE1BTU87VUFDSGlCLEtBQUssQ0FBQyxZQUFZRSxRQUFiLENBQUw7UUFDSDtNQUNKO0lBaENFLENBQVA7RUFrQ0gsQ0ExSnlCLENBNEoxQjs7O0VBQ0F2RCxDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZNkIsRUFBWixDQUFlLFFBQWYsRUFBeUIsZUFBekIsRUFBMEMsWUFBWTtJQUNsRDlCLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FDSzBELElBREwsQ0FDVSx1QkFEVixFQUVLQyxJQUZMLENBRVUsVUFGVixFQUVzQixJQUZ0QixFQUdLQyxJQUhMLENBR1UsY0FIVjtFQUlILENBTEQsRUE3SjBCLENBb0sxQjs7RUFDQTVELENBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVk2QixFQUFaLENBQWUsT0FBZixFQUF3QixrQ0FBeEIsRUFBNEQsWUFBWTtJQUNwRSxJQUFJK0IsUUFBUSxHQUFHQyxVQUFVLENBQUM5RCxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFnRCxJQUFSLENBQWEsS0FBYixDQUFELENBQXpCO0lBQ0EsSUFBSWUsWUFBWSxHQUFHRCxVQUFVLENBQUM5RCxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFnRSxHQUFSLEVBQUQsQ0FBN0I7O0lBRUEsSUFBSUgsUUFBUSxJQUFJRSxZQUFZLEdBQUdGLFFBQS9CLEVBQXlDO01BQ3JDN0QsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRZ0UsR0FBUixDQUFZSCxRQUFaO01BQ0E3RCxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFpRSxRQUFSLENBQWlCLFlBQWpCOztNQUNBLElBQUksQ0FBQ2pFLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUWtFLFFBQVIsQ0FBaUIsbUJBQWpCLEVBQXNDQyxNQUEzQyxFQUFtRDtRQUMvQ25FLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUW9FLEtBQVIsQ0FDSSxnRkFESjtNQUdIO0lBQ0osQ0FSRCxNQVFPO01BQ0hwRSxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFxRSxXQUFSLENBQW9CLFlBQXBCO01BQ0FyRSxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFrRSxRQUFSLENBQWlCLG1CQUFqQixFQUFzQ0ksTUFBdEM7SUFDSDtFQUNKLENBaEJEO0FBaUJILENBdExEIiwiZmlsZSI6Ii4vcmVzb3VyY2VzL2pzL3dhcmVob3VzZV9tYW5hZ2VtZW50L211dGF0aW9ucy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/warehouse_management/mutations/index.js\n");
+eval("$(document).ready(function () {\n console.log(\"Mutations index.js loaded\"); // Check if DataTables is available\n\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables not available!\");\n return;\n } // Wait for DOM to be fully ready\n\n\n setTimeout(function () {\n initializeDataTable();\n }, 100);\n});\n\nfunction initializeDataTable() {\n console.log(\"Initializing DataTable...\"); // Destroy existing table if any\n\n if ($.fn.DataTable.isDataTable(\"#mutations-table\")) {\n $(\"#mutations-table\").DataTable().destroy();\n } // Initialize DataTable\n\n\n var table = $(\"#mutations-table\").DataTable({\n processing: true,\n serverSide: true,\n destroy: true,\n ajax: {\n url: $(\"#mutations-table\").data(\"url\"),\n type: \"GET\",\n data: function data(d) {\n console.log(\"DataTables request data:\", d);\n console.log(\"Order info:\", d.order);\n console.log(\"Columns info:\", d.columns);\n return d;\n },\n error: function error(xhr, _error, code) {\n console.error(\"DataTables AJAX error:\", _error, code);\n console.error(\"Response:\", xhr.responseText);\n }\n },\n columnDefs: [{\n targets: 0,\n // No. column\n width: \"5%\"\n }, {\n targets: 8,\n // Action column\n width: \"20%\",\n className: \"text-center\"\n }, {\n targets: [6, 7],\n // Total Items and Status columns\n className: \"text-center\"\n }],\n columns: [{\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false\n }, {\n data: \"mutation_number\",\n name: \"mutation_number\",\n orderable: true\n }, {\n data: \"created_at\",\n name: \"created_at\",\n orderable: true\n }, {\n data: \"from_dealer\",\n name: \"from_dealer\",\n orderable: true\n }, {\n data: \"to_dealer\",\n name: \"to_dealer\",\n orderable: true\n }, {\n data: \"requested_by\",\n name: \"requested_by\",\n orderable: true\n }, {\n data: \"total_items\",\n name: \"total_items\",\n orderable: true\n }, {\n data: \"status\",\n name: \"status\",\n orderable: true\n }, {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false\n }],\n order: [[1, \"desc\"]],\n // Order by mutation_number desc (which follows ID order)\n pageLength: 10,\n responsive: true,\n ordering: true,\n // Enable column ordering\n orderMulti: false // Single column ordering only\n\n }); // Debug ordering events\n\n table.on(\"order.dt\", function () {\n console.log(\"Order changed:\", table.order());\n }); // Add loading indicator for ordering\n\n table.on(\"processing.dt\", function (e, settings, processing) {\n if (processing) {\n console.log(\"DataTable processing started (ordering/filtering)\");\n } else {\n console.log(\"DataTable processing finished\");\n }\n }); // Manual click handler for column headers (fallback)\n\n $(\"#mutations-table thead th\").on(\"click\", function () {\n var columnIndex = $(this).index();\n console.log(\"Column header clicked:\", columnIndex, $(this).text()); // Skip if it's the first (No.) or last (Action) column\n\n if (columnIndex === 0 || columnIndex === 8) {\n console.log(\"Non-sortable column clicked, ignoring\");\n return;\n } // Check if DataTables is handling the click\n\n\n if ($(this).hasClass(\"sorting\") || $(this).hasClass(\"sorting_asc\") || $(this).hasClass(\"sorting_desc\")) {\n console.log(\"DataTables should handle this click\");\n } else {\n console.log(\"DataTables not handling click, manual trigger needed\"); // Force DataTables to handle the ordering\n\n table.order([columnIndex, \"asc\"]).draw();\n }\n }); // Handle Cancel Button Click with SweetAlert\n\n $(document).on(\"click\", \".btn-cancel\", function () {\n var mutationId = $(this).data(\"id\");\n\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Batalkan Mutasi?\",\n text: \"Apakah Anda yakin ingin membatalkan mutasi ini?\",\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#3085d6\",\n confirmButtonText: \"Ya, Batalkan\",\n cancelButtonText: \"Batal\"\n }).then(function (result) {\n if (result.isConfirmed) {\n cancelMutation(mutationId);\n }\n });\n } else {\n if (confirm(\"Apakah Anda yakin ingin membatalkan mutasi ini?\")) {\n cancelMutation(mutationId);\n }\n }\n }); // Handle form submissions with loading state\n\n $(document).on(\"submit\", \".approve-form\", function () {\n $(this).find('button[type=\"submit\"]').prop(\"disabled\", true).html(\"Memproses...\");\n }); // Validate quantity approved in receive modal\n\n $(document).on(\"input\", 'input[name*=\"quantity_approved\"]', function () {\n var maxValue = parseFloat($(this).attr(\"max\"));\n var currentValue = parseFloat($(this).val());\n\n if (maxValue && currentValue > maxValue) {\n $(this).val(maxValue);\n $(this).addClass(\"is-invalid\");\n\n if (!$(this).siblings(\".invalid-feedback\").length) {\n $(this).after('Quantity tidak boleh melebihi yang diminta
');\n }\n } else {\n $(this).removeClass(\"is-invalid\");\n $(this).siblings(\".invalid-feedback\").remove();\n }\n });\n}\n\nfunction cancelMutation(mutationId) {\n $.ajax({\n url: \"/warehouse/mutations/\" + mutationId + \"/cancel\",\n type: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\")\n },\n success: function success(response) {\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Berhasil!\",\n text: \"Mutasi berhasil dibatalkan\",\n icon: \"success\",\n timer: 2000,\n showConfirmButton: false\n });\n } else {\n alert(\"Mutasi berhasil dibatalkan\");\n } // Get table instance\n\n\n var table = $(\"#mutations-table\").DataTable();\n table.ajax.reload();\n },\n error: function error(xhr) {\n var _xhr$responseJSON;\n\n var errorMsg = ((_xhr$responseJSON = xhr.responseJSON) === null || _xhr$responseJSON === void 0 ? void 0 : _xhr$responseJSON.message) || \"Gagal membatalkan mutasi\";\n\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Error!\",\n text: errorMsg,\n icon: \"error\"\n });\n } else {\n alert(\"Error: \" + errorMsg);\n }\n }\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImNvbnNvbGUiLCJsb2ciLCJmbiIsIkRhdGFUYWJsZSIsImVycm9yIiwic2V0VGltZW91dCIsImluaXRpYWxpemVEYXRhVGFibGUiLCJpc0RhdGFUYWJsZSIsImRlc3Ryb3kiLCJ0YWJsZSIsInByb2Nlc3NpbmciLCJzZXJ2ZXJTaWRlIiwiYWpheCIsInVybCIsImRhdGEiLCJ0eXBlIiwiZCIsIm9yZGVyIiwiY29sdW1ucyIsInhociIsImNvZGUiLCJyZXNwb25zZVRleHQiLCJjb2x1bW5EZWZzIiwidGFyZ2V0cyIsIndpZHRoIiwiY2xhc3NOYW1lIiwibmFtZSIsIm9yZGVyYWJsZSIsInNlYXJjaGFibGUiLCJwYWdlTGVuZ3RoIiwicmVzcG9uc2l2ZSIsIm9yZGVyaW5nIiwib3JkZXJNdWx0aSIsIm9uIiwiZSIsInNldHRpbmdzIiwiY29sdW1uSW5kZXgiLCJpbmRleCIsInRleHQiLCJoYXNDbGFzcyIsImRyYXciLCJtdXRhdGlvbklkIiwiU3dhbCIsImZpcmUiLCJ0aXRsZSIsImljb24iLCJzaG93Q2FuY2VsQnV0dG9uIiwiY29uZmlybUJ1dHRvbkNvbG9yIiwiY2FuY2VsQnV0dG9uQ29sb3IiLCJjb25maXJtQnV0dG9uVGV4dCIsImNhbmNlbEJ1dHRvblRleHQiLCJ0aGVuIiwicmVzdWx0IiwiaXNDb25maXJtZWQiLCJjYW5jZWxNdXRhdGlvbiIsImNvbmZpcm0iLCJmaW5kIiwicHJvcCIsImh0bWwiLCJtYXhWYWx1ZSIsInBhcnNlRmxvYXQiLCJhdHRyIiwiY3VycmVudFZhbHVlIiwidmFsIiwiYWRkQ2xhc3MiLCJzaWJsaW5ncyIsImxlbmd0aCIsImFmdGVyIiwicmVtb3ZlQ2xhc3MiLCJyZW1vdmUiLCJfdG9rZW4iLCJzdWNjZXNzIiwicmVzcG9uc2UiLCJ0aW1lciIsInNob3dDb25maXJtQnV0dG9uIiwiYWxlcnQiLCJyZWxvYWQiLCJlcnJvck1zZyIsInJlc3BvbnNlSlNPTiIsIm1lc3NhZ2UiXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3dhcmVob3VzZV9tYW5hZ2VtZW50L211dGF0aW9ucy9pbmRleC5qcz83YTRlIl0sInNvdXJjZXNDb250ZW50IjpbIiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmxvZyhcIk11dGF0aW9ucyBpbmRleC5qcyBsb2FkZWRcIik7XG5cbiAgICAvLyBDaGVjayBpZiBEYXRhVGFibGVzIGlzIGF2YWlsYWJsZVxuICAgIGlmICh0eXBlb2YgJC5mbi5EYXRhVGFibGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkRhdGFUYWJsZXMgbm90IGF2YWlsYWJsZSFcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciBET00gdG8gYmUgZnVsbHkgcmVhZHlcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5pdGlhbGl6ZURhdGFUYWJsZSgpO1xuICAgIH0sIDEwMCk7XG59KTtcblxuZnVuY3Rpb24gaW5pdGlhbGl6ZURhdGFUYWJsZSgpIHtcbiAgICBjb25zb2xlLmxvZyhcIkluaXRpYWxpemluZyBEYXRhVGFibGUuLi5cIik7XG5cbiAgICAvLyBEZXN0cm95IGV4aXN0aW5nIHRhYmxlIGlmIGFueVxuICAgIGlmICgkLmZuLkRhdGFUYWJsZS5pc0RhdGFUYWJsZShcIiNtdXRhdGlvbnMtdGFibGVcIikpIHtcbiAgICAgICAgJChcIiNtdXRhdGlvbnMtdGFibGVcIikuRGF0YVRhYmxlKCkuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgRGF0YVRhYmxlXG4gICAgdmFyIHRhYmxlID0gJChcIiNtdXRhdGlvbnMtdGFibGVcIikuRGF0YVRhYmxlKHtcbiAgICAgICAgcHJvY2Vzc2luZzogdHJ1ZSxcbiAgICAgICAgc2VydmVyU2lkZTogdHJ1ZSxcbiAgICAgICAgZGVzdHJveTogdHJ1ZSxcbiAgICAgICAgYWpheDoge1xuICAgICAgICAgICAgdXJsOiAkKFwiI211dGF0aW9ucy10YWJsZVwiKS5kYXRhKFwidXJsXCIpLFxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcbiAgICAgICAgICAgIGRhdGE6IGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJEYXRhVGFibGVzIHJlcXVlc3QgZGF0YTpcIiwgZCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJPcmRlciBpbmZvOlwiLCBkLm9yZGVyKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNvbHVtbnMgaW5mbzpcIiwgZC5jb2x1bW5zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhociwgZXJyb3IsIGNvZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRGF0YVRhYmxlcyBBSkFYIGVycm9yOlwiLCBlcnJvciwgY29kZSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlJlc3BvbnNlOlwiLCB4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtbkRlZnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRzOiAwLCAvLyBOby4gY29sdW1uXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiNSVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0czogOCwgLy8gQWN0aW9uIGNvbHVtblxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjIwJVwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJ0ZXh0LWNlbnRlclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRzOiBbNiwgN10sIC8vIFRvdGFsIEl0ZW1zIGFuZCBTdGF0dXMgY29sdW1uc1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJ0ZXh0LWNlbnRlclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiRFRfUm93SW5kZXhcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkRUX1Jvd0luZGV4XCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJtdXRhdGlvbl9udW1iZXJcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIm11dGF0aW9uX251bWJlclwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImZyb21fZGVhbGVyXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJmcm9tX2RlYWxlclwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJ0b19kZWFsZXJcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInRvX2RlYWxlclwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJyZXF1ZXN0ZWRfYnlcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInJlcXVlc3RlZF9ieVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJ0b3RhbF9pdGVtc1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwidG90YWxfaXRlbXNcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJzdGF0dXNcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3JkZXI6IFtbMSwgXCJkZXNjXCJdXSwgLy8gT3JkZXIgYnkgbXV0YXRpb25fbnVtYmVyIGRlc2MgKHdoaWNoIGZvbGxvd3MgSUQgb3JkZXIpXG4gICAgICAgIHBhZ2VMZW5ndGg6IDEwLFxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgICBvcmRlcmluZzogdHJ1ZSwgLy8gRW5hYmxlIGNvbHVtbiBvcmRlcmluZ1xuICAgICAgICBvcmRlck11bHRpOiBmYWxzZSwgLy8gU2luZ2xlIGNvbHVtbiBvcmRlcmluZyBvbmx5XG4gICAgfSk7XG5cbiAgICAvLyBEZWJ1ZyBvcmRlcmluZyBldmVudHNcbiAgICB0YWJsZS5vbihcIm9yZGVyLmR0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJPcmRlciBjaGFuZ2VkOlwiLCB0YWJsZS5vcmRlcigpKTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBsb2FkaW5nIGluZGljYXRvciBmb3Igb3JkZXJpbmdcbiAgICB0YWJsZS5vbihcInByb2Nlc3NpbmcuZHRcIiwgZnVuY3Rpb24gKGUsIHNldHRpbmdzLCBwcm9jZXNzaW5nKSB7XG4gICAgICAgIGlmIChwcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFUYWJsZSBwcm9jZXNzaW5nIHN0YXJ0ZWQgKG9yZGVyaW5nL2ZpbHRlcmluZylcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFUYWJsZSBwcm9jZXNzaW5nIGZpbmlzaGVkXCIpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBNYW51YWwgY2xpY2sgaGFuZGxlciBmb3IgY29sdW1uIGhlYWRlcnMgKGZhbGxiYWNrKVxuICAgICQoXCIjbXV0YXRpb25zLXRhYmxlIHRoZWFkIHRoXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29sdW1uSW5kZXggPSAkKHRoaXMpLmluZGV4KCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29sdW1uIGhlYWRlciBjbGlja2VkOlwiLCBjb2x1bW5JbmRleCwgJCh0aGlzKS50ZXh0KCkpO1xuXG4gICAgICAgIC8vIFNraXAgaWYgaXQncyB0aGUgZmlyc3QgKE5vLikgb3IgbGFzdCAoQWN0aW9uKSBjb2x1bW5cbiAgICAgICAgaWYgKGNvbHVtbkluZGV4ID09PSAwIHx8IGNvbHVtbkluZGV4ID09PSA4KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk5vbi1zb3J0YWJsZSBjb2x1bW4gY2xpY2tlZCwgaWdub3JpbmdcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBEYXRhVGFibGVzIGlzIGhhbmRsaW5nIHRoZSBjbGlja1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAkKHRoaXMpLmhhc0NsYXNzKFwic29ydGluZ1wiKSB8fFxuICAgICAgICAgICAgJCh0aGlzKS5oYXNDbGFzcyhcInNvcnRpbmdfYXNjXCIpIHx8XG4gICAgICAgICAgICAkKHRoaXMpLmhhc0NsYXNzKFwic29ydGluZ19kZXNjXCIpXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJEYXRhVGFibGVzIHNob3VsZCBoYW5kbGUgdGhpcyBjbGlja1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YVRhYmxlcyBub3QgaGFuZGxpbmcgY2xpY2ssIG1hbnVhbCB0cmlnZ2VyIG5lZWRlZFwiKTtcbiAgICAgICAgICAgIC8vIEZvcmNlIERhdGFUYWJsZXMgdG8gaGFuZGxlIHRoZSBvcmRlcmluZ1xuICAgICAgICAgICAgdGFibGUub3JkZXIoW2NvbHVtbkluZGV4LCBcImFzY1wiXSkuZHJhdygpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIYW5kbGUgQ2FuY2VsIEJ1dHRvbiBDbGljayB3aXRoIFN3ZWV0QWxlcnRcbiAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIFwiLmJ0bi1jYW5jZWxcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbXV0YXRpb25JZCA9ICQodGhpcykuZGF0YShcImlkXCIpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgU3dhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJCYXRhbGthbiBNdXRhc2k/XCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJBcGFrYWggQW5kYSB5YWtpbiBpbmdpbiBtZW1iYXRhbGthbiBtdXRhc2kgaW5pP1wiLFxuICAgICAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25Db2xvcjogXCIjMzA4NWQ2XCIsXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiWWEsIEJhdGFsa2FuXCIsXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJCYXRhbFwiLFxuICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgICAgICBjYW5jZWxNdXRhdGlvbihtdXRhdGlvbklkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjb25maXJtKFwiQXBha2FoIEFuZGEgeWFraW4gaW5naW4gbWVtYmF0YWxrYW4gbXV0YXNpIGluaT9cIikpIHtcbiAgICAgICAgICAgICAgICBjYW5jZWxNdXRhdGlvbihtdXRhdGlvbklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIGZvcm0gc3VibWlzc2lvbnMgd2l0aCBsb2FkaW5nIHN0YXRlXG4gICAgJChkb2N1bWVudCkub24oXCJzdWJtaXRcIiwgXCIuYXBwcm92ZS1mb3JtXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKVxuICAgICAgICAgICAgLmZpbmQoJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJylcbiAgICAgICAgICAgIC5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSlcbiAgICAgICAgICAgIC5odG1sKFwiTWVtcHJvc2VzLi4uXCIpO1xuICAgIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgcXVhbnRpdHkgYXBwcm92ZWQgaW4gcmVjZWl2ZSBtb2RhbFxuICAgICQoZG9jdW1lbnQpLm9uKFwiaW5wdXRcIiwgJ2lucHV0W25hbWUqPVwicXVhbnRpdHlfYXBwcm92ZWRcIl0nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBtYXhWYWx1ZSA9IHBhcnNlRmxvYXQoJCh0aGlzKS5hdHRyKFwibWF4XCIpKTtcbiAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHBhcnNlRmxvYXQoJCh0aGlzKS52YWwoKSk7XG5cbiAgICAgICAgaWYgKG1heFZhbHVlICYmIGN1cnJlbnRWYWx1ZSA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgICAkKHRoaXMpLnZhbChtYXhWYWx1ZSk7XG4gICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKFwiaXMtaW52YWxpZFwiKTtcbiAgICAgICAgICAgIGlmICghJCh0aGlzKS5zaWJsaW5ncyhcIi5pbnZhbGlkLWZlZWRiYWNrXCIpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICQodGhpcykuYWZ0ZXIoXG4gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlF1YW50aXR5IHRpZGFrIGJvbGVoIG1lbGViaWhpIHlhbmcgZGltaW50YTwvZGl2PidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhcImlzLWludmFsaWRcIik7XG4gICAgICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKFwiLmludmFsaWQtZmVlZGJhY2tcIikucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY2FuY2VsTXV0YXRpb24obXV0YXRpb25JZCkge1xuICAgICQuYWpheCh7XG4gICAgICAgIHVybDogXCIvd2FyZWhvdXNlL211dGF0aW9ucy9cIiArIG11dGF0aW9uSWQgKyBcIi9jYW5jZWxcIixcbiAgICAgICAgdHlwZTogXCJQT1NUXCIsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIF90b2tlbjogJCgnbWV0YVtuYW1lPVwiY3NyZi10b2tlblwiXScpLmF0dHIoXCJjb250ZW50XCIpLFxuICAgICAgICB9LFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgU3dhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkJlcmhhc2lsIVwiLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBcIk11dGFzaSBiZXJoYXNpbCBkaWJhdGFsa2FuXCIsXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgICAgICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbGVydChcIk11dGFzaSBiZXJoYXNpbCBkaWJhdGFsa2FuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gR2V0IHRhYmxlIGluc3RhbmNlXG4gICAgICAgICAgICB2YXIgdGFibGUgPSAkKFwiI211dGF0aW9ucy10YWJsZVwiKS5EYXRhVGFibGUoKTtcbiAgICAgICAgICAgIHRhYmxlLmFqYXgucmVsb2FkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBmdW5jdGlvbiAoeGhyKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JNc2cgPVxuICAgICAgICAgICAgICAgIHhoci5yZXNwb25zZUpTT04/Lm1lc3NhZ2UgfHwgXCJHYWdhbCBtZW1iYXRhbGthbiBtdXRhc2lcIjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgU3dhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yIVwiLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlcnJvck1zZyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbGVydChcIkVycm9yOiBcIiArIGVycm9yTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUFBLENBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEtBQVosQ0FBa0IsWUFBWTtFQUMxQkMsT0FBTyxDQUFDQyxHQUFSLENBQVksMkJBQVosRUFEMEIsQ0FHMUI7O0VBQ0EsSUFBSSxPQUFPSixDQUFDLENBQUNLLEVBQUYsQ0FBS0MsU0FBWixLQUEwQixXQUE5QixFQUEyQztJQUN2Q0gsT0FBTyxDQUFDSSxLQUFSLENBQWMsMkJBQWQ7SUFDQTtFQUNILENBUHlCLENBUzFCOzs7RUFDQUMsVUFBVSxDQUFDLFlBQVk7SUFDbkJDLG1CQUFtQjtFQUN0QixDQUZTLEVBRVAsR0FGTyxDQUFWO0FBR0gsQ0FiRDs7QUFlQSxTQUFTQSxtQkFBVCxHQUErQjtFQUMzQk4sT0FBTyxDQUFDQyxHQUFSLENBQVksMkJBQVosRUFEMkIsQ0FHM0I7O0VBQ0EsSUFBSUosQ0FBQyxDQUFDSyxFQUFGLENBQUtDLFNBQUwsQ0FBZUksV0FBZixDQUEyQixrQkFBM0IsQ0FBSixFQUFvRDtJQUNoRFYsQ0FBQyxDQUFDLGtCQUFELENBQUQsQ0FBc0JNLFNBQXRCLEdBQWtDSyxPQUFsQztFQUNILENBTjBCLENBUTNCOzs7RUFDQSxJQUFJQyxLQUFLLEdBQUdaLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCTSxTQUF0QixDQUFnQztJQUN4Q08sVUFBVSxFQUFFLElBRDRCO0lBRXhDQyxVQUFVLEVBQUUsSUFGNEI7SUFHeENILE9BQU8sRUFBRSxJQUgrQjtJQUl4Q0ksSUFBSSxFQUFFO01BQ0ZDLEdBQUcsRUFBRWhCLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCaUIsSUFBdEIsQ0FBMkIsS0FBM0IsQ0FESDtNQUVGQyxJQUFJLEVBQUUsS0FGSjtNQUdGRCxJQUFJLEVBQUUsY0FBVUUsQ0FBVixFQUFhO1FBQ2ZoQixPQUFPLENBQUNDLEdBQVIsQ0FBWSwwQkFBWixFQUF3Q2UsQ0FBeEM7UUFDQWhCLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGFBQVosRUFBMkJlLENBQUMsQ0FBQ0MsS0FBN0I7UUFDQWpCLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGVBQVosRUFBNkJlLENBQUMsQ0FBQ0UsT0FBL0I7UUFDQSxPQUFPRixDQUFQO01BQ0gsQ0FSQztNQVNGWixLQUFLLEVBQUUsZUFBVWUsR0FBVixFQUFlZixNQUFmLEVBQXNCZ0IsSUFBdEIsRUFBNEI7UUFDL0JwQixPQUFPLENBQUNJLEtBQVIsQ0FBYyx3QkFBZCxFQUF3Q0EsTUFBeEMsRUFBK0NnQixJQUEvQztRQUNBcEIsT0FBTyxDQUFDSSxLQUFSLENBQWMsV0FBZCxFQUEyQmUsR0FBRyxDQUFDRSxZQUEvQjtNQUNIO0lBWkMsQ0FKa0M7SUFrQnhDQyxVQUFVLEVBQUUsQ0FDUjtNQUNJQyxPQUFPLEVBQUUsQ0FEYjtNQUNnQjtNQUNaQyxLQUFLLEVBQUU7SUFGWCxDQURRLEVBS1I7TUFDSUQsT0FBTyxFQUFFLENBRGI7TUFDZ0I7TUFDWkMsS0FBSyxFQUFFLEtBRlg7TUFHSUMsU0FBUyxFQUFFO0lBSGYsQ0FMUSxFQVVSO01BQ0lGLE9BQU8sRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBRGI7TUFDcUI7TUFDakJFLFNBQVMsRUFBRTtJQUZmLENBVlEsQ0FsQjRCO0lBaUN4Q1AsT0FBTyxFQUFFLENBQ0w7TUFDSUosSUFBSSxFQUFFLGFBRFY7TUFFSVksSUFBSSxFQUFFLGFBRlY7TUFHSUMsU0FBUyxFQUFFLEtBSGY7TUFJSUMsVUFBVSxFQUFFO0lBSmhCLENBREssRUFPTDtNQUNJZCxJQUFJLEVBQUUsaUJBRFY7TUFFSVksSUFBSSxFQUFFLGlCQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBUEssRUFZTDtNQUNJYixJQUFJLEVBQUUsWUFEVjtNQUVJWSxJQUFJLEVBQUUsWUFGVjtNQUdJQyxTQUFTLEVBQUU7SUFIZixDQVpLLEVBaUJMO01BQ0liLElBQUksRUFBRSxhQURWO01BRUlZLElBQUksRUFBRSxhQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBakJLLEVBc0JMO01BQ0liLElBQUksRUFBRSxXQURWO01BRUlZLElBQUksRUFBRSxXQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBdEJLLEVBMkJMO01BQ0liLElBQUksRUFBRSxjQURWO01BRUlZLElBQUksRUFBRSxjQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBM0JLLEVBZ0NMO01BQ0liLElBQUksRUFBRSxhQURWO01BRUlZLElBQUksRUFBRSxhQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBaENLLEVBcUNMO01BQ0liLElBQUksRUFBRSxRQURWO01BRUlZLElBQUksRUFBRSxRQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBckNLLEVBMENMO01BQ0liLElBQUksRUFBRSxRQURWO01BRUlZLElBQUksRUFBRSxRQUZWO01BR0lDLFNBQVMsRUFBRSxLQUhmO01BSUlDLFVBQVUsRUFBRTtJQUpoQixDQTFDSyxDQWpDK0I7SUFrRnhDWCxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUQsRUFBSSxNQUFKLENBQUQsQ0FsRmlDO0lBa0ZsQjtJQUN0QlksVUFBVSxFQUFFLEVBbkY0QjtJQW9GeENDLFVBQVUsRUFBRSxJQXBGNEI7SUFxRnhDQyxRQUFRLEVBQUUsSUFyRjhCO0lBcUZ4QjtJQUNoQkMsVUFBVSxFQUFFLEtBdEY0QixDQXNGckI7O0VBdEZxQixDQUFoQyxDQUFaLENBVDJCLENBa0czQjs7RUFDQXZCLEtBQUssQ0FBQ3dCLEVBQU4sQ0FBUyxVQUFULEVBQXFCLFlBQVk7SUFDN0JqQyxPQUFPLENBQUNDLEdBQVIsQ0FBWSxnQkFBWixFQUE4QlEsS0FBSyxDQUFDUSxLQUFOLEVBQTlCO0VBQ0gsQ0FGRCxFQW5HMkIsQ0F1RzNCOztFQUNBUixLQUFLLENBQUN3QixFQUFOLENBQVMsZUFBVCxFQUEwQixVQUFVQyxDQUFWLEVBQWFDLFFBQWIsRUFBdUJ6QixVQUF2QixFQUFtQztJQUN6RCxJQUFJQSxVQUFKLEVBQWdCO01BQ1pWLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLG1EQUFaO0lBQ0gsQ0FGRCxNQUVPO01BQ0hELE9BQU8sQ0FBQ0MsR0FBUixDQUFZLCtCQUFaO0lBQ0g7RUFDSixDQU5ELEVBeEcyQixDQWdIM0I7O0VBQ0FKLENBQUMsQ0FBQywyQkFBRCxDQUFELENBQStCb0MsRUFBL0IsQ0FBa0MsT0FBbEMsRUFBMkMsWUFBWTtJQUNuRCxJQUFJRyxXQUFXLEdBQUd2QyxDQUFDLENBQUMsSUFBRCxDQUFELENBQVF3QyxLQUFSLEVBQWxCO0lBQ0FyQyxPQUFPLENBQUNDLEdBQVIsQ0FBWSx3QkFBWixFQUFzQ21DLFdBQXRDLEVBQW1EdkMsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFReUMsSUFBUixFQUFuRCxFQUZtRCxDQUluRDs7SUFDQSxJQUFJRixXQUFXLEtBQUssQ0FBaEIsSUFBcUJBLFdBQVcsS0FBSyxDQUF6QyxFQUE0QztNQUN4Q3BDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLHVDQUFaO01BQ0E7SUFDSCxDQVJrRCxDQVVuRDs7O0lBQ0EsSUFDSUosQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRMEMsUUFBUixDQUFpQixTQUFqQixLQUNBMUMsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRMEMsUUFBUixDQUFpQixhQUFqQixDQURBLElBRUExQyxDQUFDLENBQUMsSUFBRCxDQUFELENBQVEwQyxRQUFSLENBQWlCLGNBQWpCLENBSEosRUFJRTtNQUNFdkMsT0FBTyxDQUFDQyxHQUFSLENBQVkscUNBQVo7SUFDSCxDQU5ELE1BTU87TUFDSEQsT0FBTyxDQUFDQyxHQUFSLENBQVksc0RBQVosRUFERyxDQUVIOztNQUNBUSxLQUFLLENBQUNRLEtBQU4sQ0FBWSxDQUFDbUIsV0FBRCxFQUFjLEtBQWQsQ0FBWixFQUFrQ0ksSUFBbEM7SUFDSDtFQUNKLENBdEJELEVBakgyQixDQXlJM0I7O0VBQ0EzQyxDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZbUMsRUFBWixDQUFlLE9BQWYsRUFBd0IsYUFBeEIsRUFBdUMsWUFBWTtJQUMvQyxJQUFJUSxVQUFVLEdBQUc1QyxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFpQixJQUFSLENBQWEsSUFBYixDQUFqQjs7SUFFQSxJQUFJLE9BQU80QixJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO01BQzdCQSxJQUFJLENBQUNDLElBQUwsQ0FBVTtRQUNOQyxLQUFLLEVBQUUsa0JBREQ7UUFFTk4sSUFBSSxFQUFFLGlEQUZBO1FBR05PLElBQUksRUFBRSxTQUhBO1FBSU5DLGdCQUFnQixFQUFFLElBSlo7UUFLTkMsa0JBQWtCLEVBQUUsTUFMZDtRQU1OQyxpQkFBaUIsRUFBRSxTQU5iO1FBT05DLGlCQUFpQixFQUFFLGNBUGI7UUFRTkMsZ0JBQWdCLEVBQUU7TUFSWixDQUFWLEVBU0dDLElBVEgsQ0FTUSxVQUFDQyxNQUFELEVBQVk7UUFDaEIsSUFBSUEsTUFBTSxDQUFDQyxXQUFYLEVBQXdCO1VBQ3BCQyxjQUFjLENBQUNiLFVBQUQsQ0FBZDtRQUNIO01BQ0osQ0FiRDtJQWNILENBZkQsTUFlTztNQUNILElBQUljLE9BQU8sQ0FBQyxpREFBRCxDQUFYLEVBQWdFO1FBQzVERCxjQUFjLENBQUNiLFVBQUQsQ0FBZDtNQUNIO0lBQ0o7RUFDSixDQXZCRCxFQTFJMkIsQ0FtSzNCOztFQUNBNUMsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWW1DLEVBQVosQ0FBZSxRQUFmLEVBQXlCLGVBQXpCLEVBQTBDLFlBQVk7SUFDbERwQyxDQUFDLENBQUMsSUFBRCxDQUFELENBQ0syRCxJQURMLENBQ1UsdUJBRFYsRUFFS0MsSUFGTCxDQUVVLFVBRlYsRUFFc0IsSUFGdEIsRUFHS0MsSUFITCxDQUdVLGNBSFY7RUFJSCxDQUxELEVBcEsyQixDQTJLM0I7O0VBQ0E3RCxDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZbUMsRUFBWixDQUFlLE9BQWYsRUFBd0Isa0NBQXhCLEVBQTRELFlBQVk7SUFDcEUsSUFBSTBCLFFBQVEsR0FBR0MsVUFBVSxDQUFDL0QsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRZ0UsSUFBUixDQUFhLEtBQWIsQ0FBRCxDQUF6QjtJQUNBLElBQUlDLFlBQVksR0FBR0YsVUFBVSxDQUFDL0QsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRa0UsR0FBUixFQUFELENBQTdCOztJQUVBLElBQUlKLFFBQVEsSUFBSUcsWUFBWSxHQUFHSCxRQUEvQixFQUF5QztNQUNyQzlELENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUWtFLEdBQVIsQ0FBWUosUUFBWjtNQUNBOUQsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRbUUsUUFBUixDQUFpQixZQUFqQjs7TUFDQSxJQUFJLENBQUNuRSxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFvRSxRQUFSLENBQWlCLG1CQUFqQixFQUFzQ0MsTUFBM0MsRUFBbUQ7UUFDL0NyRSxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFzRSxLQUFSLENBQ0ksZ0ZBREo7TUFHSDtJQUNKLENBUkQsTUFRTztNQUNIdEUsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRdUUsV0FBUixDQUFvQixZQUFwQjtNQUNBdkUsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRb0UsUUFBUixDQUFpQixtQkFBakIsRUFBc0NJLE1BQXRDO0lBQ0g7RUFDSixDQWhCRDtBQWlCSDs7QUFFRCxTQUFTZixjQUFULENBQXdCYixVQUF4QixFQUFvQztFQUNoQzVDLENBQUMsQ0FBQ2UsSUFBRixDQUFPO0lBQ0hDLEdBQUcsRUFBRSwwQkFBMEI0QixVQUExQixHQUF1QyxTQUR6QztJQUVIMUIsSUFBSSxFQUFFLE1BRkg7SUFHSEQsSUFBSSxFQUFFO01BQ0Z3RCxNQUFNLEVBQUV6RSxDQUFDLENBQUMseUJBQUQsQ0FBRCxDQUE2QmdFLElBQTdCLENBQWtDLFNBQWxDO0lBRE4sQ0FISDtJQU1IVSxPQUFPLEVBQUUsaUJBQVVDLFFBQVYsRUFBb0I7TUFDekIsSUFBSSxPQUFPOUIsSUFBUCxLQUFnQixXQUFwQixFQUFpQztRQUM3QkEsSUFBSSxDQUFDQyxJQUFMLENBQVU7VUFDTkMsS0FBSyxFQUFFLFdBREQ7VUFFTk4sSUFBSSxFQUFFLDRCQUZBO1VBR05PLElBQUksRUFBRSxTQUhBO1VBSU40QixLQUFLLEVBQUUsSUFKRDtVQUtOQyxpQkFBaUIsRUFBRTtRQUxiLENBQVY7TUFPSCxDQVJELE1BUU87UUFDSEMsS0FBSyxDQUFDLDRCQUFELENBQUw7TUFDSCxDQVh3QixDQVl6Qjs7O01BQ0EsSUFBSWxFLEtBQUssR0FBR1osQ0FBQyxDQUFDLGtCQUFELENBQUQsQ0FBc0JNLFNBQXRCLEVBQVo7TUFDQU0sS0FBSyxDQUFDRyxJQUFOLENBQVdnRSxNQUFYO0lBQ0gsQ0FyQkU7SUFzQkh4RSxLQUFLLEVBQUUsZUFBVWUsR0FBVixFQUFlO01BQUE7O01BQ2xCLElBQUkwRCxRQUFRLEdBQ1Isc0JBQUExRCxHQUFHLENBQUMyRCxZQUFKLHdFQUFrQkMsT0FBbEIsS0FBNkIsMEJBRGpDOztNQUVBLElBQUksT0FBT3JDLElBQVAsS0FBZ0IsV0FBcEIsRUFBaUM7UUFDN0JBLElBQUksQ0FBQ0MsSUFBTCxDQUFVO1VBQ05DLEtBQUssRUFBRSxRQUREO1VBRU5OLElBQUksRUFBRXVDLFFBRkE7VUFHTmhDLElBQUksRUFBRTtRQUhBLENBQVY7TUFLSCxDQU5ELE1BTU87UUFDSDhCLEtBQUssQ0FBQyxZQUFZRSxRQUFiLENBQUw7TUFDSDtJQUNKO0VBbENFLENBQVA7QUFvQ0giLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvbXV0YXRpb25zL2luZGV4LmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/warehouse_management/mutations/index.js\n");
/***/ })
diff --git a/public/js/warehouse_management/mutations/index.js.map b/public/js/warehouse_management/mutations/index.js.map
index 97902f5..3abe200 100755
--- a/public/js/warehouse_management/mutations/index.js.map
+++ b/public/js/warehouse_management/mutations/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"/js/warehouse_management/mutations/index.js","mappings":"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","sources":["webpack:///./resources/js/warehouse_management/mutations/index.js"],"sourcesContent":["$(document).ready(function () {\n console.log(\"Mutations index.js loaded\");\n\n // Check if DataTables is available\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables not available!\");\n return;\n }\n\n // Destroy existing table if any\n if ($.fn.DataTable.isDataTable(\"#mutations-table\")) {\n $(\"#mutations-table\").DataTable().destroy();\n }\n\n // Initialize DataTable\n var table = $(\"#mutations-table\").DataTable({\n processing: true,\n serverSide: true,\n destroy: true,\n ajax: {\n url: $(\"#mutations-table\").data(\"url\"),\n type: \"GET\",\n error: function (xhr, error, code) {\n console.error(\"DataTables AJAX error:\", error, code);\n },\n },\n columnDefs: [\n {\n targets: 0, // No. column\n orderable: false,\n searchable: false,\n width: \"5%\",\n },\n {\n targets: [1, 2, 3, 4, 5, 6, 7], // All sortable columns\n orderable: true,\n searchable: true,\n },\n {\n targets: 8, // Action column\n orderable: false,\n searchable: false,\n width: \"20%\",\n className: \"text-center\",\n },\n {\n targets: [6, 7], // Total Items and Status columns\n className: \"text-center\",\n },\n ],\n columns: [\n {\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n },\n {\n data: \"mutation_number\",\n name: \"mutation_number\",\n },\n {\n data: \"created_at\",\n name: \"created_at\",\n },\n {\n data: \"from_dealer\",\n name: \"fromDealer.name\",\n },\n {\n data: \"to_dealer\",\n name: \"toDealer.name\",\n },\n {\n data: \"requested_by\",\n name: \"requestedBy.name\",\n },\n {\n data: \"total_items\",\n name: \"total_items\",\n },\n {\n data: \"status\",\n name: \"status\",\n },\n {\n data: \"action\",\n name: \"action\",\n },\n ],\n order: [[1, \"desc\"]], // Order by mutation_number desc (which follows ID order)\n pageLength: 10,\n responsive: true,\n });\n\n // Handle Cancel Button Click with SweetAlert\n $(document).on(\"click\", \".btn-cancel\", function () {\n var mutationId = $(this).data(\"id\");\n\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Batalkan Mutasi?\",\n text: \"Apakah Anda yakin ingin membatalkan mutasi ini?\",\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#3085d6\",\n confirmButtonText: \"Ya, Batalkan\",\n cancelButtonText: \"Batal\",\n }).then((result) => {\n if (result.isConfirmed) {\n cancelMutation(mutationId);\n }\n });\n } else {\n if (confirm(\"Apakah Anda yakin ingin membatalkan mutasi ini?\")) {\n cancelMutation(mutationId);\n }\n }\n });\n\n function cancelMutation(mutationId) {\n $.ajax({\n url: \"/warehouse/mutations/\" + mutationId + \"/cancel\",\n type: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n success: function (response) {\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Berhasil!\",\n text: \"Mutasi berhasil dibatalkan\",\n icon: \"success\",\n timer: 2000,\n showConfirmButton: false,\n });\n } else {\n alert(\"Mutasi berhasil dibatalkan\");\n }\n table.ajax.reload();\n },\n error: function (xhr) {\n var errorMsg =\n xhr.responseJSON?.message || \"Gagal membatalkan mutasi\";\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Error!\",\n text: errorMsg,\n icon: \"error\",\n });\n } else {\n alert(\"Error: \" + errorMsg);\n }\n },\n });\n }\n\n // Handle form submissions with loading state\n $(document).on(\"submit\", \".approve-form\", function () {\n $(this)\n .find('button[type=\"submit\"]')\n .prop(\"disabled\", true)\n .html(\"Memproses...\");\n });\n\n // Validate quantity approved in receive modal\n $(document).on(\"input\", 'input[name*=\"quantity_approved\"]', function () {\n var maxValue = parseFloat($(this).attr(\"max\"));\n var currentValue = parseFloat($(this).val());\n\n if (maxValue && currentValue > maxValue) {\n $(this).val(maxValue);\n $(this).addClass(\"is-invalid\");\n if (!$(this).siblings(\".invalid-feedback\").length) {\n $(this).after(\n 'Quantity tidak boleh melebihi yang diminta
'\n );\n }\n } else {\n $(this).removeClass(\"is-invalid\");\n $(this).siblings(\".invalid-feedback\").remove();\n }\n });\n});\n"],"names":["$","document","ready","console","log","fn","DataTable","isDataTable","destroy","table","processing","serverSide","ajax","url","data","type","error","xhr","code","columnDefs","targets","orderable","searchable","width","className","columns","name","order","pageLength","responsive","on","mutationId","this","Swal","fire","title","text","icon","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","cancelButtonText","then","result","isConfirmed","cancelMutation","confirm","find","prop","html","maxValue","parseFloat","attr","currentValue","val","addClass","siblings","length","after","removeClass","remove","_token","success","response","timer","showConfirmButton","alert","reload","errorMsg","responseJSON","message"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"/js/warehouse_management/mutations/index.js","mappings":"MA8MA,SAASA,EAAeC,GACpBC,EAAEC,KAAK,CACHC,IAAK,wBAA0BH,EAAa,UAC5CI,KAAM,OACNC,KAAM,CACFC,OAAQL,EAAE,2BAA2BM,KAAK,YAE9CC,QAAS,SAAUC,GACK,oBAATC,KACPA,KAAKC,KAAK,CACNC,MAAO,YACPC,KAAM,6BACNC,KAAM,UACNC,MAAO,IACPC,mBAAmB,IAGvBC,MAAM,8BAGEhB,EAAE,oBAAoBiB,YAC5BhB,KAAKiB,QACd,EACDC,MAAO,SAAUC,GAAK,MACdC,GACA,UAAAD,EAAIE,oBAAJ,eAAkBC,UAAW,2BACb,oBAATd,KACPA,KAAKC,KAAK,CACNC,MAAO,SACPC,KAAMS,EACNR,KAAM,UAGVG,MAAM,UAAYK,EAEzB,GAER,CAnPDrB,EAAEwB,UAAUC,OAAM,WACdC,QAAQC,IAAI,kCAGkB,IAAnB3B,EAAE4B,GAAGX,UAMhBY,YAAW,YAKf,WACIH,QAAQC,IAAI,6BAGR3B,EAAE4B,GAAGX,UAAUa,YAAY,qBAC3B9B,EAAE,oBAAoBiB,YAAYc,UAItC,IAAIC,EAAQhC,EAAE,oBAAoBiB,UAAU,CACxCgB,YAAY,EACZC,YAAY,EACZH,SAAS,EACT9B,KAAM,CACFC,IAAKF,EAAE,oBAAoBI,KAAK,OAChCD,KAAM,MACNC,KAAM,SAAU+B,GAIZ,OAHAT,QAAQC,IAAI,2BAA4BQ,GACxCT,QAAQC,IAAI,cAAeQ,EAAEC,OAC7BV,QAAQC,IAAI,gBAAiBQ,EAAEE,SACxBF,CACV,EACDhB,MAAO,SAAUC,EAAKD,EAAOmB,GACzBZ,QAAQP,MAAM,yBAA0BA,EAAOmB,GAC/CZ,QAAQP,MAAM,YAAaC,EAAImB,aAClC,GAELC,WAAY,CACR,CACIC,QAAS,EACTC,MAAO,MAEX,CACID,QAAS,EACTC,MAAO,MACPC,UAAW,eAEf,CACIF,QAAS,CAAC,EAAG,GACbE,UAAW,gBAGnBN,QAAS,CACL,CACIjC,KAAM,cACNwC,KAAM,cACNC,WAAW,EACXC,YAAY,GAEhB,CACI1C,KAAM,kBACNwC,KAAM,kBACNC,WAAW,GAEf,CACIzC,KAAM,aACNwC,KAAM,aACNC,WAAW,GAEf,CACIzC,KAAM,cACNwC,KAAM,cACNC,WAAW,GAEf,CACIzC,KAAM,YACNwC,KAAM,YACNC,WAAW,GAEf,CACIzC,KAAM,eACNwC,KAAM,eACNC,WAAW,GAEf,CACIzC,KAAM,cACNwC,KAAM,cACNC,WAAW,GAEf,CACIzC,KAAM,SACNwC,KAAM,SACNC,WAAW,GAEf,CACIzC,KAAM,SACNwC,KAAM,SACNC,WAAW,EACXC,YAAY,IAGpBV,MAAO,CAAC,CAAC,EAAG,SACZW,WAAY,GACZC,YAAY,EACZC,UAAU,EACVC,YAAY,IAIhBlB,EAAMmB,GAAG,YAAY,WACjBzB,QAAQC,IAAI,iBAAkBK,EAAMI,QACvC,IAGDJ,EAAMmB,GAAG,iBAAiB,SAAUC,EAAGC,EAAUpB,GACzCA,EACAP,QAAQC,IAAI,qDAEZD,QAAQC,IAAI,gCAEnB,IAGD3B,EAAE,6BAA6BmD,GAAG,SAAS,WACvC,IAAIG,EAActD,EAAEuD,MAAMC,QAC1B9B,QAAQC,IAAI,yBAA0B2B,EAAatD,EAAEuD,MAAM3C,QAGvC,IAAhB0C,GAAqC,IAAhBA,EAOrBtD,EAAEuD,MAAME,SAAS,YACjBzD,EAAEuD,MAAME,SAAS,gBACjBzD,EAAEuD,MAAME,SAAS,gBAEjB/B,QAAQC,IAAI,wCAEZD,QAAQC,IAAI,wDAEZK,EAAMI,MAAM,CAACkB,EAAa,QAAQI,QAdlChC,QAAQC,IAAI,wCAgBnB,IAGD3B,EAAEwB,UAAU2B,GAAG,QAAS,eAAe,WACnC,IAAIpD,EAAaC,EAAEuD,MAAMnD,KAAK,MAEV,oBAATK,KACPA,KAAKC,KAAK,CACNC,MAAO,mBACPC,KAAM,kDACNC,KAAM,UACN8C,kBAAkB,EAClBC,mBAAoB,OACpBC,kBAAmB,UACnBC,kBAAmB,eACnBC,iBAAkB,UACnBC,MAAK,SAACC,GACDA,EAAOC,aACPpE,EAAeC,EAEtB,IAEGoE,QAAQ,oDACRrE,EAAeC,EAG1B,IAGDC,EAAEwB,UAAU2B,GAAG,SAAU,iBAAiB,WACtCnD,EAAEuD,MACGa,KAAK,yBACLC,KAAK,YAAY,GACjBC,KAAK,eACb,IAGDtE,EAAEwB,UAAU2B,GAAG,QAAS,oCAAoC,WACxD,IAAIoB,EAAWC,WAAWxE,EAAEuD,MAAMjD,KAAK,QACnCmE,EAAeD,WAAWxE,EAAEuD,MAAMmB,OAElCH,GAAYE,EAAeF,GAC3BvE,EAAEuD,MAAMmB,IAAIH,GACZvE,EAAEuD,MAAMoB,SAAS,cACZ3E,EAAEuD,MAAMqB,SAAS,qBAAqBC,QACvC7E,EAAEuD,MAAMuB,MACJ,oFAIR9E,EAAEuD,MAAMwB,YAAY,cACpB/E,EAAEuD,MAAMqB,SAAS,qBAAqBI,SAE7C,GACJ,CAjMOC,EACH,GAAE,KAPCvD,QAAQP,MAAM,4BAQrB,G","sources":["webpack:///./resources/js/warehouse_management/mutations/index.js"],"sourcesContent":["$(document).ready(function () {\n console.log(\"Mutations index.js loaded\");\n\n // Check if DataTables is available\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables not available!\");\n return;\n }\n\n // Wait for DOM to be fully ready\n setTimeout(function () {\n initializeDataTable();\n }, 100);\n});\n\nfunction initializeDataTable() {\n console.log(\"Initializing DataTable...\");\n\n // Destroy existing table if any\n if ($.fn.DataTable.isDataTable(\"#mutations-table\")) {\n $(\"#mutations-table\").DataTable().destroy();\n }\n\n // Initialize DataTable\n var table = $(\"#mutations-table\").DataTable({\n processing: true,\n serverSide: true,\n destroy: true,\n ajax: {\n url: $(\"#mutations-table\").data(\"url\"),\n type: \"GET\",\n data: function (d) {\n console.log(\"DataTables request data:\", d);\n console.log(\"Order info:\", d.order);\n console.log(\"Columns info:\", d.columns);\n return d;\n },\n error: function (xhr, error, code) {\n console.error(\"DataTables AJAX error:\", error, code);\n console.error(\"Response:\", xhr.responseText);\n },\n },\n columnDefs: [\n {\n targets: 0, // No. column\n width: \"5%\",\n },\n {\n targets: 8, // Action column\n width: \"20%\",\n className: \"text-center\",\n },\n {\n targets: [6, 7], // Total Items and Status columns\n className: \"text-center\",\n },\n ],\n columns: [\n {\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false,\n },\n {\n data: \"mutation_number\",\n name: \"mutation_number\",\n orderable: true,\n },\n {\n data: \"created_at\",\n name: \"created_at\",\n orderable: true,\n },\n {\n data: \"from_dealer\",\n name: \"from_dealer\",\n orderable: true,\n },\n {\n data: \"to_dealer\",\n name: \"to_dealer\",\n orderable: true,\n },\n {\n data: \"requested_by\",\n name: \"requested_by\",\n orderable: true,\n },\n {\n data: \"total_items\",\n name: \"total_items\",\n orderable: true,\n },\n {\n data: \"status\",\n name: \"status\",\n orderable: true,\n },\n {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n },\n ],\n order: [[1, \"desc\"]], // Order by mutation_number desc (which follows ID order)\n pageLength: 10,\n responsive: true,\n ordering: true, // Enable column ordering\n orderMulti: false, // Single column ordering only\n });\n\n // Debug ordering events\n table.on(\"order.dt\", function () {\n console.log(\"Order changed:\", table.order());\n });\n\n // Add loading indicator for ordering\n table.on(\"processing.dt\", function (e, settings, processing) {\n if (processing) {\n console.log(\"DataTable processing started (ordering/filtering)\");\n } else {\n console.log(\"DataTable processing finished\");\n }\n });\n\n // Manual click handler for column headers (fallback)\n $(\"#mutations-table thead th\").on(\"click\", function () {\n var columnIndex = $(this).index();\n console.log(\"Column header clicked:\", columnIndex, $(this).text());\n\n // Skip if it's the first (No.) or last (Action) column\n if (columnIndex === 0 || columnIndex === 8) {\n console.log(\"Non-sortable column clicked, ignoring\");\n return;\n }\n\n // Check if DataTables is handling the click\n if (\n $(this).hasClass(\"sorting\") ||\n $(this).hasClass(\"sorting_asc\") ||\n $(this).hasClass(\"sorting_desc\")\n ) {\n console.log(\"DataTables should handle this click\");\n } else {\n console.log(\"DataTables not handling click, manual trigger needed\");\n // Force DataTables to handle the ordering\n table.order([columnIndex, \"asc\"]).draw();\n }\n });\n\n // Handle Cancel Button Click with SweetAlert\n $(document).on(\"click\", \".btn-cancel\", function () {\n var mutationId = $(this).data(\"id\");\n\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Batalkan Mutasi?\",\n text: \"Apakah Anda yakin ingin membatalkan mutasi ini?\",\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#3085d6\",\n confirmButtonText: \"Ya, Batalkan\",\n cancelButtonText: \"Batal\",\n }).then((result) => {\n if (result.isConfirmed) {\n cancelMutation(mutationId);\n }\n });\n } else {\n if (confirm(\"Apakah Anda yakin ingin membatalkan mutasi ini?\")) {\n cancelMutation(mutationId);\n }\n }\n });\n\n // Handle form submissions with loading state\n $(document).on(\"submit\", \".approve-form\", function () {\n $(this)\n .find('button[type=\"submit\"]')\n .prop(\"disabled\", true)\n .html(\"Memproses...\");\n });\n\n // Validate quantity approved in receive modal\n $(document).on(\"input\", 'input[name*=\"quantity_approved\"]', function () {\n var maxValue = parseFloat($(this).attr(\"max\"));\n var currentValue = parseFloat($(this).val());\n\n if (maxValue && currentValue > maxValue) {\n $(this).val(maxValue);\n $(this).addClass(\"is-invalid\");\n if (!$(this).siblings(\".invalid-feedback\").length) {\n $(this).after(\n 'Quantity tidak boleh melebihi yang diminta
'\n );\n }\n } else {\n $(this).removeClass(\"is-invalid\");\n $(this).siblings(\".invalid-feedback\").remove();\n }\n });\n}\n\nfunction cancelMutation(mutationId) {\n $.ajax({\n url: \"/warehouse/mutations/\" + mutationId + \"/cancel\",\n type: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n success: function (response) {\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Berhasil!\",\n text: \"Mutasi berhasil dibatalkan\",\n icon: \"success\",\n timer: 2000,\n showConfirmButton: false,\n });\n } else {\n alert(\"Mutasi berhasil dibatalkan\");\n }\n // Get table instance\n var table = $(\"#mutations-table\").DataTable();\n table.ajax.reload();\n },\n error: function (xhr) {\n var errorMsg =\n xhr.responseJSON?.message || \"Gagal membatalkan mutasi\";\n if (typeof Swal !== \"undefined\") {\n Swal.fire({\n title: \"Error!\",\n text: errorMsg,\n icon: \"error\",\n });\n } else {\n alert(\"Error: \" + errorMsg);\n }\n },\n });\n}\n"],"names":["cancelMutation","mutationId","$","ajax","url","type","data","_token","attr","success","response","Swal","fire","title","text","icon","timer","showConfirmButton","alert","DataTable","reload","error","xhr","errorMsg","responseJSON","message","document","ready","console","log","fn","setTimeout","isDataTable","destroy","table","processing","serverSide","d","order","columns","code","responseText","columnDefs","targets","width","className","name","orderable","searchable","pageLength","responsive","ordering","orderMulti","on","e","settings","columnIndex","this","index","hasClass","draw","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","cancelButtonText","then","result","isConfirmed","confirm","find","prop","html","maxValue","parseFloat","currentValue","val","addClass","siblings","length","after","removeClass","remove","initializeDataTable"],"sourceRoot":""}
\ No newline at end of file
diff --git a/public/js/warehouse_management/products/index.js b/public/js/warehouse_management/products/index.js
index 1db1057..61097e9 100755
--- a/public/js/warehouse_management/products/index.js
+++ b/public/js/warehouse_management/products/index.js
@@ -15,7 +15,7 @@
\*************************************************************/
/***/ (() => {
-eval("$.ajaxSetup({\n headers: {\n \"X-CSRF-TOKEN\": $('meta[name=\"csrf-token\"]').attr(\"content\")\n }\n}); // Wait for DataTables to be available\n\nfunction initializeDataTable() {\n // Debug: Check if DataTables is loaded\n console.log(\"DataTables available:\", typeof $.fn.DataTable !== \"undefined\");\n console.log(\"jQuery version:\", $.fn.jquery);\n\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables is not loaded! Retrying in 1 second...\");\n setTimeout(initializeDataTable, 1000);\n return;\n }\n\n var tableContainer = $(\"#products-table\");\n var url = tableContainer.data(\"url\");\n console.log(\"Table URL:\", url);\n console.log(\"Initializing DataTable...\");\n var table = $(\"#products-table\").DataTable({\n processing: true,\n serverSide: true,\n ajax: {\n url: url,\n error: function error(xhr, _error, thrown) {\n console.error(\"DataTables Ajax Error:\", _error, thrown);\n console.error(\"Response:\", xhr.responseText);\n }\n },\n order: [[0, \"asc\"]],\n // Order by first column (code) ascending\n columns: [{\n data: \"code\",\n name: \"code\",\n orderable: true,\n searchable: true\n }, {\n data: \"name\",\n name: \"name\",\n orderable: true,\n searchable: true\n }, {\n data: \"category_name\",\n name: \"category.name\",\n orderable: true,\n searchable: true\n }, {\n data: \"unit\",\n name: \"unit\",\n orderable: true,\n searchable: true\n }, {\n data: \"total_stock\",\n name: \"total_stock\",\n orderable: false,\n searchable: false\n }, {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false\n }],\n columnDefs: [{\n targets: [4, 5],\n // total_stock and action columns\n orderable: false\n }],\n initComplete: function initComplete(settings, json) {\n console.log(\"DataTables initialized successfully\");\n console.log(\"Settings:\", settings);\n console.log(\"Column ordering enabled for:\", settings.aoColumns.map(function (col, index) {\n return {\n index: index,\n orderable: col.bSortable,\n name: col.sName || col.mData\n };\n }));\n },\n drawCallback: function drawCallback(settings) {\n console.log(\"DataTables draw completed\");\n },\n headerCallback: function headerCallback(thead, data, start, end, display) {\n console.log(\"Header callback - sorting icons should be visible\");\n }\n }); // Debug: Log table instance\n\n console.log(\"DataTable instance:\", table); // Test column ordering programmatically\n\n setTimeout(function () {\n console.log(\"Testing column ordering...\");\n\n try {\n table.order([1, \"desc\"]).draw();\n console.log(\"Column ordering test successful\");\n } catch (e) {\n console.error(\"Column ordering test failed:\", e);\n }\n }, 2000);\n} // Initialize when document is ready\n\n\n$(document).ready(function () {\n console.log(\"Document ready, checking for DataTables...\");\n initializeDataTable();\n});\n$(document).on(\"click\", \".btn-destroy-product\", function () {\n var _this = this;\n\n Swal.fire({\n title: \"Hapus produk?\",\n text: \"Anda tidak akan bisa mengembalikannya!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Hapus\"\n }).then(function (result) {\n if (result.value) {\n var url = $(_this).data(\"action\");\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _method: \"DELETE\",\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\")\n },\n success: function success() {\n Swal.fire(\"Berhasil!\", \"Produk berhasil dihapus.\", \"success\");\n $(\"#products-table\").DataTable().ajax.reload();\n },\n error: function error(xhr) {\n Swal.fire(\"Error!\", \"Gagal menghapus produk.\", \"error\");\n console.error(xhr.responseText);\n }\n });\n }\n });\n});\n$(document).on(\"click\", \".btn-toggle-active\", function () {\n var button = $(this);\n var url = button.data(\"url\");\n Swal.fire({\n title: \"Status produk?\",\n text: \"Anda yakin ingin mengganti status produk!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Ya\"\n }).then(function (result) {\n if (result.value) {\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\")\n },\n success: function success(response) {\n if (response.success) {\n $(\"#products-table\").DataTable().ajax.reload(null, false);\n Swal.fire(\"Berhasil!\", response.message, \"success\");\n }\n },\n error: function error() {\n Swal.fire(\"Error!\", \"Gagal mengubah status produk.\", \"error\");\n }\n });\n }\n });\n});\n$(document).on(\"click\", \".btn-product-stock-dealers\", function () {\n var productId = $(this).data(\"id\");\n var productName = $(this).data(\"name\");\n var ajaxUrl = $(this).data(\"url\"); // Set product name in modal title\n\n $(\"#product-name-title\").text(productName); // Initialize or reload DataTable inside modal\n\n $(\"#dealer-stock-table\").DataTable({\n destroy: true,\n processing: true,\n serverSide: true,\n ajax: {\n url: ajaxUrl,\n data: {\n product_id: productId\n }\n },\n columns: [{\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true,\n searchable: true\n }, {\n data: \"quantity\",\n name: \"quantity\",\n orderable: true,\n searchable: false\n }],\n initComplete: function initComplete() {\n $(\"#dealerStockModal\").modal(\"show\");\n }\n });\n});\n$(document).on(\"click\", \"#dealerStockModal .close\", function () {\n $(\"#dealerStockModal\").modal(\"hide\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyIkIiwiYWpheFNldHVwIiwiaGVhZGVycyIsImF0dHIiLCJpbml0aWFsaXplRGF0YVRhYmxlIiwiY29uc29sZSIsImxvZyIsImZuIiwiRGF0YVRhYmxlIiwianF1ZXJ5IiwiZXJyb3IiLCJzZXRUaW1lb3V0IiwidGFibGVDb250YWluZXIiLCJ1cmwiLCJkYXRhIiwidGFibGUiLCJwcm9jZXNzaW5nIiwic2VydmVyU2lkZSIsImFqYXgiLCJ4aHIiLCJ0aHJvd24iLCJyZXNwb25zZVRleHQiLCJvcmRlciIsImNvbHVtbnMiLCJuYW1lIiwib3JkZXJhYmxlIiwic2VhcmNoYWJsZSIsImNvbHVtbkRlZnMiLCJ0YXJnZXRzIiwiaW5pdENvbXBsZXRlIiwic2V0dGluZ3MiLCJqc29uIiwiYW9Db2x1bW5zIiwibWFwIiwiY29sIiwiaW5kZXgiLCJiU29ydGFibGUiLCJzTmFtZSIsIm1EYXRhIiwiZHJhd0NhbGxiYWNrIiwiaGVhZGVyQ2FsbGJhY2siLCJ0aGVhZCIsInN0YXJ0IiwiZW5kIiwiZGlzcGxheSIsImRyYXciLCJlIiwiZG9jdW1lbnQiLCJyZWFkeSIsIm9uIiwiU3dhbCIsImZpcmUiLCJ0aXRsZSIsInRleHQiLCJzaG93Q2FuY2VsQnV0dG9uIiwiY29uZmlybUJ1dHRvbkNvbG9yIiwiY2FuY2VsQnV0dG9uQ29sb3IiLCJjb25maXJtQnV0dG9uVGV4dCIsInRoZW4iLCJyZXN1bHQiLCJ2YWx1ZSIsIm1ldGhvZCIsIl9tZXRob2QiLCJfdG9rZW4iLCJzdWNjZXNzIiwicmVsb2FkIiwiYnV0dG9uIiwicmVzcG9uc2UiLCJtZXNzYWdlIiwicHJvZHVjdElkIiwicHJvZHVjdE5hbWUiLCJhamF4VXJsIiwiZGVzdHJveSIsInByb2R1Y3RfaWQiLCJtb2RhbCJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvcHJvZHVjdHMvaW5kZXguanM/ZmNkNiJdLCJzb3VyY2VzQ29udGVudCI6WyIkLmFqYXhTZXR1cCh7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcIlgtQ1NSRi1UT0tFTlwiOiAkKCdtZXRhW25hbWU9XCJjc3JmLXRva2VuXCJdJykuYXR0cihcImNvbnRlbnRcIiksXG4gICAgfSxcbn0pO1xuXG4vLyBXYWl0IGZvciBEYXRhVGFibGVzIHRvIGJlIGF2YWlsYWJsZVxuZnVuY3Rpb24gaW5pdGlhbGl6ZURhdGFUYWJsZSgpIHtcbiAgICAvLyBEZWJ1ZzogQ2hlY2sgaWYgRGF0YVRhYmxlcyBpcyBsb2FkZWRcbiAgICBjb25zb2xlLmxvZyhcIkRhdGFUYWJsZXMgYXZhaWxhYmxlOlwiLCB0eXBlb2YgJC5mbi5EYXRhVGFibGUgIT09IFwidW5kZWZpbmVkXCIpO1xuICAgIGNvbnNvbGUubG9nKFwialF1ZXJ5IHZlcnNpb246XCIsICQuZm4uanF1ZXJ5KTtcblxuICAgIGlmICh0eXBlb2YgJC5mbi5EYXRhVGFibGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkRhdGFUYWJsZXMgaXMgbm90IGxvYWRlZCEgUmV0cnlpbmcgaW4gMSBzZWNvbmQuLi5cIik7XG4gICAgICAgIHNldFRpbWVvdXQoaW5pdGlhbGl6ZURhdGFUYWJsZSwgMTAwMCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdGFibGVDb250YWluZXIgPSAkKFwiI3Byb2R1Y3RzLXRhYmxlXCIpO1xuICAgIGxldCB1cmwgPSB0YWJsZUNvbnRhaW5lci5kYXRhKFwidXJsXCIpO1xuXG4gICAgY29uc29sZS5sb2coXCJUYWJsZSBVUkw6XCIsIHVybCk7XG4gICAgY29uc29sZS5sb2coXCJJbml0aWFsaXppbmcgRGF0YVRhYmxlLi4uXCIpO1xuXG4gICAgbGV0IHRhYmxlID0gJChcIiNwcm9kdWN0cy10YWJsZVwiKS5EYXRhVGFibGUoe1xuICAgICAgICBwcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgICBzZXJ2ZXJTaWRlOiB0cnVlLFxuICAgICAgICBhamF4OiB7XG4gICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoeGhyLCBlcnJvciwgdGhyb3duKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkRhdGFUYWJsZXMgQWpheCBFcnJvcjpcIiwgZXJyb3IsIHRocm93bik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlJlc3BvbnNlOlwiLCB4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG9yZGVyOiBbWzAsIFwiYXNjXCJdXSwgLy8gT3JkZXIgYnkgZmlyc3QgY29sdW1uIChjb2RlKSBhc2NlbmRpbmdcbiAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJjYXRlZ29yeV9uYW1lXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJjYXRlZ29yeS5uYW1lXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwidW5pdFwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwidW5pdFwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcInRvdGFsX3N0b2NrXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJ0b3RhbF9zdG9ja1wiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgY29sdW1uRGVmczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldHM6IFs0LCA1XSwgLy8gdG90YWxfc3RvY2sgYW5kIGFjdGlvbiBjb2x1bW5zXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGluaXRDb21wbGV0ZTogZnVuY3Rpb24gKHNldHRpbmdzLCBqc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFUYWJsZXMgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTZXR0aW5nczpcIiwgc2V0dGluZ3MpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgXCJDb2x1bW4gb3JkZXJpbmcgZW5hYmxlZCBmb3I6XCIsXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MuYW9Db2x1bW5zLm1hcCgoY29sLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcmFibGU6IGNvbC5iU29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbC5zTmFtZSB8fCBjb2wubURhdGEsXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBkcmF3Q2FsbGJhY2s6IGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJEYXRhVGFibGVzIGRyYXcgY29tcGxldGVkXCIpO1xuICAgICAgICB9LFxuICAgICAgICBoZWFkZXJDYWxsYmFjazogZnVuY3Rpb24gKHRoZWFkLCBkYXRhLCBzdGFydCwgZW5kLCBkaXNwbGF5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkhlYWRlciBjYWxsYmFjayAtIHNvcnRpbmcgaWNvbnMgc2hvdWxkIGJlIHZpc2libGVcIik7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBEZWJ1ZzogTG9nIHRhYmxlIGluc3RhbmNlXG4gICAgY29uc29sZS5sb2coXCJEYXRhVGFibGUgaW5zdGFuY2U6XCIsIHRhYmxlKTtcblxuICAgIC8vIFRlc3QgY29sdW1uIG9yZGVyaW5nIHByb2dyYW1tYXRpY2FsbHlcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJUZXN0aW5nIGNvbHVtbiBvcmRlcmluZy4uLlwiKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRhYmxlLm9yZGVyKFsxLCBcImRlc2NcIl0pLmRyYXcoKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ29sdW1uIG9yZGVyaW5nIHRlc3Qgc3VjY2Vzc2Z1bFwiKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNvbHVtbiBvcmRlcmluZyB0ZXN0IGZhaWxlZDpcIiwgZSk7XG4gICAgICAgIH1cbiAgICB9LCAyMDAwKTtcbn1cblxuLy8gSW5pdGlhbGl6ZSB3aGVuIGRvY3VtZW50IGlzIHJlYWR5XG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coXCJEb2N1bWVudCByZWFkeSwgY2hlY2tpbmcgZm9yIERhdGFUYWJsZXMuLi5cIik7XG4gICAgaW5pdGlhbGl6ZURhdGFUYWJsZSgpO1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIuYnRuLWRlc3Ryb3ktcHJvZHVjdFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6IFwiSGFwdXMgcHJvZHVrP1wiLFxuICAgICAgICB0ZXh0OiBcIkFuZGEgdGlkYWsgYWthbiBiaXNhIG1lbmdlbWJhbGlrYW5ueWEhXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjZDMzXCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiNkZWRlZGVcIixcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiSGFwdXNcIixcbiAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gJCh0aGlzKS5kYXRhKFwiYWN0aW9uXCIpO1xuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgX21ldGhvZDogXCJERUxFVEVcIixcbiAgICAgICAgICAgICAgICAgICAgX3Rva2VuOiAkKCdtZXRhW25hbWU9XCJjc3JmLXRva2VuXCJdJykuYXR0cihcImNvbnRlbnRcIiksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIFN3YWwuZmlyZShcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQmVyaGFzaWwhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb2R1ayBiZXJoYXNpbCBkaWhhcHVzLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNwcm9kdWN0cy10YWJsZVwiKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIpIHtcbiAgICAgICAgICAgICAgICAgICAgU3dhbC5maXJlKFwiRXJyb3IhXCIsIFwiR2FnYWwgbWVuZ2hhcHVzIHByb2R1ay5cIiwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcih4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuXG4kKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIFwiLmJ0bi10b2dnbGUtYWN0aXZlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgYnV0dG9uID0gJCh0aGlzKTtcbiAgICBsZXQgdXJsID0gYnV0dG9uLmRhdGEoXCJ1cmxcIik7XG5cbiAgICBTd2FsLmZpcmUoe1xuICAgICAgICB0aXRsZTogXCJTdGF0dXMgcHJvZHVrP1wiLFxuICAgICAgICB0ZXh0OiBcIkFuZGEgeWFraW4gaW5naW4gbWVuZ2dhbnRpIHN0YXR1cyBwcm9kdWshXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjZDMzXCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiNkZWRlZGVcIixcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiWWFcIixcbiAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgX3Rva2VuOiAkKCdtZXRhW25hbWU9XCJjc3JmLXRva2VuXCJdJykuYXR0cihcImNvbnRlbnRcIiksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjcHJvZHVjdHMtdGFibGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuRGF0YVRhYmxlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWpheC5yZWxvYWQobnVsbCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgU3dhbC5maXJlKFwiQmVyaGFzaWwhXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwic3VjY2Vzc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgU3dhbC5maXJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJFcnJvciFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiR2FnYWwgbWVuZ3ViYWggc3RhdHVzIHByb2R1ay5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIuYnRuLXByb2R1Y3Qtc3RvY2stZGVhbGVyc1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcHJvZHVjdElkID0gJCh0aGlzKS5kYXRhKFwiaWRcIik7XG4gICAgY29uc3QgcHJvZHVjdE5hbWUgPSAkKHRoaXMpLmRhdGEoXCJuYW1lXCIpO1xuICAgIGNvbnN0IGFqYXhVcmwgPSAkKHRoaXMpLmRhdGEoXCJ1cmxcIik7XG5cbiAgICAvLyBTZXQgcHJvZHVjdCBuYW1lIGluIG1vZGFsIHRpdGxlXG4gICAgJChcIiNwcm9kdWN0LW5hbWUtdGl0bGVcIikudGV4dChwcm9kdWN0TmFtZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIG9yIHJlbG9hZCBEYXRhVGFibGUgaW5zaWRlIG1vZGFsXG4gICAgJChcIiNkZWFsZXItc3RvY2stdGFibGVcIikuRGF0YVRhYmxlKHtcbiAgICAgICAgZGVzdHJveTogdHJ1ZSxcbiAgICAgICAgcHJvY2Vzc2luZzogdHJ1ZSxcbiAgICAgICAgc2VydmVyU2lkZTogdHJ1ZSxcbiAgICAgICAgYWpheDoge1xuICAgICAgICAgICAgdXJsOiBhamF4VXJsLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHByb2R1Y3RfaWQ6IHByb2R1Y3RJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImRlYWxlcl9uYW1lXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJkZWFsZXJfbmFtZVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcInF1YW50aXR5XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJxdWFudGl0eVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGluaXRDb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJChcIiNkZWFsZXJTdG9ja01vZGFsXCIpLm1vZGFsKFwic2hvd1wiKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn0pO1xuXG4kKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIFwiI2RlYWxlclN0b2NrTW9kYWwgLmNsb3NlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAkKFwiI2RlYWxlclN0b2NrTW9kYWxcIikubW9kYWwoXCJoaWRlXCIpO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBQSxDQUFDLENBQUNDLFNBQUYsQ0FBWTtFQUNSQyxPQUFPLEVBQUU7SUFDTCxnQkFBZ0JGLENBQUMsQ0FBQyx5QkFBRCxDQUFELENBQTZCRyxJQUE3QixDQUFrQyxTQUFsQztFQURYO0FBREQsQ0FBWixFLENBTUE7O0FBQ0EsU0FBU0MsbUJBQVQsR0FBK0I7RUFDM0I7RUFDQUMsT0FBTyxDQUFDQyxHQUFSLENBQVksdUJBQVosRUFBcUMsT0FBT04sQ0FBQyxDQUFDTyxFQUFGLENBQUtDLFNBQVosS0FBMEIsV0FBL0Q7RUFDQUgsT0FBTyxDQUFDQyxHQUFSLENBQVksaUJBQVosRUFBK0JOLENBQUMsQ0FBQ08sRUFBRixDQUFLRSxNQUFwQzs7RUFFQSxJQUFJLE9BQU9ULENBQUMsQ0FBQ08sRUFBRixDQUFLQyxTQUFaLEtBQTBCLFdBQTlCLEVBQTJDO0lBQ3ZDSCxPQUFPLENBQUNLLEtBQVIsQ0FBYyxtREFBZDtJQUNBQyxVQUFVLENBQUNQLG1CQUFELEVBQXNCLElB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LElBQVIsQ0FBYSxLQUFiLENBQWhCLENBSDhELENBSzlEOztFQUNBZCxDQUFDLENBQUMscUJBQUQsQ0FBRCxDQUF5QnFELElBQXpCLENBQThCaUIsV0FBOUIsRUFOOEQsQ0FROUQ7O0VBQ0F0RSxDQUFDLENBQUMscUJBQUQsQ0FBRCxDQUF5QlEsU0FBekIsQ0FBbUM7SUFDL0JnRSxPQUFPLEVBQUUsSUFEc0I7SUFFL0J4RCxVQUFVLEVBQUUsSUFGbUI7SUFHL0JDLFVBQVUsRUFBRSxJQUhtQjtJQUkvQkMsSUFBSSxFQUFFO01BQ0ZMLEdBQUcsRUFBRTBELE9BREg7TUFFRnpELElBQUksRUFBRTtRQUNGMkQsVUFBVSxFQUFFSjtNQURWO0lBRkosQ0FKeUI7SUFVL0I5QyxPQUFPLEVBQUUsQ0FDTDtNQUNJVCxJQUFJLEVBQUUsYUFEVjtNQUVJVSxJQUFJLEVBQUUsYUFGVjtNQUdJQyxTQUFTLEVBQUUsSUFIZjtNQUlJQyxVQUFVLEVBQUU7SUFKaEIsQ0FESyxFQU9MO01BQ0laLElBQUksRUFBRSxVQURWO01BRUlVLElBQUksRUFBRSxVQUZWO01BR0lDLFNBQVMsRUFBRSxJQUhmO01BSUlDLFVBQVUsRUFBRTtJQUpoQixDQVBLLENBVnNCO0lBd0IvQkcsWUFBWSxFQUFFLHdCQUFZO01BQ3RCN0IsQ0FBQyxDQUFDLG1CQUFELENBQUQsQ0FBdUIwRSxLQUF2QixDQUE2QixNQUE3QjtJQUNIO0VBMUI4QixDQUFuQztBQTRCSCxDQXJDRDtBQXVDQTFFLENBQUMsQ0FBQytDLFFBQUQsQ0FBRCxDQUFZRSxFQUFaLENBQWUsT0FBZixFQUF3QiwwQkFBeEIsRUFBb0QsWUFBWTtFQUM1RGpELENBQUMsQ0FBQyxtQkFBRCxDQUFELENBQXVCMEUsS0FBdkIsQ0FBNkIsTUFBN0I7QUFDSCxDQUZEIiwiZmlsZSI6Ii4vcmVzb3VyY2VzL2pzL3dhcmVob3VzZV9tYW5hZ2VtZW50L3Byb2R1Y3RzL2luZGV4LmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/warehouse_management/products/index.js\n");
+eval("$(document).ready(function () {\n console.log(\"Products index.js loaded\"); // Check if DataTables is available\n\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables not available!\");\n return;\n } // Wait for DOM to be fully ready\n\n\n setTimeout(function () {\n initializeDataTable();\n }, 100);\n});\n\nfunction initializeDataTable() {\n console.log(\"Initializing DataTable...\"); // Destroy existing table if any\n\n if ($.fn.DataTable.isDataTable(\"#products-table\")) {\n $(\"#products-table\").DataTable().destroy();\n } // Initialize DataTable\n\n\n var table = $(\"#products-table\").DataTable({\n processing: true,\n serverSide: true,\n destroy: true,\n ajax: {\n url: $(\"#products-table\").data(\"url\"),\n type: \"GET\",\n data: function data(d) {\n console.log(\"DataTables request data:\", d);\n return d;\n },\n error: function error(xhr, _error, code) {\n console.error(\"DataTables AJAX error:\", _error, code);\n console.error(\"Response:\", xhr.responseText);\n }\n },\n columns: [{\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false\n }, {\n data: \"code\",\n name: \"code\",\n orderable: true\n }, {\n data: \"name\",\n name: \"name\",\n orderable: true\n }, {\n data: \"category_name\",\n name: \"category_name\",\n orderable: true\n }, {\n data: \"unit\",\n name: \"unit\",\n orderable: true\n }, {\n data: \"total_stock\",\n name: \"total_stock\",\n orderable: false\n }, {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false\n }],\n order: [[1, \"asc\"]],\n // Order by code asc\n pageLength: 10,\n responsive: true,\n ordering: true,\n orderMulti: false\n });\n}\n\n$(document).on(\"click\", \".btn-destroy-product\", function () {\n var _this = this;\n\n Swal.fire({\n title: \"Hapus produk?\",\n text: \"Anda tidak akan bisa mengembalikannya!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Hapus\"\n }).then(function (result) {\n if (result.value) {\n var url = $(_this).data(\"action\");\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _method: \"DELETE\",\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\")\n },\n success: function success() {\n Swal.fire(\"Berhasil!\", \"Produk berhasil dihapus.\", \"success\");\n\n try {\n if ($.fn.DataTable.isDataTable(\"#products-table\")) {\n $(\"#products-table\").DataTable().ajax.reload();\n }\n } catch (e) {\n console.error(\"Error reloading table:\", e);\n location.reload(); // Fallback to page reload\n }\n },\n error: function error(xhr) {\n Swal.fire(\"Error!\", \"Gagal menghapus produk.\", \"error\");\n console.error(xhr.responseText);\n }\n });\n }\n });\n});\n$(document).on(\"click\", \".btn-toggle-active\", function () {\n var button = $(this);\n var url = button.data(\"url\");\n Swal.fire({\n title: \"Status produk?\",\n text: \"Anda yakin ingin mengganti status produk!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Ya\"\n }).then(function (result) {\n if (result.value) {\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\")\n },\n success: function success(response) {\n if (response.success) {\n try {\n if ($.fn.DataTable.isDataTable(\"#products-table\")) {\n $(\"#products-table\").DataTable().ajax.reload(null, false);\n }\n } catch (e) {\n console.error(\"Error reloading table:\", e);\n location.reload(); // Fallback to page reload\n }\n\n Swal.fire(\"Berhasil!\", response.message, \"success\");\n }\n },\n error: function error() {\n Swal.fire(\"Error!\", \"Gagal mengubah status produk.\", \"error\");\n }\n });\n }\n });\n});\n$(document).on(\"click\", \".btn-product-stock-dealers\", function () {\n var productId = $(this).data(\"id\");\n var productName = $(this).data(\"name\");\n var ajaxUrl = $(this).data(\"url\"); // Check if modal elements exist\n\n if ($(\"#product-name-title\").length === 0) {\n console.error(\"Modal title element not found\");\n return;\n }\n\n if ($(\"#dealer-stock-table\").length === 0) {\n console.error(\"Dealer stock table element not found\");\n return;\n } // Set product name in modal title\n\n\n $(\"#product-name-title\").text(productName); // Destroy existing DataTable if any\n\n if ($.fn.DataTable.isDataTable(\"#dealer-stock-table\")) {\n $(\"#dealer-stock-table\").DataTable().destroy();\n } // Initialize or reload DataTable inside modal\n\n\n $(\"#dealer-stock-table\").DataTable({\n destroy: true,\n processing: true,\n serverSide: true,\n ajax: {\n url: ajaxUrl,\n data: {\n product_id: productId\n },\n error: function error(xhr, _error2, thrown) {\n console.error(\"Dealer stock DataTables Ajax Error:\", _error2, thrown);\n console.error(\"Response:\", xhr.responseText);\n }\n },\n columns: [{\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true,\n searchable: true\n }, {\n data: \"quantity\",\n name: \"quantity\",\n orderable: true,\n searchable: false\n }],\n initComplete: function initComplete() {\n try {\n if ($(\"#dealerStockModal\").length > 0) {\n $(\"#dealerStockModal\").modal(\"show\");\n } else {\n console.error(\"Modal #dealerStockModal not found\");\n }\n } catch (e) {\n console.error(\"Error showing modal:\", e);\n }\n }\n });\n});\n$(document).on(\"click\", \"#dealerStockModal .close\", function () {\n $(\"#dealerStockModal\").modal(\"hide\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvcHJvZHVjdHMvaW5kZXguanMiLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImNvbnNvbGUiLCJsb2ciLCJmbiIsIkRhdGFUYWJsZSIsImVycm9yIiwic2V0VGltZW91dCIsImluaXRpYWxpemVEYXRhVGFibGUiLCJpc0RhdGFUYWJsZSIsImRlc3Ryb3kiLCJ0YWJsZSIsInByb2Nlc3NpbmciLCJzZXJ2ZXJTaWRlIiwiYWpheCIsInVybCIsImRhdGEiLCJ0eXBlIiwiZCIsInhociIsImNvZGUiLCJyZXNwb25zZVRleHQiLCJjb2x1bW5zIiwibmFtZSIsIm9yZGVyYWJsZSIsInNlYXJjaGFibGUiLCJvcmRlciIsInBhZ2VMZW5ndGgiLCJyZXNwb25zaXZlIiwib3JkZXJpbmciLCJvcmRlck11bHRpIiwib24iLCJTd2FsIiwiZmlyZSIsInRpdGxlIiwidGV4dCIsInNob3dDYW5jZWxCdXR0b24iLCJjb25maXJtQnV0dG9uQ29sb3IiLCJjYW5jZWxCdXR0b25Db2xvciIsImNvbmZpcm1CdXR0b25UZXh0IiwidGhlbiIsInJlc3VsdCIsInZhbHVlIiwibWV0aG9kIiwiX21ldGhvZCIsIl90b2tlbiIsImF0dHIiLCJzdWNjZXNzIiwicmVsb2FkIiwiZSIsImxvY2F0aW9uIiwiYnV0dG9uIiwicmVzcG9uc2UiLCJtZXNzYWdlIiwicHJvZHVjdElkIiwicHJvZHVjdE5hbWUiLCJhamF4VXJsIiwibGVuZ3RoIiwicHJvZHVjdF9pZCIsInRocm93biIsImluaXRDb21wbGV0ZSIsIm1vZGFsIl0sInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvcHJvZHVjdHMvaW5kZXguanM/ZmNkNiJdLCJzb3VyY2VzQ29udGVudCI6WyIkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coXCJQcm9kdWN0cyBpbmRleC5qcyBsb2FkZWRcIik7XG5cbiAgICAvLyBDaGVjayBpZiBEYXRhVGFibGVzIGlzIGF2YWlsYWJsZVxuICAgIGlmICh0eXBlb2YgJC5mbi5EYXRhVGFibGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkRhdGFUYWJsZXMgbm90IGF2YWlsYWJsZSFcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciBET00gdG8gYmUgZnVsbHkgcmVhZHlcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5pdGlhbGl6ZURhdGFUYWJsZSgpO1xuICAgIH0sIDEwMCk7XG59KTtcblxuZnVuY3Rpb24gaW5pdGlhbGl6ZURhdGFUYWJsZSgpIHtcbiAgICBjb25zb2xlLmxvZyhcIkluaXRpYWxpemluZyBEYXRhVGFibGUuLi5cIik7XG5cbiAgICAvLyBEZXN0cm95IGV4aXN0aW5nIHRhYmxlIGlmIGFueVxuICAgIGlmICgkLmZuLkRhdGFUYWJsZS5pc0RhdGFUYWJsZShcIiNwcm9kdWN0cy10YWJsZVwiKSkge1xuICAgICAgICAkKFwiI3Byb2R1Y3RzLXRhYmxlXCIpLkRhdGFUYWJsZSgpLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIERhdGFUYWJsZVxuICAgIHZhciB0YWJsZSA9ICQoXCIjcHJvZHVjdHMtdGFibGVcIikuRGF0YVRhYmxlKHtcbiAgICAgICAgcHJvY2Vzc2luZzogdHJ1ZSxcbiAgICAgICAgc2VydmVyU2lkZTogdHJ1ZSxcbiAgICAgICAgZGVzdHJveTogdHJ1ZSxcbiAgICAgICAgYWpheDoge1xuICAgICAgICAgICAgdXJsOiAkKFwiI3Byb2R1Y3RzLXRhYmxlXCIpLmRhdGEoXCJ1cmxcIiksXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxuICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFUYWJsZXMgcmVxdWVzdCBkYXRhOlwiLCBkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhociwgZXJyb3IsIGNvZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRGF0YVRhYmxlcyBBSkFYIGVycm9yOlwiLCBlcnJvciwgY29kZSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlJlc3BvbnNlOlwiLCB4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcIkRUX1Jvd0luZGV4XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJEVF9Sb3dJbmRleFwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImNhdGVnb3J5X25hbWVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNhdGVnb3J5X25hbWVcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwidW5pdFwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwidW5pdFwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJ0b3RhbF9zdG9ja1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwidG90YWxfc3RvY2tcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImFjdGlvblwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG9yZGVyOiBbWzEsIFwiYXNjXCJdXSwgLy8gT3JkZXIgYnkgY29kZSBhc2NcbiAgICAgICAgcGFnZUxlbmd0aDogMTAsXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG9yZGVyaW5nOiB0cnVlLFxuICAgICAgICBvcmRlck11bHRpOiBmYWxzZSxcbiAgICB9KTtcbn1cblxuJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBcIi5idG4tZGVzdHJveS1wcm9kdWN0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICBTd2FsLmZpcmUoe1xuICAgICAgICB0aXRsZTogXCJIYXB1cyBwcm9kdWs/XCIsXG4gICAgICAgIHRleHQ6IFwiQW5kYSB0aWRhayBha2FuIGJpc2EgbWVuZ2VtYmFsaWthbm55YSFcIixcbiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6IFwiI2RlZGVkZVwiLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJIYXB1c1wiLFxuICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSAkKHRoaXMpLmRhdGEoXCJhY3Rpb25cIik7XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBfbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgICAgICAgICAgICAgICAgICBfdG9rZW46ICQoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKS5hdHRyKFwiY29udGVudFwiKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgU3dhbC5maXJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJCZXJoYXNpbCFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvZHVrIGJlcmhhc2lsIGRpaGFwdXMuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQuZm4uRGF0YVRhYmxlLmlzRGF0YVRhYmxlKFwiI3Byb2R1Y3RzLXRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNwcm9kdWN0cy10YWJsZVwiKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVsb2FkaW5nIHRhYmxlOlwiLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOyAvLyBGYWxsYmFjayB0byBwYWdlIHJlbG9hZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhocikge1xuICAgICAgICAgICAgICAgICAgICBTd2FsLmZpcmUoXCJFcnJvciFcIiwgXCJHYWdhbCBtZW5naGFwdXMgcHJvZHVrLlwiLCBcImVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIuYnRuLXRvZ2dsZS1hY3RpdmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBidXR0b24gPSAkKHRoaXMpO1xuICAgIGxldCB1cmwgPSBidXR0b24uZGF0YShcInVybFwiKTtcblxuICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHRpdGxlOiBcIlN0YXR1cyBwcm9kdWs/XCIsXG4gICAgICAgIHRleHQ6IFwiQW5kYSB5YWtpbiBpbmdpbiBtZW5nZ2FudGkgc3RhdHVzIHByb2R1ayFcIixcbiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6IFwiI2RlZGVkZVwiLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJZYVwiLFxuICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBfdG9rZW46ICQoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKS5hdHRyKFwiY29udGVudFwiKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC5mbi5EYXRhVGFibGUuaXNEYXRhVGFibGUoXCIjcHJvZHVjdHMtdGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNwcm9kdWN0cy10YWJsZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkRhdGFUYWJsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWpheC5yZWxvYWQobnVsbCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVsb2FkaW5nIHRhYmxlOlwiLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsgLy8gRmFsbGJhY2sgdG8gcGFnZSByZWxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN3YWwuZmlyZShcIkJlcmhhc2lsIVwiLCByZXNwb25zZS5tZXNzYWdlLCBcInN1Y2Nlc3NcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIFN3YWwuZmlyZShcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkdhZ2FsIG1lbmd1YmFoIHN0YXR1cyBwcm9kdWsuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuXG4kKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIFwiLmJ0bi1wcm9kdWN0LXN0b2NrLWRlYWxlcnNcIiwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHByb2R1Y3RJZCA9ICQodGhpcykuZGF0YShcImlkXCIpO1xuICAgIGNvbnN0IHByb2R1Y3ROYW1lID0gJCh0aGlzKS5kYXRhKFwibmFtZVwiKTtcbiAgICBjb25zdCBhamF4VXJsID0gJCh0aGlzKS5kYXRhKFwidXJsXCIpO1xuXG4gICAgLy8gQ2hlY2sgaWYgbW9kYWwgZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoJChcIiNwcm9kdWN0LW5hbWUtdGl0bGVcIikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJNb2RhbCB0aXRsZSBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgkKFwiI2RlYWxlci1zdG9jay10YWJsZVwiKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkRlYWxlciBzdG9jayB0YWJsZSBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCBwcm9kdWN0IG5hbWUgaW4gbW9kYWwgdGl0bGVcbiAgICAkKFwiI3Byb2R1Y3QtbmFtZS10aXRsZVwiKS50ZXh0KHByb2R1Y3ROYW1lKTtcblxuICAgIC8vIERlc3Ryb3kgZXhpc3RpbmcgRGF0YVRhYmxlIGlmIGFueVxuICAgIGlmICgkLmZuLkRhdGFUYWJsZS5pc0RhdGFUYWJsZShcIiNkZWFsZXItc3RvY2stdGFibGVcIikpIHtcbiAgICAgICAgJChcIiNkZWFsZXItc3RvY2stdGFibGVcIikuRGF0YVRhYmxlKCkuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgb3IgcmVsb2FkIERhdGFUYWJsZSBpbnNpZGUgbW9kYWxcbiAgICAkKFwiI2RlYWxlci1zdG9jay10YWJsZVwiKS5EYXRhVGFibGUoe1xuICAgICAgICBkZXN0cm95OiB0cnVlLFxuICAgICAgICBwcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgICBzZXJ2ZXJTaWRlOiB0cnVlLFxuICAgICAgICBhamF4OiB7XG4gICAgICAgICAgICB1cmw6IGFqYXhVcmwsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogcHJvZHVjdElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoeGhyLCBlcnJvciwgdGhyb3duKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJEZWFsZXIgc3RvY2sgRGF0YVRhYmxlcyBBamF4IEVycm9yOlwiLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgdGhyb3duXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUmVzcG9uc2U6XCIsIHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiZGVhbGVyX25hbWVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlYWxlcl9uYW1lXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwicXVhbnRpdHlcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInF1YW50aXR5XCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5pdENvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICgkKFwiI2RlYWxlclN0b2NrTW9kYWxcIikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI2RlYWxlclN0b2NrTW9kYWxcIikubW9kYWwoXCJzaG93XCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJNb2RhbCAjZGVhbGVyU3RvY2tNb2RhbCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBzaG93aW5nIG1vZGFsOlwiLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcbn0pO1xuXG4kKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIFwiI2RlYWxlclN0b2NrTW9kYWwgLmNsb3NlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAkKFwiI2RlYWxlclN0b2NrTW9kYWxcIikubW9kYWwoXCJoaWRlXCIpO1xufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBQSxDQUFD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\n//# sourceURL=webpack-internal:///./resources/js/warehouse_management/products/index.js\n");
/***/ })
diff --git a/public/js/warehouse_management/products/index.js.map b/public/js/warehouse_management/products/index.js.map
index 704482e..b1dc79c 100755
--- a/public/js/warehouse_management/products/index.js.map
+++ b/public/js/warehouse_management/products/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"/js/warehouse_management/products/index.js","mappings":"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","sources":["webpack:///./resources/js/warehouse_management/products/index.js"],"sourcesContent":["$.ajaxSetup({\n headers: {\n \"X-CSRF-TOKEN\": $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n});\n\n// Wait for DataTables to be available\nfunction initializeDataTable() {\n // Debug: Check if DataTables is loaded\n console.log(\"DataTables available:\", typeof $.fn.DataTable !== \"undefined\");\n console.log(\"jQuery version:\", $.fn.jquery);\n\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables is not loaded! Retrying in 1 second...\");\n setTimeout(initializeDataTable, 1000);\n return;\n }\n\n let tableContainer = $(\"#products-table\");\n let url = tableContainer.data(\"url\");\n\n console.log(\"Table URL:\", url);\n console.log(\"Initializing DataTable...\");\n\n let table = $(\"#products-table\").DataTable({\n processing: true,\n serverSide: true,\n ajax: {\n url: url,\n error: function (xhr, error, thrown) {\n console.error(\"DataTables Ajax Error:\", error, thrown);\n console.error(\"Response:\", xhr.responseText);\n },\n },\n order: [[0, \"asc\"]], // Order by first column (code) ascending\n columns: [\n {\n data: \"code\",\n name: \"code\",\n orderable: true,\n searchable: true,\n },\n {\n data: \"name\",\n name: \"name\",\n orderable: true,\n searchable: true,\n },\n {\n data: \"category_name\",\n name: \"category.name\",\n orderable: true,\n searchable: true,\n },\n {\n data: \"unit\",\n name: \"unit\",\n orderable: true,\n searchable: true,\n },\n {\n data: \"total_stock\",\n name: \"total_stock\",\n orderable: false,\n searchable: false,\n },\n {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n },\n ],\n columnDefs: [\n {\n targets: [4, 5], // total_stock and action columns\n orderable: false,\n },\n ],\n initComplete: function (settings, json) {\n console.log(\"DataTables initialized successfully\");\n console.log(\"Settings:\", settings);\n console.log(\n \"Column ordering enabled for:\",\n settings.aoColumns.map((col, index) => ({\n index: index,\n orderable: col.bSortable,\n name: col.sName || col.mData,\n }))\n );\n },\n drawCallback: function (settings) {\n console.log(\"DataTables draw completed\");\n },\n headerCallback: function (thead, data, start, end, display) {\n console.log(\"Header callback - sorting icons should be visible\");\n },\n });\n\n // Debug: Log table instance\n console.log(\"DataTable instance:\", table);\n\n // Test column ordering programmatically\n setTimeout(function () {\n console.log(\"Testing column ordering...\");\n try {\n table.order([1, \"desc\"]).draw();\n console.log(\"Column ordering test successful\");\n } catch (e) {\n console.error(\"Column ordering test failed:\", e);\n }\n }, 2000);\n}\n\n// Initialize when document is ready\n$(document).ready(function () {\n console.log(\"Document ready, checking for DataTables...\");\n initializeDataTable();\n});\n\n$(document).on(\"click\", \".btn-destroy-product\", function () {\n Swal.fire({\n title: \"Hapus produk?\",\n text: \"Anda tidak akan bisa mengembalikannya!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Hapus\",\n }).then((result) => {\n if (result.value) {\n const url = $(this).data(\"action\");\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _method: \"DELETE\",\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n success: function () {\n Swal.fire(\n \"Berhasil!\",\n \"Produk berhasil dihapus.\",\n \"success\"\n );\n $(\"#products-table\").DataTable().ajax.reload();\n },\n error: function (xhr) {\n Swal.fire(\"Error!\", \"Gagal menghapus produk.\", \"error\");\n console.error(xhr.responseText);\n },\n });\n }\n });\n});\n\n$(document).on(\"click\", \".btn-toggle-active\", function () {\n let button = $(this);\n let url = button.data(\"url\");\n\n Swal.fire({\n title: \"Status produk?\",\n text: \"Anda yakin ingin mengganti status produk!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Ya\",\n }).then((result) => {\n if (result.value) {\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n success: function (response) {\n if (response.success) {\n $(\"#products-table\")\n .DataTable()\n .ajax.reload(null, false);\n Swal.fire(\"Berhasil!\", response.message, \"success\");\n }\n },\n error: function () {\n Swal.fire(\n \"Error!\",\n \"Gagal mengubah status produk.\",\n \"error\"\n );\n },\n });\n }\n });\n});\n\n$(document).on(\"click\", \".btn-product-stock-dealers\", function () {\n const productId = $(this).data(\"id\");\n const productName = $(this).data(\"name\");\n const ajaxUrl = $(this).data(\"url\");\n\n // Set product name in modal title\n $(\"#product-name-title\").text(productName);\n\n // Initialize or reload DataTable inside modal\n $(\"#dealer-stock-table\").DataTable({\n destroy: true,\n processing: true,\n serverSide: true,\n ajax: {\n url: ajaxUrl,\n data: {\n product_id: productId,\n },\n },\n columns: [\n {\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true,\n searchable: true,\n },\n {\n data: \"quantity\",\n name: \"quantity\",\n orderable: true,\n searchable: false,\n },\n ],\n initComplete: function () {\n $(\"#dealerStockModal\").modal(\"show\");\n },\n });\n});\n\n$(document).on(\"click\", \"#dealerStockModal .close\", function () {\n $(\"#dealerStockModal\").modal(\"hide\");\n});\n"],"names":["initializeDataTable","console","log","$","fn","DataTable","jquery","error","setTimeout","url","data","table","processing","serverSide","ajax","xhr","thrown","responseText","order","columns","name","orderable","searchable","columnDefs","targets","initComplete","settings","json","aoColumns","map","col","index","bSortable","sName","mData","drawCallback","headerCallback","thead","start","end","display","draw","e","ajaxSetup","headers","attr","document","ready","on","Swal","fire","title","text","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","then","result","value","method","_method","_token","success","reload","this","response","message","productId","productName","ajaxUrl","destroy","product_id","modal"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"/js/warehouse_management/products/index.js","mappings":"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","sources":["webpack:///./resources/js/warehouse_management/products/index.js"],"sourcesContent":["$.ajaxSetup({\n headers: {\n \"X-CSRF-TOKEN\": $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n});\n\n// Wait for DataTables to be available\nfunction initializeDataTable() {\n // Debug: Check if DataTables is loaded\n console.log(\"DataTables available:\", typeof $.fn.DataTable !== \"undefined\");\n console.log(\"jQuery version:\", $.fn.jquery);\n\n if (typeof $.fn.DataTable === \"undefined\") {\n console.error(\"DataTables is not loaded! Retrying in 1 second...\");\n setTimeout(initializeDataTable, 1000);\n return;\n }\n\n let tableContainer = $(\"#products-table\");\n\n // Check if table element exists\n if (tableContainer.length === 0) {\n console.error(\n \"Table element #products-table not found! Retrying in 1 second...\"\n );\n return;\n }\n\n let url = tableContainer.data(\"url\");\n\n console.log(\"Table URL:\", url);\n console.log(\"Initializing DataTable...\");\n\n // Destroy existing table if any\n if ($.fn.DataTable.isDataTable(\"#products-table\")) {\n $(\"#products-table\").DataTable().destroy();\n }\n\n let table;\n\n try {\n table = $(\"#products-table\").DataTable({\n processing: true,\n serverSide: true,\n ajax: {\n url: url,\n type: \"GET\",\n data: function (d) {\n console.log(\"DataTables request data:\", d);\n return d;\n },\n error: function (xhr, error, thrown) {\n console.error(\"DataTables Ajax Error:\", error, thrown);\n console.error(\"Response:\", xhr.responseText);\n console.error(\"Status:\", xhr.status);\n },\n success: function (data) {\n console.log(\"DataTables Ajax Success:\", data);\n console.log(\n \"Data count:\",\n data.data ? data.data.length : 0\n );\n console.log(\"Records Total:\", data.recordsTotal);\n console.log(\"Records Filtered:\", data.recordsFiltered);\n console.log(\"Draw:\", data.draw);\n if (data.data && data.data.length > 0) {\n console.log(\"First row sample:\", data.data[0]);\n }\n },\n },\n order: [[0, \"asc\"]], // Order by ID desc (hidden column)\n columns: [\n { data: \"code\", name: \"code\" },\n { data: \"name\", name: \"name\" },\n { data: \"category_name\", name: \"category_name\" },\n { data: \"unit\", name: \"unit\" },\n { data: \"total_stock\", name: \"total_stock\", orderable: false },\n {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n },\n ],\n pageLength: 10,\n responsive: true,\n ordering: true,\n orderMulti: false,\n initComplete: function (settings, json) {\n console.log(\"DataTables initialized successfully\");\n console.log(\"Data received:\", json);\n },\n });\n } catch (e) {\n console.error(\"Error initializing DataTable:\", e);\n return;\n }\n\n // Debug: Log table instance\n console.log(\"DataTable instance:\", table);\n\n // Debug: Log table instance\n console.log(\"DataTable initialized with default order by ID desc\");\n}\n\n// Initialize when document is ready\n$(document).ready(function () {\n console.log(\"Document ready, checking for DataTables...\");\n initializeDataTable();\n});\n\n$(document).on(\"click\", \".btn-destroy-product\", function () {\n Swal.fire({\n title: \"Hapus produk?\",\n text: \"Anda tidak akan bisa mengembalikannya!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Hapus\",\n }).then((result) => {\n if (result.value) {\n const url = $(this).data(\"action\");\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _method: \"DELETE\",\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n success: function () {\n Swal.fire(\n \"Berhasil!\",\n \"Produk berhasil dihapus.\",\n \"success\"\n );\n try {\n if ($.fn.DataTable.isDataTable(\"#products-table\")) {\n $(\"#products-table\").DataTable().ajax.reload();\n }\n } catch (e) {\n console.error(\"Error reloading table:\", e);\n location.reload(); // Fallback to page reload\n }\n },\n error: function (xhr) {\n Swal.fire(\"Error!\", \"Gagal menghapus produk.\", \"error\");\n console.error(xhr.responseText);\n },\n });\n }\n });\n});\n\n$(document).on(\"click\", \".btn-toggle-active\", function () {\n let button = $(this);\n let url = button.data(\"url\");\n\n Swal.fire({\n title: \"Status produk?\",\n text: \"Anda yakin ingin mengganti status produk!\",\n showCancelButton: true,\n confirmButtonColor: \"#d33\",\n cancelButtonColor: \"#dedede\",\n confirmButtonText: \"Ya\",\n }).then((result) => {\n if (result.value) {\n $.ajax({\n url: url,\n method: \"POST\",\n data: {\n _token: $('meta[name=\"csrf-token\"]').attr(\"content\"),\n },\n success: function (response) {\n if (response.success) {\n try {\n if ($.fn.DataTable.isDataTable(\"#products-table\")) {\n $(\"#products-table\")\n .DataTable()\n .ajax.reload(null, false);\n }\n } catch (e) {\n console.error(\"Error reloading table:\", e);\n location.reload(); // Fallback to page reload\n }\n Swal.fire(\"Berhasil!\", response.message, \"success\");\n }\n },\n error: function () {\n Swal.fire(\n \"Error!\",\n \"Gagal mengubah status produk.\",\n \"error\"\n );\n },\n });\n }\n });\n});\n\n$(document).on(\"click\", \".btn-product-stock-dealers\", function () {\n const productId = $(this).data(\"id\");\n const productName = $(this).data(\"name\");\n const ajaxUrl = $(this).data(\"url\");\n\n // Check if modal elements exist\n if ($(\"#product-name-title\").length === 0) {\n console.error(\"Modal title element not found\");\n return;\n }\n\n if ($(\"#dealer-stock-table\").length === 0) {\n console.error(\"Dealer stock table element not found\");\n return;\n }\n\n // Set product name in modal title\n $(\"#product-name-title\").text(productName);\n\n // Destroy existing DataTable if any\n if ($.fn.DataTable.isDataTable(\"#dealer-stock-table\")) {\n $(\"#dealer-stock-table\").DataTable().destroy();\n }\n\n // Initialize or reload DataTable inside modal\n $(\"#dealer-stock-table\").DataTable({\n destroy: true,\n processing: true,\n serverSide: true,\n ajax: {\n url: ajaxUrl,\n data: {\n product_id: productId,\n },\n error: function (xhr, error, thrown) {\n console.error(\n \"Dealer stock DataTables Ajax Error:\",\n error,\n thrown\n );\n console.error(\"Response:\", xhr.responseText);\n },\n },\n columns: [\n {\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true,\n searchable: true,\n },\n {\n data: \"quantity\",\n name: \"quantity\",\n orderable: true,\n searchable: false,\n },\n ],\n initComplete: function () {\n try {\n if ($(\"#dealerStockModal\").length > 0) {\n $(\"#dealerStockModal\").modal(\"show\");\n } else {\n console.error(\"Modal #dealerStockModal not found\");\n }\n } catch (e) {\n console.error(\"Error showing modal:\", e);\n }\n },\n });\n});\n\n$(document).on(\"click\", \"#dealerStockModal .close\", function () {\n $(\"#dealerStockModal\").modal(\"hide\");\n});\n"],"names":["initializeDataTable","console","log","$","fn","DataTable","jquery","error","setTimeout","tableContainer","length","table","url","data","isDataTable","destroy","processing","serverSide","ajax","type","d","xhr","thrown","responseText","status","success","recordsTotal","recordsFiltered","draw","order","columns","name","orderable","searchable","pageLength","responsive","ordering","orderMulti","initComplete","settings","json","e","ajaxSetup","headers","attr","document","ready","on","Swal","fire","title","text","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","then","result","value","method","_method","_token","reload","location","this","response","message","productId","productName","ajaxUrl","product_id","modal"],"sourceRoot":""}
\ No newline at end of file
diff --git a/public/js/warehouse_management/stock_audit/index.js b/public/js/warehouse_management/stock_audit/index.js
index cb6cafe..2b45b13 100644
--- a/public/js/warehouse_management/stock_audit/index.js
+++ b/public/js/warehouse_management/stock_audit/index.js
@@ -15,7 +15,7 @@
\****************************************************************/
/***/ (() => {
-eval("console.log(\"Stock audit JS loaded\"); // Helper function to format date\n\nfunction formatDate(dateString) {\n if (!dateString) return \"-\";\n var date = new Date(dateString);\n var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Agu\", \"Sep\", \"Okt\", \"Nov\", \"Des\"];\n var day = date.getDate().toString().padStart(2, \"0\");\n var month = months[date.getMonth()];\n var year = date.getFullYear();\n var hours = date.getHours().toString().padStart(2, \"0\");\n var minutes = date.getMinutes().toString().padStart(2, \"0\");\n return \"\".concat(day, \" \").concat(month, \" \").concat(year, \", \").concat(hours, \":\").concat(minutes);\n}\n\n$(document).ready(function () {\n console.log(\"Initializing stock audit table...\"); // Initialize Select2 without any event handlers\n\n $(\".select2\").select2({\n placeholder: \"Pilih...\",\n allowClear: true,\n width: \"100%\"\n }); // Initialize Datepicker\n\n $(\".datepicker\").datepicker({\n format: \"yyyy-mm-dd\",\n autoclose: true,\n todayHighlight: true,\n orientation: \"bottom auto\",\n language: \"id\",\n clearBtn: true,\n container: \"body\"\n });\n var $table = $(\"#stock-audit-table\");\n var indexRoute = $table.data(\"route\");\n console.log(\"Table route:\", indexRoute);\n var table = $table.DataTable({\n processing: true,\n serverSide: true,\n language: {\n processing: '',\n loadingRecords: \"Memuat data...\",\n zeroRecords: \"Tidak ada data yang ditemukan\",\n emptyTable: \"Tidak ada data tersedia\"\n },\n ajax: {\n url: indexRoute,\n data: function data(d) {\n d.dealer = $(\"#filter-dealer\").val();\n d.product = $(\"#filter-product\").val();\n d.change_type = $(\"#filter-change-type\").val();\n d.date = $(\"#filter-date\").val();\n console.log(\"Ajax data with ordering:\", d);\n console.log(\"Order info:\", d.order);\n console.log(\"Columns info:\", d.columns);\n },\n error: function error(xhr, _error, thrown) {\n console.error(\"Ajax error:\", _error);\n console.error(\"Response:\", xhr.responseText);\n }\n },\n columns: [{\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false,\n width: \"5%\"\n }, {\n data: \"product_name\",\n name: \"product_name\",\n orderable: true\n }, {\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true\n }, {\n data: \"change_type\",\n name: \"change_type\",\n orderable: true\n }, {\n data: \"quantity_change\",\n name: \"quantity_change\",\n className: \"text-center\",\n orderable: true\n }, {\n data: \"stock_before_after\",\n name: \"stock_before_after\",\n className: \"text-center\",\n orderable: true\n }, {\n data: \"source_info\",\n name: \"source_info\",\n orderable: true\n }, {\n data: \"user_name\",\n name: \"user_name\",\n orderable: true\n }, {\n data: \"created_at\",\n name: \"created_at\",\n orderable: true\n }, {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n width: \"10%\"\n }],\n order: [[8, \"desc\"]],\n // Order by created_at desc (column index 8)\n pageLength: 25,\n responsive: true,\n ordering: true,\n // Enable column ordering\n orderMulti: false // Single column ordering only\n\n });\n console.log(\"Table initialized:\", table); // Add loading indicator for ordering\n\n table.on(\"processing.dt\", function (e, settings, processing) {\n if (processing) {\n console.log(\"DataTable processing started (ordering/filtering)\");\n } else {\n console.log(\"DataTable processing finished\");\n }\n }); // Debug order events\n\n table.on(\"order.dt\", function () {\n console.log(\"Order changed:\", table.order());\n }); // Manual modal close handlers\n\n $(document).on(\"click\", \"#modal-close-btn, #modal-close-footer-btn\", function () {\n console.log(\"Manual close button clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }); // Modal backdrop click handler\n\n $(document).on(\"click\", \"#auditDetailModal\", function (e) {\n if (e.target === this) {\n console.log(\"Modal backdrop clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n }); // ESC key handler\n\n $(document).on(\"keydown\", function (e) {\n if (e.keyCode === 27 && $(\"#auditDetailModal\").hasClass(\"show\")) {\n console.log(\"ESC key pressed\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n }); // Modal hidden event handler\n\n $(\"#auditDetailModal\").on(\"hidden.bs.modal\", function () {\n console.log(\"Modal hidden\"); // Reset modal content\n\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide();\n }); // Apply filters button - only way to trigger table reload\n\n $(\"#apply-filters\").click(function () {\n console.log(\"Apply filters clicked, reloading table...\");\n console.log(\"Current filter values:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val()\n });\n table.ajax.reload();\n }); // Allow Enter key to apply filters on datepicker\n\n $(\"#filter-date\").keypress(function (e) {\n if (e.which == 13) {\n // Enter key\n console.log(\"Enter pressed on date filter, applying filters...\");\n table.ajax.reload();\n }\n }); // Reset filters\n\n $(\"#reset-filters\").click(function () {\n console.log(\"Resetting filters...\"); // Reset select2 elements properly\n\n $(\"#filter-dealer\").val(null).trigger(\"change.select2\");\n $(\"#filter-product\").val(null).trigger(\"change.select2\");\n $(\"#filter-change-type\").val(null).trigger(\"change.select2\"); // Reset datepicker properly\n\n $(\"#filter-date\").val(\"\").datepicker(\"update\");\n console.log(\"Filters reset, values after reset:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val()\n }); // Reload table after reset\n\n console.log(\"Reloading table after reset...\");\n table.ajax.reload();\n });\n});\n\nwindow.showAuditDetail = function (id) {\n console.log(\"Showing audit detail for ID:\", id); // Reset modal states first\n\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide(); // Show modal\n\n $(\"#auditDetailModal\").modal(\"show\");\n $.ajax({\n url: \"/warehouse/stock-audit/\".concat(id, \"/detail\"),\n method: \"GET\",\n success: function success(response) {\n console.log(\"Detail response:\", response);\n $(\"#modal-loading\").hide();\n\n if (response.success) {\n populateModalContent(response.data, response.source_detail);\n $(\"#modal-content\").show();\n } else {\n $(\"#error-message\").text(response.message);\n $(\"#modal-error\").show();\n }\n },\n error: function error(xhr) {\n console.error(\"Detail AJAX error:\", xhr);\n $(\"#modal-loading\").hide();\n $(\"#error-message\").text(\"Gagal memuat detail audit\");\n $(\"#modal-error\").show();\n }\n });\n};\n\nfunction populateModalContent(audit, sourceDetail) {\n console.log(\"Populating modal content:\", audit); // Populate basic stock information\n\n $(\"#product-name\").text(audit.stock.product.name);\n $(\"#dealer-name\").text(audit.stock.dealer.name);\n $(\"#previous-quantity\").text(audit.previous_quantity);\n $(\"#new-quantity\").text(audit.new_quantity);\n $(\"#user-name\").text(audit.user ? audit.user.name : \"-\");\n $(\"#created-at\").text(audit.created_at_formatted);\n $(\"#description\").text(audit.description || \"-\"); // Set quantity change with styling\n\n var quantityChangeClass = \"\";\n var quantityChangeSign = \"\";\n\n if (audit.quantity_change > 0) {\n quantityChangeClass = \"text-success\";\n quantityChangeSign = \"+\";\n } else if (audit.quantity_change < 0) {\n quantityChangeClass = \"text-danger\";\n quantityChangeSign = \"\";\n } else {\n quantityChangeClass = \"text-muted\";\n quantityChangeSign = \"\";\n }\n\n $(\"#quantity-change\").html(\"\").concat(quantityChangeSign).concat(audit.quantity_change, \"\")); // Set change type with styling\n\n var changeTypeClass = \"\";\n\n switch (audit.change_type) {\n case \"increase\":\n changeTypeClass = \"text-success\";\n break;\n\n case \"decrease\":\n changeTypeClass = \"text-danger\";\n break;\n\n case \"adjustment\":\n changeTypeClass = \"text-warning\";\n break;\n\n default:\n changeTypeClass = \"text-muted\";\n }\n\n $(\"#change-type\").html(\"\").concat(audit.change_type_label, \"\")); // Handle source detail\n\n if (sourceDetail) {\n $(\"#source-detail\").show();\n\n if (sourceDetail.type === \"mutation\") {\n var mutation = sourceDetail.data;\n $(\"#source-title\").text(\"Mutasi Stock: \".concat(mutation.mutation_number));\n var mutationContent = \"\\n \\n
\\n
\\n \\n | Dari Dealer: | \\n \".concat(mutation.from_dealer ? mutation.from_dealer.name : \"-\", \" | \\n
\\n \\n | Ke Dealer: | \\n \").concat(mutation.to_dealer ? mutation.to_dealer.name : \"-\", \" | \\n
\\n \\n | Status: | \\n \").concat(mutation.status, \" | \\n
\\n
\\n
\\n
\\n
\\n \\n | Diminta oleh: | \\n \").concat(mutation.requested_by ? mutation.requested_by.name : \"-\", \" | \\n
\\n \\n | Disetujui oleh: | \\n \").concat(mutation.approved_by ? mutation.approved_by.name : \"-\", \" | \\n
\\n \\n | Tanggal Disetujui: | \\n \").concat(mutation.approved_at_formatted || \"-\", \" | \\n
\\n
\\n
\\n
\\n \");\n $(\"#source-content\").html(mutationContent);\n } else if (sourceDetail.type === \"opname\") {\n var opname = sourceDetail.data;\n $(\"#source-title\").text(\"Opname\");\n var opnameContent = \"\\n \\n \\n | Dealer: | \\n \".concat(opname.dealer ? opname.dealer.name : \"-\", \" | \\n
\\n \\n | User: | \\n \").concat(opname.user ? opname.user.name : \"-\", \" | \\n
\\n \\n | Status: | \\n \").concat(opname.status || \"-\", \" | \\n
\\n
\\n \");\n $(\"#source-content\").html(opnameContent);\n }\n } else {\n $(\"#source-detail\").hide();\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvc3RvY2tfYXVkaXQvaW5kZXguanMiLCJuYW1lcyI6WyJjb25zb2xlIiwibG9nIiwiZm9ybWF0RGF0ZSIsImRhdGVTdHJpbmciLCJkYXRlIiwiRGF0ZSIsIm1vbnRocyIsImRheSIsImdldERhdGUiLCJ0b1N0cmluZyIsInBhZFN0YXJ0IiwibW9udGgiLCJnZXRNb250aCIsInllYXIiLCJnZXRGdWxsWWVhciIsImhvdXJzIiwiZ2V0SG91cnMiLCJtaW51dGVzIiwiZ2V0TWludXRlcyIsIiQiLCJkb2N1bWVudCIsInJlYWR5Iiwic2VsZWN0MiIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsIndpZHRoIiwiZGF0ZXBpY2tlciIsImZvcm1hdCIsImF1dG9jbG9zZSIsInRvZGF5SGlnaGxpZ2h0Iiwib3JpZW50YXRpb24iLCJsYW5ndWFnZSIsImNsZWFyQnRuIiwiY29udGFpbmVyIiwiJHRhYmxlIiwiaW5kZXhSb3V0ZSIsImRhdGEiLCJ0YWJsZSIsIkRhdGFUYWJsZSIsInByb2Nlc3NpbmciLCJzZXJ2ZXJTaWRlIiwibG9hZGluZ1JlY29yZHMiLCJ6ZXJvUmVjb3JkcyIsImVtcHR5VGFibGUiLCJhamF4IiwidXJsIiwiZCIsImRlYWxlciIsInZhbCIsInByb2R1Y3QiLCJjaGFuZ2VfdHlwZSIsIm9yZGVyIiwiY29sdW1ucyIsImVycm9yIiwieGhyIiwidGhyb3duIiwicmVzcG9uc2VUZXh0IiwibmFtZSIsIm9yZGVyYWJsZSIsInNlYXJjaGFibGUiLCJjbGFzc05hbWUiLCJwYWdlTGVuZ3RoIiwicmVzcG9uc2l2ZSIsIm9yZGVyaW5nIiwib3JkZXJNdWx0aSIsIm9uIiwiZSIsInNldHRpbmdzIiwibW9kYWwiLCJ0YXJnZXQiLCJrZXlDb2RlIiwiaGFzQ2xhc3MiLCJzaG93IiwiaGlkZSIsImNsaWNrIiwicmVsb2FkIiwia2V5cHJlc3MiLCJ3aGljaCIsInRyaWdnZXIiLCJ3aW5kb3ciLCJzaG93QXVkaXREZXRhaWwiLCJpZCIsIm1ldGhvZCIsInN1Y2Nlc3MiLCJyZXNwb25zZSIsInBvcHVsYXRlTW9kYWxDb250ZW50Iiwic291cmNlX2RldGFpbCIsInRleHQiLCJtZXNzYWdlIiwiYXVkaXQiLCJzb3VyY2VEZXRhaWwiLCJzdG9jayIsInByZXZpb3VzX3F1YW50aXR5IiwibmV3X3F1YW50aXR5IiwidXNlciIsImNyZWF0ZWRfYXRfZm9ybWF0dGVkIiwiZGVzY3JpcHRpb24iLCJxdWFudGl0eUNoYW5nZUNsYXNzIiwicXVhbnRpdHlDaGFuZ2VTaWduIiwicXVhbnRpdHlfY2hhbmdlIiwiaHRtbCIsImNoYW5nZVR5cGVDbGFzcyIsImNoYW5nZV90eXBlX2xhYmVsIiwidHlwZSIsIm11dGF0aW9uIiwibXV0YXRpb25fbnVtYmVyIiwibXV0YXRpb25Db250ZW50IiwiZnJvbV9kZWFsZXIiLCJ0b19kZWFsZXIiLCJzdGF0dXMiLCJyZXF1ZXN0ZWRfYnkiLCJhcHByb3ZlZF9ieSIsImFwcHJvdmVkX2F0X2Zvcm1hdHRlZCIsIm9wbmFtZSIsIm9wbmFtZUNvbnRlbnQiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy93YXJlaG91c2VfbWFuYWdlbWVudC9zdG9ja19hdWRpdC9pbmRleC5qcz9kNTBhIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnNvbGUubG9nKFwiU3RvY2sgYXVkaXQgSlMgbG9hZGVkXCIpO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZm9ybWF0IGRhdGVcbmZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZVN0cmluZykge1xuICAgIGlmICghZGF0ZVN0cmluZykgcmV0dXJuIFwiLVwiO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgIGNvbnN0IG1vbnRocyA9IFtcbiAgICAgICAgXCJKYW5cIixcbiAgICAgICAgXCJGZWJcIixcbiAgICAgICAgXCJNYXJcIixcbiAgICAgICAgXCJBcHJcIixcbiAgICAgICAgXCJNZWlcIixcbiAgICAgICAgXCJKdW5cIixcbiAgICAgICAgXCJKdWxcIixcbiAgICAgICAgXCJBZ3VcIixcbiAgICAgICAgXCJTZXBcIixcbiAgICAgICAgXCJPa3RcIixcbiAgICAgICAgXCJOb3ZcIixcbiAgICAgICAgXCJEZXNcIixcbiAgICBdO1xuXG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgY29uc3QgbW9udGggPSBtb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcblxuICAgIHJldHVybiBgJHtkYXl9ICR7bW9udGh9ICR7eWVhcn0sICR7aG91cnN9OiR7bWludXRlc31gO1xufVxuXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coXCJJbml0aWFsaXppbmcgc3RvY2sgYXVkaXQgdGFibGUuLi5cIik7XG5cbiAgICAvLyBJbml0aWFsaXplIFNlbGVjdDIgd2l0aG91dCBhbnkgZXZlbnQgaGFuZGxlcnNcbiAgICAkKFwiLnNlbGVjdDJcIikuc2VsZWN0Mih7XG4gICAgICAgIHBsYWNlaG9sZGVyOiBcIlBpbGloLi4uXCIsXG4gICAgICAgIGFsbG93Q2xlYXI6IHRydWUsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWxpemUgRGF0ZXBpY2tlclxuICAgICQoXCIuZGF0ZXBpY2tlclwiKS5kYXRlcGlja2VyKHtcbiAgICAgICAgZm9ybWF0OiBcInl5eXktbW0tZGRcIixcbiAgICAgICAgYXV0b2Nsb3NlOiB0cnVlLFxuICAgICAgICB0b2RheUhpZ2hsaWdodDogdHJ1ZSxcbiAgICAgICAgb3JpZW50YXRpb246IFwiYm90dG9tIGF1dG9cIixcbiAgICAgICAgbGFuZ3VhZ2U6IFwiaWRcIixcbiAgICAgICAgY2xlYXJCdG46IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogXCJib2R5XCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCAkdGFibGUgPSAkKFwiI3N0b2NrLWF1ZGl0LXRhYmxlXCIpO1xuICAgIGNvbnN0IGluZGV4Um91dGUgPSAkdGFibGUuZGF0YShcInJvdXRlXCIpO1xuXG4gICAgY29uc29sZS5sb2coXCJUYWJsZSByb3V0ZTpcIiwgaW5kZXhSb3V0ZSk7XG5cbiAgICBsZXQgdGFibGUgPSAkdGFibGUuRGF0YVRhYmxlKHtcbiAgICAgICAgcHJvY2Vzc2luZzogdHJ1ZSxcbiAgICAgICAgc2VydmVyU2lkZTogdHJ1ZSxcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICAgIHByb2Nlc3Npbmc6XG4gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+PHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+TWVtcHJvc2VzLi4uPC9zcGFuPjwvZGl2PjwvZGl2PicsXG4gICAgICAgICAgICBsb2FkaW5nUmVjb3JkczogXCJNZW11YXQgZGF0YS4uLlwiLFxuICAgICAgICAgICAgemVyb1JlY29yZHM6IFwiVGlkYWsgYWRhIGRhdGEgeWFuZyBkaXRlbXVrYW5cIixcbiAgICAgICAgICAgIGVtcHR5VGFibGU6IFwiVGlkYWsgYWRhIGRhdGEgdGVyc2VkaWFcIixcbiAgICAgICAgfSxcbiAgICAgICAgYWpheDoge1xuICAgICAgICAgICAgdXJsOiBpbmRleFJvdXRlLFxuICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICBkLmRlYWxlciA9ICQoXCIjZmlsdGVyLWRlYWxlclwiKS52YWwoKTtcbiAgICAgICAgICAgICAgICBkLnByb2R1Y3QgPSAkKFwiI2ZpbHRlci1wcm9kdWN0XCIpLnZhbCgpO1xuICAgICAgICAgICAgICAgIGQuY2hhbmdlX3R5cGUgPSAkKFwiI2ZpbHRlci1jaGFuZ2UtdHlwZVwiKS52YWwoKTtcbiAgICAgICAgICAgICAgICBkLmRhdGUgPSAkKFwiI2ZpbHRlci1kYXRlXCIpLnZhbCgpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQWpheCBkYXRhIHdpdGggb3JkZXJpbmc6XCIsIGQpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiT3JkZXIgaW5mbzpcIiwgZC5vcmRlcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDb2x1bW5zIGluZm86XCIsIGQuY29sdW1ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIsIGVycm9yLCB0aHJvd24pIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQWpheCBlcnJvcjpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJSZXNwb25zZTpcIiwgeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJEVF9Sb3dJbmRleFwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiRFRfUm93SW5kZXhcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjUlXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwicHJvZHVjdF9uYW1lXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJwcm9kdWN0X25hbWVcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiZGVhbGVyX25hbWVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlYWxlcl9uYW1lXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImNoYW5nZV90eXBlXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJjaGFuZ2VfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJxdWFudGl0eV9jaGFuZ2VcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInF1YW50aXR5X2NoYW5nZVwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJ0ZXh0LWNlbnRlclwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJzdG9ja19iZWZvcmVfYWZ0ZXJcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0b2NrX2JlZm9yZV9hZnRlclwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJ0ZXh0LWNlbnRlclwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJzb3VyY2VfaW5mb1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwic291cmNlX2luZm9cIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwidXNlcl9uYW1lXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJ1c2VyX25hbWVcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiY3JlYXRlZF9hdFwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlZF9hdFwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImFjdGlvblwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAlXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvcmRlcjogW1s4LCBcImRlc2NcIl1dLCAvLyBPcmRlciBieSBjcmVhdGVkX2F0IGRlc2MgKGNvbHVtbiBpbmRleCA4KVxuICAgICAgICBwYWdlTGVuZ3RoOiAyNSxcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgb3JkZXJpbmc6IHRydWUsIC8vIEVuYWJsZSBjb2x1bW4gb3JkZXJpbmdcbiAgICAgICAgb3JkZXJNdWx0aTogZmFsc2UsIC8vIFNpbmdsZSBjb2x1bW4gb3JkZXJpbmcgb25seVxuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coXCJUYWJsZSBpbml0aWFsaXplZDpcIiwgdGFibGUpO1xuXG4gICAgLy8gQWRkIGxvYWRpbmcgaW5kaWNhdG9yIGZvciBvcmRlcmluZ1xuICAgIHRhYmxlLm9uKFwicHJvY2Vzc2luZy5kdFwiLCBmdW5jdGlvbiAoZSwgc2V0dGluZ3MsIHByb2Nlc3NpbmcpIHtcbiAgICAgICAgaWYgKHByb2Nlc3NpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YVRhYmxlIHByb2Nlc3Npbmcgc3RhcnRlZCAob3JkZXJpbmcvZmlsdGVyaW5nKVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YVRhYmxlIHByb2Nlc3NpbmcgZmluaXNoZWRcIik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIERlYnVnIG9yZGVyIGV2ZW50c1xuICAgIHRhYmxlLm9uKFwib3JkZXIuZHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk9yZGVyIGNoYW5nZWQ6XCIsIHRhYmxlLm9yZGVyKCkpO1xuICAgIH0pO1xuXG4gICAgLy8gTWFudWFsIG1vZGFsIGNsb3NlIGhhbmRsZXJzXG4gICAgJChkb2N1bWVudCkub24oXG4gICAgICAgIFwiY2xpY2tcIixcbiAgICAgICAgXCIjbW9kYWwtY2xvc2UtYnRuLCAjbW9kYWwtY2xvc2UtZm9vdGVyLWJ0blwiLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk1hbnVhbCBjbG9zZSBidXR0b24gY2xpY2tlZFwiKTtcbiAgICAgICAgICAgICQoXCIjYXVkaXREZXRhaWxNb2RhbFwiKS5tb2RhbChcImhpZGVcIik7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gTW9kYWwgYmFja2Ryb3AgY2xpY2sgaGFuZGxlclxuICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIjYXVkaXREZXRhaWxNb2RhbFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS50YXJnZXQgPT09IHRoaXMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTW9kYWwgYmFja2Ryb3AgY2xpY2tlZFwiKTtcbiAgICAgICAgICAgICQoXCIjYXVkaXREZXRhaWxNb2RhbFwiKS5tb2RhbChcImhpZGVcIik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEVTQyBrZXkgaGFuZGxlclxuICAgICQoZG9jdW1lbnQpLm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAyNyAmJiAkKFwiI2F1ZGl0RGV0YWlsTW9kYWxcIikuaGFzQ2xhc3MoXCJzaG93XCIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVTQyBrZXkgcHJlc3NlZFwiKTtcbiAgICAgICAgICAgICQoXCIjYXVkaXREZXRhaWxNb2RhbFwiKS5tb2RhbChcImhpZGVcIik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIE1vZGFsIGhpZGRlbiBldmVudCBoYW5kbGVyXG4gICAgJChcIiNhdWRpdERldGFpbE1vZGFsXCIpLm9uKFwiaGlkZGVuLmJzLm1vZGFsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJNb2RhbCBoaWRkZW5cIik7XG4gICAgICAgIC8vIFJlc2V0IG1vZGFsIGNvbnRlbnRcbiAgICAgICAgJChcIiNtb2RhbC1sb2FkaW5nXCIpLnNob3coKTtcbiAgICAgICAgJChcIiNtb2RhbC1lcnJvclwiKS5oaWRlKCk7XG4gICAgICAgICQoXCIjbW9kYWwtY29udGVudFwiKS5oaWRlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBBcHBseSBmaWx0ZXJzIGJ1dHRvbiAtIG9ubHkgd2F5IHRvIHRyaWdnZXIgdGFibGUgcmVsb2FkXG4gICAgJChcIiNhcHBseS1maWx0ZXJzXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJBcHBseSBmaWx0ZXJzIGNsaWNrZWQsIHJlbG9hZGluZyB0YWJsZS4uLlwiKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJDdXJyZW50IGZpbHRlciB2YWx1ZXM6XCIsIHtcbiAgICAgICAgICAgIGRlYWxlcjogJChcIiNmaWx0ZXItZGVhbGVyXCIpLnZhbCgpLFxuICAgICAgICAgICAgcHJvZHVjdDogJChcIiNmaWx0ZXItcHJvZHVjdFwiKS52YWwoKSxcbiAgICAgICAgICAgIGNoYW5nZV90eXBlOiAkKFwiI2ZpbHRlci1jaGFuZ2UtdHlwZVwiKS52YWwoKSxcbiAgICAgICAgICAgIGRhdGU6ICQoXCIjZmlsdGVyLWRhdGVcIikudmFsKCksXG4gICAgICAgIH0pO1xuICAgICAgICB0YWJsZS5hamF4LnJlbG9hZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgRW50ZXIga2V5IHRvIGFwcGx5IGZpbHRlcnMgb24gZGF0ZXBpY2tlclxuICAgICQoXCIjZmlsdGVyLWRhdGVcIikua2V5cHJlc3MoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUud2hpY2ggPT0gMTMpIHtcbiAgICAgICAgICAgIC8vIEVudGVyIGtleVxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJFbnRlciBwcmVzc2VkIG9uIGRhdGUgZmlsdGVyLCBhcHBseWluZyBmaWx0ZXJzLi4uXCIpO1xuICAgICAgICAgICAgdGFibGUuYWpheC5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUmVzZXQgZmlsdGVyc1xuICAgICQoXCIjcmVzZXQtZmlsdGVyc1wiKS5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiUmVzZXR0aW5nIGZpbHRlcnMuLi5cIik7XG5cbiAgICAgICAgLy8gUmVzZXQgc2VsZWN0MiBlbGVtZW50cyBwcm9wZXJseVxuICAgICAgICAkKFwiI2ZpbHRlci1kZWFsZXJcIikudmFsKG51bGwpLnRyaWdnZXIoXCJjaGFuZ2Uuc2VsZWN0MlwiKTtcbiAgICAgICAgJChcIiNmaWx0ZXItcHJvZHVjdFwiKS52YWwobnVsbCkudHJpZ2dlcihcImNoYW5nZS5zZWxlY3QyXCIpO1xuICAgICAgICAkKFwiI2ZpbHRlci1jaGFuZ2UtdHlwZVwiKS52YWwobnVsbCkudHJpZ2dlcihcImNoYW5nZS5zZWxlY3QyXCIpO1xuXG4gICAgICAgIC8vIFJlc2V0IGRhdGVwaWNrZXIgcHJvcGVybHlcbiAgICAgICAgJChcIiNmaWx0ZXItZGF0ZVwiKS52YWwoXCJcIikuZGF0ZXBpY2tlcihcInVwZGF0ZVwiKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhcIkZpbHRlcnMgcmVzZXQsIHZhbHVlcyBhZnRlciByZXNldDpcIiwge1xuICAgICAgICAgICAgZGVhbGVyOiAkKFwiI2ZpbHRlci1kZWFsZXJcIikudmFsKCksXG4gICAgICAgICAgICBwcm9kdWN0OiAkKFwiI2ZpbHRlci1wcm9kdWN0XCIpLnZhbCgpLFxuICAgICAgICAgICAgY2hhbmdlX3R5cGU6ICQoXCIjZmlsdGVyLWNoYW5nZS10eXBlXCIpLnZhbCgpLFxuICAgICAgICAgICAgZGF0ZTogJChcIiNmaWx0ZXItZGF0ZVwiKS52YWwoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVsb2FkIHRhYmxlIGFmdGVyIHJlc2V0XG4gICAgICAgIGNvbnNvbGUubG9nKFwiUmVsb2FkaW5nIHRhYmxlIGFmdGVyIHJlc2V0Li4uXCIpO1xuICAgICAgICB0YWJsZS5hamF4LnJlbG9hZCgpO1xuICAgIH0pO1xufSk7XG5cbndpbmRvdy5zaG93QXVkaXREZXRhaWwgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBjb25zb2xlLmxvZyhcIlNob3dpbmcgYXVkaXQgZGV0YWlsIGZvciBJRDpcIiwgaWQpO1xuXG4gICAgLy8gUmVzZXQgbW9kYWwgc3RhdGVzIGZpcnN0XG4gICAgJChcIiNtb2RhbC1sb2FkaW5nXCIpLnNob3coKTtcbiAgICAkKFwiI21vZGFsLWVycm9yXCIpLmhpZGUoKTtcbiAgICAkKFwiI21vZGFsLWNvbnRlbnRcIikuaGlkZSgpO1xuXG4gICAgLy8gU2hvdyBtb2RhbFxuICAgICQoXCIjYXVkaXREZXRhaWxNb2RhbFwiKS5tb2RhbChcInNob3dcIik7XG5cbiAgICAkLmFqYXgoe1xuICAgICAgICB1cmw6IGAvd2FyZWhvdXNlL3N0b2NrLWF1ZGl0LyR7aWR9L2RldGFpbGAsXG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRldGFpbCByZXNwb25zZTpcIiwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgJChcIiNtb2RhbC1sb2FkaW5nXCIpLmhpZGUoKTtcblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBwb3B1bGF0ZU1vZGFsQ29udGVudChyZXNwb25zZS5kYXRhLCByZXNwb25zZS5zb3VyY2VfZGV0YWlsKTtcbiAgICAgICAgICAgICAgICAkKFwiI21vZGFsLWNvbnRlbnRcIikuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKFwiI2Vycm9yLW1lc3NhZ2VcIikudGV4dChyZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAkKFwiI21vZGFsLWVycm9yXCIpLnNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh4aHIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJEZXRhaWwgQUpBWCBlcnJvcjpcIiwgeGhyKTtcbiAgICAgICAgICAgICQoXCIjbW9kYWwtbG9hZGluZ1wiKS5oaWRlKCk7XG4gICAgICAgICAgICAkKFwiI2Vycm9yLW1lc3NhZ2VcIikudGV4dChcIkdhZ2FsIG1lbXVhdCBkZXRhaWwgYXVkaXRcIik7XG4gICAgICAgICAgICAkKFwiI21vZGFsLWVycm9yXCIpLnNob3coKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn07XG5cbmZ1bmN0aW9uIHBvcHVsYXRlTW9kYWxDb250ZW50KGF1ZGl0LCBzb3VyY2VEZXRhaWwpIHtcbiAgICBjb25zb2xlLmxvZyhcIlBvcHVsYXRpbmcgbW9kYWwgY29udGVudDpcIiwgYXVkaXQpO1xuXG4gICAgLy8gUG9wdWxhdGUgYmFzaWMgc3RvY2sgaW5mb3JtYXRpb25cbiAgICAkKFwiI3Byb2R1Y3QtbmFtZVwiKS50ZXh0KGF1ZGl0LnN0b2NrLnByb2R1Y3QubmFtZSk7XG4gICAgJChcIiNkZWFsZXItbmFtZVwiKS50ZXh0KGF1ZGl0LnN0b2NrLmRlYWxlci5uYW1lKTtcbiAgICAkKFwiI3ByZXZpb3VzLXF1YW50aXR5XCIpLnRleHQoYXVkaXQucHJldmlvdXNfcXVhbnRpdHkpO1xuICAgICQoXCIjbmV3LXF1YW50aXR5XCIpLnRleHQoYXVkaXQubmV3X3F1YW50aXR5KTtcbiAgICAkKFwiI3VzZXItbmFtZVwiKS50ZXh0KGF1ZGl0LnVzZXIgPyBhdWRpdC51c2VyLm5hbWUgOiBcIi1cIik7XG4gICAgJChcIiNjcmVhdGVkLWF0XCIpLnRleHQoYXVkaXQuY3JlYXRlZF9hdF9mb3JtYXR0ZWQpO1xuICAgICQoXCIjZGVzY3JpcHRpb25cIikudGV4dChhdWRpdC5kZXNjcmlwdGlvbiB8fCBcIi1cIik7XG5cbiAgICAvLyBTZXQgcXVhbnRpdHkgY2hhbmdlIHdpdGggc3R5bGluZ1xuICAgIGxldCBxdWFudGl0eUNoYW5nZUNsYXNzID0gXCJcIjtcbiAgICBsZXQgcXVhbnRpdHlDaGFuZ2VTaWduID0gXCJcIjtcbiAgICBpZiAoYXVkaXQucXVhbnRpdHlfY2hhbmdlID4gMCkge1xuICAgICAgICBxdWFudGl0eUNoYW5nZUNsYXNzID0gXCJ0ZXh0LXN1Y2Nlc3NcIjtcbiAgICAgICAgcXVhbnRpdHlDaGFuZ2VTaWduID0gXCIrXCI7XG4gICAgfSBlbHNlIGlmIChhdWRpdC5xdWFudGl0eV9jaGFuZ2UgPCAwKSB7XG4gICAgICAgIHF1YW50aXR5Q2hhbmdlQ2xhc3MgPSBcInRleHQtZGFuZ2VyXCI7XG4gICAgICAgIHF1YW50aXR5Q2hhbmdlU2lnbiA9IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVhbnRpdHlDaGFuZ2VDbGFzcyA9IFwidGV4dC1tdXRlZFwiO1xuICAgICAgICBxdWFudGl0eUNoYW5nZVNpZ24gPSBcIlwiO1xuICAgIH1cbiAgICAkKFwiI3F1YW50aXR5LWNoYW5nZVwiKS5odG1sKFxuICAgICAgICBgPHNwYW4gY2xhc3M9XCIke3F1YW50aXR5Q2hhbmdlQ2xhc3N9XCI+JHtxdWFudGl0eUNoYW5nZVNpZ259JHthdWRpdC5xdWFudGl0eV9jaGFuZ2V9PC9zcGFuPmBcbiAgICApO1xuXG4gICAgLy8gU2V0IGNoYW5nZSB0eXBlIHdpdGggc3R5bGluZ1xuICAgIGxldCBjaGFuZ2VUeXBlQ2xhc3MgPSBcIlwiO1xuICAgIHN3aXRjaCAoYXVkaXQuY2hhbmdlX3R5cGUpIHtcbiAgICAgICAgY2FzZSBcImluY3JlYXNlXCI6XG4gICAgICAgICAgICBjaGFuZ2VUeXBlQ2xhc3MgPSBcInRleHQtc3VjY2Vzc1wiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkZWNyZWFzZVwiOlxuICAgICAgICAgICAgY2hhbmdlVHlwZUNsYXNzID0gXCJ0ZXh0LWRhbmdlclwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJhZGp1c3RtZW50XCI6XG4gICAgICAgICAgICBjaGFuZ2VUeXBlQ2xhc3MgPSBcInRleHQtd2FybmluZ1wiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjaGFuZ2VUeXBlQ2xhc3MgPSBcInRleHQtbXV0ZWRcIjtcbiAgICB9XG4gICAgJChcIiNjaGFuZ2UtdHlwZVwiKS5odG1sKFxuICAgICAgICBgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkICR7Y2hhbmdlVHlwZUNsYXNzfVwiPiR7YXVkaXQuY2hhbmdlX3R5cGVfbGFiZWx9PC9zcGFuPmBcbiAgICApO1xuXG4gICAgLy8gSGFuZGxlIHNvdXJjZSBkZXRhaWxcbiAgICBpZiAoc291cmNlRGV0YWlsKSB7XG4gICAgICAgICQoXCIjc291cmNlLWRldGFpbFwiKS5zaG93KCk7XG5cbiAgICAgICAgaWYgKHNvdXJjZURldGFpbC50eXBlID09PSBcIm11dGF0aW9uXCIpIHtcbiAgICAgICAgICAgIGxldCBtdXRhdGlvbiA9IHNvdXJjZURldGFpbC5kYXRhO1xuICAgICAgICAgICAgJChcIiNzb3VyY2UtdGl0bGVcIikudGV4dChcbiAgICAgICAgICAgICAgICBgTXV0YXNpIFN0b2NrOiAke211dGF0aW9uLm11dGF0aW9uX251bWJlcn1gXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBsZXQgbXV0YXRpb25Db250ZW50ID0gYFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+RGFyaSBEZWFsZXI6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbi5mcm9tX2RlYWxlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbXV0YXRpb24uZnJvbV9kZWFsZXIubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCItXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPktlIERlYWxlcjo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLnRvX2RlYWxlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbXV0YXRpb24udG9fZGVhbGVyLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiLVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5TdGF0dXM6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7bXV0YXRpb24uc3RhdHVzfTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5EaW1pbnRhIG9sZWg6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbi5yZXF1ZXN0ZWRfYnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG11dGF0aW9uLnJlcXVlc3RlZF9ieS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIi1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+RGlzZXR1anVpIG9sZWg6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbi5hcHByb3ZlZF9ieVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbXV0YXRpb24uYXBwcm92ZWRfYnkubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCItXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPlRhbmdnYWwgRGlzZXR1anVpOjwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24uYXBwcm92ZWRfYXRfZm9ybWF0dGVkIHx8IFwiLVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gICAgICAgICAgICAkKFwiI3NvdXJjZS1jb250ZW50XCIpLmh0bWwobXV0YXRpb25Db250ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VEZXRhaWwudHlwZSA9PT0gXCJvcG5hbWVcIikge1xuICAgICAgICAgICAgbGV0IG9wbmFtZSA9IHNvdXJjZURldGFpbC5kYXRhO1xuICAgICAgICAgICAgJChcIiNzb3VyY2UtdGl0bGVcIikudGV4dChcIk9wbmFtZVwiKTtcblxuICAgICAgICAgICAgbGV0IG9wbmFtZUNvbnRlbnQgPSBgXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+RGVhbGVyOjwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtvcG5hbWUuZGVhbGVyID8gb3BuYW1lLmRlYWxlci5uYW1lIDogXCItXCJ9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+VXNlcjo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7b3BuYW1lLnVzZXIgPyBvcG5hbWUudXNlci5uYW1lIDogXCItXCJ9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+U3RhdHVzOjwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtvcG5hbWUuc3RhdHVzIHx8IFwiLVwifTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIGA7XG4gICAgICAgICAgICAkKFwiI3NvdXJjZS1jb250ZW50XCIpLmh0bWwob3BuYW1lQ29udGVudCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAkKFwiI3NvdXJjZS1kZXRhaWxcIikuaGlkZSgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLHVCQUFaLEUsQ0FFQTs7QUFDQSxTQUFTQyxVQUFULENBQW9CQyxVQUFwQixFQUFnQztFQUM1QixJQUFJLENBQUNBLFVBQUwsRUFBaUIsT0FBTyxHQUFQO0VBRWpCLElBQU1DLElBQUksR0FBRyxJQUFJQyxJQUFKLENBQVNGLFVBQVQsQ0FBYjtFQUNBLElBQU1HLE1BQU0sR0FBRyxDQUNYLEtBRFcsRUFFWCxLQUZXLEVBR1gsS0FIVyxFQUlYLEtBSlcsRUFLWCxLQUxXLEVBTVgsS0FOVyxFQU9YLEtBUFcsRUFRWCxLQVJXLEVBU1gsS0FUVyxFQVVYLEtBVlcsRUFXWCxLQVhXLEVBWVgsS0FaVyxDQUFmO0VBZUEsSUFBTUMsR0FBRyxHQUFHSCxJQUFJLENBQUNJLE9BQUwsR0FBZUMsUUFBZixHQUEwQkMsUUFBMUIsQ0FBbUMsQ0FBbkMsRUFBc0MsR0FBdEMsQ0FBWjtFQUNBLElBQU1DLEtBQUssR0FBR0wsTUFBTSxDQUFDRixJQUFJLENBQUNRLFFBQUwsRUFBRCxDQUFwQjtFQUNBLElBQU1DLElBQUksR0FBR1QsSUFBSSxDQUFDVSxXQUFMLEVBQWI7RUFDQSxJQUFNQyxLQUFLLEdBQUdYLElBQUksQ0FBQ1ksUUFBTCxHQUFnQlAsUUFBaEIsR0FBMkJDLFFBQTNCLENBQW9DLENBQXBDLEVBQXVDLEdBQXZDLENBQWQ7RUFDQSxJQUFNTyxPQUFPLEdBQUdiLElBQUksQ0FBQ2MsVUFBTCxHQUFrQlQsUUFBbEIsR0FBNkJDLFFBQTdCLENBQXNDLENBQXRDLEVBQXlDLEdBQXpDLENBQWhCO0VBRUEsaUJBQVVILEdBQVYsY0FBaUJJLEtBQWpCLGNBQTBCRSxJQUExQixlQUFtQ0UsS0FBbkMsY0FBNENFLE9BQTVD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\n//# sourceURL=webpack-internal:///./resources/js/warehouse_management/stock_audit/index.js\n");
+eval("console.log(\"Stock audit JS loaded\"); // Helper function to format date\n\nfunction formatDate(dateString) {\n if (!dateString) return \"-\";\n var date = new Date(dateString);\n var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Agu\", \"Sep\", \"Okt\", \"Nov\", \"Des\"];\n var day = date.getDate().toString().padStart(2, \"0\");\n var month = months[date.getMonth()];\n var year = date.getFullYear();\n var hours = date.getHours().toString().padStart(2, \"0\");\n var minutes = date.getMinutes().toString().padStart(2, \"0\");\n return \"\".concat(day, \" \").concat(month, \" \").concat(year, \", \").concat(hours, \":\").concat(minutes);\n}\n\n$(document).ready(function () {\n console.log(\"Initializing stock audit table...\"); // Initialize Select2 without any event handlers\n\n $(\".select2\").select2({\n placeholder: \"Pilih...\",\n allowClear: true,\n width: \"100%\"\n }); // Initialize Datepicker\n\n $(\".datepicker\").datepicker({\n format: \"yyyy-mm-dd\",\n autoclose: true,\n todayHighlight: true,\n orientation: \"bottom auto\",\n language: \"id\",\n clearBtn: true,\n container: \"body\"\n });\n var $table = $(\"#stock-audit-table\");\n var indexRoute = $table.data(\"route\");\n console.log(\"Table route:\", indexRoute);\n var table = $table.DataTable({\n processing: true,\n serverSide: true,\n language: {\n processing: '',\n loadingRecords: \"Memuat data...\",\n zeroRecords: \"Tidak ada data yang ditemukan\",\n emptyTable: \"Tidak ada data tersedia\"\n },\n ajax: {\n url: indexRoute,\n data: function data(d) {\n d.dealer = $(\"#filter-dealer\").val();\n d.product = $(\"#filter-product\").val();\n d.change_type = $(\"#filter-change-type\").val();\n d.date = $(\"#filter-date\").val();\n console.log(\"Ajax data with ordering:\", d);\n console.log(\"Order info:\", d.order);\n console.log(\"Columns info:\", d.columns);\n },\n error: function error(xhr, _error, thrown) {\n console.error(\"Ajax error:\", _error);\n console.error(\"Response:\", xhr.responseText);\n }\n },\n columns: [{\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false,\n width: \"5%\"\n }, {\n data: \"product_name\",\n name: \"product_name\",\n orderable: true\n }, {\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true\n }, {\n data: \"change_type\",\n name: \"change_type\",\n orderable: true\n }, {\n data: \"quantity_change\",\n name: \"quantity_change\",\n className: \"text-center\",\n orderable: true\n }, {\n data: \"stock_before_after\",\n name: \"stock_before_after\",\n className: \"text-center\",\n orderable: true\n }, {\n data: \"source_info\",\n name: \"source_info\",\n orderable: true\n }, {\n data: \"user_name\",\n name: \"user_name\",\n orderable: true\n }, {\n data: \"created_at\",\n name: \"created_at\",\n orderable: true\n }, {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n width: \"10%\"\n }],\n order: [[8, \"desc\"]],\n // Order by created_at desc (column index 8)\n pageLength: 25,\n responsive: true,\n ordering: true,\n // Enable column ordering\n orderMulti: false // Single column ordering only\n\n });\n console.log(\"Table initialized:\", table); // Add loading indicator for ordering\n\n table.on(\"processing.dt\", function (e, settings, processing) {\n if (processing) {\n console.log(\"DataTable processing started (ordering/filtering)\");\n } else {\n console.log(\"DataTable processing finished\");\n }\n }); // Debug order events\n\n table.on(\"order.dt\", function () {\n console.log(\"Order changed:\", table.order());\n }); // Manual modal close handlers\n\n $(document).on(\"click\", \"#modal-close-btn, #modal-close-footer-btn\", function () {\n console.log(\"Manual close button clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }); // Modal backdrop click handler\n\n $(document).on(\"click\", \"#auditDetailModal\", function (e) {\n if (e.target === this) {\n console.log(\"Modal backdrop clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n }); // ESC key handler\n\n $(document).on(\"keydown\", function (e) {\n if (e.keyCode === 27 && $(\"#auditDetailModal\").hasClass(\"show\")) {\n console.log(\"ESC key pressed\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n }); // Modal hidden event handler\n\n $(\"#auditDetailModal\").on(\"hidden.bs.modal\", function () {\n console.log(\"Modal hidden\"); // Reset modal content\n\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide();\n }); // Apply filters button - only way to trigger table reload\n\n $(\"#apply-filters\").click(function () {\n console.log(\"Apply filters clicked, reloading table...\");\n console.log(\"Current filter values:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val()\n });\n table.ajax.reload();\n }); // Allow Enter key to apply filters on datepicker\n\n $(\"#filter-date\").keypress(function (e) {\n if (e.which == 13) {\n // Enter key\n console.log(\"Enter pressed on date filter, applying filters...\");\n table.ajax.reload();\n }\n }); // Reset filters\n\n $(\"#reset-filters\").click(function () {\n console.log(\"Resetting filters...\"); // Reset select2 elements properly\n\n $(\"#filter-dealer\").val(null).trigger(\"change.select2\");\n $(\"#filter-product\").val(null).trigger(\"change.select2\");\n $(\"#filter-change-type\").val(null).trigger(\"change.select2\"); // Reset datepicker properly\n\n $(\"#filter-date\").val(\"\").datepicker(\"update\");\n console.log(\"Filters reset, values after reset:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val()\n }); // Reload table after reset\n\n console.log(\"Reloading table after reset...\");\n table.ajax.reload();\n });\n});\n\nwindow.showAuditDetail = function (id) {\n console.log(\"Showing audit detail for ID:\", id); // Reset modal states first\n\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide(); // Show modal\n\n $(\"#auditDetailModal\").modal(\"show\");\n $.ajax({\n url: \"/warehouse/stock-audit/\".concat(id, \"/detail\"),\n method: \"GET\",\n success: function success(response) {\n console.log(\"Detail response:\", response);\n $(\"#modal-loading\").hide();\n\n if (response.success) {\n populateModalContent(response.data, response.source_detail);\n $(\"#modal-content\").show();\n } else {\n $(\"#error-message\").text(response.message);\n $(\"#modal-error\").show();\n }\n },\n error: function error(xhr) {\n console.error(\"Detail AJAX error:\", xhr);\n $(\"#modal-loading\").hide();\n $(\"#error-message\").text(\"Gagal memuat detail audit\");\n $(\"#modal-error\").show();\n }\n });\n};\n\nfunction populateModalContent(audit, sourceDetail) {\n console.log(\"Populating modal content:\", audit); // Populate basic stock information\n\n $(\"#product-name\").text(audit.stock.product.name);\n $(\"#dealer-name\").text(audit.stock.dealer.name);\n $(\"#previous-quantity\").text(audit.previous_quantity);\n $(\"#new-quantity\").text(audit.new_quantity);\n $(\"#user-name\").text(audit.user ? audit.user.name : \"-\");\n $(\"#created-at\").text(audit.created_at_formatted);\n $(\"#description\").text(audit.description || \"-\"); // Set quantity change with styling\n\n var quantityChangeClass = \"\";\n var quantityChangeSign = \"\";\n\n if (audit.quantity_change > 0) {\n quantityChangeClass = \"text-success\";\n quantityChangeSign = \"+\";\n } else if (audit.quantity_change < 0) {\n quantityChangeClass = \"text-danger\";\n quantityChangeSign = \"\";\n } else {\n quantityChangeClass = \"text-muted\";\n quantityChangeSign = \"\";\n }\n\n $(\"#quantity-change\").html(\"\").concat(quantityChangeSign).concat(audit.quantity_change, \"\")); // Set change type with styling\n\n var changeTypeClass = \"\";\n\n switch (audit.change_type) {\n case \"increase\":\n changeTypeClass = \"text-success\";\n break;\n\n case \"decrease\":\n changeTypeClass = \"text-danger\";\n break;\n\n case \"adjustment\":\n changeTypeClass = \"text-warning\";\n break;\n\n default:\n changeTypeClass = \"text-muted\";\n }\n\n $(\"#change-type\").html(\"\").concat(audit.change_type_label, \"\")); // Handle source detail\n\n if (sourceDetail) {\n $(\"#source-detail\").show();\n\n if (sourceDetail.type === \"mutation\") {\n var mutation = sourceDetail.data;\n $(\"#source-title\").text(\"Mutasi Stock: \".concat(mutation.mutation_number));\n var mutationContent = \"\\n \\n
\\n
\\n \\n | Dari Dealer: | \\n \".concat(mutation.from_dealer ? mutation.from_dealer.name : \"-\", \" | \\n
\\n \\n | Ke Dealer: | \\n \").concat(mutation.to_dealer ? mutation.to_dealer.name : \"-\", \" | \\n
\\n \\n | Status: | \\n \").concat(mutation.status, \" | \\n
\\n
\\n
\\n
\\n
\\n \\n | Diminta oleh: | \\n \").concat(mutation.requested_by ? mutation.requested_by.name : \"-\", \" | \\n
\\n \\n | Disetujui oleh: | \\n \").concat(mutation.approved_by ? mutation.approved_by.name : \"-\", \" | \\n
\\n \\n | Tanggal Disetujui: | \\n \").concat(mutation.approved_at_formatted || \"-\", \" | \\n
\\n
\\n
\\n
\\n \");\n $(\"#source-content\").html(mutationContent);\n } else if (sourceDetail.type === \"opname\") {\n var opname = sourceDetail.data;\n $(\"#source-title\").text(\"Opname\");\n var opnameContent = \"\\n \\n \\n | Dealer: | \\n \".concat(opname.dealer ? opname.dealer.name : \"-\", \" | \\n
\\n \\n | User: | \\n \").concat(opname.user ? opname.user.name : \"-\", \" | \\n
\\n \\n | Status: | \\n \").concat(opname.status || \"-\", \" | \\n
\\n
\\n \");\n $(\"#source-content\").html(opnameContent);\n }\n } else {\n $(\"#source-detail\").hide();\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25zb2xlIiwibG9nIiwiZm9ybWF0RGF0ZSIsImRhdGVTdHJpbmciLCJkYXRlIiwiRGF0ZSIsIm1vbnRocyIsImRheSIsImdldERhdGUiLCJ0b1N0cmluZyIsInBhZFN0YXJ0IiwibW9udGgiLCJnZXRNb250aCIsInllYXIiLCJnZXRGdWxsWWVhciIsImhvdXJzIiwiZ2V0SG91cnMiLCJtaW51dGVzIiwiZ2V0TWludXRlcyIsIiQiLCJkb2N1bWVudCIsInJlYWR5Iiwic2VsZWN0MiIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsIndpZHRoIiwiZGF0ZXBpY2tlciIsImZvcm1hdCIsImF1dG9jbG9zZSIsInRvZGF5SGlnaGxpZ2h0Iiwib3JpZW50YXRpb24iLCJsYW5ndWFnZSIsImNsZWFyQnRuIiwiY29udGFpbmVyIiwiJHRhYmxlIiwiaW5kZXhSb3V0ZSIsImRhdGEiLCJ0YWJsZSIsIkRhdGFUYWJsZSIsInByb2Nlc3NpbmciLCJzZXJ2ZXJTaWRlIiwibG9hZGluZ1JlY29yZHMiLCJ6ZXJvUmVjb3JkcyIsImVtcHR5VGFibGUiLCJhamF4IiwidXJsIiwiZCIsImRlYWxlciIsInZhbCIsInByb2R1Y3QiLCJjaGFuZ2VfdHlwZSIsIm9yZGVyIiwiY29sdW1ucyIsImVycm9yIiwieGhyIiwidGhyb3duIiwicmVzcG9uc2VUZXh0IiwibmFtZSIsIm9yZGVyYWJsZSIsInNlYXJjaGFibGUiLCJjbGFzc05hbWUiLCJwYWdlTGVuZ3RoIiwicmVzcG9uc2l2ZSIsIm9yZGVyaW5nIiwib3JkZXJNdWx0aSIsIm9uIiwiZSIsInNldHRpbmdzIiwibW9kYWwiLCJ0YXJnZXQiLCJrZXlDb2RlIiwiaGFzQ2xhc3MiLCJzaG93IiwiaGlkZSIsImNsaWNrIiwicmVsb2FkIiwia2V5cHJlc3MiLCJ3aGljaCIsInRyaWdnZXIiLCJ3aW5kb3ciLCJzaG93QXVkaXREZXRhaWwiLCJpZCIsIm1ldGhvZCIsInN1Y2Nlc3MiLCJyZXNwb25zZSIsInBvcHVsYXRlTW9kYWxDb250ZW50Iiwic291cmNlX2RldGFpbCIsInRleHQiLCJtZXNzYWdlIiwiYXVkaXQiLCJzb3VyY2VEZXRhaWwiLCJzdG9jayIsInByZXZpb3VzX3F1YW50aXR5IiwibmV3X3F1YW50aXR5IiwidXNlciIsImNyZWF0ZWRfYXRfZm9ybWF0dGVkIiwiZGVzY3JpcHRpb24iLCJxdWFudGl0eUNoYW5nZUNsYXNzIiwicXVhbnRpdHlDaGFuZ2VTaWduIiwicXVhbnRpdHlfY2hhbmdlIiwiaHRtbCIsImNoYW5nZVR5cGVDbGFzcyIsImNoYW5nZV90eXBlX2xhYmVsIiwidHlwZSIsIm11dGF0aW9uIiwibXV0YXRpb25fbnVtYmVyIiwibXV0YXRpb25Db250ZW50IiwiZnJvbV9kZWFsZXIiLCJ0b19kZWFsZXIiLCJzdGF0dXMiLCJyZXF1ZXN0ZWRfYnkiLCJhcHByb3ZlZF9ieSIsImFwcHJvdmVkX2F0X2Zvcm1hdHRlZCIsIm9wbmFtZSIsIm9wbmFtZUNvbnRlbnQiXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3dhcmVob3VzZV9tYW5hZ2VtZW50L3N0b2NrX2F1ZGl0L2luZGV4LmpzP2Q1MGEiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc29sZS5sb2coXCJTdG9jayBhdWRpdCBKUyBsb2FkZWRcIik7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBmb3JtYXQgZGF0ZVxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gXCItXCI7XG5cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgY29uc3QgbW9udGhzID0gW1xuICAgICAgICBcIkphblwiLFxuICAgICAgICBcIkZlYlwiLFxuICAgICAgICBcIk1hclwiLFxuICAgICAgICBcIkFwclwiLFxuICAgICAgICBcIk1laVwiLFxuICAgICAgICBcIkp1blwiLFxuICAgICAgICBcIkp1bFwiLFxuICAgICAgICBcIkFndVwiLFxuICAgICAgICBcIlNlcFwiLFxuICAgICAgICBcIk9rdFwiLFxuICAgICAgICBcIk5vdlwiLFxuICAgICAgICBcIkRlc1wiLFxuICAgIF07XG5cbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgICBjb25zdCBtb250aCA9IG1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xuXG4gICAgcmV0dXJuIGAke2RheX0gJHttb250aH0gJHt5ZWFyfSwgJHtob3Vyc306JHttaW51dGVzfWA7XG59XG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmxvZyhcIkluaXRpYWxpemluZyBzdG9jayBhdWRpdCB0YWJsZS4uLlwiKTtcblxuICAgIC8vIEluaXRpYWxpemUgU2VsZWN0MiB3aXRob3V0IGFueSBldmVudCBoYW5kbGVyc1xuICAgICQoXCIuc2VsZWN0MlwiKS5zZWxlY3QyKHtcbiAgICAgICAgcGxhY2Vob2xkZXI6IFwiUGlsaWguLi5cIixcbiAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBEYXRlcGlja2VyXG4gICAgJChcIi5kYXRlcGlja2VyXCIpLmRhdGVwaWNrZXIoe1xuICAgICAgICBmb3JtYXQ6IFwieXl5eS1tbS1kZFwiLFxuICAgICAgICBhdXRvY2xvc2U6IHRydWUsXG4gICAgICAgIHRvZGF5SGlnaGxpZ2h0OiB0cnVlLFxuICAgICAgICBvcmllbnRhdGlvbjogXCJib3R0b20gYXV0b1wiLFxuICAgICAgICBsYW5ndWFnZTogXCJpZFwiLFxuICAgICAgICBjbGVhckJ0bjogdHJ1ZSxcbiAgICAgICAgY29udGFpbmVyOiBcImJvZHlcIixcbiAgICB9KTtcblxuICAgIGNvbnN0ICR0YWJsZSA9ICQoXCIjc3RvY2stYXVkaXQtdGFibGVcIik7XG4gICAgY29uc3QgaW5kZXhSb3V0ZSA9ICR0YWJsZS5kYXRhKFwicm91dGVcIik7XG5cbiAgICBjb25zb2xlLmxvZyhcIlRhYmxlIHJvdXRlOlwiLCBpbmRleFJvdXRlKTtcblxuICAgIGxldCB0YWJsZSA9ICR0YWJsZS5EYXRhVGFibGUoe1xuICAgICAgICBwcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgICBzZXJ2ZXJTaWRlOiB0cnVlLFxuICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgICAgcHJvY2Vzc2luZzpcbiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj48c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5NZW1wcm9zZXMuLi48L3NwYW4+PC9kaXY+PC9kaXY+JyxcbiAgICAgICAgICAgIGxvYWRpbmdSZWNvcmRzOiBcIk1lbXVhdCBkYXRhLi4uXCIsXG4gICAgICAgICAgICB6ZXJvUmVjb3JkczogXCJUaWRhayBhZGEgZGF0YSB5YW5nIGRpdGVtdWthblwiLFxuICAgICAgICAgICAgZW1wdHlUYWJsZTogXCJUaWRhayBhZGEgZGF0YSB0ZXJzZWRpYVwiLFxuICAgICAgICB9LFxuICAgICAgICBhamF4OiB7XG4gICAgICAgICAgICB1cmw6IGluZGV4Um91dGUsXG4gICAgICAgICAgICBkYXRhOiBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICAgIGQuZGVhbGVyID0gJChcIiNmaWx0ZXItZGVhbGVyXCIpLnZhbCgpO1xuICAgICAgICAgICAgICAgIGQucHJvZHVjdCA9ICQoXCIjZmlsdGVyLXByb2R1Y3RcIikudmFsKCk7XG4gICAgICAgICAgICAgICAgZC5jaGFuZ2VfdHlwZSA9ICQoXCIjZmlsdGVyLWNoYW5nZS10eXBlXCIpLnZhbCgpO1xuICAgICAgICAgICAgICAgIGQuZGF0ZSA9ICQoXCIjZmlsdGVyLWRhdGVcIikudmFsKCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJBamF4IGRhdGEgd2l0aCBvcmRlcmluZzpcIiwgZCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJPcmRlciBpbmZvOlwiLCBkLm9yZGVyKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNvbHVtbnMgaW5mbzpcIiwgZC5jb2x1bW5zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhociwgZXJyb3IsIHRocm93bikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBamF4IGVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlJlc3BvbnNlOlwiLCB4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcIkRUX1Jvd0luZGV4XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJEVF9Sb3dJbmRleFwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiNSVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJwcm9kdWN0X25hbWVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInByb2R1Y3RfbmFtZVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJkZWFsZXJfbmFtZVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVhbGVyX25hbWVcIixcbiAgICAgICAgICAgICAgICBvcmRlcmFibGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IFwiY2hhbmdlX3R5cGVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNoYW5nZV90eXBlXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcInF1YW50aXR5X2NoYW5nZVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwicXVhbnRpdHlfY2hhbmdlXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInRleHQtY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcInN0b2NrX2JlZm9yZV9hZnRlclwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwic3RvY2tfYmVmb3JlX2FmdGVyXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInRleHQtY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcInNvdXJjZV9pbmZvXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJzb3VyY2VfaW5mb1wiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJ1c2VyX25hbWVcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVzZXJfbmFtZVwiLFxuICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBcImFjdGlvblwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgb3JkZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMCVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG9yZGVyOiBbWzgsIFwiZGVzY1wiXV0sIC8vIE9yZGVyIGJ5IGNyZWF0ZWRfYXQgZGVzYyAoY29sdW1uIGluZGV4IDgpXG4gICAgICAgIHBhZ2VMZW5ndGg6IDI1LFxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgICBvcmRlcmluZzogdHJ1ZSwgLy8gRW5hYmxlIGNvbHVtbiBvcmRlcmluZ1xuICAgICAgICBvcmRlck11bHRpOiBmYWxzZSwgLy8gU2luZ2xlIGNvbHVtbiBvcmRlcmluZyBvbmx5XG4gICAgfSk7XG5cbiAgICBjb25zb2xlLmxvZyhcIlRhYmxlIGluaXRpYWxpemVkOlwiLCB0YWJsZSk7XG5cbiAgICAvLyBBZGQgbG9hZGluZyBpbmRpY2F0b3IgZm9yIG9yZGVyaW5nXG4gICAgdGFibGUub24oXCJwcm9jZXNzaW5nLmR0XCIsIGZ1bmN0aW9uIChlLCBzZXR0aW5ncywgcHJvY2Vzc2luZykge1xuICAgICAgICBpZiAocHJvY2Vzc2luZykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJEYXRhVGFibGUgcHJvY2Vzc2luZyBzdGFydGVkIChvcmRlcmluZy9maWx0ZXJpbmcpXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJEYXRhVGFibGUgcHJvY2Vzc2luZyBmaW5pc2hlZFwiKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRGVidWcgb3JkZXIgZXZlbnRzXG4gICAgdGFibGUub24oXCJvcmRlci5kdFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiT3JkZXIgY2hhbmdlZDpcIiwgdGFibGUub3JkZXIoKSk7XG4gICAgfSk7XG5cbiAgICAvLyBNYW51YWwgbW9kYWwgY2xvc2UgaGFuZGxlcnNcbiAgICAkKGRvY3VtZW50KS5vbihcbiAgICAgICAgXCJjbGlja1wiLFxuICAgICAgICBcIiNtb2RhbC1jbG9zZS1idG4sICNtb2RhbC1jbG9zZS1mb290ZXItYnRuXCIsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTWFudWFsIGNsb3NlIGJ1dHRvbiBjbGlja2VkXCIpO1xuICAgICAgICAgICAgJChcIiNhdWRpdERldGFpbE1vZGFsXCIpLm1vZGFsKFwiaGlkZVwiKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBNb2RhbCBiYWNrZHJvcCBjbGljayBoYW5kbGVyXG4gICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBcIiNhdWRpdERldGFpbE1vZGFsXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gdGhpcykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJNb2RhbCBiYWNrZHJvcCBjbGlja2VkXCIpO1xuICAgICAgICAgICAgJChcIiNhdWRpdERldGFpbE1vZGFsXCIpLm1vZGFsKFwiaGlkZVwiKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRVNDIGtleSBoYW5kbGVyXG4gICAgJChkb2N1bWVudCkub24oXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3ICYmICQoXCIjYXVkaXREZXRhaWxNb2RhbFwiKS5oYXNDbGFzcyhcInNob3dcIikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVNDIGtleSBwcmVzc2VkXCIpO1xuICAgICAgICAgICAgJChcIiNhdWRpdERldGFpbE1vZGFsXCIpLm1vZGFsKFwiaGlkZVwiKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTW9kYWwgaGlkZGVuIGV2ZW50IGhhbmRsZXJcbiAgICAkKFwiI2F1ZGl0RGV0YWlsTW9kYWxcIikub24oXCJoaWRkZW4uYnMubW9kYWxcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk1vZGFsIGhpZGRlblwiKTtcbiAgICAgICAgLy8gUmVzZXQgbW9kYWwgY29udGVudFxuICAgICAgICAkKFwiI21vZGFsLWxvYWRpbmdcIikuc2hvdygpO1xuICAgICAgICAkKFwiI21vZGFsLWVycm9yXCIpLmhpZGUoKTtcbiAgICAgICAgJChcIiNtb2RhbC1jb250ZW50XCIpLmhpZGUoKTtcbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGZpbHRlcnMgYnV0dG9uIC0gb25seSB3YXkgdG8gdHJpZ2dlciB0YWJsZSByZWxvYWRcbiAgICAkKFwiI2FwcGx5LWZpbHRlcnNcIikuY2xpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkFwcGx5IGZpbHRlcnMgY2xpY2tlZCwgcmVsb2FkaW5nIHRhYmxlLi4uXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIkN1cnJlbnQgZmlsdGVyIHZhbHVlczpcIiwge1xuICAgICAgICAgICAgZGVhbGVyOiAkKFwiI2ZpbHRlci1kZWFsZXJcIikudmFsKCksXG4gICAgICAgICAgICBwcm9kdWN0OiAkKFwiI2ZpbHRlci1wcm9kdWN0XCIpLnZhbCgpLFxuICAgICAgICAgICAgY2hhbmdlX3R5cGU6ICQoXCIjZmlsdGVyLWNoYW5nZS10eXBlXCIpLnZhbCgpLFxuICAgICAgICAgICAgZGF0ZTogJChcIiNmaWx0ZXItZGF0ZVwiKS52YWwoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRhYmxlLmFqYXgucmVsb2FkKCk7XG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBFbnRlciBrZXkgdG8gYXBwbHkgZmlsdGVycyBvbiBkYXRlcGlja2VyXG4gICAgJChcIiNmaWx0ZXItZGF0ZVwiKS5rZXlwcmVzcyhmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS53aGljaCA9PSAxMykge1xuICAgICAgICAgICAgLy8gRW50ZXIga2V5XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVudGVyIHByZXNzZWQgb24gZGF0ZSBmaWx0ZXIsIGFwcGx5aW5nIGZpbHRlcnMuLi5cIik7XG4gICAgICAgICAgICB0YWJsZS5hamF4LnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBSZXNldCBmaWx0ZXJzXG4gICAgJChcIiNyZXNldC1maWx0ZXJzXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJSZXNldHRpbmcgZmlsdGVycy4uLlwiKTtcblxuICAgICAgICAvLyBSZXNldCBzZWxlY3QyIGVsZW1lbnRzIHByb3Blcmx5XG4gICAgICAgICQoXCIjZmlsdGVyLWRlYWxlclwiKS52YWwobnVsbCkudHJpZ2dlcihcImNoYW5nZS5zZWxlY3QyXCIpO1xuICAgICAgICAkKFwiI2ZpbHRlci1wcm9kdWN0XCIpLnZhbChudWxsKS50cmlnZ2VyKFwiY2hhbmdlLnNlbGVjdDJcIik7XG4gICAgICAgICQoXCIjZmlsdGVyLWNoYW5nZS10eXBlXCIpLnZhbChudWxsKS50cmlnZ2VyKFwiY2hhbmdlLnNlbGVjdDJcIik7XG5cbiAgICAgICAgLy8gUmVzZXQgZGF0ZXBpY2tlciBwcm9wZXJseVxuICAgICAgICAkKFwiI2ZpbHRlci1kYXRlXCIpLnZhbChcIlwiKS5kYXRlcGlja2VyKFwidXBkYXRlXCIpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRmlsdGVycyByZXNldCwgdmFsdWVzIGFmdGVyIHJlc2V0OlwiLCB7XG4gICAgICAgICAgICBkZWFsZXI6ICQoXCIjZmlsdGVyLWRlYWxlclwiKS52YWwoKSxcbiAgICAgICAgICAgIHByb2R1Y3Q6ICQoXCIjZmlsdGVyLXByb2R1Y3RcIikudmFsKCksXG4gICAgICAgICAgICBjaGFuZ2VfdHlwZTogJChcIiNmaWx0ZXItY2hhbmdlLXR5cGVcIikudmFsKCksXG4gICAgICAgICAgICBkYXRlOiAkKFwiI2ZpbHRlci1kYXRlXCIpLnZhbCgpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWxvYWQgdGFibGUgYWZ0ZXIgcmVzZXRcbiAgICAgICAgY29uc29sZS5sb2coXCJSZWxvYWRpbmcgdGFibGUgYWZ0ZXIgcmVzZXQuLi5cIik7XG4gICAgICAgIHRhYmxlLmFqYXgucmVsb2FkKCk7XG4gICAgfSk7XG59KTtcblxud2luZG93LnNob3dBdWRpdERldGFpbCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIGNvbnNvbGUubG9nKFwiU2hvd2luZyBhdWRpdCBkZXRhaWwgZm9yIElEOlwiLCBpZCk7XG5cbiAgICAvLyBSZXNldCBtb2RhbCBzdGF0ZXMgZmlyc3RcbiAgICAkKFwiI21vZGFsLWxvYWRpbmdcIikuc2hvdygpO1xuICAgICQoXCIjbW9kYWwtZXJyb3JcIikuaGlkZSgpO1xuICAgICQoXCIjbW9kYWwtY29udGVudFwiKS5oaWRlKCk7XG5cbiAgICAvLyBTaG93IG1vZGFsXG4gICAgJChcIiNhdWRpdERldGFpbE1vZGFsXCIpLm1vZGFsKFwic2hvd1wiKTtcblxuICAgICQuYWpheCh7XG4gICAgICAgIHVybDogYC93YXJlaG91c2Uvc3RvY2stYXVkaXQvJHtpZH0vZGV0YWlsYCxcbiAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGV0YWlsIHJlc3BvbnNlOlwiLCByZXNwb25zZSk7XG4gICAgICAgICAgICAkKFwiI21vZGFsLWxvYWRpbmdcIikuaGlkZSgpO1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHBvcHVsYXRlTW9kYWxDb250ZW50KHJlc3BvbnNlLmRhdGEsIHJlc3BvbnNlLnNvdXJjZV9kZXRhaWwpO1xuICAgICAgICAgICAgICAgICQoXCIjbW9kYWwtY29udGVudFwiKS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoXCIjZXJyb3ItbWVzc2FnZVwiKS50ZXh0KHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICQoXCIjbW9kYWwtZXJyb3JcIikuc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZnVuY3Rpb24gKHhocikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkRldGFpbCBBSkFYIGVycm9yOlwiLCB4aHIpO1xuICAgICAgICAgICAgJChcIiNtb2RhbC1sb2FkaW5nXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICQoXCIjZXJyb3ItbWVzc2FnZVwiKS50ZXh0KFwiR2FnYWwgbWVtdWF0IGRldGFpbCBhdWRpdFwiKTtcbiAgICAgICAgICAgICQoXCIjbW9kYWwtZXJyb3JcIikuc2hvdygpO1xuICAgICAgICB9LFxuICAgIH0pO1xufTtcblxuZnVuY3Rpb24gcG9wdWxhdGVNb2RhbENvbnRlbnQoYXVkaXQsIHNvdXJjZURldGFpbCkge1xuICAgIGNvbnNvbGUubG9nKFwiUG9wdWxhdGluZyBtb2RhbCBjb250ZW50OlwiLCBhdWRpdCk7XG5cbiAgICAvLyBQb3B1bGF0ZSBiYXNpYyBzdG9jayBpbmZvcm1hdGlvblxuICAgICQoXCIjcHJvZHVjdC1uYW1lXCIpLnRleHQoYXVkaXQuc3RvY2sucHJvZHVjdC5uYW1lKTtcbiAgICAkKFwiI2RlYWxlci1uYW1lXCIpLnRleHQoYXVkaXQuc3RvY2suZGVhbGVyLm5hbWUpO1xuICAgICQoXCIjcHJldmlvdXMtcXVhbnRpdHlcIikudGV4dChhdWRpdC5wcmV2aW91c19xdWFudGl0eSk7XG4gICAgJChcIiNuZXctcXVhbnRpdHlcIikudGV4dChhdWRpdC5uZXdfcXVhbnRpdHkpO1xuICAgICQoXCIjdXNlci1uYW1lXCIpLnRleHQoYXVkaXQudXNlciA/IGF1ZGl0LnVzZXIubmFtZSA6IFwiLVwiKTtcbiAgICAkKFwiI2NyZWF0ZWQtYXRcIikudGV4dChhdWRpdC5jcmVhdGVkX2F0X2Zvcm1hdHRlZCk7XG4gICAgJChcIiNkZXNjcmlwdGlvblwiKS50ZXh0KGF1ZGl0LmRlc2NyaXB0aW9uIHx8IFwiLVwiKTtcblxuICAgIC8vIFNldCBxdWFudGl0eSBjaGFuZ2Ugd2l0aCBzdHlsaW5nXG4gICAgbGV0IHF1YW50aXR5Q2hhbmdlQ2xhc3MgPSBcIlwiO1xuICAgIGxldCBxdWFudGl0eUNoYW5nZVNpZ24gPSBcIlwiO1xuICAgIGlmIChhdWRpdC5xdWFudGl0eV9jaGFuZ2UgPiAwKSB7XG4gICAgICAgIHF1YW50aXR5Q2hhbmdlQ2xhc3MgPSBcInRleHQtc3VjY2Vzc1wiO1xuICAgICAgICBxdWFudGl0eUNoYW5nZVNpZ24gPSBcIitcIjtcbiAgICB9IGVsc2UgaWYgKGF1ZGl0LnF1YW50aXR5X2NoYW5nZSA8IDApIHtcbiAgICAgICAgcXVhbnRpdHlDaGFuZ2VDbGFzcyA9IFwidGV4dC1kYW5nZXJcIjtcbiAgICAgICAgcXVhbnRpdHlDaGFuZ2VTaWduID0gXCJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWFudGl0eUNoYW5nZUNsYXNzID0gXCJ0ZXh0LW11dGVkXCI7XG4gICAgICAgIHF1YW50aXR5Q2hhbmdlU2lnbiA9IFwiXCI7XG4gICAgfVxuICAgICQoXCIjcXVhbnRpdHktY2hhbmdlXCIpLmh0bWwoXG4gICAgICAgIGA8c3BhbiBjbGFzcz1cIiR7cXVhbnRpdHlDaGFuZ2VDbGFzc31cIj4ke3F1YW50aXR5Q2hhbmdlU2lnbn0ke2F1ZGl0LnF1YW50aXR5X2NoYW5nZX08L3NwYW4+YFxuICAgICk7XG5cbiAgICAvLyBTZXQgY2hhbmdlIHR5cGUgd2l0aCBzdHlsaW5nXG4gICAgbGV0IGNoYW5nZVR5cGVDbGFzcyA9IFwiXCI7XG4gICAgc3dpdGNoIChhdWRpdC5jaGFuZ2VfdHlwZSkge1xuICAgICAgICBjYXNlIFwiaW5jcmVhc2VcIjpcbiAgICAgICAgICAgIGNoYW5nZVR5cGVDbGFzcyA9IFwidGV4dC1zdWNjZXNzXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRlY3JlYXNlXCI6XG4gICAgICAgICAgICBjaGFuZ2VUeXBlQ2xhc3MgPSBcInRleHQtZGFuZ2VyXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImFkanVzdG1lbnRcIjpcbiAgICAgICAgICAgIGNoYW5nZVR5cGVDbGFzcyA9IFwidGV4dC13YXJuaW5nXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNoYW5nZVR5cGVDbGFzcyA9IFwidGV4dC1tdXRlZFwiO1xuICAgIH1cbiAgICAkKFwiI2NoYW5nZS10eXBlXCIpLmh0bWwoXG4gICAgICAgIGA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGQgJHtjaGFuZ2VUeXBlQ2xhc3N9XCI+JHthdWRpdC5jaGFuZ2VfdHlwZV9sYWJlbH08L3NwYW4+YFxuICAgICk7XG5cbiAgICAvLyBIYW5kbGUgc291cmNlIGRldGFpbFxuICAgIGlmIChzb3VyY2VEZXRhaWwpIHtcbiAgICAgICAgJChcIiNzb3VyY2UtZGV0YWlsXCIpLnNob3coKTtcblxuICAgICAgICBpZiAoc291cmNlRGV0YWlsLnR5cGUgPT09IFwibXV0YXRpb25cIikge1xuICAgICAgICAgICAgbGV0IG11dGF0aW9uID0gc291cmNlRGV0YWlsLmRhdGE7XG4gICAgICAgICAgICAkKFwiI3NvdXJjZS10aXRsZVwiKS50ZXh0KFxuICAgICAgICAgICAgICAgIGBNdXRhc2kgU3RvY2s6ICR7bXV0YXRpb24ubXV0YXRpb25fbnVtYmVyfWBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxldCBtdXRhdGlvbkNvbnRlbnQgPSBgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5EYXJpIERlYWxlcjo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLmZyb21fZGVhbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtdXRhdGlvbi5mcm9tX2RlYWxlci5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIi1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+S2UgRGVhbGVyOjwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24udG9fZGVhbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtdXRhdGlvbi50b19kZWFsZXIubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCItXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPlN0YXR1czo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHttdXRhdGlvbi5zdGF0dXN9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPkRpbWludGEgb2xlaDo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLnJlcXVlc3RlZF9ieVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbXV0YXRpb24ucmVxdWVzdGVkX2J5Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiLVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5EaXNldHVqdWkgb2xlaDo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLmFwcHJvdmVkX2J5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtdXRhdGlvbi5hcHByb3ZlZF9ieS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIi1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+VGFuZ2dhbCBEaXNldHVqdWk6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbi5hcHByb3ZlZF9hdF9mb3JtYXR0ZWQgfHwgXCItXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgICAgICAgICAgICQoXCIjc291cmNlLWNvbnRlbnRcIikuaHRtbChtdXRhdGlvbkNvbnRlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZURldGFpbC50eXBlID09PSBcIm9wbmFtZVwiKSB7XG4gICAgICAgICAgICBsZXQgb3BuYW1lID0gc291cmNlRGV0YWlsLmRhdGE7XG4gICAgICAgICAgICAkKFwiI3NvdXJjZS10aXRsZVwiKS50ZXh0KFwiT3BuYW1lXCIpO1xuXG4gICAgICAgICAgICBsZXQgb3BuYW1lQ29udGVudCA9IGBcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5EZWFsZXI6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke29wbmFtZS5kZWFsZXIgPyBvcG5hbWUuZGVhbGVyLm5hbWUgOiBcIi1cIn08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5Vc2VyOjwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHtvcG5hbWUudXNlciA/IG9wbmFtZS51c2VyLm5hbWUgOiBcIi1cIn08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz5TdGF0dXM6PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke29wbmFtZS5zdGF0dXMgfHwgXCItXCJ9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgYDtcbiAgICAgICAgICAgICQoXCIjc291cmNlLWNvbnRlbnRcIikuaHRtbChvcG5hbWVDb250ZW50KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgICQoXCIjc291cmNlLWRldGFpbFwiKS5oaWRlKCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksdUJBQVosRSxDQUVBOztBQUNBLFNBQVNDLFVBQVQsQ0FBb0JDLFVBQXBCLEVBQWdDO0VBQzVCLElBQUksQ0FBQ0EsVUFBTCxFQUFpQixPQUFPLEdBQVA7RUFFakIsSUFBTUMsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBU0YsVUFBVCxDQUFiO0VBQ0EsSUFBTUcsTUFBTSxHQUFHLENBQ1gsS0FEVyxFQUVYLEtBRlcsRUFHWCxLQUhXLEVBSVgsS0FKVyxFQUtYLEtBTFcsRUFNWCxLQU5XLEVBT1gsS0FQVyxFQVFYLEtBUlcsRUFTWCxLQVRXLEVBVVgsS0FWVyxFQVdYLEtBWFcsRUFZWCxLQVpXLENBQWY7RUFlQSxJQUFNQyxHQUFHLEdBQUdILElBQUksQ0FBQ0ksT0FBTCxHQUFlQyxRQUFmLEdBQTBCQyxRQUExQixDQUFtQyxDQUFuQyxFQUFzQyxHQUF0QyxDQUFaO0VBQ0EsSUFBTUMsS0FBSyxHQUFHTCxNQUFNLENBQUNGLElBQUksQ0FBQ1EsUUFBTCxFQUFELENBQXBCO0VBQ0EsSUFBTUMsSUFBSSxHQUFHVCxJQUFJLENBQUNVLFdBQUwsRUFBYjtFQUNBLElBQU1DLEtBQUssR0FBR1gsSUFBSSxDQUFDWSxRQUFMLEdBQWdCUCxRQUFoQixHQUEyQkMsUUFBM0IsQ0FBb0MsQ0FBcEMsRUFBdUMsR0FBdkMsQ0FBZDtFQUNBLElBQU1PLE9BQU8sR0FBR2IsSUFBSSxDQUFDYyxVQUFMLEdBQWtCVCxRQUFsQixHQUE2QkMsUUFBN0IsQ0FBc0MsQ0FBdEMsRUFBeUMsR0FBekMsQ0FBaEI7RUFFQSxpQkFBVUgsR0FBVixjQUFpQkksS0FBakIsY0FBMEJFLElBQTFCLGVBQW1DRSxLQUFuQyxjQUE0Q0UsT0FBNUM7QUFDSDs7QUFFREUsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQixZQUFZO0VBQzFCckIsT0FBTyxDQUFDQyxHQUFSLENBQVksbUNBQVosRUFEMEIsQ0FHMUI7O0VBQ0FrQixDQUFDLENBQUMsVUFBRCxDQUFELENBQWNHLE9BQWQsQ0FBc0I7SUFDbEJDLFdBQVcsRUFBRSxVQURLO0lBRWxCQyxVQUFVLEVBQUUsSUFGTTtJQUdsQkMsS0FBSyxFQUFFO0VBSFcsQ0FBdEIsRUFKMEIsQ0FVMUI7O0VBQ0FOLENBQUMsQ0FBQyxhQUFELENBQUQsQ0FBaUJPLFVBQWpCLENBQTRCO0lBQ3hCQyxNQUFNLEVBQUUsWUFEZ0I7SUFFeEJDLFNBQVMsRUFBRSxJQUZhO0lBR3hCQyxjQUFjLEVBQUUsSUFIUTtJQUl4QkMsV0FBVyxFQUFFLGFBSlc7SUFLeEJDLFFBQVEsRUFBRSxJQUxjO0lBTXhCQyxRQUFRLEVBQUUsSUFOYztJQU94QkMsU0FBUyxFQUFFO0VBUGEsQ0FBNUI7RUFVQSxJQUFNQyxNQUFNLEdBQUdmLENBQUMsQ0FBQyxvQkFBRCxDQUFoQjtFQUNBLElBQU1nQixVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsSUFBUCxDQUFZLE9BQVosQ0FBbkI7RUFFQXBDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGNBQVosRUFBNEJrQyxVQUE1QjtFQUVBLElBQUlFLEtBQUssR0FBR0gsTUFBTSxDQUFDSSxTQUFQLENBQWlCO0lBQ3pCQyxVQUFVLEVBQUUsSUFEYTtJQUV6QkMsVUFBVSxFQUFFLElBRmE7SUFHekJULFFBQVEsRUFBRTtNQUNOUSxVQUFVLEVBQ04seUpBRkU7TUFHTkUsY0FBYyxFQUFFLGdCQUhWO01BSU5DLFdBQVcsRUFBRSwrQkFKUDtNQUtOQyxVQUFVLEVBQUU7SUFMTixDQUhlO0lBVXpCQyxJQUFJLEVBQUU7TUFDRkMsR0FBRyxFQUFFVixVQURIO01BRUZDLElBQUksRUFBRSxjQUFVVSxDQUFWLEVBQWE7UUFDZkEsQ0FBQyxDQUFDQyxNQUFGLEdBQVc1QixDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQjZCLEdBQXBCLEVBQVg7UUFDQUYsQ0FBQyxDQUFDRyxPQUFGLEdBQVk5QixDQUFDLENBQUMsaUJBQUQsQ0FBRCxDQUFxQjZCLEdBQXJCLEVBQVo7UUFDQUYsQ0FBQyxDQUFDSSxXQUFGLEdBQWdCL0IsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUI2QixHQUF6QixFQUFoQjtRQUNBRixDQUFDLENBQUMxQyxJQUFGLEdBQVNlLENBQUMsQ0FBQyxjQUFELENBQUQsQ0FBa0I2QixHQUFsQixFQUFUO1FBQ0FoRCxPQUFPLENBQUNDLEdBQVIsQ0FBWSwwQkFBWixFQUF3QzZDLENBQXhDO1FBQ0E5QyxPQUFPLENBQUNDLEdBQVIsQ0FBWSxhQUFaLEVBQTJCNkMsQ0FBQyxDQUFDSyxLQUE3QjtRQUNBbkQsT0FBTyxDQUFDQyxHQUFSLENBQVksZUFBWixFQUE2QjZDLENBQUMsQ0FBQ00sT0FBL0I7TUFDSCxDQVZDO01BV0ZDLEtBQUssRUFBRSxlQUFVQyxHQUFWLEVBQWVELE1BQWYsRUFBc0JFLE1BQXRCLEVBQThCO1FBQ2pDdkQsT0FBTyxDQUFDcUQsS0FBUixDQUFjLGFBQWQsRUFBNkJBLE1BQTdCO1FBQ0FyRCxPQUFPLENBQUNxRCxLQUFSLENBQWMsV0FBZCxFQUEyQkMsR0FBRyxDQUFDRSxZQUEvQjtNQUNIO0lBZEMsQ0FWbUI7SUEwQnpCSixPQUFPLEVBQUUsQ0FDTDtNQUNJaEIsSUFBSSxFQUFFLGFBRFY7TUFFSXFCLElBQUksRUFBRSxhQUZWO01BR0lDLFNBQVMsRUFBRSxLQUhmO01BSUlDLFVBQVUsRUFBRSxLQUpoQjtNQUtJbEMsS0FBSyxFQUFFO0lBTFgsQ0FESyxFQVFMO01BQ0lXLElBQUksRUFBRSxjQURWO01BRUlxQixJQUFJLEVBQUUsY0FGVjtNQUdJQyxTQUFTLEVBQUU7SUFIZixDQVJLLEVBYUw7TUFDSXRCLElBQUksRUFBRSxhQURWO01BRUlxQixJQUFJLEVBQUUsYUFGVjtNQUdJQyxTQUFTLEVBQUU7SUFIZixDQWJLLEVBa0JMO01BQ0l0QixJQUFJLEVBQUUsYUFEVjtNQUVJcUIsSUFBSSxFQUFFLGFBRlY7TUFHSUMsU0FBUyxFQUFFO0lBSGYsQ0FsQkssRUF1Qkw7TUFDSXRCLElBQUksRUFBRSxpQkFEVjtNQUVJcUIsSUFBSSxFQUFFLGlCQUZWO01BR0lHLFNBQVMsRUFBRSxhQUhmO01BSUlGLFNBQVMsRUFBRTtJQUpmLENBdkJLLEVBNkJMO01BQ0l0QixJQUFJLEVBQUUsb0JBRFY7TUFFSXFCLElBQUksRUFBRSxvQkFGVjtNQUdJRyxTQUFTLEVBQUUsYUFIZjtNQUlJRixTQUFTLEVBQUU7SUFKZixDQTdCSyxFQW1DTDtNQUNJdEIsSUFBSSxFQUFFLGFBRFY7TUFFSXFCLElBQUksRUFBRSxhQUZWO01BR0lDLFNBQVMsRUFBRTtJQUhmLENBbkNLLEVBd0NMO01BQ0l0QixJQUFJLEVBQUUsV0FEVjtNQUVJcUIsSUFBSSxFQUFFLFdBRlY7TUFHSUMsU0FBUyxFQUFFO0lBSGYsQ0F4Q0ssRUE2Q0w7TUFDSXRCLElBQUksRUFBRSxZQURWO01BRUlxQixJQUFJLEVBQUUsWUFGVjtNQUdJQyxTQUFTLEVBQUU7SUFIZixDQTdDSyxFQWtETDtNQUNJdEIsSUFBSSxFQUFFLFFBRFY7TUFFSXFCLElBQUksRUFBRSxRQUZWO01BR0lDLFNBQVMsRUFBRSxLQUhmO01BSUlDLFVBQVUsRUFBRSxLQUpoQjtNQUtJbEMsS0FBSyxFQUFFO0lBTFgsQ0FsREssQ0ExQmdCO0lBb0Z6QjBCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBRCxFQUFJLE1BQUosQ0FBRCxDQXBGa0I7SUFvRkg7SUFDdEJVLFVBQVUsRUFBRSxFQXJGYTtJQXNGekJDLFVBQVUsRUFBRSxJQXRGYTtJQXVGekJDLFFBQVEsRUFBRSxJQXZGZTtJQXVGVDtJQUNoQkMsVUFBVSxFQUFFLEtBeEZhLENBd0ZOOztFQXhGTSxDQUFqQixDQUFaO0VBMkZBaEUsT0FBTyxDQUFDQyxHQUFSLENBQVksb0JBQVosRUFBa0NvQyxLQUFsQyxFQXJIMEIsQ0F1SDFCOztFQUNBQSxLQUFLLENBQUM0QixFQUFOLENBQVMsZUFBVCxFQUEwQixVQUFVQyxDQUFWLEVBQWFDLFFBQWIsRUFBdUI1QixVQUF2QixFQUFtQztJQUN6RCxJQUFJQSxVQUFKLEVBQWdCO01BQ1p2QyxPQUFPLENBQUNDLEdBQVIsQ0FBWSxtREFBWjtJQUNILENBRkQsTUFFTztNQUNIRCxPQUFPLENBQUNDLEdBQVIsQ0FBWSwrQkFBWjtJQUNIO0VBQ0osQ0FORCxFQXhIMEIsQ0FnSTFCOztFQUNBb0MsS0FBSyxDQUFDNEIsRUFBTixDQUFTLFVBQVQsRUFBcUIsWUFBWTtJQUM3QmpFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGdCQUFaLEVBQThCb0MsS0FBSyxDQUFDYyxLQUFOLEVBQTlCO0VBQ0gsQ0FGRCxFQWpJMEIsQ0FxSTFCOztFQUNBaEMsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWTZDLEVBQVosQ0FDSSxPQURKLEVBRUksMkNBRkosRUFHSSxZQUFZO0lBQ1JqRSxPQUFPLENBQUNDLEdBQVIsQ0FBWSw2QkFBWjtJQUNBa0IsQ0FBQyxDQUFDLG1CQUFELENBQUQsQ0FBdUJpRCxLQUF2QixDQUE2QixNQUE3QjtFQUNILENBTkwsRUF0STBCLENBK0kxQjs7RUFDQWpELENBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVk2QyxFQUFaLENBQWUsT0FBZixFQUF3QixtQkFBeEIsRUFBNkMsVUFBVUMsQ0FBVixFQUFhO0lBQ3RELElBQUlBLENBQUMsQ0FBQ0csTUFBRixLQUFhLElBQWpCLEVBQXVCO01BQ25CckUsT0FBTyxDQUFDQyxHQUFSLENBQVksd0JBQVo7TUFDQWtCLENBQUMsQ0FBQyxtQkFBRCxDQUFELENBQXVCaUQsS0FBdkIsQ0FBNkIsTUFBN0I7SUFDSDtFQUNKLENBTEQsRUFoSjBCLENBdUoxQjs7RUFDQWpELENBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVk2QyxFQUFaLENBQWUsU0FBZixFQUEwQixVQUFVQyxDQUFWLEVBQWE7SUFDbkMsSUFBSUEsQ0FBQyxDQUFDSSxPQUFGLEtBQWMsRUFBZCxJQUFvQm5ELENBQUMsQ0FBQyxtQkFBRCxDQUFELENBQXVCb0QsUUFBdkIsQ0FBZ0MsTUFBaEMsQ0FBeEIsRUFBaUU7TUFDN0R2RSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxpQkFBWjtNQUNBa0IsQ0FBQyxDQUFDLG1CQUFELENBQUQsQ0FBdUJpRCxLQUF2QixDQUE2QixNQUE3QjtJQUNIO0VBQ0osQ0FMRCxFQXhKMEIsQ0ErSjFCOztFQUNBakQsQ0FBQyxDQUFDLG1CQUFELENBQUQsQ0FBdUI4QyxFQUF2QixDQUEwQixpQkFBMUIsRUFBNkMsWUFBWTtJQUNyRGpFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGNBQVosRUFEcUQsQ0FFckQ7O0lBQ0FrQixDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnFELElBQXBCO0lBQ0FyRCxDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCc0QsSUFBbEI7SUFDQXRELENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9Cc0QsSUFBcEI7RUFDSCxDQU5ELEVBaEswQixDQXdLMUI7O0VBQ0F0RCxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnVELEtBQXBCLENBQTBCLFlBQVk7SUFDbEMxRSxPQUFPLENBQUNDLEdBQVIsQ0FBWSwyQ0FBWjtJQUNBRCxPQUFPLENBQUNDLEdBQVIsQ0FBWSx3QkFBWixFQUFzQztNQUNsQzhDLE1BQU0sRUFBRTVCLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CNkIsR0FBcEIsRUFEMEI7TUFFbENDLE9BQU8sRUFBRTlCLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCNkIsR0FBckIsRUFGeUI7TUFHbENFLFdBQVcsRUFBRS9CLENBQUMsQ0FBQyxxQkFBRCxDQUFELENBQXlCNkIsR0FBekIsRUFIcUI7TUFJbEM1QyxJQUFJLEVBQUVlLENBQUMsQ0FBQyxjQUFELENBQUQsQ0FBa0I2QixHQUFsQjtJQUo0QixDQUF0QztJQU1BWCxLQUFLLENBQUNPLElBQU4sQ0FBVytCLE1BQVg7RUFDSCxDQVRELEVBekswQixDQW9MMUI7O0VBQ0F4RCxDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCeUQsUUFBbEIsQ0FBMkIsVUFBVVYsQ0FBVixFQUFhO0lBQ3BDLElBQUlBLENBQUMsQ0FBQ1csS0FBRixJQUFXLEVBQWYsRUFBbUI7TUFDZjtNQUNBN0UsT0FBTyxDQUFDQyxHQUFSLENBQVksbURBQVo7TUFDQW9DLEtBQUssQ0FBQ08sSUFBTixDQUFXK0IsTUFBWDtJQUNIO0VBQ0osQ0FORCxFQXJMMEIsQ0E2TDFCOztFQUNBeEQsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0J1RCxLQUFwQixDQUEwQixZQUFZO0lBQ2xDMUUsT0FBTyxDQUFDQyxHQUFSLENBQVksc0JBQVosRUFEa0MsQ0FHbEM7O0lBQ0FrQixDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQjZCLEdBQXBCLENBQXdCLElBQXhCLEVBQThCOEIsT0FBOUIsQ0FBc0MsZ0JBQXRDO0lBQ0EzRCxDQUFDLENBQUMsaUJBQUQsQ0FBRCxDQUFxQjZCLEdBQXJCLENBQXlCLElBQXpCLEVBQStCOEIsT0FBL0IsQ0FBdUMsZ0JBQXZDO0lBQ0EzRCxDQUFDLENBQUMscUJBQUQsQ0FBRCxDQUF5QjZCLEdBQXpCLENBQTZCLElBQTdCLEVBQW1DOEIsT0FBbkMsQ0FBMkMsZ0JBQTNDLEVBTmtDLENBUWxDOztJQUNBM0QsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQjZCLEdBQWxCLENBQXNCLEVBQXRCLEVBQTBCdEIsVUFBMUIsQ0FBcUMsUUFBckM7SUFFQTFCLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLG9DQUFaLEVBQWtEO01BQzlDOEMsTUFBTSxFQUFFNUIsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0I2QixHQUFwQixFQURzQztNQUU5Q0MsT0FBTyxFQUFFOUIsQ0FBQyxDQUFDLGlCQUFELENBQUQsQ0FBcUI2QixHQUFyQixFQUZxQztNQUc5Q0UsV0FBVyxFQUFFL0IsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUI2QixHQUF6QixFQUhpQztNQUk5QzVDLElBQUksRUFBRWUsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQjZCLEdBQWxCO0lBSndDLENBQWxELEVBWGtDLENBa0JsQzs7SUFDQWhELE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGdDQUFaO0lBQ0FvQyxLQUFLLENBQUNPLElBQU4sQ0FBVytCLE1BQVg7RUFDSCxDQXJCRDtBQXNCSCxDQXBORDs7QUFzTkFJLE1BQU0sQ0FBQ0MsZUFBUCxHQUF5QixVQUFVQyxFQUFWLEVBQWM7RUFDbkNqRixPQUFPLENBQUNDLEdBQVIsQ0FBWSw4QkFBWixFQUE0Q2dGLEVBQTVDLEVBRG1DLENBR25DOztFQUNBOUQsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0JxRCxJQUFwQjtFQUNBckQsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQnNELElBQWxCO0VBQ0F0RCxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnNELElBQXBCLEdBTm1DLENBUW5DOztFQUNBdEQsQ0FBQyxDQUFDLG1CQUFELENBQUQsQ0FBdUJpRCxLQUF2QixDQUE2QixNQUE3QjtFQUVBakQsQ0FBQyxDQUFDeUIsSUFBRixDQUFPO0lBQ0hDLEdBQUcsbUNBQTRCb0MsRUFBNUIsWUFEQTtJQUVIQyxNQUFNLEVBQUUsS0FGTDtJQUdIQyxPQUFPLEVBQUUsaUJBQVVDLFFBQVYsRUFBb0I7TUFDekJwRixPQUFPLENBQUNDLEdBQVIsQ0FBWSxrQkFBWixFQUFnQ21GLFFBQWhDO01BQ0FqRSxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnNELElBQXBCOztNQUVBLElBQUlXLFFBQVEsQ0FBQ0QsT0FBYixFQUFzQjtRQUNsQkUsb0JBQW9CLENBQUNELFFBQVEsQ0FBQ2hELElBQVYsRUFBZ0JnRCxRQUFRLENBQUNFLGFBQXpCLENBQXBCO1FBQ0FuRSxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnFELElBQXBCO01BQ0gsQ0FIRCxNQUdPO1FBQ0hyRCxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQm9FLElBQXBCLENBQXlCSCxRQUFRLENBQUNJLE9BQWxDO1FBQ0FyRSxDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCcUQsSUFBbEI7TUFDSDtJQUNKLENBZEU7SUFlSG5CLEtBQUssRUFBRSxlQUFVQyxHQUFWLEVBQWU7TUFDbEJ0RCxPQUFPLENBQUNxRCxLQUFSLENBQWMsb0JBQWQsRUFBb0NDLEdBQXBDO01BQ0FuQyxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnNELElBQXBCO01BQ0F0RCxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQm9FLElBQXBCLENBQXlCLDJCQUF6QjtNQUNBcEUsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQnFELElBQWxCO0lBQ0g7RUFwQkUsQ0FBUDtBQXNCSCxDQWpDRDs7QUFtQ0EsU0FBU2Esb0JBQVQsQ0FBOEJJLEtBQTlCLEVBQXFDQyxZQUFyQyxFQUFtRDtFQUMvQzFGLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLDJCQUFaLEVBQXlDd0YsS0FBekMsRUFEK0MsQ0FHL0M7O0VBQ0F0RSxDQUFDLENBQUMsZUFBRCxDQUFELENBQW1Cb0UsSUFBbkIsQ0FBd0JFLEtBQUssQ0FBQ0UsS0FBTixDQUFZMUMsT0FBWixDQUFvQlEsSUFBNUM7RUFDQXRDLENBQUMsQ0FBQyxjQUFELENBQUQsQ0FBa0JvRSxJQUFsQixDQUF1QkUsS0FBSyxDQUFDRSxLQUFOLENBQVk1QyxNQUFaLENBQW1CVSxJQUExQztFQUNBdEMsQ0FBQyxDQUFDLG9CQUFELENBQUQsQ0FBd0JvRSxJQUF4QixDQUE2QkUsS0FBSyxDQUFDRyxpQkFBbkM7RUFDQXpFLENBQUMsQ0FBQyxlQUFELENBQUQsQ0FBbUJvRSxJQUFuQixDQUF3QkUsS0FBSyxDQUFDSSxZQUE5QjtFQUNBMUUsQ0FBQyxDQUFDLFlBQUQsQ0FBRCxDQUFnQm9FLElBQWhCLENBQXFCRSxLQUFLLENBQUNLLElBQU4sR0FBYUwsS0FBSyxDQUFDSyxJQUFOLENBQVdyQyxJQUF4QixHQUErQixHQUFwRDtFQUNBdEMsQ0FBQyxDQUFDLGFBQUQsQ0FBRCxDQUFpQm9FLElBQWpCLENBQXNCRSxLQUFLLENBQUNNLG9CQUE1QjtFQUNBNUUsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQm9FLElBQWxCLENBQXVCRSxLQUFLLENBQUNPLFdBQU4sSUFBcUIsR0FBNUMsRUFWK0MsQ0FZL0M7O0VBQ0EsSUFBSUMsbUJBQW1CLEdBQUcsRUFBMUI7RUFDQSxJQUFJQyxrQkFBa0IsR0FBRyxFQUF6Qjs7RUFDQSxJQUFJVCxLQUFLLENBQUNVLGVBQU4sR0FBd0IsQ0FBNUIsRUFBK0I7SUFDM0JGLG1CQUFtQixHQUFHLGNBQXRCO0lBQ0FDLGtCQUFrQixHQUFHLEdBQXJCO0VBQ0gsQ0FIRCxNQUdPLElBQUlULEtBQUssQ0FBQ1UsZUFBTixHQUF3QixDQUE1QixFQUErQjtJQUNsQ0YsbUJBQW1CLEdBQUcsYUFBdEI7SUFDQUMsa0JBQWtCLEdBQUcsRUFBckI7RUFDSCxDQUhNLE1BR0E7SUFDSEQsbUJBQW1CLEdBQUcsWUFBdEI7SUFDQUMsa0JBQWtCLEdBQUcsRUFBckI7RUFDSDs7RUFDRC9FLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCaUYsSUFBdEIseUJBQ29CSCxtQkFEcEIsZ0JBQzRDQyxrQkFENUMsU0FDaUVULEtBQUssQ0FBQ1UsZUFEdkUsY0F6QitDLENBNkIvQzs7RUFDQSxJQUFJRSxlQUFlLEdBQUcsRUFBdEI7O0VBQ0EsUUFBUVosS0FBSyxDQUFDdkMsV0FBZDtJQUNJLEtBQUssVUFBTDtNQUNJbUQsZUFBZSxHQUFHLGNBQWxCO01BQ0E7O0lBQ0osS0FBSyxVQUFMO01BQ0lBLGVBQWUsR0FBRyxhQUFsQjtNQUNBOztJQUNKLEtBQUssWUFBTDtNQUNJQSxlQUFlLEdBQUcsY0FBbEI7TUFDQTs7SUFDSjtNQUNJQSxlQUFlLEdBQUcsWUFBbEI7RUFYUjs7RUFhQWxGLENBQUMsQ0FBQyxjQUFELENBQUQsQ0FBa0JpRixJQUFsQiwwQ0FDcUNDLGVBRHJDLGdCQUN5RFosS0FBSyxDQUFDYSxpQkFEL0QsY0E1QytDLENBZ0QvQzs7RUFDQSxJQUFJWixZQUFKLEVBQWtCO0lBQ2R2RSxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnFELElBQXBCOztJQUVBLElBQUlrQixZQUFZLENBQUNhLElBQWIsS0FBc0IsVUFBMUIsRUFBc0M7TUFDbEMsSUFBSUMsUUFBUSxHQUFHZCxZQUFZLENBQUN0RCxJQUE1QjtNQUNBakIsQ0FBQyxDQUFDLGVBQUQsQ0FBRCxDQUFtQm9FLElBQW5CLHlCQUNxQmlCLFFBQVEsQ0FBQ0MsZUFEOUI7TUFJQSxJQUFJQyxlQUFlLDBTQU9LRixRQUFRLENBQUNHLFdBQVQsR0FDTUgsUUFBUSxDQUFDRyxXQUFULENBQXFCbEQsSUFEM0IsR0FFTSxHQVRYLG1NQWVLK0MsUUFBUSxDQUFDSSxTQUFULEdBQ01KLFFBQVEsQ0FBQ0ksU0FBVCxDQUFtQm5ELElBRHpCLEdBRU0sR0FqQlgsZ01Bc0JPK0MsUUFBUSxDQUFDSyxNQXRCaEIsNFdBK0JLTCxRQUFRLENBQUNNLFlBQVQsR0FDTU4sUUFBUSxDQUFDTSxZQUFULENBQXNCckQsSUFENUIsR0FFTSxHQWpDWCx3TUF1Q0srQyxRQUFRLENBQUNPLFdBQVQsR0FDTVAsUUFBUSxDQUFDTyxXQUFULENBQXFCdEQsSUFEM0IsR0FFTSxHQXpDWCwyTUErQ0srQyxRQUFRLENBQUNRLHFCQUFULElBQWtDLEdBL0N2QyxpSkFBbkI7TUFzREE3RixDQUFDLENBQUMsaUJBQUQsQ0FBRCxDQUFxQmlGLElBQXJCLENBQTBCTSxlQUExQjtJQUNILENBN0RELE1BNkRPLElBQUloQixZQUFZLENBQUNhLElBQWIsS0FBc0IsUUFBMUIsRUFBb0M7TUFDdkMsSUFBSVUsTUFBTSxHQUFHdkIsWUFBWSxDQUFDdEQsSUFBMUI7TUFDQWpCLENBQUMsQ0FBQyxlQUFELENBQUQsQ0FBbUJvRSxJQUFuQixDQUF3QixRQUF4QjtNQUVBLElBQUkyQixhQUFhLGtMQUlDRCxNQUFNLENBQUNsRSxNQUFQLEdBQWdCa0UsTUFBTSxDQUFDbEUsTUFBUCxDQUFjVSxJQUE5QixHQUFxQyxHQUp0Qyw4SkFRQ3dELE1BQU0sQ0FBQ25CLElBQVAsR0FBY21CLE1BQU0sQ0FBQ25CLElBQVAsQ0FBWXJDLElBQTFCLEdBQWlDLEdBUmxDLGdLQVlDd0QsTUFBTSxDQUFDSixNQUFQLElBQWlCLEdBWmxCLDZFQUFqQjtNQWdCQTFGLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCaUYsSUFBckIsQ0FBMEJjLGFBQTFCO0lBQ0g7RUFDSixDQXRGRCxNQXNGTztJQUNIL0YsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0JzRCxJQUFwQjtFQUNIO0FBQ0oiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvd2FyZWhvdXNlX21hbmFnZW1lbnQvc3RvY2tfYXVkaXQvaW5kZXguanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/warehouse_management/stock_audit/index.js\n");
/***/ })
diff --git a/public/js/warehouse_management/stock_audit/index.js.map b/public/js/warehouse_management/stock_audit/index.js.map
index 02e8852..f3eb048 100644
--- a/public/js/warehouse_management/stock_audit/index.js.map
+++ b/public/js/warehouse_management/stock_audit/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"/js/warehouse_management/stock_audit/index.js","mappings":"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","sources":["webpack:///./resources/js/warehouse_management/stock_audit/index.js"],"sourcesContent":["console.log(\"Stock audit JS loaded\");\n\n$(document).ready(function () {\n console.log(\"Initializing stock audit table...\");\n\n // Initialize Select2 without any event handlers\n $(\".select2\").select2({\n placeholder: \"Pilih...\",\n allowClear: true,\n width: \"100%\",\n });\n\n // Initialize Datepicker\n $(\".datepicker\").datepicker({\n format: \"yyyy-mm-dd\",\n autoclose: true,\n todayHighlight: true,\n orientation: \"bottom auto\",\n language: \"id\",\n clearBtn: true,\n container: \"body\",\n });\n\n const $table = $(\"#stock-audit-table\");\n const indexRoute = $table.data(\"route\");\n\n console.log(\"Table route:\", indexRoute);\n\n let table = $table.DataTable({\n processing: true,\n serverSide: true,\n language: {\n processing:\n '',\n loadingRecords: \"Memuat data...\",\n zeroRecords: \"Tidak ada data yang ditemukan\",\n emptyTable: \"Tidak ada data tersedia\",\n },\n ajax: {\n url: indexRoute,\n data: function (d) {\n d.dealer = $(\"#filter-dealer\").val();\n d.product = $(\"#filter-product\").val();\n d.change_type = $(\"#filter-change-type\").val();\n d.date = $(\"#filter-date\").val();\n console.log(\"Ajax data with ordering:\", d);\n console.log(\"Order info:\", d.order);\n console.log(\"Columns info:\", d.columns);\n },\n error: function (xhr, error, thrown) {\n console.error(\"Ajax error:\", error);\n console.error(\"Response:\", xhr.responseText);\n },\n },\n columns: [\n {\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false,\n width: \"5%\",\n },\n {\n data: \"product_name\",\n name: \"product_name\",\n orderable: true,\n },\n {\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true,\n },\n {\n data: \"change_type\",\n name: \"change_type\",\n orderable: true,\n },\n {\n data: \"quantity_change\",\n name: \"quantity_change\",\n className: \"text-center\",\n orderable: true,\n },\n {\n data: \"stock_before_after\",\n name: \"stock_before_after\",\n className: \"text-center\",\n orderable: true,\n },\n {\n data: \"source_info\",\n name: \"source_info\",\n orderable: true,\n },\n {\n data: \"user_name\",\n name: \"user_name\",\n orderable: true,\n },\n {\n data: \"created_at\",\n name: \"created_at\",\n orderable: true,\n },\n {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n width: \"10%\",\n },\n ],\n order: [[8, \"desc\"]], // Order by created_at desc (column index 8)\n pageLength: 25,\n responsive: true,\n ordering: true, // Enable column ordering\n orderMulti: false, // Single column ordering only\n });\n\n console.log(\"Table initialized:\", table);\n\n // Add loading indicator for ordering\n table.on(\"processing.dt\", function (e, settings, processing) {\n if (processing) {\n console.log(\"DataTable processing started (ordering/filtering)\");\n } else {\n console.log(\"DataTable processing finished\");\n }\n });\n\n // Debug order events\n table.on(\"order.dt\", function () {\n console.log(\"Order changed:\", table.order());\n });\n\n // Manual modal close handlers\n $(document).on(\n \"click\",\n \"#modal-close-btn, #modal-close-footer-btn\",\n function () {\n console.log(\"Manual close button clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n );\n\n // Modal backdrop click handler\n $(document).on(\"click\", \"#auditDetailModal\", function (e) {\n if (e.target === this) {\n console.log(\"Modal backdrop clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n });\n\n // ESC key handler\n $(document).on(\"keydown\", function (e) {\n if (e.keyCode === 27 && $(\"#auditDetailModal\").hasClass(\"show\")) {\n console.log(\"ESC key pressed\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n });\n\n // Modal hidden event handler\n $(\"#auditDetailModal\").on(\"hidden.bs.modal\", function () {\n console.log(\"Modal hidden\");\n // Reset modal content\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide();\n });\n\n // Apply filters button - only way to trigger table reload\n $(\"#apply-filters\").click(function () {\n console.log(\"Apply filters clicked, reloading table...\");\n console.log(\"Current filter values:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val(),\n });\n table.ajax.reload();\n });\n\n // Allow Enter key to apply filters on datepicker\n $(\"#filter-date\").keypress(function (e) {\n if (e.which == 13) {\n // Enter key\n console.log(\"Enter pressed on date filter, applying filters...\");\n table.ajax.reload();\n }\n });\n\n // Reset filters\n $(\"#reset-filters\").click(function () {\n console.log(\"Resetting filters...\");\n\n // Reset select2 elements properly\n $(\"#filter-dealer\").val(null).trigger(\"change.select2\");\n $(\"#filter-product\").val(null).trigger(\"change.select2\");\n $(\"#filter-change-type\").val(null).trigger(\"change.select2\");\n\n // Reset datepicker properly\n $(\"#filter-date\").val(\"\").datepicker(\"update\");\n\n console.log(\"Filters reset, values after reset:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val(),\n });\n\n // Reload table after reset\n console.log(\"Reloading table after reset...\");\n table.ajax.reload();\n });\n});\n\nwindow.showAuditDetail = function (id) {\n console.log(\"Showing audit detail for ID:\", id);\n\n // Reset modal states first\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide();\n\n // Show modal\n $(\"#auditDetailModal\").modal(\"show\");\n\n $.ajax({\n url: `/warehouse/stock-audit/${id}/detail`,\n method: \"GET\",\n success: function (response) {\n console.log(\"Detail response:\", response);\n $(\"#modal-loading\").hide();\n\n if (response.success) {\n populateModalContent(response.data, response.source_detail);\n $(\"#modal-content\").show();\n } else {\n $(\"#error-message\").text(response.message);\n $(\"#modal-error\").show();\n }\n },\n error: function (xhr) {\n console.error(\"Detail AJAX error:\", xhr);\n $(\"#modal-loading\").hide();\n $(\"#error-message\").text(\"Gagal memuat detail audit\");\n $(\"#modal-error\").show();\n },\n });\n};\n\nfunction populateModalContent(audit, sourceDetail) {\n console.log(\"Populating modal content:\", audit);\n\n // Populate basic stock information\n $(\"#product-name\").text(audit.stock.product.name);\n $(\"#dealer-name\").text(audit.stock.dealer.name);\n $(\"#previous-quantity\").text(audit.previous_quantity);\n $(\"#new-quantity\").text(audit.new_quantity);\n $(\"#user-name\").text(audit.user ? audit.user.name : \"-\");\n $(\"#created-at\").text(audit.created_at_formatted);\n $(\"#description\").text(audit.description || \"-\");\n\n // Set quantity change with styling\n let quantityChangeClass = \"\";\n let quantityChangeSign = \"\";\n if (audit.quantity_change > 0) {\n quantityChangeClass = \"text-success\";\n quantityChangeSign = \"+\";\n } else if (audit.quantity_change < 0) {\n quantityChangeClass = \"text-danger\";\n quantityChangeSign = \"\";\n } else {\n quantityChangeClass = \"text-muted\";\n quantityChangeSign = \"\";\n }\n $(\"#quantity-change\").html(\n `${quantityChangeSign}${audit.quantity_change}`\n );\n\n // Set change type with styling\n let changeTypeClass = \"\";\n switch (audit.change_type) {\n case \"increase\":\n changeTypeClass = \"text-success\";\n break;\n case \"decrease\":\n changeTypeClass = \"text-danger\";\n break;\n case \"adjustment\":\n changeTypeClass = \"text-warning\";\n break;\n default:\n changeTypeClass = \"text-muted\";\n }\n $(\"#change-type\").html(\n `${audit.change_type_label}`\n );\n\n // Handle source detail\n if (sourceDetail) {\n $(\"#source-detail\").show();\n\n if (sourceDetail.type === \"mutation\") {\n let mutation = sourceDetail.data;\n $(\"#source-title\").text(\n `Mutasi Stock: ${mutation.mutation_number}`\n );\n\n let mutationContent = `\n \n
\n
\n \n | Dari Dealer: | \n ${\n mutation.from_dealer\n ? mutation.from_dealer.name\n : \"-\"\n } | \n
\n \n | Ke Dealer: | \n ${\n mutation.to_dealer\n ? mutation.to_dealer.name\n : \"-\"\n } | \n
\n \n | Status: | \n ${mutation.status} | \n
\n
\n
\n
\n
\n \n | Diminta oleh: | \n ${\n mutation.requested_by\n ? mutation.requested_by.name\n : \"-\"\n } | \n
\n \n | Disetujui oleh: | \n ${\n mutation.approved_by\n ? mutation.approved_by.name\n : \"-\"\n } | \n
\n \n | Tanggal Disetujui: | \n ${mutation.approved_at || \"-\"} | \n
\n
\n
\n
\n `;\n $(\"#source-content\").html(mutationContent);\n } else if (sourceDetail.type === \"opname\") {\n let opname = sourceDetail.data;\n $(\"#source-title\").text(\"Opname\");\n\n let opnameContent = `\n \n \n | Dealer: | \n ${opname.dealer ? opname.dealer.name : \"-\"} | \n
\n \n | User: | \n ${opname.user ? opname.user.name : \"-\"} | \n
\n \n | Status: | \n ${opname.status || \"-\"} | \n
\n
\n `;\n $(\"#source-content\").html(opnameContent);\n }\n } else {\n $(\"#source-detail\").hide();\n }\n}\n"],"names":["console","log","$","document","ready","select2","placeholder","allowClear","width","datepicker","format","autoclose","todayHighlight","orientation","language","clearBtn","container","$table","indexRoute","data","table","DataTable","processing","serverSide","loadingRecords","zeroRecords","emptyTable","ajax","url","d","dealer","val","product","change_type","date","order","columns","error","xhr","thrown","responseText","name","orderable","searchable","className","pageLength","responsive","ordering","orderMulti","on","e","settings","modal","target","this","keyCode","hasClass","show","hide","click","reload","keypress","which","trigger","window","showAuditDetail","id","method","success","response","audit","sourceDetail","text","stock","previous_quantity","new_quantity","user","created_at_formatted","description","quantityChangeClass","quantityChangeSign","quantity_change","html","changeTypeClass","change_type_label","type","mutation","mutation_number","mutationContent","from_dealer","to_dealer","status","requested_by","approved_by","approved_at","opname","opnameContent","populateModalContent","source_detail","message"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"/js/warehouse_management/stock_audit/index.js","mappings":"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","sources":["webpack:///./resources/js/warehouse_management/stock_audit/index.js"],"sourcesContent":["console.log(\"Stock audit JS loaded\");\n\n// Helper function to format date\nfunction formatDate(dateString) {\n if (!dateString) return \"-\";\n\n const date = new Date(dateString);\n const months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mei\",\n \"Jun\",\n \"Jul\",\n \"Agu\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\",\n ];\n\n const day = date.getDate().toString().padStart(2, \"0\");\n const month = months[date.getMonth()];\n const year = date.getFullYear();\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n\n return `${day} ${month} ${year}, ${hours}:${minutes}`;\n}\n\n$(document).ready(function () {\n console.log(\"Initializing stock audit table...\");\n\n // Initialize Select2 without any event handlers\n $(\".select2\").select2({\n placeholder: \"Pilih...\",\n allowClear: true,\n width: \"100%\",\n });\n\n // Initialize Datepicker\n $(\".datepicker\").datepicker({\n format: \"yyyy-mm-dd\",\n autoclose: true,\n todayHighlight: true,\n orientation: \"bottom auto\",\n language: \"id\",\n clearBtn: true,\n container: \"body\",\n });\n\n const $table = $(\"#stock-audit-table\");\n const indexRoute = $table.data(\"route\");\n\n console.log(\"Table route:\", indexRoute);\n\n let table = $table.DataTable({\n processing: true,\n serverSide: true,\n language: {\n processing:\n '',\n loadingRecords: \"Memuat data...\",\n zeroRecords: \"Tidak ada data yang ditemukan\",\n emptyTable: \"Tidak ada data tersedia\",\n },\n ajax: {\n url: indexRoute,\n data: function (d) {\n d.dealer = $(\"#filter-dealer\").val();\n d.product = $(\"#filter-product\").val();\n d.change_type = $(\"#filter-change-type\").val();\n d.date = $(\"#filter-date\").val();\n console.log(\"Ajax data with ordering:\", d);\n console.log(\"Order info:\", d.order);\n console.log(\"Columns info:\", d.columns);\n },\n error: function (xhr, error, thrown) {\n console.error(\"Ajax error:\", error);\n console.error(\"Response:\", xhr.responseText);\n },\n },\n columns: [\n {\n data: \"DT_RowIndex\",\n name: \"DT_RowIndex\",\n orderable: false,\n searchable: false,\n width: \"5%\",\n },\n {\n data: \"product_name\",\n name: \"product_name\",\n orderable: true,\n },\n {\n data: \"dealer_name\",\n name: \"dealer_name\",\n orderable: true,\n },\n {\n data: \"change_type\",\n name: \"change_type\",\n orderable: true,\n },\n {\n data: \"quantity_change\",\n name: \"quantity_change\",\n className: \"text-center\",\n orderable: true,\n },\n {\n data: \"stock_before_after\",\n name: \"stock_before_after\",\n className: \"text-center\",\n orderable: true,\n },\n {\n data: \"source_info\",\n name: \"source_info\",\n orderable: true,\n },\n {\n data: \"user_name\",\n name: \"user_name\",\n orderable: true,\n },\n {\n data: \"created_at\",\n name: \"created_at\",\n orderable: true,\n },\n {\n data: \"action\",\n name: \"action\",\n orderable: false,\n searchable: false,\n width: \"10%\",\n },\n ],\n order: [[8, \"desc\"]], // Order by created_at desc (column index 8)\n pageLength: 25,\n responsive: true,\n ordering: true, // Enable column ordering\n orderMulti: false, // Single column ordering only\n });\n\n console.log(\"Table initialized:\", table);\n\n // Add loading indicator for ordering\n table.on(\"processing.dt\", function (e, settings, processing) {\n if (processing) {\n console.log(\"DataTable processing started (ordering/filtering)\");\n } else {\n console.log(\"DataTable processing finished\");\n }\n });\n\n // Debug order events\n table.on(\"order.dt\", function () {\n console.log(\"Order changed:\", table.order());\n });\n\n // Manual modal close handlers\n $(document).on(\n \"click\",\n \"#modal-close-btn, #modal-close-footer-btn\",\n function () {\n console.log(\"Manual close button clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n );\n\n // Modal backdrop click handler\n $(document).on(\"click\", \"#auditDetailModal\", function (e) {\n if (e.target === this) {\n console.log(\"Modal backdrop clicked\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n });\n\n // ESC key handler\n $(document).on(\"keydown\", function (e) {\n if (e.keyCode === 27 && $(\"#auditDetailModal\").hasClass(\"show\")) {\n console.log(\"ESC key pressed\");\n $(\"#auditDetailModal\").modal(\"hide\");\n }\n });\n\n // Modal hidden event handler\n $(\"#auditDetailModal\").on(\"hidden.bs.modal\", function () {\n console.log(\"Modal hidden\");\n // Reset modal content\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide();\n });\n\n // Apply filters button - only way to trigger table reload\n $(\"#apply-filters\").click(function () {\n console.log(\"Apply filters clicked, reloading table...\");\n console.log(\"Current filter values:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val(),\n });\n table.ajax.reload();\n });\n\n // Allow Enter key to apply filters on datepicker\n $(\"#filter-date\").keypress(function (e) {\n if (e.which == 13) {\n // Enter key\n console.log(\"Enter pressed on date filter, applying filters...\");\n table.ajax.reload();\n }\n });\n\n // Reset filters\n $(\"#reset-filters\").click(function () {\n console.log(\"Resetting filters...\");\n\n // Reset select2 elements properly\n $(\"#filter-dealer\").val(null).trigger(\"change.select2\");\n $(\"#filter-product\").val(null).trigger(\"change.select2\");\n $(\"#filter-change-type\").val(null).trigger(\"change.select2\");\n\n // Reset datepicker properly\n $(\"#filter-date\").val(\"\").datepicker(\"update\");\n\n console.log(\"Filters reset, values after reset:\", {\n dealer: $(\"#filter-dealer\").val(),\n product: $(\"#filter-product\").val(),\n change_type: $(\"#filter-change-type\").val(),\n date: $(\"#filter-date\").val(),\n });\n\n // Reload table after reset\n console.log(\"Reloading table after reset...\");\n table.ajax.reload();\n });\n});\n\nwindow.showAuditDetail = function (id) {\n console.log(\"Showing audit detail for ID:\", id);\n\n // Reset modal states first\n $(\"#modal-loading\").show();\n $(\"#modal-error\").hide();\n $(\"#modal-content\").hide();\n\n // Show modal\n $(\"#auditDetailModal\").modal(\"show\");\n\n $.ajax({\n url: `/warehouse/stock-audit/${id}/detail`,\n method: \"GET\",\n success: function (response) {\n console.log(\"Detail response:\", response);\n $(\"#modal-loading\").hide();\n\n if (response.success) {\n populateModalContent(response.data, response.source_detail);\n $(\"#modal-content\").show();\n } else {\n $(\"#error-message\").text(response.message);\n $(\"#modal-error\").show();\n }\n },\n error: function (xhr) {\n console.error(\"Detail AJAX error:\", xhr);\n $(\"#modal-loading\").hide();\n $(\"#error-message\").text(\"Gagal memuat detail audit\");\n $(\"#modal-error\").show();\n },\n });\n};\n\nfunction populateModalContent(audit, sourceDetail) {\n console.log(\"Populating modal content:\", audit);\n\n // Populate basic stock information\n $(\"#product-name\").text(audit.stock.product.name);\n $(\"#dealer-name\").text(audit.stock.dealer.name);\n $(\"#previous-quantity\").text(audit.previous_quantity);\n $(\"#new-quantity\").text(audit.new_quantity);\n $(\"#user-name\").text(audit.user ? audit.user.name : \"-\");\n $(\"#created-at\").text(audit.created_at_formatted);\n $(\"#description\").text(audit.description || \"-\");\n\n // Set quantity change with styling\n let quantityChangeClass = \"\";\n let quantityChangeSign = \"\";\n if (audit.quantity_change > 0) {\n quantityChangeClass = \"text-success\";\n quantityChangeSign = \"+\";\n } else if (audit.quantity_change < 0) {\n quantityChangeClass = \"text-danger\";\n quantityChangeSign = \"\";\n } else {\n quantityChangeClass = \"text-muted\";\n quantityChangeSign = \"\";\n }\n $(\"#quantity-change\").html(\n `${quantityChangeSign}${audit.quantity_change}`\n );\n\n // Set change type with styling\n let changeTypeClass = \"\";\n switch (audit.change_type) {\n case \"increase\":\n changeTypeClass = \"text-success\";\n break;\n case \"decrease\":\n changeTypeClass = \"text-danger\";\n break;\n case \"adjustment\":\n changeTypeClass = \"text-warning\";\n break;\n default:\n changeTypeClass = \"text-muted\";\n }\n $(\"#change-type\").html(\n `${audit.change_type_label}`\n );\n\n // Handle source detail\n if (sourceDetail) {\n $(\"#source-detail\").show();\n\n if (sourceDetail.type === \"mutation\") {\n let mutation = sourceDetail.data;\n $(\"#source-title\").text(\n `Mutasi Stock: ${mutation.mutation_number}`\n );\n\n let mutationContent = `\n \n
\n
\n \n | Dari Dealer: | \n ${\n mutation.from_dealer\n ? mutation.from_dealer.name\n : \"-\"\n } | \n
\n \n | Ke Dealer: | \n ${\n mutation.to_dealer\n ? mutation.to_dealer.name\n : \"-\"\n } | \n
\n \n | Status: | \n ${mutation.status} | \n
\n
\n
\n
\n
\n \n | Diminta oleh: | \n ${\n mutation.requested_by\n ? mutation.requested_by.name\n : \"-\"\n } | \n
\n \n | Disetujui oleh: | \n ${\n mutation.approved_by\n ? mutation.approved_by.name\n : \"-\"\n } | \n
\n \n | Tanggal Disetujui: | \n ${\n mutation.approved_at_formatted || \"-\"\n } | \n
\n
\n
\n
\n `;\n $(\"#source-content\").html(mutationContent);\n } else if (sourceDetail.type === \"opname\") {\n let opname = sourceDetail.data;\n $(\"#source-title\").text(\"Opname\");\n\n let opnameContent = `\n \n \n | Dealer: | \n ${opname.dealer ? opname.dealer.name : \"-\"} | \n
\n \n | User: | \n ${opname.user ? opname.user.name : \"-\"} | \n
\n \n | Status: | \n ${opname.status || \"-\"} | \n
\n
\n `;\n $(\"#source-content\").html(opnameContent);\n }\n } else {\n $(\"#source-detail\").hide();\n }\n}\n"],"names":["console","log","$","document","ready","select2","placeholder","allowClear","width","datepicker","format","autoclose","todayHighlight","orientation","language","clearBtn","container","$table","indexRoute","data","table","DataTable","processing","serverSide","loadingRecords","zeroRecords","emptyTable","ajax","url","d","dealer","val","product","change_type","date","order","columns","error","xhr","thrown","responseText","name","orderable","searchable","className","pageLength","responsive","ordering","orderMulti","on","e","settings","modal","target","this","keyCode","hasClass","show","hide","click","reload","keypress","which","trigger","window","showAuditDetail","id","method","success","response","audit","sourceDetail","text","stock","previous_quantity","new_quantity","user","created_at_formatted","description","quantityChangeClass","quantityChangeSign","quantity_change","html","changeTypeClass","change_type_label","type","mutation","mutation_number","mutationContent","from_dealer","to_dealer","status","requested_by","approved_by","approved_at_formatted","opname","opnameContent","populateModalContent","source_detail","message"],"sourceRoot":""}
\ No newline at end of file
diff --git a/resources/js/warehouse_management/mutations/index.js b/resources/js/warehouse_management/mutations/index.js
index d83fe12..2f0fbd0 100755
--- a/resources/js/warehouse_management/mutations/index.js
+++ b/resources/js/warehouse_management/mutations/index.js
@@ -7,6 +7,15 @@ $(document).ready(function () {
return;
}
+ // Wait for DOM to be fully ready
+ setTimeout(function () {
+ initializeDataTable();
+ }, 100);
+});
+
+function initializeDataTable() {
+ console.log("Initializing DataTable...");
+
// Destroy existing table if any
if ($.fn.DataTable.isDataTable("#mutations-table")) {
$("#mutations-table").DataTable().destroy();
@@ -20,26 +29,24 @@ $(document).ready(function () {
ajax: {
url: $("#mutations-table").data("url"),
type: "GET",
+ data: function (d) {
+ console.log("DataTables request data:", d);
+ console.log("Order info:", d.order);
+ console.log("Columns info:", d.columns);
+ return d;
+ },
error: function (xhr, error, code) {
console.error("DataTables AJAX error:", error, code);
+ console.error("Response:", xhr.responseText);
},
},
columnDefs: [
{
targets: 0, // No. column
- orderable: false,
- searchable: false,
width: "5%",
},
- {
- targets: [1, 2, 3, 4, 5, 6, 7], // All sortable columns
- orderable: true,
- searchable: true,
- },
{
targets: 8, // Action column
- orderable: false,
- searchable: false,
width: "20%",
className: "text-center",
},
@@ -52,43 +59,95 @@ $(document).ready(function () {
{
data: "DT_RowIndex",
name: "DT_RowIndex",
+ orderable: false,
+ searchable: false,
},
{
data: "mutation_number",
name: "mutation_number",
+ orderable: true,
},
{
data: "created_at",
name: "created_at",
+ orderable: true,
},
{
data: "from_dealer",
- name: "fromDealer.name",
+ name: "from_dealer",
+ orderable: true,
},
{
data: "to_dealer",
- name: "toDealer.name",
+ name: "to_dealer",
+ orderable: true,
},
{
data: "requested_by",
- name: "requestedBy.name",
+ name: "requested_by",
+ orderable: true,
},
{
data: "total_items",
name: "total_items",
+ orderable: true,
},
{
data: "status",
name: "status",
+ orderable: true,
},
{
data: "action",
name: "action",
+ orderable: false,
+ searchable: false,
},
],
order: [[1, "desc"]], // Order by mutation_number desc (which follows ID order)
pageLength: 10,
responsive: true,
+ ordering: true, // Enable column ordering
+ orderMulti: false, // Single column ordering only
+ });
+
+ // Debug ordering events
+ table.on("order.dt", function () {
+ console.log("Order changed:", table.order());
+ });
+
+ // Add loading indicator for ordering
+ table.on("processing.dt", function (e, settings, processing) {
+ if (processing) {
+ console.log("DataTable processing started (ordering/filtering)");
+ } else {
+ console.log("DataTable processing finished");
+ }
+ });
+
+ // Manual click handler for column headers (fallback)
+ $("#mutations-table thead th").on("click", function () {
+ var columnIndex = $(this).index();
+ console.log("Column header clicked:", columnIndex, $(this).text());
+
+ // Skip if it's the first (No.) or last (Action) column
+ if (columnIndex === 0 || columnIndex === 8) {
+ console.log("Non-sortable column clicked, ignoring");
+ return;
+ }
+
+ // Check if DataTables is handling the click
+ if (
+ $(this).hasClass("sorting") ||
+ $(this).hasClass("sorting_asc") ||
+ $(this).hasClass("sorting_desc")
+ ) {
+ console.log("DataTables should handle this click");
+ } else {
+ console.log("DataTables not handling click, manual trigger needed");
+ // Force DataTables to handle the ordering
+ table.order([columnIndex, "asc"]).draw();
+ }
});
// Handle Cancel Button Click with SweetAlert
@@ -117,43 +176,6 @@ $(document).ready(function () {
}
});
- function cancelMutation(mutationId) {
- $.ajax({
- url: "/warehouse/mutations/" + mutationId + "/cancel",
- type: "POST",
- data: {
- _token: $('meta[name="csrf-token"]').attr("content"),
- },
- success: function (response) {
- if (typeof Swal !== "undefined") {
- Swal.fire({
- title: "Berhasil!",
- text: "Mutasi berhasil dibatalkan",
- icon: "success",
- timer: 2000,
- showConfirmButton: false,
- });
- } else {
- alert("Mutasi berhasil dibatalkan");
- }
- table.ajax.reload();
- },
- error: function (xhr) {
- var errorMsg =
- xhr.responseJSON?.message || "Gagal membatalkan mutasi";
- if (typeof Swal !== "undefined") {
- Swal.fire({
- title: "Error!",
- text: errorMsg,
- icon: "error",
- });
- } else {
- alert("Error: " + errorMsg);
- }
- },
- });
- }
-
// Handle form submissions with loading state
$(document).on("submit", ".approve-form", function () {
$(this)
@@ -180,4 +202,43 @@ $(document).ready(function () {
$(this).siblings(".invalid-feedback").remove();
}
});
-});
+}
+
+function cancelMutation(mutationId) {
+ $.ajax({
+ url: "/warehouse/mutations/" + mutationId + "/cancel",
+ type: "POST",
+ data: {
+ _token: $('meta[name="csrf-token"]').attr("content"),
+ },
+ success: function (response) {
+ if (typeof Swal !== "undefined") {
+ Swal.fire({
+ title: "Berhasil!",
+ text: "Mutasi berhasil dibatalkan",
+ icon: "success",
+ timer: 2000,
+ showConfirmButton: false,
+ });
+ } else {
+ alert("Mutasi berhasil dibatalkan");
+ }
+ // Get table instance
+ var table = $("#mutations-table").DataTable();
+ table.ajax.reload();
+ },
+ error: function (xhr) {
+ var errorMsg =
+ xhr.responseJSON?.message || "Gagal membatalkan mutasi";
+ if (typeof Swal !== "undefined") {
+ Swal.fire({
+ title: "Error!",
+ text: errorMsg,
+ icon: "error",
+ });
+ } else {
+ alert("Error: " + errorMsg);
+ }
+ },
+ });
+}
diff --git a/resources/js/warehouse_management/products/index.js b/resources/js/warehouse_management/products/index.js
index 70fcf15..31950f6 100755
--- a/resources/js/warehouse_management/products/index.js
+++ b/resources/js/warehouse_management/products/index.js
@@ -1,68 +1,74 @@
-$.ajaxSetup({
- headers: {
- "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
- },
-});
-
-// Wait for DataTables to be available
-function initializeDataTable() {
- // Debug: Check if DataTables is loaded
- console.log("DataTables available:", typeof $.fn.DataTable !== "undefined");
- console.log("jQuery version:", $.fn.jquery);
+$(document).ready(function () {
+ console.log("Products index.js loaded");
+ // Check if DataTables is available
if (typeof $.fn.DataTable === "undefined") {
- console.error("DataTables is not loaded! Retrying in 1 second...");
- setTimeout(initializeDataTable, 1000);
+ console.error("DataTables not available!");
return;
}
- let tableContainer = $("#products-table");
- let url = tableContainer.data("url");
+ // Wait for DOM to be fully ready
+ setTimeout(function () {
+ initializeDataTable();
+ }, 100);
+});
- console.log("Table URL:", url);
+function initializeDataTable() {
console.log("Initializing DataTable...");
- let table = $("#products-table").DataTable({
+ // Destroy existing table if any
+ if ($.fn.DataTable.isDataTable("#products-table")) {
+ $("#products-table").DataTable().destroy();
+ }
+
+ // Initialize DataTable
+ var table = $("#products-table").DataTable({
processing: true,
serverSide: true,
+ destroy: true,
ajax: {
- url: url,
- error: function (xhr, error, thrown) {
- console.error("DataTables Ajax Error:", error, thrown);
+ url: $("#products-table").data("url"),
+ type: "GET",
+ data: function (d) {
+ console.log("DataTables request data:", d);
+ return d;
+ },
+ error: function (xhr, error, code) {
+ console.error("DataTables AJAX error:", error, code);
console.error("Response:", xhr.responseText);
},
},
- order: [[0, "asc"]], // Order by first column (code) ascending
columns: [
+ {
+ data: "DT_RowIndex",
+ name: "DT_RowIndex",
+ orderable: false,
+ searchable: false,
+ },
{
data: "code",
name: "code",
orderable: true,
- searchable: true,
},
{
data: "name",
name: "name",
orderable: true,
- searchable: true,
},
{
data: "category_name",
- name: "category.name",
+ name: "category_name",
orderable: true,
- searchable: true,
},
{
data: "unit",
name: "unit",
orderable: true,
- searchable: true,
},
{
data: "total_stock",
name: "total_stock",
orderable: false,
- searchable: false,
},
{
data: "action",
@@ -71,53 +77,14 @@ function initializeDataTable() {
searchable: false,
},
],
- columnDefs: [
- {
- targets: [4, 5], // total_stock and action columns
- orderable: false,
- },
- ],
- initComplete: function (settings, json) {
- console.log("DataTables initialized successfully");
- console.log("Settings:", settings);
- console.log(
- "Column ordering enabled for:",
- settings.aoColumns.map((col, index) => ({
- index: index,
- orderable: col.bSortable,
- name: col.sName || col.mData,
- }))
- );
- },
- drawCallback: function (settings) {
- console.log("DataTables draw completed");
- },
- headerCallback: function (thead, data, start, end, display) {
- console.log("Header callback - sorting icons should be visible");
- },
+ order: [[1, "asc"]], // Order by code asc
+ pageLength: 10,
+ responsive: true,
+ ordering: true,
+ orderMulti: false,
});
-
- // Debug: Log table instance
- console.log("DataTable instance:", table);
-
- // Test column ordering programmatically
- setTimeout(function () {
- console.log("Testing column ordering...");
- try {
- table.order([1, "desc"]).draw();
- console.log("Column ordering test successful");
- } catch (e) {
- console.error("Column ordering test failed:", e);
- }
- }, 2000);
}
-// Initialize when document is ready
-$(document).ready(function () {
- console.log("Document ready, checking for DataTables...");
- initializeDataTable();
-});
-
$(document).on("click", ".btn-destroy-product", function () {
Swal.fire({
title: "Hapus produk?",
@@ -142,7 +109,14 @@ $(document).on("click", ".btn-destroy-product", function () {
"Produk berhasil dihapus.",
"success"
);
- $("#products-table").DataTable().ajax.reload();
+ try {
+ if ($.fn.DataTable.isDataTable("#products-table")) {
+ $("#products-table").DataTable().ajax.reload();
+ }
+ } catch (e) {
+ console.error("Error reloading table:", e);
+ location.reload(); // Fallback to page reload
+ }
},
error: function (xhr) {
Swal.fire("Error!", "Gagal menghapus produk.", "error");
@@ -174,9 +148,16 @@ $(document).on("click", ".btn-toggle-active", function () {
},
success: function (response) {
if (response.success) {
- $("#products-table")
- .DataTable()
- .ajax.reload(null, false);
+ try {
+ if ($.fn.DataTable.isDataTable("#products-table")) {
+ $("#products-table")
+ .DataTable()
+ .ajax.reload(null, false);
+ }
+ } catch (e) {
+ console.error("Error reloading table:", e);
+ location.reload(); // Fallback to page reload
+ }
Swal.fire("Berhasil!", response.message, "success");
}
},
@@ -197,9 +178,25 @@ $(document).on("click", ".btn-product-stock-dealers", function () {
const productName = $(this).data("name");
const ajaxUrl = $(this).data("url");
+ // Check if modal elements exist
+ if ($("#product-name-title").length === 0) {
+ console.error("Modal title element not found");
+ return;
+ }
+
+ if ($("#dealer-stock-table").length === 0) {
+ console.error("Dealer stock table element not found");
+ return;
+ }
+
// Set product name in modal title
$("#product-name-title").text(productName);
+ // Destroy existing DataTable if any
+ if ($.fn.DataTable.isDataTable("#dealer-stock-table")) {
+ $("#dealer-stock-table").DataTable().destroy();
+ }
+
// Initialize or reload DataTable inside modal
$("#dealer-stock-table").DataTable({
destroy: true,
@@ -210,6 +207,14 @@ $(document).on("click", ".btn-product-stock-dealers", function () {
data: {
product_id: productId,
},
+ error: function (xhr, error, thrown) {
+ console.error(
+ "Dealer stock DataTables Ajax Error:",
+ error,
+ thrown
+ );
+ console.error("Response:", xhr.responseText);
+ },
},
columns: [
{
@@ -226,7 +231,15 @@ $(document).on("click", ".btn-product-stock-dealers", function () {
},
],
initComplete: function () {
- $("#dealerStockModal").modal("show");
+ try {
+ if ($("#dealerStockModal").length > 0) {
+ $("#dealerStockModal").modal("show");
+ } else {
+ console.error("Modal #dealerStockModal not found");
+ }
+ } catch (e) {
+ console.error("Error showing modal:", e);
+ }
},
});
});
diff --git a/resources/views/warehouse_management/mutations/index.blade.php b/resources/views/warehouse_management/mutations/index.blade.php
index 1fe77c6..6e6b16e 100755
--- a/resources/views/warehouse_management/mutations/index.blade.php
+++ b/resources/views/warehouse_management/mutations/index.blade.php
@@ -50,6 +50,24 @@
@section('styles')
@endsection
diff --git a/resources/views/warehouse_management/products/index.blade.php b/resources/views/warehouse_management/products/index.blade.php
index 2507f28..055e2cd 100755
--- a/resources/views/warehouse_management/products/index.blade.php
+++ b/resources/views/warehouse_management/products/index.blade.php
@@ -2,28 +2,69 @@
@section('styles')
@@ -57,6 +98,7 @@ table.dataTable thead th.sorting_disabled {
+ | No. |
Kode |
Nama |
Kategori |
@@ -65,6 +107,8 @@ table.dataTable thead th.sorting_disabled {
Aksi |
+
+