From dd004276162a2bf9d042ff0aaa569dc30a95d827 Mon Sep 17 00:00:00 2001
From: binxie <137736985@qq.com>
Date: 星期一, 26 六月 2023 14:23:26 +0800
Subject: [PATCH] newbackup0626

---
 force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js |  212 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 118 insertions(+), 94 deletions(-)

diff --git a/force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js b/force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js
index a6ede92..b201755 100644
--- a/force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js
+++ b/force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js
@@ -1,35 +1,34 @@
-import { LightningElement, api,track } from 'lwc';
+import { LightningElement, api, track } from 'lwc';
 import customUnitTemplate from './templates/customUnit.html';
 import customShipmentNumberTemplate from './templates/customShipmentNumber.html';
 import customShippingUnitPriceTemplate from './templates/customShippingUnitPrice.html';
 
 const DELAY = 300;
-const recordsPerPage = [5,10,25,50,75,100];
+const recordsPerPage = [5, 10, 25, 50, 75, 100];
 const pageNumber = 1;
 const SHOWDIV = 'visibility:visible';
-const HIDEDIV = 'visibility:hidden';  
+const HIDEDIV = 'visibility:hidden';
 const DEFAULTHEIGHT = '300';
 
 export default class LwcDatatableUtility extends LightningElement {
-
     static customTypes = {
         customUnit: {
             template: customUnitTemplate,
             standardCellLayout: true,
-            typeAttributes: ['Id'],
+            typeAttributes: ['Id']
         },
         customShipment: {
             template: customShipmentNumberTemplate,
             standardCellLayout: true,
-            typeAttributes: ['Id'],
+            typeAttributes: ['Id']
         },
         customShipmentUnitPrice: {
             template: customShippingUnitPriceTemplate,
             standardCellLayout: true,
-            typeAttributes: ['Id'],
+            typeAttributes: ['Id']
         }
         // Other types here
-    } 
+    };
 
     // Input Attributes from Parent Componant
     @api keyField = 'Id';
@@ -38,32 +37,32 @@
     @api pageSizeOptions = recordsPerPage; //Page size options; valid values are array of integers
     @api totalRecords; //Total no.of records; valid type is Integer
     @api records; //All records available in the data table; valid type is Array
-    @api maxRowSelection; //All records available in the data table; valid type is Array 
+    @api maxRowSelection; //All records available in the data table; valid type is Array
     @api columns = []; //Records to be displayed on the page
     @api hidecheckboxcolumn = false;
     @api showrownumber = false;
-    
-    tableHeightStyle = 'height: '+ DEFAULTHEIGHT +'px;';    // Set Default Height as 300px 
+
+    tableHeightStyle = 'height: ' + DEFAULTHEIGHT + 'px;'; // Set Default Height as 300px
     @api
     get tableHeight() {
         return this.tableHeightStyle;
     }
 
     set tableHeight(value) {
-       this.tableHeightStyle = 'height: '+ value +'px;'; 
-    }    
+        this.tableHeightStyle = 'height: ' + value + 'px;';
+    }
 
     pageSize; //No.of records to be displayed per page
     totalPages; //Total no.of pages
     pageNumber = pageNumber; //Page number
     searchKey; //Search Input
-    paginationVisibility = SHOWDIV; 
+    paginationVisibility = SHOWDIV;
     rowNumberOffset; //Row number
     preSelected; //preSelectedOnDisplay
     recordsToDisplay = []; //Records to be displayed on the page
-    
+
     filteredRecords = []; //Filtered records available in the data table; valid type is Array
-    selectedRecords = []; //OverallSelected records  in the data table; valid type is Array 
+    selectedRecords = []; //OverallSelected records  in the data table; valid type is Array
     pageSelectedRecords = []; //Page Selected rows  in the data table; valid type is Array
     filtredNum; // Total no.of Filtered records; valid type is Integer
     totalSelected = 0;
@@ -71,95 +70,98 @@
     //SORT
     defaultSortDirection = 'asc';
     sortDirection = 'asc';
