From 3962c2bb0435484b60a3e408e4738d792e249a53 Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期一, 05 六月 2023 11:09:55 +0800
Subject: [PATCH] LEX CommunityNewCmp

---
 force-app/main/default/lwc/lexConsumableAccount/lexConsumableAccount.js |  718 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 718 insertions(+), 0 deletions(-)

diff --git a/force-app/main/default/lwc/lexConsumableAccount/lexConsumableAccount.js b/force-app/main/default/lwc/lexConsumableAccount/lexConsumableAccount.js
new file mode 100644
index 0000000..8687cd2
--- /dev/null
+++ b/force-app/main/default/lwc/lexConsumableAccount/lexConsumableAccount.js
@@ -0,0 +1,718 @@
+import { LightningElement, wire, api, track } from "lwc";
+import { ShowToastEvent } from "lightning/platformShowToastEvent";
+import init from "@salesforce/apex/LexConsumableAccountController.init";
+import changeFiscalYearView from "@salesforce/apex/LexConsumableAccountController.changeFiscalYearView";
+import changelistView from "@salesforce/apex/LexConsumableAccountController.changelistView";
+import accountInit from "@salesforce/apex/LexConsumableAccountInfoController.init";
+//table css
+import { loadStyle } from "lightning/platformResourceLoader";
+import WrappedHeaderTable from "@salesforce/resourceUrl/lexdatatable";
+
+const columns = [
+    {
+        label: "瀹㈡埛鍚�",
+        fieldName: "NameUrl",
+        hideDefaultActions: true,
+        wrapText: true,
+        initialWidth: 345,
+        sortable: true,
+        type: "url",
+        typeAttributes: {
+            label: {
+                fieldName: "Name",
+            },
+        },
+    },
+    {
+        label: "鐪�",
+        fieldName: "StateMasterUrl",
+        hideDefaultActions: true,
+        initialWidth: 80,
+        wrapText: true,
+        sortable: true,
+        type: "url",
+        typeAttributes: {
+            label: {
+                fieldName: "StateMasterName",
+            },
+            target: "_blank",
+        },
+    },
+    {
+        label: "閿�鍞湰閮ㄥ尰闄�",
+        fieldName: "Salesdepartment_HP__c",
+        initialWidth: 115,
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+    },
+    {
+        label: "鍒涘缓鏃ユ湡",
+        fieldName: "CreatedDate",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+        type: "date",
+        typeAttributes: {
+            timeZone: "Asia/Shanghai",
+            day: "numeric",
+            month: "numeric",
+            year: "numeric",
+        },
+        initialWidth: 100,
+    },
+    {
+        label: "鏈夋晥/鏃犳晥",
+        fieldName: "Is_Active__c",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+        initialWidth: 91,
+    },
+    {
+        label: "瀹㈡埛璁板綍绫诲瀷",
+        fieldName: "RecordTypeName",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+        initialWidth: 130,
+    },
+    {
+        label: "鏀垮簻绛夌骇",
+        fieldName: "Grade__c",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+        initialWidth: 86,
+    },
+    {
+        label: "OCSM鍒嗙被(鍖婚櫌)",
+        fieldName: "OCM_Category__c",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+        initialWidth: 150,
+    },
+    {
+        label: "甯�",
+        fieldName: "CityMasterNameUrl",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+        type: "url",
+        typeAttributes: {
+            label: {
+                fieldName: "CityMasterName",
+            },
+            target: "_blank",
+        },
+    },
+    {
+        label: "鍘�/鍖�",
+        fieldName: "Town__c",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+    },
+    {
+        label: "瀹㈡埛鐢佃瘽",
+        fieldName: "Phone",
+        hideDefaultActions: true,
+        sortable: true,
+        wrapText: true,
+    },
+];
+
+const topColumns = [
+    {
+        label: "瀹㈡埛鍚�",
+        fieldName: "NameUrl",
+        hideDefaultActions: true,
+        wrapText: true,
+        type: "url",
+        typeAttributes: {
+            label: {
+                fieldName: "Name",
+            },
+        },
+    },
+    {
+        label: "甯�",
+        fieldName: "CityMasterNameUrl",
+        hideDefaultActions: true,
+        wrapText: true,
+        type: "url",
+        typeAttributes: {
+            label: {
+                fieldName: "CityMasterName",
+            },
+            target: "_blank",
+        },
+    },
+    {
+        label: "鍘�/鍖�",
+        fieldName: "Town__c",
+        hideDefaultActions: true,
+        wrapText: true,
+    },
+    {
+        label: "閿�閲忓崰姣�",
+        fieldName: "proportion",
+        hideDefaultActions: true,
+        wrapText: true,
+        initialWidth: 100,
+        cellAttributes: { alignment: "right" },
+    },
+    {
+        label: "鎿嶄綔",
+        fieldName: "Town__c",
+        type: 'weeklyReport',
+        initialWidth: 150,
+        typeAttributes: {
+            recordId: { fieldName: "Id" },
+            hospitalName: { fieldName: "Name" },
+            isShowButton: { fieldName: "isShowButton" },
+        },
+        hideDefaultActions: true,
+    }
+];
+export default class LexConsumableAccount extends LightningElement {
+    columns = columns;
+    topColumns = topColumns;
+    @track isShowSpinner = true;
+    @track pageRecords = [];
+    @track accountId = "";
+    @track agencyProType = "";
+    @track agencyProTypestr = "";
+    @track listViewOptions = [
+        {
+            label: "01. 鍖婚櫌_Hospital",
+            value: "01. 鍖婚櫌_Hospital",
+        },
+        {
+            label: "61. 鍖婚櫌_Hospital鑽夋涓殑鍖婚櫌",
+            value: "61. 鍖婚櫌_Hospital鑽夋涓殑鍖婚櫌",
+        },
+        {
+            label: "62. 鍖婚櫌_Hospital鐢宠涓殑鍖婚櫌",
+            value: "62. 鍖婚櫌_Hospital鐢宠涓殑鍖婚櫌",
+        },
+        {
+            label: "63. 鍖婚櫌_Hospital涓婂懆鍒涘缓鐨勫尰闄�",
+            value: "63. 鍖婚櫌_Hospital涓婂懆鍒涘缓鐨勫尰闄�",
+        },
+    ];
+    @track viewOption = "01. 鍖婚櫌_Hospital";
+
+    @track isShowAccountInfo = false;
+    @track topAccountData = [];
+
+    //鍓嶇鎺掑簭
+    defaultSortDirection = "asc";
+    sortDirection = "asc";
+    sortedBy;
+
+    //鍒嗛〉start
+    @track sortBy = "";
+    @track pageSize = 10;
+    error;
+    records;
+    currentPageToken = 0;
+    nextPageToken = this.pageSize;
+    @track totalRecords = 0;
+    @track loader = false;
+    @track pageNumber = 1;
+    @track paginationVisibility = false;
+    @track totalPages = 1;
+    pageSizeOptions = [10, 25, 50, 100];
+    @track recordStart = 0;
+    @track recordEnd = 0;
+    //end
+
+    @track AccId = "";
+    @track printUrl = "";
+    @track accountDataInfo = {
+        name: "",
+        ownerName: "",
+        site: "",
+        isActive: "",
+        aliasName2: "",
+        banOnUseReason: "",
+        grade: "",
+        attributeType: "",
+        oCMCategory: "",
+        specialityType: "",
+        stateMasterName: "",
+        phone: "",
+        cityMasterName: "",
+        phoneCall: "",
+        town: "",
+        fax: "",
+        street: "",
+        postalCode: "",
+        address: "",
+        parentName: "",
+    };
+
+
+    stylesLoaded = false;
+
+    //璐㈠勾
+    @track fiscalYearOptions = [
+        { label: '鏈储骞�', value: 'thisYear' },
+        { label: '涓婁竴璐㈠勾', value: 'lastYear' },
+        { label: '涓婁竴璐㈠勾+鏈储骞�', value: 'allYear' },
+    ];
+    @track fiscalYearOption = 'thisYear';
+    @track topInfo = [];
+
+    renderedCallback() {
+        if (!this.stylesLoaded) {
+            Promise.all([loadStyle(this, WrappedHeaderTable)])
+                .then(() => {
+                    console.log("Custom styles loaded");
+                    this.stylesLoaded = true;
+                })
+                .catch((error) => {
+                    console.error("Error loading custom styles");
+                });
+        }
+    }
+
+    //鑾峰彇閾炬帴鍙傛暟
+    getQueryString(name) {
+        console.log("getQueryString name " + name);
+        let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+        let r = window.location.search.substr(1).match(reg);
+        if (r != null) {
+            return decodeURIComponent(r[2]);
+        }
+        return null;
+    }
+
+    connectedCallback() {
+        this.AccId = this.getQueryString("AccId");
+        this.AccId = this.AccId == null ? "" : this.AccId;
+        if (this.AccId != "") {
+            console.log("this.AccId = " + this.AccId);
+            accountInit({
+                accId: this.AccId,
+            }).then((r) => {
+                r = JSON.parse(JSON.stringify(r));
+                console.log("r = " + JSON.stringify(r));
+                if (r.status == "Success") {
+                    this.accountDataInfo.name = r.entity.obj.Name;
+                    this.accountDataInfo.ownerName =
+                        r.entity.obj.Owner == null ? "" : r.entity.obj.Owner.Name;
+                    this.accountDataInfo.site = r.entity.obj.site;
+                    this.accountDataInfo.isActive = r.entity.obj.Is_Active__c;
+                    this.accountDataInfo.aliasName2 = r.entity.obj.Alias_Name2__c;
+                    this.accountDataInfo.banOnUseReason =
+                        r.entity.obj.Ban_On_Use_Reason__c;
+                    this.accountDataInfo.grade = r.entity.obj.Grade__c;
+                    this.accountDataInfo.attributeType = r.entity.obj.Attribute_Type__c;
+                    this.accountDataInfo.oCMCategory = r.entity.obj.OCM_Category__c;
+                    this.accountDataInfo.specialityType =
+                        r.entity.obj.Speciality_Type__c;
+                    this.accountDataInfo.stateMasterName =
+                        r.entity.obj.State_Master__r == null
+                            ? ""
+                            : r.entity.obj.State_Master__r.Name;
+                    this.accountDataInfo.phone = r.entity.obj.Phone;
+                    this.accountDataInfo.cityMasterName =
+                        r.entity.obj.City_Master__r == null
+                            ? ""
+                            : r.entity.obj.City_Master__r.Name;
+                    this.accountDataInfo.phoneCall = r.entity.obj.PhoneCall__c;
+                    this.accountDataInfo.town = r.entity.obj.Town__c;
+                    this.accountDataInfo.fax = r.entity.obj.Fax;
+                    this.accountDataInfo.street = r.entity.obj.Street__c;
+                    this.accountDataInfo.postalCode = r.entity.obj.Postal_Code__c;
+                    this.accountDataInfo.address = r.entity.obj.Address__c;
+                    this.accountDataInfo.parentName =
+                        r.entity.obj.Parent == null ? "" : r.entity.obj.Parent.Name;
+                    console.log(
+                        "this.accountDataInfo = " + JSON.stringify(this.accountDataInfo)
+                    );
+                    this.printUrl =
+                        "/lexconsumableaccountinfoprint?AccId=" + this.AccId;
+                    this.isShowAccountInfo = true;
+                    this.isShowSpinner = false;
+                } else {
+                    console.log("r = " + JSON.stringify(r));
+                    this.showMyToast('Error', r.msg, 'Error');
+                }
+            }).catch((error) => {
+                console.log("error = " + JSON.stringify(error));
+                this.showMyToast('Error', '鍒濆鍖栧け璐�', 'Error');
+            });
+        } else {
+            init({
+                pageSizeLWC: this.pageSize,
+                pageTokenLWC: this.currentPageToken,
+                fiscalYear: this.fiscalYearOption
+            }).then((r) => {
+                r = JSON.parse(JSON.stringify(r));
+                console.log("r = " + JSON.stringify(r));
+                if (r.status == "Success") {
+                    //鍒嗛〉
+                    this.nextPageToken = r.entity.paginatedAccounts.nextPageToken;
+                    this.totalRecords = r.entity.paginatedAccounts.totalRecords;
+                    this.recordStart = r.entity.paginatedAccounts.recordStart;
+                    this.recordEnd = r.entity.paginatedAccounts.recordEnd;
+                    this.totalPages = Math.ceil(
+                        r.entity.paginatedAccounts.totalRecords / this.pageSize
+                    );
+                    console.log("this.totalPages = " + this.totalPages);
+                    this.paginationVisibility = this.totalPages > 1 ? true : false;
+
+                    this.pageRecords = r.entity.pageRecords;
+                    this.accountId = r.entity.accountId;
+                    this.agencyProType = r.entity.agencyProType;
+                    this.agencyProTypestr = r.entity.agencyProTypestr;
+                    console.log("this.agencyProTypestr = " + this.agencyProTypestr);
+                    for (var i in this.pageRecords) {
+                        this.pageRecords[i]["NameUrl"] = "/lexconsumableaccount?AccId=" + this.pageRecords[i].Id;
+                        this.pageRecords[i]["StateMasterName"] = this.pageRecords[i].State_Master__r.Name;
+                        this.pageRecords[i]["StateMasterUrl"] = "/" + this.pageRecords[i].State_Master__c;
+                        this.pageRecords[i]["CityMasterName"] = this.pageRecords[i].City_Master__r.Name;
+                        this.pageRecords[i]["CityMasterNameUrl"] = "/" + this.pageRecords[i].City_Master__c;
+                        this.pageRecords[i]["RecordTypeName"] = this.pageRecords[i].RecordType.Name;
+                    }
+                    console.log(
+                        "this.listViewOptions = " + JSON.stringify(this.listViewOptions)
+                    );
+
+                    console.log('r.entity.topInfo = ' + JSON.stringify(r.entity.topInfo))
+                    //top10瀹㈡埛
+                    this.topInfo = r.entity.topInfo;
+                    console.log("this.topInfo = " + JSON.stringify(this.topInfo));
+                    this.topAccountData = this.topInfo.acList;
+                    console.log(
+                        "this.topAccountData = " + JSON.stringify(this.topAccountData)
+                    );
+                    console.log('9/3 = ' + this.keepTwoDecimalStr(this.amend(9, 3, '/').toFixed(2)));
+                    let total = 100;
+                    for (var i in this.topAccountData) {
+                        console.log('i = ' + i);
+                        this.topAccountData[i]["NameUrl"] = "/lexconsumableaccount?AccId=" + this.topAccountData[i].Id;
+                        this.topAccountData[i]["StateMasterName"] = this.topAccountData[i].State_Master__r.Name;
+                        this.topAccountData[i]["StateMasterUrl"] = "/" + this.topAccountData[i].State_Master__c;
+                        this.topAccountData[i]["CityMasterName"] = this.topAccountData[i].City_Master__r.Name;
+                        this.topAccountData[i]["CityMasterNameUrl"] = "/" + this.topAccountData[i].City_Master__c;
+                        this.topAccountData[i]["RecordTypeName"] = this.topAccountData[i].RecordType.Name;
+                        this.topAccountData[i]["isShowButton"] = true;
+                        let number = this.keepTwoDecimalStr((this.amend(this.topInfo.deList[i], this.topInfo.saleAmount, '/') * 100).toFixed(2));
+                        total -= number;
+                        this.topAccountData[i]["proportion"] = number + '%';
+                    }
+
+                    // //鍏朵粬
+                    if (total != 100) {
+                        this.topAccountData.push({
+                            Name: '...',
+                            NameUrl: '/lexconsumableaccount',
+                            proportion: total.toFixed(2) + '%',
+                            CityMasterName: '...',
+                            CityMasterNameUrl: '/lexconsumableaccount',
+                            Town__c: '...',
+                            isShowButton: false
+                        })
+                    } else {
+                        let title = '';
+                        for (var key in this.fiscalYearOptions) {
+                            if (this.fiscalYearOption == this.fiscalYearOptions[key].value)
+                                title = this.fiscalYearOptions[key].label;
+                        }
+                        this.showMyToast(title, '鏃犳暟鎹�', 'Error');
+                    }
+                    this.isShowSpinner = false;
+                } else {
+                    console.log("r = " + JSON.stringify(r));
+                    this.showMyToast('Error', r.msg, 'Error');
+                }
+            }).catch((error) => {
+                console.log("error = " + JSON.stringify(error));
+                this.showMyToast('Error', '閿�閲忓墠鍗佸鎴峰垵濮嬪寲澶辫触', 'Error');
+            });
+        }
+    }
+
+    amend(num1, num2, symbol) {
+        var str1 = num1.toString(),
+            str2 = num2.toString(),
+            result,
+            str1Length,
+            str2Length;
+        //瑙e喅鏁存暟娌℃湁灏忔暟鐐规柟娉�
+        try {
+            str1Length = str1.split(".")[1].length;
+        } catch (error) {
+            str1Length = 0;
+        }
+        try {
+            str2Length = str2.split(".")[1].length;
+        } catch (error) {
+            str2Length = 0;
+        }
+        var step = Math.pow(10, Math.max(str1Length, str2Length));
+        console.log(step);
+        switch (symbol) {
+            case "+":
+                result = (num1 * step + num2 * step) / step;
+                break;
+            case "-":
+                result = (num1 * step - num2 * step) / step;
+                break;
+            case "*":
+                result = (num1 * step * (num2 * step)) / step / step;
+                break;
+            case "/":
+                result = (num1 * step) / (num2 * step);
+                break;
+            default:
+                break;
+        }
+        return result;
+    }
+
+
+    keepTwoDecimalStr(num) {
+        const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
+        let s = result.toString();
+        let rs = s.indexOf('.');
+        if (rs < 0) {
+            rs = s.length;
+            s += '.';
+        }
+        while (s.length <= rs + 2) {
+            s += '0';
+        }
+        return s;
+    };
+
+    dataChange(event) {
+        let fieldName = event.target.getAttribute("data-field");
+        let value = event.detail.value;
+        console.log("fieldName = " + fieldName + " value = " + value);
+        switch (fieldName) {
+            case 'viewOption':
+                this.viewOption = value;
+                this.changelistView();
+                break;
+            case 'fiscalYearOption':
+                this.fiscalYearOption = value;
+                this.changeFiscalYear();
+                break;
+        }
+    }
+
+    changeFiscalYear() {
+        this.isShowSpinner = true;
+        changeFiscalYearView({
+            fiscalYear: this.fiscalYearOption
+        }).then((r) => {
+            r = JSON.parse(JSON.stringify(r));
+            console.log("r = " + JSON.stringify(r));
+            if (r.status == "Success") {
+                //top10瀹㈡埛
+                this.topInfo = r.entity.topInfo;
+                console.log("this.topInfo = " + JSON.stringify(this.topInfo));
+                this.topAccountData = this.topInfo.acList;
+                console.log(
+                    "this.topAccountData = " + JSON.stringify(this.topAccountData)
+                );
+                let total = 100;
+                for (var i in this.topAccountData) {
+                    console.log('i = ' + i);
+                    this.topAccountData[i]["NameUrl"] = "/lexconsumableaccount?AccId=" + this.topAccountData[i].Id;
+                    this.topAccountData[i]["StateMasterName"] = this.topAccountData[i].State_Master__r.Name;
+                    this.topAccountData[i]["StateMasterUrl"] = "/" + this.topAccountData[i].State_Master__c;
+                    this.topAccountData[i]["CityMasterName"] = this.topAccountData[i].City_Master__r.Name;
+                    this.topAccountData[i]["CityMasterNameUrl"] = "/" + this.topAccountData[i].City_Master__c;
+                    this.topAccountData[i]["RecordTypeName"] = this.topAccountData[i].RecordType.Name;
+                    this.topAccountData[i]["isShowButton"] = true;
+                    let number = this.keepTwoDecimalStr((this.amend(this.topInfo.deList[i], this.topInfo.saleAmount, '/') * 100).toFixed(2));
+                    total -= number;
+                    this.topAccountData[i]["proportion"] = number + '%';
+                }
+
+                // //鍏朵粬
+                if (total != 100) {
+                    this.topAccountData.push({
+                        Name: '...',
+                        NameUrl: '/lexconsumableaccount',
+                        proportion: total.toFixed(2) + '%',
+                        CityMasterName: '...',
+                        CityMasterNameUrl: '/lexconsumableaccount',
+                        Town__c: '...',
+                        isShowButton: false
+                    })
+                } else {
+                    let title = '';
+                    for (var key in this.fiscalYearOptions) {
+                        if (this.fiscalYearOption == this.fiscalYearOptions[key].value)
+                            title = this.fiscalYearOptions[key].label;;
+                    }
+                    this.showMyToast(title, '鏃犳暟鎹�', 'Error');
+                }
+
+                this.isShowSpinner = false;
+            } else {
+                console.log("r = " + JSON.stringify(r));
+                this.showMyToast('Error', r.msg, 'Error');
+            }
+        }).catch((error) => {
+            console.log("error = " + JSON.stringify(error));
+            this.showMyToast('Error', '閿�閲忓墠鍗佸鎴峰垵濮嬪寲澶辫触', 'Error');
+        });
+    }
+
+    changelistView() {
+        this.isShowSpinner = true;
+        changelistView({
+            filterNameLwc: this.viewOption,
+            accountIdLwc: this.accountId,
+            agencyProTypeLwc: this.agencyProType,
+            pageSizeLWC: this.pageSize,
+            pageTokenLWC: this.currentPageToken,
+            sortFieldLWC: this.sortBy,
+            sortOrderLWC: this.sortDirection,
+        })
+            .then((r) => {
+                r = JSON.parse(JSON.stringify(r));
+                console.log("r = " + JSON.stringify(r));
+                if (r.status == "Success") {
+                    //鍒嗛〉
+                    this.nextPageToken = r.entity.paginatedAccounts.nextPageToken;
+                    this.totalRecords = r.entity.paginatedAccounts.totalRecords;
+                    this.recordStart = r.entity.paginatedAccounts.recordStart;
+                    this.recordEnd = r.entity.paginatedAccounts.recordEnd;
+                    this.totalPages = Math.ceil(
+                        r.entity.paginatedAccounts.totalRecords / this.pageSize
+                    );
+                    console.log("this.totalPages = " + this.totalPages);
+                    this.paginationVisibility = this.totalPages > 1 ? true : false;
+
+                    this.pageRecords = r.entity.pageRecords;
+                    console.log("this.pageRecords = " + JSON.stringify(this.pageRecords));
+                    for (var i in this.pageRecords) {
+                        this.pageRecords[i]["NameUrl"] =
+                            "/lexconsumableaccount?AccId=" + this.pageRecords[i].Id;
+                        this.pageRecords[i]["StateMasterName"] =
+                            this.pageRecords[i].State_Master__r.Name;
+                        this.pageRecords[i]["StateMasterUrl"] =
+                            "/" + this.pageRecords[i].State_Master__c;
+                        this.pageRecords[i]["CityMasterName"] =
+                            this.pageRecords[i].City_Master__r.Name;
+                        this.pageRecords[i]["CityMasterNameUrl"] =
+                            "/" + this.pageRecords[i].City_Master__c;
+                        this.pageRecords[i]["RecordTypeName"] =
+                            this.pageRecords[i].RecordType.Name;
+                    }
+                    this.isShowSpinner = false;
+                } else {
+                    this.showMyToast('Error', r.msg, 'Error');
+                }
+            }).catch((error) => {
+                console.log('error = ' + JSON.stringify(error.message))
+            });
+    }
+
+    showMyToast(title, message, variant) {
+        this.isShowSpinner = false;
+        console.log('show custom message');
+        var iconName = '';
+        var content = '';
+        if (variant.toLowerCase() == 'success') {
+            iconName = 'utility:check';
+        } else {
+            iconName = 'utility:error';
+        }
+        if (message != '') {
+            content = '<h2><strong>' + title + '<strong/></h2><h5>' + message + '</h5>';
+        } else {
+            content = '<h2><strong>' + title + '<strong/></h2>';
+        }
+        this.template.querySelector('c-common-toast').showToast(variant, content, iconName, 10000);
+    }
+
+    sortByMethod(field, reverse, primer) {
+        const key = primer
+            ? function (x) {
+                return primer(x[field]);
+            }
+            : function (x) {
+                return x[field];
+            };
+
+        return function (a, b) {
+            a = key(a);
+            b = key(b);
+            return reverse * ((a > b) - (b > a));
+        };
+    }
+
+    onHandleSort(event) {
+        this.sortBy = event.detail.fieldName;
+        switch (this.sortBy) {
+            case "NameUrl":
+                this.sortBy = "Name";
+                break;
+            case "StateMasterUrl":
+                this.sortBy = "State_Master__r.Name";
+                break;
+            case "RecordTypeName":
+                this.sortBy = "RecordType.Name";
+                break;
+            case "CityMasterNameUrl":
+                this.sortBy = "City_Master__r.Name";
+                break;
+        }
+        this.sortDirection = event.detail.sortDirection;
+        this.currentPageToken = 0;
+        console.log("this.sortBy = " + this.sortBy);
+        console.log("this.sortDirection = " + this.sortDirection);
+        this.changelistView();
+        const { fieldName: sortedBy, sortDirection } = event.detail;
+        this.sortByMethod(sortedBy, sortDirection === "asc" ? 1 : -1);
+        this.sortDirection = sortDirection;
+        this.sortedBy = sortedBy;
+    }
+
+    handlePrevious() {
+        this.currentPageToken =
+            Number(this.currentPageToken) - Number(this.pageSize);
+        this.changelistView();
+    }
+
+    handleNext() {
+        this.currentPageToken =
+            Number(this.currentPageToken) + Number(this.pageSize);
+        this.changelistView();
+    }
+    handleFirst() {
+        this.currentPageToken = 0;
+        this.changelistView();
+    }
+
+    handleLast() {
+        this.currentPageToken =
+            this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0;
+        this.changelistView();
+    }
+
+    handlePageschange(event) {
+        console.log(event.detail);
+        this.pageSize = event.detail;
+        this.currentPageToken = 0;
+        this.changelistView();
+    }
+    get previousButtonDisabled() {
+        return this.currentPageToken === 0;
+    }
+
+    get nextButtonDisabled() {
+        return this.nextPageToken === undefined;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1