From e98034c4b23e09208fda0f8b8bb2b991b6aa90a7 Mon Sep 17 00:00:00 2001
From: Florent Poittevin <florent.poittevin@unige.ch>
Date: Tue, 10 Sep 2019 16:28:38 +0200
Subject: [PATCH] fix: pagination on home page and avoid search when change
 filter with no value

---
 package-lock.json                             | 51 ++++++-------------
 package.json                                  |  2 +-
 .../home-browsing-list-archives.routable.scss | 12 ++---
 .../home-browsing/home-browsing.routable.scss |  1 +
 .../home-search/home-search.routable.ts       |  2 +-
 src/app/features/home/stores/home.state.ts    |  9 +++-
 .../shared-data-table.presentational.ts       |  9 ++--
 .../shared-abstract-list.routable.ts          |  2 +-
 .../environment.defaults.model.ts             |  3 +-
 src/environments/environment.defaults.ts      |  3 +-
 10 files changed, 40 insertions(+), 54 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index f411eb30c..bb45c2308 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -700,7 +700,7 @@
         "@angular/compiler": "^8.1.3",
         "boxen": "^4.1.0",
         "colorette": "^1.1.0",
-        "flat": "git://github.com/lenchvolodymyr/flat.git#ffe77ef",
+        "flat": "git://github.com/lenchvolodymyr/flat.git#ffe77efe8c33bc80ffb2f7a465537610dea4f611",
         "gettext-parser": "^4.0.1",
         "glob": "^7.1.4",
         "mkdirp": "^0.5.1",