-    sortedBy;    
+    sortedBy;
 
     //Called after the component finishes inserting to DOM
     connectedCallback() {
         console.log('杩涘叆 瀛愮粍浠� connectedCallback ');
-        console.log('this.records = '  + JSON.stringify(this.records));
+        console.log('this.records = ' + JSON.stringify(this.records));
         console.log('keyField = ' + this.keyField);
-        if(this.pageSizeOptions && this.pageSizeOptions.length > 0) 
+        if (this.pageSizeOptions && this.pageSizeOptions.length > 0)
             this.pageSize = this.pageSizeOptions[0];
-        else{
+        else {
             this.pageSize = this.totalRecords;
             this.showPagination = false;
         }
-        this.paginationVisibility = this.showPagination === false ? HIDEDIV : SHOWDIV;
-        this.filteredRecords = this.records; 
+        this.paginationVisibility =
+            this.showPagination === false ? HIDEDIV : SHOWDIV;
+        this.filteredRecords = this.records;
         this.filtredNum = this.totalRecords;
         this.setRecordsOnPage();
     }
 
-    handleRecordsPerPage(event){
+    handleRecordsPerPage(event) {
         this.pageSize = event.target.value;
         this.setRecordsOnPage();
     }
 
-    handlePageNumberChange(event){
-        if(event.keyCode === 13){
+    handlePageNumberChange(event) {
+        if (event.keyCode === 13) {
             this.pageNumber = event.target.value;
             this.setRecordsOnPage();
         }
     }
-   
-    previousPage(){
-        this.pageNumber = this.pageNumber-1;
+
+    previousPage() {
+        this.pageNumber = this.pageNumber - 1;
         this.setRecordsOnPage();
     }
-    nextPage(){
-        this.pageNumber = this.pageNumber+1;
+    nextPage() {
+        this.pageNumber = this.pageNumber + 1;
         this.setRecordsOnPage();
     }
 
     @api
-    setRecordsOnPage(){
+    setRecordsOnPage() {
         this.recordsToDisplay = [];
-        if(!this.pageSize)
-            this.pageSize = this.filtredNum;
+        if (!this.pageSize) this.pageSize = this.filtredNum;
 
-        this.totalPages = Math.ceil(this.filtredNum/this.pageSize);
+        this.totalPages = Math.ceil(this.filtredNum / this.pageSize);
 
         this.setPaginationControls();
-        for(let i=(this.pageNumber-1)*this.pageSize; i < this.pageNumber*this.pageSize; i++){
-            if(i === this.filtredNum) break;
+        for (
+            let i = (this.pageNumber - 1) * this.pageSize;
+            i < this.pageNumber * this.pageSize;
+            i++
+        ) {
+            if (i === this.filtredNum) break;
             this.recordsToDisplay.push(this.filteredRecords[i]);
         }
 
         this.preSelected = [];
         this.selectedRecords.forEach((item) => {
-            if(item.selected)
-                this.preSelected.push(item.Id);
-        })       
+            if (item.selected) this.preSelected.push(item.Id);
+        });
         let paginatedRecords = new Object();
         paginatedRecords.recordsToDisplay = this.recordsToDisplay;
         paginatedRecords.preSelected = this.preSelected;
-        if(this.maxRowSelection === '1' ){
+        if (this.maxRowSelection === '1') {
             this.totalSelected = 0;
-        }    
-        if(this.selectedRecords && this.selectedRecords.length > 0){
+        }
+        if (this.selectedRecords && this.selectedRecords.length > 0) {
             this.refreshCurrentData = true;
-        }                                      
+        }
     }
 
-    setPaginationControls(){
+    setPaginationControls() {
         // Previous/Next buttons visibility by Total pages
-        if(this.totalPages === 1){
+        if (this.totalPages === 1) {
             this.showPrevious = HIDEDIV;
             this.showNext = HIDEDIV;
-        }else if(this.totalPages > 1){
-           this.showPrevious = SHOWDIV;
-           this.showNext = SHOWDIV;
+        } else if (this.totalPages > 1) {
+            this.showPrevious = SHOWDIV;
+            this.showNext = SHOWDIV;
         }
         // Previous/Next buttons visibility by Page number
-        if(this.pageNumber <= 1){
+        if (this.pageNumber <= 1) {
             this.pageNumber = 1;
             this.showPrevious = HIDEDIV;
-        }else if(this.pageNumber >= this.totalPages){
+        } else if (this.pageNumber >= this.totalPages) {
             this.pageNumber = this.totalPages;
             this.showNext = HIDEDIV;
         }
         // Previous/Next buttons visibility by Pagination visibility
-        if(this.paginationVisibility === HIDEDIV){
+        if (this.paginationVisibility === HIDEDIV) {
             this.showPrevious = HIDEDIV;
             this.showNext = HIDEDIV;
         }
@@ -168,7 +170,7 @@
     handleKeyChange(event) {
         window.clearTimeout(this.delayTimeout);
         const searchKey = event.target.value;
-        if(searchKey){
+        if (searchKey) {
             this.delayTimeout = setTimeout(() => {
                 //this.paginationVisibility = HIDEDIV;
                 this.setPaginationControls();
@@ -177,97 +179,119 @@
                 //Use other field name here in place of 'Name' field if you want to search by other field
                 //this.recordsToDisplay = this.records.filter(rec => rec.includes(searchKey));
                 //Search with any column value (Updated as per the feedback)
-                this.filteredRecords = this.records.filter(rec => JSON.stringify(rec).toLowerCase().includes(searchKey.toLowerCase()));
-                this.filtredNum = this.filteredRecords.length; 
+                this.filteredRecords = this.records.filter((rec) =>
+                    JSON.stringify(rec)
+                        .toLowerCase()
+                        .includes(searchKey.toLowerCase())
+                );
+                this.filtredNum = this.filteredRecords.length;
                 this.setRecordsOnPage();
             }, DELAY);
-        }else{
-            this.filteredRecords = this.records; 
-            this.filtredNum = this.totalRecords;            
+        } else {
+            this.filteredRecords = this.records;
+            this.filtredNum = this.totalRecords;
             this.paginationVisibility = SHOWDIV;
             this.setRecordsOnPage();
-        }        
+        }
     }
 
     handelRowsSelected(selectedRows) {
         console.log(selectedRows.length);
         this.totalSelected = 0;
         this.pageSelectedRecords = [];
-        if(this.maxRowSelection != '1' && this.recordsToDisplay && 
-            this.recordsToDisplay.length > 0 && 
-            ((selectedRows.length === 0 && !this.refreshCurrentData) || selectedRows.length > 0) ){                       
-            this.recordsToDisplay.forEach((item)=>{                
-                var row = new Object(); 
-                row.Id = item.Id;                
-                if(selectedRows.includes(item.Id)){
+        if (
+            this.maxRowSelection != '1' &&
+            this.recordsToDisplay &&
+            this.recordsToDisplay.length > 0 &&
+            ((selectedRows.length === 0 && !this.refreshCurrentData) ||
+                selectedRows.length > 0)
+        ) {
+            this.recordsToDisplay.forEach((item) => {
+                var row = new Object();
+                row.Id = item.Id;
+                if (selectedRows.includes(item.Id)) {
                     row.selected = true;
-                }else{
+                } else {
                     row.selected = false;
                 }
-                this.pageSelectedRecords.push(row) ;
-            });                       
+                this.pageSelectedRecords.push(row);
+            });
         }
         // To store previous row Selection
-        if(this.selectedRecords.length == 0 ){
+        if (this.selectedRecords.length == 0) {
             this.selectedRecords = this.pageSelectedRecords;
         }
-        this.selectedRecords = this.mergeObjectArray(this.selectedRecords, this.pageSelectedRecords, "Id");          
-        if(this.maxRowSelection === '1' && selectedRows && selectedRows.length > 0){
+        this.selectedRecords = this.mergeObjectArray(
+            this.selectedRecords,
+            this.pageSelectedRecords,
+            'Id'
+        );
+        if (
+            this.maxRowSelection === '1' &&
+            selectedRows &&
+            selectedRows.length > 0
+        ) {
             this.totalSelected = 1;
-        }else{
-            let i=0;
-            this.selectedRecords.forEach(item => {
-                if(item.selected){
+        } else {
+            let i = 0;
+            this.selectedRecords.forEach((item) => {
+                if (item.selected) {
                     i++;
                     this.totalSelected = i;
                 }
-            }) 
-            //this.totalSelected = this.totalSelected ===1 && selectedRows.length ===0? 0: this.totalSelected;           
+            });
+            //this.totalSelected = this.totalSelected ===1 && selectedRows.length ===0? 0: this.totalSelected;
         }
-        const filterSelected = this.selectedRecords.filter(({ selected }) => selected === true );
-        this.dispatchEvent(new CustomEvent('setselectedrecords', {detail: filterSelected})); //Send records to display on table to the parent component
+        const filterSelected = this.selectedRecords.filter(
+            ({ selected }) => selected === true
+        );
+        this.dispatchEvent(
+            new CustomEvent('setselectedrecords', { detail: filterSelected })
+        ); //Send records to display on table to the parent component
         this.refreshCurrentData = false;
     }
 
-    mergeObjectArray(firstArray, secondArray, prop){
-        var reduced =  firstArray.filter( aitem => ! secondArray.find ( bitem => aitem[prop] === bitem[prop]) )
+    mergeObjectArray(firstArray, secondArray, prop) {
+        var reduced = firstArray.filter(
+            (aitem) => !secondArray.find((bitem) => aitem[prop] === bitem[prop])
+        );
         //let arr3 = arr1.map((item, i) => Object.assign({}, item, arr2[i]));
         return reduced.concat(secondArray);
-    }    
+    }
 
     getSelectedRows(event) {
         const selectedRows = event.detail.selectedRows;
         let selectedRecordIds = [];
         // Display that fieldName of the selected rows
-        for (let i = 0; i < selectedRows.length; i++){
+        for (let i = 0; i < selectedRows.length; i++) {
             selectedRecordIds.push(selectedRows[i].Id);
-        }     
-        this.handelRowsSelected(selectedRecordIds);        
-    }      
+        }
+        this.handelRowsSelected(selectedRecordIds);
+    }
 
-    handelSort(event){        
+    handelSort(event) {
         const { fieldName: sortedBy, sortDirection } = event.detail;
         const cloneData = [...this.filteredRecords];
         cloneData.sort(this.sortBy(sortedBy, sortDirection === 'asc' ? 1 : -1));
-        this.filteredRecords = cloneData;  
+        this.filteredRecords = cloneData;
         this.sortDirection = sortDirection;
-        this.sortedBy = sortedBy;        
+        this.sortedBy = sortedBy;
         this.setRecordsOnPage();
-    } 
+    }
 
     sortBy(field, reverse, primer) {
         const key = primer
-            ? function(x) {
+            ? function (x) {
                   return primer(x[field]);
               }
-            : function(x) {
+            : function (x) {
                   return x[field];
               };
 
-        return function(a, b) {
+        return function (a, b) {
             a = key(a);
             b = key(b);
             return reverse * ((a > b) - (b > a));
         };
-    }    
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.1