diff --git a/app/Http/Controllers/ClientCaseContoller.php b/app/Http/Controllers/ClientCaseContoller.php index 0476580..2de0160 100644 --- a/app/Http/Controllers/ClientCaseContoller.php +++ b/app/Http/Controllers/ClientCaseContoller.php @@ -825,9 +825,8 @@ public function show(ClientCase $clientCase) } // Get contracts using service - $contractsPerPage = request()->integer('contracts_per_page', 10); - $contracts = $this->caseDataService->getContracts($case, $segmentId, $contractsPerPage); - $contractIds = collect($contracts->items())->pluck('id')->all(); + $contracts = $this->caseDataService->getContracts($case, $segmentId); + $contractIds = collect($contracts)->pluck('id')->all(); // Get activities using service $activitiesPerPage = request()->integer('activities_per_page', 15); diff --git a/app/Services/ClientCaseDataService.php b/app/Services/ClientCaseDataService.php index 1933c6b..c367592 100644 --- a/app/Services/ClientCaseDataService.php +++ b/app/Services/ClientCaseDataService.php @@ -11,9 +11,9 @@ class ClientCaseDataService { /** - * Get paginated contracts for a client case with optional segment filtering. + * Get contracts for a client case with optional segment filtering. */ - public function getContracts(ClientCase $clientCase, ?int $segmentId = null, int $perPage = 50): LengthAwarePaginator + public function getContracts(ClientCase $clientCase, ?int $segmentId = null): Collection { $query = $clientCase->contracts() ->select(['id', 'uuid', 'reference', 'start_date', 'end_date', 'description', 'meta', 'active', 'type_id', 'client_case_id', 'created_at']) @@ -40,9 +40,8 @@ public function getContracts(ClientCase $clientCase, ?int $segmentId = null, int $query->forSegment($segmentId); } - $perPage = max(1, min(100, $perPage)); - return $query->paginate($perPage, ['*'], 'contracts_page')->withQueryString(); + return $query->get(); } /** diff --git a/resources/js/Components/DataTable/DataTableNew2.vue b/resources/js/Components/DataTable/DataTableNew2.vue index 74067be..75fd293 100644 --- a/resources/js/Components/DataTable/DataTableNew2.vue +++ b/resources/js/Components/DataTable/DataTableNew2.vue @@ -11,7 +11,7 @@ import { } from "@tanstack/vue-table"; import { valueUpdater } from "@/lib/utils"; import DataTableColumnHeader from "./DataTableColumnHeader.vue"; -import DataTablePagination from "./DataTablePagination.vue"; +import DataTablePaginationClient from "./DataTablePaginationClient.vue"; import DataTableViewOptions from "./DataTableViewOptions.vue"; import DataTableToolbar from "./DataTableToolbar.vue"; import SkeletonTable from "../Skeleton/SkeletonTable.vue"; @@ -618,7 +618,14 @@ defineExpose({ diff --git a/resources/js/Components/DataTable/DataTablePaginationClient.vue b/resources/js/Components/DataTable/DataTablePaginationClient.vue index 1259b30..9f3e6d8 100644 --- a/resources/js/Components/DataTable/DataTablePaginationClient.vue +++ b/resources/js/Components/DataTable/DataTablePaginationClient.vue @@ -23,6 +23,7 @@ const props = defineProps({ showGoto: { type: Boolean, default: true }, maxPageLinks: { type: Number, default: 5 }, perPage: { type: Number, default: 10 }, + table: { type: Object, required: true }, }); const emit = defineEmits(["update:page"]); @@ -34,7 +35,7 @@ function goToPageInput() { const n = Number(raw); if (!Number.isFinite(n)) return; const target = Math.max(1, Math.min(props.lastPage, Math.floor(n))); - if (target !== props.currentPage) setPage(target); + if (target !== props.currentPage) props.table.setPageIndex(target - 1); gotoInput.value = ""; } @@ -136,14 +137,17 @@ function setPage(p) { > - + @@ -154,25 +158,22 @@ function setPage(p) { {{ item }} - + @@ -191,7 +192,7 @@ function setPage(p) { :max="lastPage" inputmode="numeric" class="w-10 h-full text-sm text-center bg-transparent border-0 outline-none focus:outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" - :placeholder="String(currentPage)" + :placeholder="String(currentPage + 1)" aria-label="Pojdi na stran" @keyup.enter="goToPageInput" @blur="goToPageInput" diff --git a/resources/js/Pages/Cases/Partials/ContractTable.vue b/resources/js/Pages/Cases/Partials/ContractTable.vue index aaf862b..b9701c3 100644 --- a/resources/js/Pages/Cases/Partials/ContractTable.vue +++ b/resources/js/Pages/Cases/Partials/ContractTable.vue @@ -489,7 +489,7 @@ const availableSegmentsCount = computed(() => { :empty-icon="faFolderOpen" empty-text="Ni pogodb" empty-description="Za ta primer še ni ustvarjenih pogodb. Ustvarite novo pogodbo za začetek." - :show-pagination="false" + :show-pagination="true" :show-toolbar="true" :hoverable="true" > diff --git a/resources/js/Pages/Cases/Show.vue b/resources/js/Pages/Cases/Show.vue index 5ece64d..792b4b1 100644 --- a/resources/js/Pages/Cases/Show.vue +++ b/resources/js/Pages/Cases/Show.vue @@ -31,7 +31,7 @@ import { const props = defineProps({ client: Object, client_case: Object, - contracts: Object, // Resource Collection with data/links/meta + contracts: { type: Array, default: () => [] }, // Resource Collection with data/links/meta activities: Object, // Resource Collection with data/links/meta contract_types: Array, account_types: { type: Array, default: () => [] }, @@ -46,7 +46,7 @@ const props = defineProps({ // Extract contracts array from Resource Collection const contractsArray = computed(() => { - return props.contracts?.data || []; + return props.contracts || []; }); // Contracts are always paginated now (Resource Collection) @@ -356,19 +356,6 @@ const submitAttachSegment = () => { @create="openDrawerCreateContract" @attach-segment="openAttachSegment" /> -
- -