From de9565270a88b0749d17c1961cd41399c8483c96 Mon Sep 17 00:00:00 2001
From: binxie <137736985@qq.com>
Date: 星期一, 26 六月 2023 17:46:45 +0800
Subject: [PATCH] merge
---
force-app/main/default/lwc/paginatedList/paginatedList.js | 126 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 126 insertions(+), 0 deletions(-)
diff --git a/force-app/main/default/lwc/paginatedList/paginatedList.js b/force-app/main/default/lwc/paginatedList/paginatedList.js
new file mode 100644
index 0000000..243ca83
--- /dev/null
+++ b/force-app/main/default/lwc/paginatedList/paginatedList.js
@@ -0,0 +1,126 @@
+import { LightningElement, api, track } from 'lwc';
+import getAccountsPaginated from '@salesforce/apex/PaginatedListControllerLwc.getAccountsPaginated';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+import { reduceErrors } from 'c/ldsUtils';
+import ACCOUNT_NAME_FIELD from '@salesforce/schema/Account.Name';
+import ACCOUNT_TYPE_FIELD from '@salesforce/schema/Account.Type';
+import ACCOUNT_PHONE_FIELD from '@salesforce/schema/Account.Type';
+import ACCOUNT_EMPLOYEES_FIELD from '@salesforce/schema/Account.NumberOfEmployees';
+
+const COLUMNS = [
+ {
+ label: 'Account Name',
+ fieldName: ACCOUNT_NAME_FIELD.fieldApiName,
+ type: 'text',
+ sortable: 'true'
+ },
+ { label: 'Type', fieldName: ACCOUNT_TYPE_FIELD.fieldApiName, type: 'text' },
+ {
+ label: 'Phone',
+ fieldName: ACCOUNT_PHONE_FIELD.fieldApiName,
+ type: 'phone'
+ },
+ {
+ label: 'Employees',
+ fieldName: ACCOUNT_EMPLOYEES_FIELD.fieldApiName,
+ type: 'Number'
+ }
+];
+
+export default class PaginatedList extends LightningElement {
+ columns = COLUMNS;
+ @track sortBy = 'Name';
+ @track sortDirection = 'asc';
+ @track pageSize = 10;
+ error;
+ records;
+ currentPageToken = 0;
+ nextPageToken = this.pageSize;
+ @track loader = false;
+ @track pageNumber = 1;
+ @track paginationVisibility = false;
+ @track totalPages = 1;
+ @api pageSizeOptions = [10, 25, 50, 75, 100];
+ connectedCallback() {
+ this.getAccounts();
+ }
+
+ getAccounts() {
+ this.loader = true;
+ getAccountsPaginated({
+ pageSize: this.pageSize,
+ pageToken: this.currentPageToken,
+ sortField: this.sortBy,
+ sortOrder: this.sortDirection
+ })
+ .then((result) => {
+ this.loader = false;
+ if (result) {
+ this.records = result.records;
+ this.nextPageToken = result.nextPageToken;
+ this.totalRecords = result.totalRecords;
+ this.recordStart = result.recordStart;
+ this.recordEnd = result.recordEnd;
+ this.totalPages = Math.ceil(
+ result.totalRecords / this.pageSize
+ );
+ this.paginationVisibility =
+ this.totalPages > 1 ? true : false;
+ }
+ })
+ .catch((error) => {
+ this.loader = false;
+ this.error = error;
+ this.currentPageToken = 0;
+ const evt = new ShowToastEvent({
+ title: 'Error',
+ message: reduceErrors(error).join(', '),
+ variant: 'error'
+ });
+ this.dispatchEvent(evt);
+ });
+ }
+ doSorting(event) {
+ console.log('Sort');
+ this.sortBy = event.detail.fieldName;
+ this.sortDirection = event.detail.sortDirection;
+ this.currentPageToken = 0;
+ this.getAccounts();
+ }
+
+ handlePrevious() {
+ this.currentPageToken =
+ Number(this.currentPageToken) - Number(this.pageSize);
+ this.getAccounts();
+ }
+
+ handleNext() {
+ this.currentPageToken =
+ Number(this.currentPageToken) + Number(this.pageSize);
+ this.getAccounts();
+ }
+ handleFirst() {
+ this.currentPageToken = 0;
+ this.getAccounts();
+ }
+
+ handleLast() {
+ this.currentPageToken =
+ this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0;
+ this.getAccounts();
+ }
+
+ handlePageschange(event) {
+ console.log(event.detail);
+ this.pageSize = event.detail;
+ this.currentPageToken = 0;
+ this.getAccounts();
+ }
+ get previousButtonDisabled() {
+ return this.currentPageToken === 0;
+ }
+
+ get nextButtonDisabled() {
+ return this.nextPageToken === undefined;
+ }
+}
--
Gitblit v1.9.1