Просмотр исходного кода

Merge pull request #2849 from weseek/apply-pageLimitationS-for-modals

Apply page limitation s for modals
Yuki Takei 5 лет назад
Родитель
Сommit
28d85f09e5

+ 3 - 2
src/client/js/components/PageAttachment.jsx

@@ -14,10 +14,11 @@ class PageAttachment extends React.Component {
 
   constructor(props) {
     super(props);
-    // TODO add paging size (limit) for modal
+
+    const { appContainer } = this.props;
     this.state = {
       activePage: 1,
-      limit: 10,
+      limit: appContainer.getConfig().pageLimitationS,
       totalAttachments: 0,
       attachments: [],
       inUse: {},

+ 11 - 10
src/client/js/components/PageHistory.jsx

@@ -14,9 +14,12 @@ import PaginationWrapper from './PaginationWrapper';
 
 const logger = loggerFactory('growi:PageHistory');
 
-// TODO add paging size (limit) for modal
 function PageHistory(props) {
   const { pageHistoryContainer } = props;
+  const { getPreviousRevision, onDiffOpenClicked } = pageHistoryContainer;
+  const {
+    activePage, totalPages, pagingLimit, revisions, diffOpened,
+  } = pageHistoryContainer.state;
 
   const handlePage = useCallback(async(selectedPage) => {
     try {
@@ -50,27 +53,25 @@ function PageHistory(props) {
     });
   }
 
-
   function pager() {
     return (
       <PaginationWrapper
-        activePage={pageHistoryContainer.state.activePage}
+        activePage={activePage}
         changePage={handlePage}
-        totalItemsCount={pageHistoryContainer.state.totalPages}
-        pagingLimit={pageHistoryContainer.state.pagingLimit}
+        totalItemsCount={totalPages}
+        pagingLimit={pagingLimit}
         align="center"
       />
     );
   }
 
-
   return (
     <div>
       <PageRevisionList
-        revisions={pageHistoryContainer.state.revisions}
-        diffOpened={pageHistoryContainer.state.diffOpened}
-        getPreviousRevision={pageHistoryContainer.getPreviousRevision}
-        onDiffOpenClicked={pageHistoryContainer.onDiffOpenClicked}
+        revisions={revisions}
+        diffOpened={diffOpened}
+        getPreviousRevision={getPreviousRevision}
+        onDiffOpenClicked={onDiffOpenClicked}
       />
       {pager()}
     </div>

+ 1 - 1
src/client/js/components/PageList.jsx

@@ -18,7 +18,7 @@ const PageList = (props) => {
 
   const [activePage, setActivePage] = useState(1);
   const [totalPages, setTotalPages] = useState(0);
-  const [limit, setLimit] = useState(appContainer.getConfig().recentCreatedLimit);
+  const [limit, setLimit] = useState(appContainer.getConfig().pageLimitationS);
   const [offset, setOffset] = useState(0);
 
   function setPageNumber(selectedPageNumber) {

+ 1 - 2
src/client/js/components/PageTimeline.jsx

@@ -17,11 +17,10 @@ class PageTimeline extends React.Component {
     super(props);
 
     const { appContainer } = this.props;
-    // TODO add paging size (limit) for modal
     this.state = {
       activePage: 1,
       totalPageItems: 0,
-      limit: appContainer.getConfig().recentCreatedLimit,
+      limit: appContainer.getConfig().pageLimitationS,
 
       // TODO: remove after when timeline is implemented with React and inject data with props
       pages: this.props.pages,

+ 6 - 4
src/client/js/services/PageHistoryContainer.js

@@ -17,7 +17,6 @@ export default class PageHistoryContainer extends Container {
 
     this.appContainer = appContainer;
     this.pageContainer = pageContainer;
-
     this.dummyRevisions = 0;
 
     this.state = {
@@ -29,7 +28,7 @@ export default class PageHistoryContainer extends Container {
 
       totalPages: 0,
       activePage: 1,
-      pagingLimit: Infinity,
+      pagingLimit: this.appContainer.getConfig().pageLimitationS,
     };
 
     this.retrieveRevisions = this.retrieveRevisions.bind(this);
@@ -51,18 +50,21 @@ export default class PageHistoryContainer extends Container {
    */
   async retrieveRevisions(selectedPage) {
     const { pageId, shareLinkId } = this.pageContainer.state;
+    const { pagingLimit } = this.state;
+
     if (!pageId) {
       return;
     }
 
-    const res = await this.appContainer.apiv3Get('/revisions/list', { pageId, shareLinkId, selectedPage });
+    const res = await this.appContainer.apiv3Get('/revisions/list', {
+      pageId, shareLinkId, selectedPage, pagingLimit,
+    });
     const rev = res.data.docs;
 
     // set Pagination state
     this.setState({
       activePage: selectedPage,
       totalPages: res.data.totalDocs,
-      pagingLimit: res.data.limit,
     });
 
     const diffOpened = {};

+ 2 - 3
src/server/routes/apiv3/revisions.js

@@ -9,8 +9,6 @@ const ErrorV3 = require('../../models/vo/error-apiv3');
 
 const router = express.Router();
 
-const PAGE_ITEMS = 30;
-
 /**
  * @swagger
  *  tags:
@@ -99,6 +97,7 @@ module.exports = (crowi) => {
    */
   router.get('/list', certifySharedPage, accessTokenParser, loginRequired, validator.retrieveRevisions, apiV3FormValidator, async(req, res) => {
     const pageId = req.query.pageId;
+    const pagingLimit = req.query.pagingLimit;
     const { isSharedPage } = req;
 
     const selectedPage = parseInt(req.query.selectedPage) || 1;
@@ -115,7 +114,7 @@ module.exports = (crowi) => {
         { path: page.path },
         {
           page: selectedPage,
-          limit: PAGE_ITEMS,
+          limit: pagingLimit,
           sort: { createdAt: -1 },
           populate: {
             path: 'author',