我正在尝试为“基本”和“高级”订阅者获取有限的记录,并在分页中显示记录计数。
我尝试了很多方法来显示以下格式的记录。
如果,我创建“BASIC”订阅者,那么它的“value = 0”和“PREMIUM”它的“value = 1”。
对于“BASIC”订阅者,我想显示最新的 30 条记录。喜欢:
- 如果,我有“total = 8”的记录。然后,它将获取 8 条记录并在分页中显示(8 条中的 1-8 条)记录。
- 如果,我有“总计 = 35”条记录。然后。它将获取最新的 30 条记录并在分页中显示(30 条中的 1-30 条)记录,因为我想为基本用户显示 10 条最新记录。
对于“高级”订阅者,我想显示最新的 50 条记录,pageSize 为 30。例如:
- 如果,我有“总计 = 55”条记录。然后,它将以 {30-30} 的形式获取记录,并在第一页显示 (1-30 out of 55),在下一页显示 (31 - 55 out 55)。
- 如果,我有“总计 = 75”条记录。然后。它将获取最新的 100 条记录并在第一页中显示(50 条中的 1-30 条),在下一页中的分页中显示(50 条中的 31-50 条),因为我想为高级用户显示最新的 50 条记录。
下面是我的代码,请纠正我的错误。感谢您的任何帮助。
健康)状况:
- 如果 userType = 0 那么,User = "BASIC"
- 如果 userType = 1 那么,User = "Premium"
// const pageSize = parseInt(50);
this.state = {
pageInfo: {
offset: 0,
limit: (userType === 1)? premium: basic,
total: -1
},
currentPage: 1,
totalRecords: null,
currentRecords: [],
logRecords: [],
}
// Here, I am fetching data from API using ajax request
myUserRecords(){
var pageInfo = {};
pageInfo = this.state.pageInfo;
pageInfo = { ...pageInfo, total: -1 }
if (this.state.currentRecords.length !== 0 && ((this.state.currentPage *
this.pageLimit) - this.pageLimit) > this.state.currentRecords.length) {
this.setState({ currentPage: 1 })
pageInfo = { ...pageInfo, offset: 0 }
}
$.ajax({
method: "GET",
url: API + encodeURIComponent(JSON.stringify(filter)),
dataType: 'json',
})
.done(function (result) {
this.setState({ logRecords : result.records, pageInfo : result.pageInfo });
let currentPage = this.state.currentPage;
if (result.records.length !== 0 && this.state.currentPage === 0) {
currentPage = 1;
}
if(currentPage>1){
self.setState({
currentPage: currentPage, records: resultObj.records,
pageInfo: resultObj.pageInfo
});
}else{
self.setState({
currentPage: currentPage, totalRecords: resultObj.pageInfo.total, records: resultObj.records,
pageInfo: resultObj.pageInfo
});
}
})
.fail(function (error) {
if(error == "error"){ return }
});
}
getStartEndValue = () => {
let start =((this.state.currentPage-1) * this.pageLimit) + 1;
let end = this.state.currentPage * this.pageLimit;
if(end > this.state.userRecords)
{
end = this.state.userRecords
}
return { start , end }
}
onPageChanged = (data) => {
const { records } = this.state;
const { currentPage, totalPages, pageLimit } = data;
let new_offset = (currentPage * pageLimit) - pageLimit
let pageInfo = { ...this.state.pageInfo, offset: new_offset }
if (currentPage === 0 && this.state.currentRecords.length > 0) {
currentPage = 1
}
const offset = (currentPage - 1) * pageLimit;
const currentRecords = records.slice(offset, offset + pageLimit);
this.setState({ currentPage, currentRecords, totalPages, pageInfo }, () => {
this.myUserRecords();
});
};
render() {
let { start , end } = this.getStartEndValue();
<div className="paginationNew">
<div className="recordCount">
{this.state.totalRecords > 0 ?
<h2 className={"text-dark"}>
{/* <strong className="text-secondary"> {start} - {end}
out of {this.state.totalRecords}</strong>{" "} */}
<strong className="text-secondary"> {start} - {end} out of
{this.state.pageInfo.limit}</strong>{" "}
</h2> : "No records found" }
</div>
<div className="paginationComp">
<NewPagination
totalRecords={this.state.totalRecords}
pageLimit={(userType === 1)? premium: basic}
pageNeighbours={1}
onPageChanged={this.onPageChanged}
current_page={this.state.currentPage}
/>
</div>
</div>
}