2021-11-25 12:43:03 +01:00

126 lines
2.2 KiB
JavaScript

import React, { Component } from "react";
import Image from "next/image";
import Link from "next/link";
import moment from "moment";
class NewsCard extends Component
{
constructor(props)
{
super(props);
this.state = {
};
}
_onPagePress = (page) =>
{
this.props.onPagePress(page);
}
_renderPageNumber = (page, p, index) =>
{
return (
<li key={ index } style={ p === page ? { fontWeight: "bold" } : {} }>
<a onClick={ () => p === page ? {} : this.props.onPage(p) }>{ p }</a>
</li>
)
}
render()
{
const { pages } = this.props;
let page = this.props.page;
if(page < 0) { page = pages; }
let firstPage = 1;
let lastPage = pages;
if(lastPage <= 1)
{
return null;
}
let pagesLinks = [];
let p = page;
if(lastPage > 6)
{
if(p === lastPage)
{
p = p - 3;
}
else
{
if(p <= 3) { p = p - (p-1); };
if(p > 3) { p = p - 1; }
//if(p > (lastPage - 3)) { p = p - 4; }
if(p > (lastPage - 3))
{
p = p - (lastPage - (p+1));
}
}
}
if(lastPage > 6)
{
for(let i = 0; i < 7; i++)
{
if(i == 0)
{
pagesLinks.push(this._renderPageNumber(page, firstPage, i));
}
else if(i == 1)
{
if(p >= 3)
{
pagesLinks.push(<li key={i}>...</li>);
}
else
{
if(p > 1)
{
pagesLinks.push(this._renderPageNumber(page, p, i));
}
p++;
}
}
else if(i == 5)
{
if(p < (lastPage))
{
pagesLinks.push(<li key={i}>...</li>);
}
}
else if(i == 6)
{
pagesLinks.push(this._renderPageNumber(page, lastPage, i));
}
else
{
pagesLinks.push(this._renderPageNumber(page, p, i));
p++;
}
}
}
else
{
for(let i = 0; i < lastPage; i++)
{
pagesLinks.push(this._renderPageNumber(page, i+1, i));
}
}
return (
<div className="pagination">
<ul>
{ page !== 1 && (<li><a style={{ cursor: "pointer" }} onClick={ () => this.props.onPage(page - 1) }>{`<`}</a></li>) }
{ pagesLinks }
{ page < pages && (<li><a style={{ cursor: "pointer" }} onClick={ () => this.props.onPage(page + 1) }>{`>`}</a></li>) }
</ul>
</div>
)
}
}
export default NewsCard;