@@ -4183,7 +4183,7 @@
       "dependencies": {
         "is-buffer": {
           "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
+          "resolved": "https://packages.dlcm.ch/repository/npm-group/is-buffer/-/is-buffer-2.0.3.tgz",
           "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
           "dev": true
         }
@@ -4358,8 +4358,7 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -4380,14 +4379,12 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -4402,20 +4399,17 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -4532,8 +4526,7 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "ini": {
           "version": "1.3.5",
@@ -4545,7 +4538,6 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -4560,7 +4552,6 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -4568,14 +4559,12 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -4594,7 +4583,6 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -4675,8 +4663,7 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -4688,7 +4675,6 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -4774,8 +4760,7 @@
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -4811,7 +4796,6 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -4831,7 +4815,6 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -4875,14 +4858,12 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "yallist": {
           "version": "3.0.3",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -9241,9 +9222,9 @@
       }
     },
     "solidify-frontend": {
-      "version": "0.1.2",
-      "resolved": "https://packages.dlcm.ch/repository/npm-group/solidify-frontend/-/solidify-frontend-0.1.2.tgz",
-      "integrity": "sha512-Kc/UWCCfqMyXj80akDmz0U6yJ2sHlNqdGEr27p5O1A7NDUTaj27Uaps2cXwfyAp1akJm2WzjBlDhjWLHkfAHzA==",
+      "version": "0.1.3",
+      "resolved": "https://packages.dlcm.ch/repository/npm-group/solidify-frontend/-/solidify-frontend-0.1.3.tgz",
+      "integrity": "sha512-rBmN9gmyKzwqoXyd2lD5/mfIxLIKy7XZ5ic7jO5CyNDA0j1nRrhhJwYepb5ZhqV3sop9infVb6GZTeZEpWNPSQ==",
       "requires": {
         "tslib": "^1.9.0"
       }
diff --git a/package.json b/package.json
index cb5982dc9..df6a36a87 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,7 @@
     "primeicons": "1.0.0",
     "primeng": "8.0.1",
     "rxjs": "6.5.2",
-    "solidify-frontend": "0.1.2",
+    "solidify-frontend": "0.1.3",
     "sync-pom-version-to-package": "1.3.1",
     "ts-key-enum": "2.0.0",
     "tslib": "1.10.0",
diff --git a/src/app/features/home/components/routables/home-browsing-list-archives/home-browsing-list-archives.routable.scss b/src/app/features/home/components/routables/home-browsing-list-archives/home-browsing-list-archives.routable.scss
index d57db1e50..6ef094420 100644
--- a/src/app/features/home/components/routables/home-browsing-list-archives/home-browsing-list-archives.routable.scss
+++ b/src/app/features/home/components/routables/home-browsing-list-archives/home-browsing-list-archives.routable.scss
@@ -2,14 +2,12 @@
 
 :host {
   position: relative;
-  display: flex;
-  overflow-y: auto;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: wrap;
   flex: 1;
+  display: flex;
+  flex-direction: column;
   padding: 20px;
   flex-basis: 50%;
+  overflow-y: auto;
 
   @include respond-to-smaller-than-breakpoint('lg') {
     flex-basis: 40%;
@@ -22,6 +20,7 @@
   @include respond-to-smaller-than-breakpoint('sm') {
     flex-basis: 100%;
     display: none;
+    padding-top: 50px;
     .close-button {
       display: block;
     }
@@ -41,7 +40,8 @@
 }
 
 .archive {
-  margin: 10px;
+  margin: 10px 0;
+  width: 100%;
 }
 
 .close-button {
diff --git a/src/app/features/home/components/routables/home-browsing/home-browsing.routable.scss b/src/app/features/home/components/routables/home-browsing/home-browsing.routable.scss
index 100e98a13..1ff086514 100644
--- a/src/app/features/home/components/routables/home-browsing/home-browsing.routable.scss
+++ b/src/app/features/home/components/routables/home-browsing/home-browsing.routable.scss
@@ -5,4 +5,5 @@
 :host {
   display: flex;
   flex: 1;
+  width: 100%;
 }
diff --git a/src/app/features/home/components/routables/home-search/home-search.routable.ts b/src/app/features/home/components/routables/home-search/home-search.routable.ts
index e69d504a8..95be12827 100644
--- a/src/app/features/home/components/routables/home-search/home-search.routable.ts
+++ b/src/app/features/home/components/routables/home-search/home-search.routable.ts
@@ -66,7 +66,7 @@ export class HomeSearchRoutable extends SharedAbstractPresentational implements
 
   ngOnInit(): void {
     super.ngOnInit();
-    this.store.dispatch(new HomeOrgUnitAction.GetAll(new QueryParameters()));
+    this.store.dispatch(new HomeOrgUnitAction.GetAll(new QueryParameters(1000)));
     this.store.dispatch(new HomeAction.GetRss());
 
     this.columns = [
diff --git a/src/app/features/home/stores/home.state.ts b/src/app/features/home/stores/home.state.ts
index 16a73cefe..a760a5f70 100644
--- a/src/app/features/home/stores/home.state.ts
+++ b/src/app/features/home/stores/home.state.ts
@@ -36,6 +36,7 @@ import {
   ApiService,
   CollectionTyped,
   isNullOrUndefined,
+  isWhiteString,
   MapUtil,
   NotificationService,
   QueryParameters,
@@ -45,6 +46,7 @@ import {
   StringUtil,
   TRANSLATE,
 } from "solidify-frontend";
+import {environment} from "../../../../environments/environment";
 
 export interface HomeStateModel extends ResourceStateModel<ArchiveMetadata> {
   search: string;
@@ -62,7 +64,7 @@ export interface HomeStateModel extends ResourceStateModel<ArchiveMetadata> {
     isLoadingCounter: 0,
     list: [],
     current: null,
-    queryParameters: new QueryParameters(),
+    queryParameters: new QueryParameters(environment.defaultPageSizeHomePage),
     rss: undefined,
     home_organizationalUnit: {isLoadingCounter: 0} as HomeOrganizationalUnitStateModel,
   },
@@ -115,7 +117,10 @@ export class HomeState {
       searchScope: action.searchScope,
     });
     sessionStorage.setItem(SessionStorageEnum.homePageSearchScope, action.searchScope);
-    ctx.dispatch(new HomeAction.Search(true, ctx.getState().search));
+    const search = ctx.getState().search;
+    if (!isWhiteString(search) && !isNullOrUndefined(search)) {
+      ctx.dispatch(new HomeAction.Search(true, ctx.getState().search));
+    }
   }
 
   @Action(HomeAction.Search)
diff --git a/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.ts b/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.ts
index 23d3c5be3..f64f2aebb 100644
--- a/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.ts
+++ b/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.ts
@@ -10,13 +10,13 @@ import {SharedAbstractPresentational} from "@app/shared/components/presentationa
 import {SharedPaginatorPresentational} from "@app/shared/components/presentationals/shared-paginator/shared-paginator.presentational";
 import {FieldTypeEnum} from "@app/shared/enums/field-type.enum";
 import {DataTableColumns} from "@app/shared/models/data-table-columns.model";
-import * as moment from "moment";
 import {LazyLoadEvent} from "primeng/api";
 import {
   BehaviorSubject,
   Observable,
 } from "rxjs";
 import {
+  DateUtil,
   isEmptyString,
   isNullOrUndefined,
   MapUtil,
@@ -90,8 +90,6 @@ export class SharedDataTablePresentational<T> extends SharedAbstractPresentation
   fieldTypeString: FieldTypeEnum = FieldTypeEnum.string;
 
   private readonly _SEPARATOR: string = ".";
-  private readonly _FORMAT_TIME_ONLY: string = "LTS";
-  private readonly _FORMAT_DATE_ONLY: string = "L";
 
   constructor() {
     super();
@@ -123,11 +121,10 @@ export class SharedDataTablePresentational<T> extends SharedAbstractPresentation
       return StringUtil.stringEmpty;
     }
     if (type === FieldTypeEnum.date) {
-      return moment(data).format(this._FORMAT_DATE_ONLY);
+      return DateUtil.convertDateToDateString(data);
     }
     if (type === FieldTypeEnum.datetime) {
-      const moments = moment(data);
-      return moments.format(this._FORMAT_DATE_ONLY) + " " + moments.format(this._FORMAT_TIME_ONLY);
+      return DateUtil.convertDateToDateTimeString(data);
     }
     return data;
   }
diff --git a/src/app/shared/components/routables/shared-abstract-list/shared-abstract-list.routable.ts b/src/app/shared/components/routables/shared-abstract-list/shared-abstract-list.routable.ts
index d97c26c9f..eecf49a94 100644
--- a/src/app/shared/components/routables/shared-abstract-list/shared-abstract-list.routable.ts
+++ b/src/app/shared/components/routables/shared-abstract-list/shared-abstract-list.routable.ts
@@ -53,7 +53,7 @@ export abstract class SharedAbstractListRoutable<TResourceModel, UResourceStateM
   }
 
   private getDefaultQueryParameters(): QueryParameters {
-    const defaultQueryParameters = new QueryParameters(environment.defaultPageSizeOption);
+    const defaultQueryParameters = new QueryParameters(environment.defaultPageSize);
     this.computeInitialSorting(defaultQueryParameters);
     return defaultQueryParameters;
   }
diff --git a/src/environments/environment.defaults.model.ts b/src/environments/environment.defaults.model.ts
index 0c36671b4..e620a1614 100644
--- a/src/environments/environment.defaults.model.ts
+++ b/src/environments/environment.defaults.model.ts
@@ -6,7 +6,8 @@ export interface DlcmEnvironment extends DefaultSolidifyEnvironment {
   appTitle: string;
   theme: ThemeEnum;
   defaultLanguage: LanguagesEnum;
-  defaultPageSizeOption: number;
+  defaultPageSize: number;
+  defaultPageSizeHomePage: number;
   defaultEnumValuePageSizeOption: number;
   pageSizeOptions: number[];
 
diff --git a/src/environments/environment.defaults.ts b/src/environments/environment.defaults.ts
index 2dee90cf1..83539d30e 100644
--- a/src/environments/environment.defaults.ts
+++ b/src/environments/environment.defaults.ts
@@ -12,7 +12,8 @@ export const defaultEnvironment: DlcmEnvironment = {
   production: false,
   theme: ThemeEnum.dlcm,
   defaultLanguage: LanguagesEnum.en,
-  defaultPageSizeOption: 10,
+  defaultPageSize: 10,
+  defaultPageSizeHomePage: 10,
   defaultEnumValuePageSizeOption: 10000,
   pageSizeOptions: [5, 10, 25, 50, 100],
 
-- 
GitLab