Genesys Website issueshttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues2018-07-16T23:26:47+02:00https://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/1Initial version2018-07-16T23:26:47+02:00Matija ObrezaInitial versionCopy code from the `genesys-catalog-ui` project and remove all catalog-related services, actions, reducers, components and dependencies. The resulting code should be completely clean of Catalog code -- but keep the `/accessions` route an...Copy code from the `genesys-catalog-ui` project and remove all catalog-related services, actions, reducers, components and dependencies. The resulting code should be completely clean of Catalog code -- but keep the `/accessions` route and components.
* Keep common code (`ui/common`)
* Keep `/accessions` route
* Keep `/dashboard` route, but don't render Catalog stuff
* Keep `/` route: entry page (only with Accessions)
* Keep SSR
* Keep i18n
* Keep look & feel (layout and styles)
When executing `npm run serve`, the code should connect to Genesys same as the current Catalog does and allow for browsing the accessions data.0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/2Upgrade to @material-ui2022-02-18T12:05:04+01:00Matija ObrezaUpgrade to @material-uiUpgrade to **@material-ui/core**:
- https://www.npmjs.com/package/@material-ui/core
- https://www.npmjs.com/package/@material-ui/icons
See for implementation https://gitlab.croptrust.org/genesys-pgr/catalog/genesys-catalog-ui/merge_re...Upgrade to **@material-ui/core**:
- https://www.npmjs.com/package/@material-ui/core
- https://www.npmjs.com/package/@material-ui/icons
See for implementation https://gitlab.croptrust.org/genesys-pgr/catalog/genesys-catalog-ui/merge_requests/2610.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/3Upgrade to Webpack 42022-02-18T12:05:04+01:00Matija ObrezaUpgrade to Webpack 4Migrate from webpack 3 to webpack 4.Migrate from webpack 3 to webpack 4.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/4Build docker image2018-07-16T20:39:49+02:00Matija ObrezaBuild docker imageConfigure Gitlab CI to build the website docker image.
See sob [#16895](/genesys-pgr/genesys-ui/-/jobs/16895) failed for 253bcaad5ab71703312bb06556e80d0a181b5754:Configure Gitlab CI to build the website docker image.
See sob [#16895](/genesys-pgr/genesys-ui/-/jobs/16895) failed for 253bcaad5ab71703312bb06556e80d0a181b5754:0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/5Default proxy2018-07-20T12:43:21+02:00Matija ObrezaDefault proxyIn #1 the default `/proxy` for `API_URL` was removed. This project talks to `API_URL` by default and most code is updated for this.
In 253bcaad the `checkAuthToken` was disabled in `server/middleware/prerenderer.tsx`.
Make the website ...In #1 the default `/proxy` for `API_URL` was removed. This project talks to `API_URL` by default and most code is updated for this.
In 253bcaad the `checkAuthToken` was disabled in `server/middleware/prerenderer.tsx`.
Make the website connect to the `API_URL` using `CLIENT_ID` and `CLIENT_SECRET` -- restore the `httpProxy.ts`?
`GenesysService` should be called `AccessionService` and it should not have its own `login()` method.
See deployment at https://genesys.demo.genesys-pgr.org/0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/6Application layout2018-07-24T11:55:43+02:00Matija ObrezaApplication layoutMove `<Footer />` into `renderRoutes` as the last element and remove it from `<App`.
Implement a new app layout:
<table style="width: 100%">
<tr>
<td>Header <b>sticky just like this gitlab page</b></td>
</tr>
<tr>
<td>
<code>re...Move `<Footer />` into `renderRoutes` as the last element and remove it from `<App`.
Implement a new app layout:
<table style="width: 100%">
<tr>
<td>Header <b>sticky just like this gitlab page</b></td>
</tr>
<tr>
<td>
<code>renderRoute(...)</code> that includes the footer
</td>
</tr>
</table>
Implement a new layout `<SidebarLayout` that can be used by pages:
```
<SidebarLayout sidebar={ <MenuComponent /> }>
...
</SidebarLayout>
```
<table style="width: 100%">
<cols><col width="25%" /><col /></col>
<tr>
<td>
Sidebar <em>collapsible and limited<br />to window height just<br />like this gitlab page</em>
<p><b><< Collapse</b></p>
</td>
<td>
<code>{ children }</code>
<p>This is where all the contents of the page will go and it's going to be as wide as possible.</p>
</td>
</tr>
</table>0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/7Subsets: Public pages2018-07-24T17:14:02+02:00Matija ObrezaSubsets: Public pagesAdd the publicly accessible routes for browsing Subsets and displaying Subset details.
## Main menu
Add link to `/subsets` to application header menu.
## Routes
- `/subsets` shows `ui/pages/subsets/BrowsePage`
- `/subsets/{uuid}` sho...Add the publicly accessible routes for browsing Subsets and displaying Subset details.
## Main menu
Add link to `/subsets` to application header menu.
## Routes
- `/subsets` shows `ui/pages/subsets/BrowsePage`
- `/subsets/{uuid}` shows `ui/pages/subsets/DisplayPage`
## Pages
Pages use the `<SidebarLayout` from #6.
- `ui/pages/subsets/BrowsePage` displays list of Subset cards with `<PagedLoader` and the filters
- `ui/pages/subsets/DisplayPage` displays dataset details
## Components
- `ui/genesys/subset/Card`
- `ui/pages/subsets/c/Filters`
## Reducer and actions
This is a top-level component and requires its **own reducer** named `subsets`. The state should contain data necessary to reliably render the browse and display page: `filterCode`, `filter`, `subsets` (results of filtering) and `currentSubset` (for display).
Initial list of actions in `actions/subsets`: `applyFilters`, `resetFilters`, `displaySubset` call the API and update the state.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/8Google+ login2018-07-27T14:36:54+02:00Matija ObrezaGoogle+ loginAdd a Google+ login button to the login page. Some of this was implemented in the **genesys-catalog-ui** and **genesys-catalog** backend, please migrate that code.Add a Google+ login button to the login page. Some of this was implemented in the **genesys-catalog-ui** and **genesys-catalog** backend, please migrate that code.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/9UI development concepts2019-08-14T08:36:20+02:00Matija ObrezaUI development conceptsThe **genesys-catalog-ui** shows how a SSR-enabled React app can be implemented and we introduced many workarounds to handle synchronization of SSR, state, navigation with the component. Here I document some concepts that should make it ...The **genesys-catalog-ui** shows how a SSR-enabled React app can be implemented and we introduced many workarounds to handle synchronization of SSR, state, navigation with the component. Here I document some concepts that should make it easier for consistent development of the Genesys Website.
Please comment on these ideas!
## GUI components
Implementing Genesys using JSPs showed that it would be best to implement all JSPs using a fixed set of custom UI components. That way the styles and structure of UI components could easily be modified in one place without having to check each page individually.
For consistent UI across the entire application we will build a library of GUI components in `src/gui/`. This includes everything down to a `<Button`. The components in this library will be pure and can rely only on `ownProps` (no Redux state or actions).
This library will be built as we go (when missing) and we should aim to use these components whenever possible.
Composite components like `<ButtonBar` or `<Menu` are part of this library.
## Functional GUI components
Functional components (like `<Autocompleter`) follow these concepts:
1. They rely on `ownProps`
1. Never use Redux `state`
1. Re-use custom layout components available in `src/gui/layout` (or add them)
1. Avoid importing from **@material-ui** and other libraries, reuse `src/gui/` components (or add them)
1. Avoid customized styles (they should come from `src/gui/` components)
1. They may use Redux **actions** that call API services, but must do so using `bindActionCreators` (for authentication)
A good example is `ui/common/permission/Permissions.tsx` which makes API calls, but does not have its state managed by a reducer.
## Pages
Pages are the components that are linked to a **route**.
The route definitions document how the pages link into **top-level groups**. For example, looking at routes in the genesys-catalog-ui shows that PartnerBrowsePage, PartnerDisplayPage and PartnerEditPage belong together and can form one **group**. A group then has `actions/partners.ts` and `reducers/partners.ts` that maintains the state for these components.
Navigation to any Details page should be done with an action so that necessary API calls are made, data refreshed and then the route changed to render the associated route component.
All URL changes (including query string) should be managed by actions and never by a component directly.
### SSR and blank state
Without SSR the page has no data in Redux store. If we use `undefined` in reducer initial state we can detect it and trigger the `initXxxxPage` action defined in `actions/partners.ts`. The same method would be declared in `static needs` for SSR and it will use parameters from the query string.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/10Accession browser2018-07-24T23:48:07+02:00Matija ObrezaAccession browserImplement initial version of accession browser with filtering.Implement initial version of accession browser with filtering.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/11PagedLoader trigger2018-09-11T16:02:49+02:00Matija ObrezaPagedLoader triggerSeems that with the new `<PageLayout`, the PagedLoader triggers the next request a bit too late. Debug.Seems that with the new `<PageLayout`, the PagedLoader triggers the next request a bit too late. Debug.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/12Accession DetailsPage2018-07-25T15:40:18+02:00Matija ObrezaAccession DetailsPageMake the Accession `DisplayPage` similar to what it is on https://www.genesys-pgr.org:
1. Sections
1. Map
1. PDCI
...Make the Accession `DisplayPage` similar to what it is on https://www.genesys-pgr.org:
1. Sections
1. Map
1. PDCI
...0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/13Update filters2018-07-26T18:45:15+02:00Matija ObrezaUpdate filtersIn the current implementation https://genesys.demo.genesys-pgr.org/a/v1a6c4e2dee19c4765988bdc0cdfc3bad8, the "Apply" and "Reset" buttons scroll beyond the "Collapse" sidebar area.
Make the buttons stick just above "Collapse" area for al...In the current implementation https://genesys.demo.genesys-pgr.org/a/v1a6c4e2dee19c4765988bdc0cdfc3bad8, the "Apply" and "Reset" buttons scroll beyond the "Collapse" sidebar area.
Make the buttons stick just above "Collapse" area for all filter components.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/14User actions: My List2018-07-30T19:24:05+02:00Matija ObrezaUser actions: My ListAdd actions and a reducer called `user`.
The first user actions are about managing the list of accessions the user has selected. Instead of synchronizing the list with the server, use `localStorage` to keep the list of `UUID`-s of selec...Add actions and a reducer called `user`.
The first user actions are about managing the list of accessions the user has selected. Instead of synchronizing the list with the server, use `localStorage` to keep the list of `UUID`-s of selected accessions.
In the accession DisplayPage, add a checkbox that indicates if the accession is in "My list". On tick it should add it to the list, on untick it will remove the accession from the list.
The state should also keep track of the current `count` (size of the list).
```javascript
state.user = {
...,
mylist: {
count: 0,
accessions: [ ], // contains UUIDs
},
}
```
0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/15Crops - public2018-08-01T12:24:16+02:00Matija ObrezaCrops - publicAdd a reducer and methods to load and maintain the list of **Crops** in the state.
```javascript
state.crops = {
crops = [ ] // array of crops
}
```
Add a method to `loadCrops` from Genesys and put them into the state.
Several compo...Add a reducer and methods to load and maintain the list of **Crops** in the state.
```javascript
state.crops = {
crops = [ ] // array of crops
}
```
Add a method to `loadCrops` from Genesys and put them into the state.
Several components rely on this data (e.g. `CropChips`).
Add `loadCrops` to `static needs` of the App (so they get loaded on the server).0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/16Institutes: Public pages2018-08-04T12:31:54+02:00Matija ObrezaInstitutes: Public pagesAdd the publicly accessible routes for browsing Institutes and displaying Institute details.
Use the code for Accession browsing as template.
## Main menu
Add link to `/wiews/` to application header menu.
## Routes
- `/wiews/` show...Add the publicly accessible routes for browsing Institutes and displaying Institute details.
Use the code for Accession browsing as template.
## Main menu
Add link to `/wiews/` to application header menu.
## Routes
- `/wiews/` shows `ui/pages/institutes/BrowsePage`
- `/wiews/{wiewsCode}` shows `ui/pages/institutes/DisplayPage`
## Pages
Pages use the `<PageLayout`.
- `ui/pages/institutes/BrowsePage` displays list of FaoInstitute cards with `<PagedLoader` and the filters
- `ui/pages/institutes/DisplayPage` displays institute details page, but just the very basic data (see https://www.genesys-pgr.org/wiews/BRA001)
## Components
- `ui/genesys/institute/Card`
- `ui/pages/institutes/c/Filters` <-- base it on `accessions/c/Filters`
## Reducer and actions
This is a top-level component and requires its **own reducer** named `institutes`. The state should contain data necessary to reliably render the browse and display page: `filterCode`, `filter`, `paged` (results of filtering) and current `institute` (for display).
Initial list of actions in `actions/subsets`: `applyFilters`, `resetFilters`, `displayInstitute` call the API and update the state.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/17Accession details: Map2018-08-04T11:52:48+02:00Matija ObrezaAccession details: MapAdd a map to accession DetailsPage. We used maps in the genesys-catalog-ui project, pick up the code from there.
The map should be displayed as the last element of the "Collecting information" section.
The map should only be displayed ...Add a map to accession DetailsPage. We used maps in the genesys-catalog-ui project, pick up the code from there.
The map should be displayed as the last element of the "Collecting information" section.
The map should only be displayed if both `latitude` and `longitude` are available.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/18DOI support2018-07-26T14:54:33+02:00Matija ObrezaDOI supportAccession details should be accessible at /10.xxxx/xxxx path where 10.xxx/xxxx is the DOI of the accession.
Current website: https://www.genesys-pgr.org/10.18730/5N2STAccession details should be accessible at /10.xxxx/xxxx path where 10.xxx/xxxx is the DOI of the accession.
Current website: https://www.genesys-pgr.org/10.18730/5N2ST0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/19Dashboard: Subsets2018-09-07T12:49:44+02:00Matija ObrezaDashboard: SubsetsThe subsets identify a _selection of accessions_ which share a _specific set of characteristics_ of interest.
Example subset: [Genesys-subset-template-ILRI-highlands.xlsx](/uploads/a09ecf07a8dea6beb7fd3830759308b2/Genesys-subset-templat...The subsets identify a _selection of accessions_ which share a _specific set of characteristics_ of interest.
Example subset: [Genesys-subset-template-ILRI-highlands.xlsx](/uploads/a09ecf07a8dea6beb7fd3830759308b2/Genesys-subset-template-ILRI-highlands.xlsx)
Add "Subsets" section to the '/dashboard': add main menu item "Subsets" with sub-menus "List subsets" and "Create subset".
## List subsets
Displays the list of Subsets accessible to current user. Filtering subsets should initially **not** be possible in the Dashboard.
- Implement a Subset card
Clicking the subset opens it in the edit form.
## Subset form
Implement a form to edit the subset. The form has the following steps:
- Basic information
- List of accessions: paste from Excel (as we do in the Catalog)
**Note:** The actions, models and service to access the API are already in the source code.1.0Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/20Right-to-Left2018-08-04T11:47:40+02:00Matija ObrezaRight-to-LeftSee https://genesys.demo.genesys-pgr.org/ar/a/v124775e26fe9d4e6999ad608c87376d0d
![foo](/uploads/9d3d761581abbfdfbef31b612ca4fc23/foo.png)
## Todo
Please update styles for `html[dir=rtl]` so that the components render properly:
- ch...See https://genesys.demo.genesys-pgr.org/ar/a/v124775e26fe9d4e6999ad608c87376d0d
![foo](/uploads/9d3d761581abbfdfbef31b612ca4fc23/foo.png)
## Todo
Please update styles for `html[dir=rtl]` so that the components render properly:
- check marginLeft/marginRight
- check float left/right
- check paddingLeft/paddingRight0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/21Merging to master2019-08-14T08:36:25+02:00Matija ObrezaMerging to master@mborodenko @vpavlov I will be out of office for a few weeks in August and I would like to enable you two to merge code into the `master` branch that is automatically deployed to https://genesys.demo.genesys-pgr.org on every merge to thi...@mborodenko @vpavlov I will be out of office for a few weeks in August and I would like to enable you two to merge code into the `master` branch that is automatically deployed to https://genesys.demo.genesys-pgr.org on every merge to this branch.
I would like that you assign each merge request to some other member of the team. The other person will:
1. Critically **review** the changes in the merge request and provide feedback
1. Ensure the branch to be merged is **based** on top of master
1. Merge the branch when everything is sorted out
Let me know if this works for you.
CC @agarnitskiy @ncastaneda0.1Anastasiia KarasAnastasiia Karashttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/22Dashboard menu items2018-08-02T12:40:47+02:00Matija ObrezaDashboard menu itemsAdd a new **ui/common/Menu** file that exports `MenuItem` component. Demonstrate how it renders on the https://genesys.demo.genesys-pgr.org/dashboard page sidebar.
## Use case
```jsx
<MenuItem label="Project" icon={ <SomeIcon /> }>
<...Add a new **ui/common/Menu** file that exports `MenuItem` component. Demonstrate how it renders on the https://genesys.demo.genesys-pgr.org/dashboard page sidebar.
## Use case
```jsx
<MenuItem label="Project" icon={ <SomeIcon /> }>
<MenuItem label="Details" />
<MenuItem label="Activity" />
</MenuItem>
<MenuItem label="Repository">
<MenuItem label="Files" />
<MenuItem label="Commits" />
</MenuItem>
<MenuItem label="Issues">
<MenuItem label="List" />
<MenuItem label="Board" />
<MenuItem label="Labels" />
<MenuItem label="Milestones" />
</MenuItem>
```
## UI
It should render very similar to what you see oon the left of this page.
## Collapse and hover
We will deal with that in another ticket.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/23Import flags to assets2018-09-01T11:33:35+02:00Matija ObrezaImport flags to assetsCopy the country flags from **genesys-server** project to assets of this project.Copy the country flags from **genesys-server** project to assets of this project.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/24Paginator: number of matches2018-08-02T14:17:45+02:00Matija ObrezaPaginator: number of matchesUpdate the Paginator component to display the following label:
- when the count is >= 10,000 (10 thousand) it says "About XX,XXX items"
- when the count is < 10,000 it says "XX,xxx items"
```jsx
{ t(pageObj && pageObj.totalElements < ...Update the Paginator component to display the following label:
- when the count is >= 10,000 (10 thousand) it says "About XX,XXX items"
- when the count is < 10,000 it says "XX,xxx items"
```jsx
{ t(pageObj && pageObj.totalElements < 10000 ? 'common:paginate.numberOfItems' : 'common:paginate.estimatedNumberOfItems',
{ count: pageObj ? pageObj.totalElements : 0, what: t(displayName || 'common:label.item', { count: pageObj ? pageObj.totalElements : 0 }) }) }
```0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/25Accession browse: Add tabs2018-08-10T15:21:01+02:00Matija ObrezaAccession browse: Add tabsUpgrade the existing Tabs component to include an actions area as shown below:
![image](/uploads/e5fb27ba1c8b41c400dcdc2de48ba27d/image.png)
The actions area can contain a number of other components.
Use the new component in the acce...Upgrade the existing Tabs component to include an actions area as shown below:
![image](/uploads/e5fb27ba1c8b41c400dcdc2de48ba27d/image.png)
The actions area can contain a number of other components.
Use the new component in the accession browser page component with tabs "Accessions", "Overview" and "Map" and a dummy Action button.
## Using the component
```jsx
<Tabs tab={ currentTab } actions={ <Some component /> }>
<Tab name="data" to={ `/a/` }>Accessions</Tab>
<Tab name="overview" to={ `/a/overview/` }>Overview</Tab>
<Tab name="map" to={ `/a/map/` }>Map</Tab>
</Tabs>
```0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/26Accession overviews2018-08-13T17:53:43+02:00Matija ObrezaAccession overviewsAdd a new route **/a/overview/** that adds a `AccessionOverviewPage`:
```
// Accessions
{
path: '/a/:filterCode(v.+)?',
component: AccessionBrowsePage,
exact: true,
},
{
path: '/a/overview/:filterCode(v.+)?',
compone...Add a new route **/a/overview/** that adds a `AccessionOverviewPage`:
```
// Accessions
{
path: '/a/:filterCode(v.+)?',
component: AccessionBrowsePage,
exact: true,
},
{
path: '/a/overview/:filterCode(v.+)?',
component: AccessionOverviewPage,
exact: true,
},
```
Implement `page/accessions/BrowsePage` and display the results from **/api/v1/acn/overview?f={filter}** using existing `<Properties>` and `<PropertiesItem>` components.
Add accessions action to fetch data from **/api/v1/acn/overview** and store it in accessions reducer `overview` based on filter code from `accessions.paged.filterCode`.
Apply filters from this page should refresh the list of accession data and fetch the overview data:
```ts
export const applyOverviewFilters = (filters: string | AccessionFilter, page: IPageRequest = { page: 0 }) => (dispatch) => {
console.log('Applying new filter', filters);
return dispatch(listAccessions(filters, page))
.then((paged) => {
dispatch(receiveAccessions(paged));
dispatch(overviewAccessions(paged.filterCode));
dispatch(updateRoute('/a/overview', paged));
}).catch((error) => {
console.log(`API error`, error);
dispatch(receiveAccessions(null, error.response));
});
};
```
Current Overview page https://sandbox.genesys-pgr.org/explore/overview?filter=%7B%22institute.code%22%3A%5B%22NGA039%22%5D%7D -- don't over-complicate the new layout.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/27Multiple instances of LocationMap2018-08-08T16:44:40+02:00Matija ObrezaMultiple instances of LocationMapHaving multiple instances of the `LocationMap` component defeats the purpose of having components in the first place.
Make `<LocationMap` into a common component and remove all other customized instances of the component.
Use the one f...Having multiple instances of the `LocationMap` component defeats the purpose of having components in the first place.
Make `<LocationMap` into a common component and remove all other customized instances of the component.
Use the one from `accession/LocationMap`. Update Institute display to use the map layout as in accession display.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/28Institute display page details2018-08-08T14:56:33+02:00Matija ObrezaInstitute display page detailsgenesys-pgr/genesys-server#294 extends the information provided as institute details.
Explore the API response and upgrade institute Display Page to display elements as on https://www.genesys-pgr.org/wiews/NGA039
## New common componen...genesys-pgr/genesys-server#294 extends the information provided as institute details.
Explore the API response and upgrade institute Display Page to display elements as on https://www.genesys-pgr.org/wiews/NGA039
## New common components
- PieChart
1.0Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/29PropertyItem layouts2018-08-23T11:31:03+02:00Matija ObrezaPropertyItem layoutsThe `<PropertyItem` now supports two modes: `small` and `default` (not `small`).
![image](/uploads/532bdc20e39a4dbebe89ab81cc50d4bb/image.png)
https://genesys.demo.genesys-pgr.org/wiews/ALB017
The section below shows that we need ano...The `<PropertyItem` now supports two modes: `small` and `default` (not `small`).
![image](/uploads/532bdc20e39a4dbebe89ab81cc50d4bb/image.png)
https://genesys.demo.genesys-pgr.org/wiews/ALB017
The section below shows that we need another mode (`numeric`) that will:
![image](/uploads/dc78923c21c95f9e4330938e73aa6d5e/image.png)
- right align the value
- use most of available grid for the label (8:4 ratio?)
## Implementation
The `numeric` mode can be used with `small` or `default` mode. In default numeric mode it will just right-align the value and in `small numeric` mode it will also give more grid space to the label.
Update https://genesys.demo.genesys-pgr.org/a/overview/v10ebc973b5a454d6cb48bdad8e2776e02 to use `numeric` layout.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/30Institute browser: card update2018-08-23T12:39:17+02:00Matija ObrezaInstitute browser: card updateDon't display **Accessions in Genesys: 0** when the number is 0.Don't display **Accessions in Genesys: 0** when the number is 0.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/31Institute details: Loading indicator2018-08-23T12:18:56+02:00Matija ObrezaInstitute details: Loading indicatorOpening the institute details page shows the loading indicator and the old data.
- https://genesys.demo.genesys-pgr.org/wiews/v19934a5b9d5ff4732b21366e6463cd6d4
- CLick MEX002
- Go back
- Click NGA039
If loading indicator is displayed...Opening the institute details page shows the loading indicator and the old data.
- https://genesys.demo.genesys-pgr.org/wiews/v19934a5b9d5ff4732b21366e6463cd6d4
- CLick MEX002
- Go back
- Click NGA039
If loading indicator is displayed, don't display the details.
Update other display pages to use this approach.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/32Institute filters: has accessions2018-08-28T08:56:04+02:00Matija ObrezaInstitute filters: has accessionsgenesys-pgr/genesys-server#300 adds support to filter for institutes with or without accessions.
Add a `BooleanFilter accessions` to InstituteFilters and update the filtering UI with "Accessions in Genesys" toggler.genesys-pgr/genesys-server#300 adds support to filter for institutes with or without accessions.
Add a `BooleanFilter accessions` to InstituteFilters and update the filtering UI with "Accessions in Genesys" toggler.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/33Institute details: link to list of accessions2018-08-22T14:07:45+02:00Matija ObrezaInstitute details: link to list of accessionsIn the details of https://genesys.demo.genesys-pgr.org/wiews/MEX002 make the number of Accessions in Genesys **173815** a hyperlink. When clicked, it should call the `applyFilters` action from `actions/accessions`:
```js
filter = {holde...In the details of https://genesys.demo.genesys-pgr.org/wiews/MEX002 make the number of Accessions in Genesys **173815** a hyperlink. When clicked, it should call the `applyFilters` action from `actions/accessions`:
```js
filter = {holder: {code: [ institute.code ]}};
applyFilters(filter);
```
The action already takes care of loading data and navigation.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/34Overview: species2018-08-22T12:15:12+02:00Matija ObrezaOverview: specieshttps://genesys.demo.genesys-pgr.org/a/overview/v1dce003d8ea3b4d5aa5548b8b1018c847
- Remove "species" section
- Relabel "Genus species" to "Species"
![image](/uploads/818d041d9f060c65bbdf26eb09b1d06d/image.png)https://genesys.demo.genesys-pgr.org/a/overview/v1dce003d8ea3b4d5aa5548b8b1018c847
- Remove "species" section
- Relabel "Genus species" to "Species"
![image](/uploads/818d041d9f060c65bbdf26eb09b1d06d/image.png)0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/35MCPD date presentation control2018-08-23T13:49:26+02:00Matija ObrezaMCPD date presentation controlImplement a new `<McpdDate` presentation control that receives a "date" in MCPD format (YYYYMMDD) and presents this value as **DD MMMM YYYY**:
```
20180821 -> 21 August 2018
20180000 -> 2018
2018---- -> 2018
```
## MCPD dates
The gene...Implement a new `<McpdDate` presentation control that receives a "date" in MCPD format (YYYYMMDD) and presents this value as **DD MMMM YYYY**:
```
20180821 -> 21 August 2018
20180000 -> 2018
2018---- -> 2018
```
## MCPD dates
The general format is `YYYYMMDD` and unknown values may be represented as either `-` or `0` (for month and day).
This presentational component should have no internal state and should parse the year, month and day data from the value provide (as string) and then render the temporal information.
## Expected use
```jsx
<McpdDate value={ accession.acqusitionDate } />
```
Use this component to render acquisition date and collecting date of accessions.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/36Accession details: link to institute page2018-08-27T10:42:30+02:00Matija ObrezaAccession details: link to institute pageWhen displaying accession details:
![image](/uploads/881f7ac56516d51417c5000c482f9741/image.png)
- Use `<InstituteLink` from `genesys/Links` for the holding institute name to link to the institute page
- Include `${accession.institute....When displaying accession details:
![image](/uploads/881f7ac56516d51417c5000c482f9741/image.png)
- Use `<InstituteLink` from `genesys/Links` for the holding institute name to link to the institute page
- Include `${accession.institute.code}` in display0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/37Admin dashboard2018-08-23T11:01:55+02:00Matija ObrezaAdmin dashboard0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/38Admin: Requests for material2018-08-29T18:25:02+02:00Matija ObrezaAdmin: Requests for materialImplement admin pages **/admin/requests** to list existing requests for material. Use infinite scroll.
- Implement a Card for MaterialRequest
## Request details
**/admin/request/{uuid}** should display the request details and allow ad...Implement admin pages **/admin/requests** to list existing requests for material. Use infinite scroll.
- Implement a Card for MaterialRequest
## Request details
**/admin/request/{uuid}** should display the request details and allow administrator to execute actions: reconfirmRequest, updatePid and validateRequest.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/39Accession browser: Map2018-09-13T18:01:33+02:00Matija ObrezaAccession browser: MapDepends on genesys-pgr/genesys-server#303
Implement the display of accession localities at https://genesys.demo.genesys-pgr.org/a/map/ based on https://sandbox.genesys-pgr.org/explore/map
- Leaflet map with the world tiles as we use th...Depends on genesys-pgr/genesys-server#303
Implement the display of accession localities at https://genesys.demo.genesys-pgr.org/a/map/ based on https://sandbox.genesys-pgr.org/explore/map
- Leaflet map with the world tiles as we use them now
- Add layer of accession localities with filter
## Code from map.jsp
```
layer = L.tileLayer("{s}/explore/tile/{z}/{x}/{y}/" + filterCode, {
attribution: "Accession localities from <a href='<c:url value="${baseUrl}" />'>Genesys PGR</a>",
styleId: 22677,
subdomains: ${cdnServers.serverList}
});
```
**Note**: The new TileController from genesys-pgr/genesys-server#303 makes tile PNGs available at `/acn/tile/{zoom:\\d+}/{x:\\d+}/{y:\\d+}`. This endpoint accepts two query string parameters:
- `f` <-- filterCode
- `color` <-- tile color (e.g. `#f00ba0`) (optional)
You may need to update the proxy function of Express.0.1Alexander PrendetskiyAlexander Prendetskiyhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/40Accession: Filters2018-09-01T08:35:50+02:00Matija ObrezaAccession: FiltersAdd Accession filters for:
- Biological status of sample (sampStat)
- Type of germplasm storage (storage)
Use i18n for codes (see https://gitlab.croptrust.org/genesys-pgr/genesys-server/blob/master/src/main/resources/content/language.p...Add Accession filters for:
- Biological status of sample (sampStat)
- Type of germplasm storage (storage)
Use i18n for codes (see https://gitlab.croptrust.org/genesys-pgr/genesys-server/blob/master/src/main/resources/content/language.properties).
Both filters allow for checkbox-type selection.0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/41PagedLoader to state2018-09-05T15:53:24+02:00Matija ObrezaPagedLoader to stateBring the logic of PagedLoader maintaining all loaded data in `state` from the catalog to genesys-ui project.
I think @vpavlov implemented that.Bring the logic of PagedLoader maintaining all loaded data in `state` from the catalog to genesys-ui project.
I think @vpavlov implemented that.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/42Support for negative filters in the UI2018-09-19T16:20:55+02:00Matija ObrezaSupport for negative filters in the UIgenesys-pgr/genesys-server#307 adds support for "negative" **NOT** filters, `isNull` **NULL** and `isNotNull` **NOTNULL** filtering to the Genesys backend. Most relevant code is in *application-blocks* project commit https://gitlab.cropt...genesys-pgr/genesys-server#307 adds support for "negative" **NOT** filters, `isNull` **NULL** and `isNotNull` **NOTNULL** filtering to the Genesys backend. Most relevant code is in *application-blocks* project commit https://gitlab.croptrust.org/genesys-pgr/application-blocks/commit/4456892de3f72c667aebc539a1f6cd436d13d542.
This allows us to apply really interesting filters:
## Positive filters
The existing filters are "positive", they require the value to be present. The filter:
```json
{
"taxa": {
"genus": ["Manihot"],
"species": ["esculenta"]
}
}
```
translates to: *Find records where `taxa.genus == Manihot and taxa.species == esculenta`.*
## Negative filters
If we want to filter records that **match** `Manihot` genus, but **do not match** species `esculenta`, then we need to send:
```json
{
"taxa": {
"genus": ["Manihot"]
},
"NOT": {
"taxa": {
"species": ["esculenta"]
}
}
}
```
This translates to: *Find records where `taxa.genus == Manihot and taxa.species != esculenta`.*
All positive filter options available now are supported as elements of the `NOT` filter. Please extend the `**Filter` class definitions to include:
```ts
class AccessionFilter {
public acceNumb: StringFilter;
...
public NOT: AccessionFilter;
...
}
```
The user interface needs to be updated to support "toggling" between a filter value being in the positive or negative filters. Any ideas?
![image](/uploads/756d6d530041f57f328d4bc22d7ebfca/image.png)
I think the "esculenta" filter should have a little **`+` / `!`** toggler on the left side that allows the user to move the `esculenta` filter value from positive to a negative filter and back. Maybe the negative filter should be displayed in red.
## `isNull` filters
Sometimes we want to find records that do not specify any value. For example, accession `available` field can have values `true`, `false` or `null`, where `null` means that we don't know if the accession is available, but we know that it is not unavailable.
To filter for such records, we use cannot use the `null` value:
```json
{
"available": null
}
```
This just indicates we don't care about `available` field and it is ignored by the server. To specify that we're looking for Accessions that have `available == null` we must use:
```json
{
"NULL": [ "available" ]
}
```
The `NULL` filter accepts a set of property names and looks up data where `available is null` in the database.
Existing filter classes should be extends to include:
```js
class AccessionFilter {
public acceNumb: StringFilter;
...
public NULL: string[];
...
}
```
The UI should allow the user to say: **"Hey, I want records where this value is `null`!"**. A checkbox in the "Available" filter that says **Data not provided**?
## `isNotNull` filters
Sometimes we want to find records that have any value (but `null`). For example, accession `available` field can have values `true`, `false` or `null`, where `null` means that we don't know if the accession is available, but we know that it is not unavailable.
To specify that we're looking for Accessions that have `available != null` we must use:
```json
{
"NOTNULL": [ "available" ]
}
```
The `NOTNULL` filter accepts a set of property names and looks up data where `available is not null` in the database.
```js
class AccessionFilter {
public acceNumb: StringFilter;
...
public NOTNULL: string[];
...
}
```
The UI should allow the user to say: **"Hey, I want records where this value is `not null`!"**. A checkbox in the "Available" filter that says **Data exists**? How do we mix that with the `isNull` filter above?0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/43UI: Sidebar collapse2018-09-11T14:48:16+02:00Matija ObrezaUI: Sidebar collapseImprove the collapse function of the sidebar:
![image](/uploads/5c336261e8683c42889cf3c82ab55625/image.png)
- Collapse "button" should be full width, there is now a margin on the right-hand side
- Align "Collapse" text and the icon
- M...Improve the collapse function of the sidebar:
![image](/uploads/5c336261e8683c42889cf3c82ab55625/image.png)
- Collapse "button" should be full width, there is now a margin on the right-hand side
- Align "Collapse" text and the icon
- Make it larger (same size as Apply filters?)
- Give the collapse section a default background color (pick any, we'll change later)
## When collapsed
- Hide contents of sidebar when collapsed (will be just a blank white strip)
## Odd filters behavior in md size
The filters don't show up (by default) when on md-size screen:
![image](/uploads/d5ffad203a7e7319d1bdaec1aa695946/image.png)
![image](/uploads/fe1ed04f90154728c883e7443b3ea1ac/image.png)0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/44Entry page: mobile2018-09-07T01:37:32+02:00Matija ObrezaEntry page: mobileMake the entry page https://genesys.demo.genesys-pgr.org/ display well on mobile devices.
It may be an issue with the `Layout` we use on entry page.Make the entry page https://genesys.demo.genesys-pgr.org/ display well on mobile devices.
It may be an issue with the `Layout` we use on entry page.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/45Country link2018-09-06T05:06:27+02:00Matija ObrezaCountry linkImplement `CountryLink` component that receives model `Country` and points to `<Link to={ `/geo/${country.code3}` }`.
- Include display of country flag (see genesys-pgr/genesys-ui#23)
- Use `CountryLink` where we now render `*.country.n...Implement `CountryLink` component that receives model `Country` and points to `<Link to={ `/geo/${country.code3}` }`.
- Include display of country flag (see genesys-pgr/genesys-ui#23)
- Use `CountryLink` where we now render `*.country.name` or similar (accession page, institute page, etc.)0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/46Accession details2018-09-06T05:06:26+02:00Matija ObrezaAccession detailsUpdate accession details page:
![image](/uploads/75aa191a0dd2704eee626c6815e55d19/image.png)
- Add **Country of origin** below *Acquisition date*
- Storage: can contain multiple values, display each in a separate `<div key={ .. }`
- D...Update accession details page:
![image](/uploads/75aa191a0dd2704eee626c6815e55d19/image.png)
- Add **Country of origin** below *Acquisition date*
- Storage: can contain multiple values, display each in a separate `<div key={ .. }`
- Display `mlsStatus` and `availability` property items below *Type of storage* (display property items even if missing)
- Accession names: `Collecting number` is duplicated0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/47Accession details: More details2018-09-13T18:01:50+02:00Matija ObrezaAccession details: More detailsIn genesys-pgr/genesys-server#314 the API will provide `pdci`, `subsets` and `datasets` information for the accession. `Accession` model will come as `details` JSON field.
- Update accession **DisplayPage** and render PDCI data
- Render...In genesys-pgr/genesys-server#314 the API will provide `pdci`, `subsets` and `datasets` information for the accession. `Accession` model will come as `details` JSON field.
- Update accession **DisplayPage** and render PDCI data
- Render list of Subsets (with links to subsets)
- Render list of Datasets (with links to datasets)
## PDCI
See https://sandbox.genesys-pgr.org/acn/id/4527663 for rendering PDCI
![image](/uploads/b400d90de5715f49501bd0b59ee391cf/image.png)
**Note:** Reuse existing components.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/48Accession browse: support last modified date filter2018-09-09T10:55:48+02:00Matija ObrezaAccession browse: support last modified date filterAdd DateFilter on **lastModifiedDate** to AccessionFilter in frontend. Add filtering by last modified date to the Accession browser.
The backend already supports filtering Accessions.
## `<DateFilter` component
Similar to `<NumberFilt...Add DateFilter on **lastModifiedDate** to AccessionFilter in frontend. Add filtering by last modified date to the Accession browser.
The backend already supports filtering Accessions.
## `<DateFilter` component
Similar to `<NumberFilter` but accepts and reports the `model/DateFilter` object.
It has two `Date` inputs, use **Date picker** https://material-ui.com/demos/pickers/ for both date fields.
## Date **between** filter
Support for `between` will be removed from API soon. See #49
## Update Institute Details page
In section on last updates of passport data, include links to accession browser with **modified** and **holder** filters applied. This code will be similar to the action on "Accessions in Genesys: 3".
https://genesys.demo.genesys-pgr.org/wiews/DEU072
![image](/uploads/9bf3056424f9d0b99aa3fe363028769d/image.png)0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/49Update core filters2018-09-06T05:06:28+02:00Matija ObrezaUpdate core filtersgenesys-pgr/genesys-server#315 will deprecate `between` operator in Number and Date filters on the backend.
Update frontend `model/*Filter` and components so that they do not use `between`, but `ge` and `le`.
## common/filter/NumberFil...genesys-pgr/genesys-server#315 will deprecate `between` operator in Number and Date filters on the backend.
Update frontend `model/*Filter` and components so that they do not use `between`, but `ge` and `le`.
## common/filter/NumberFilter
Upgrade to accept and report a `model/NumberFilter` type.
0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/50Subset: creators2018-09-14T10:00:36+02:00Matija ObrezaSubset: creatorsgenesys-pgr/genesys-server#323 adds support to register data about creators of a subset. This is practically the same as Dataset Creators in the Catalog:
![image](/uploads/6ccb66a13da8cd6030acfc3d7ee067a8/image.png)
- Add required mode...genesys-pgr/genesys-server#323 adds support to register data about creators of a subset. This is practically the same as Dataset Creators in the Catalog:
![image](/uploads/6ccb66a13da8cd6030acfc3d7ee067a8/image.png)
- Add required models, actions and API calls
- Add a new step "Subset creators" to the Subset editor
- Display list of creators in `DisplayPage`0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/51Subset: details2018-09-14T11:05:51+02:00Matija ObrezaSubset: detailsUpdate Subset components:
## Card
- Include "Number of accessions"
- Include "Institute" using `<InstituteLink`
- Display only the first paragraph of description
## Details page
- Include "Number of accessions"
- Include "Institute" ...Update Subset components:
## Card
- Include "Number of accessions"
- Include "Institute" using `<InstituteLink`
- Display only the first paragraph of description
## Details page
- Include "Number of accessions"
- Include "Institute" using `<InstituteLink`
- Add padding to description (now sticks to properties list)
- Include position numbers with list of accessions
0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/52Subset: UI updates2018-09-14T20:27:54+02:00Matija ObrezaSubset: UI updatesAfter genesys-pgr/genesys-server#327 extend Subsets basic info form:
1. `CropSelector` after description field
1. Add "Creation date" after License
1. Add "Source (URL)" after Creation date.
Add
1. `CropChips` to Subset Card
1. Add "C...After genesys-pgr/genesys-server#327 extend Subsets basic info form:
1. `CropSelector` after description field
1. Add "Creation date" after License
1. Add "Source (URL)" after Creation date.
Add
1. `CropChips` to Subset Card
1. Add "Creation date" and "Source (URL") to Card (display in `complete` mode only)0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/53Pagelayout: Sidebar collapsed in state2018-09-14T18:10:36+02:00Matija ObrezaPagelayout: Sidebar collapsed in stateKeep the state of "Sidebar" collapsed/open in Redux state. This way, when the user navigates between pages the sidebar will be either shown or hidden depending on user last action.
Extend `user` reducer and add actions to new `actions/l...Keep the state of "Sidebar" collapsed/open in Redux state. This way, when the user navigates between pages the sidebar will be either shown or hidden depending on user last action.
Extend `user` reducer and add actions to new `actions/layout.ts`.
```js
state.user.sidebarOpen
```0.1Alexander PrendetskiyAlexander Prendetskiyhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/54Accession Card: Un/select2018-09-18T16:13:46+02:00Matija ObrezaAccession Card: Un/selectUpdate accession `Card` to include **adding/removing** accession to the users' list of selected accessions (right side):
![image](/uploads/2210b0a2e7ba39df182c81a821cc7bec/image.png)
Do not make other changes to the Card.
**Note:** Ac...Update accession `Card` to include **adding/removing** accession to the users' list of selected accessions (right side):
![image](/uploads/2210b0a2e7ba39df182c81a821cc7bec/image.png)
Do not make other changes to the Card.
**Note:** Actions are in `actions/user` and the list is in `state.user.myList.accessions`.
```ts
import {addAccessionToMyList, removeAccessionFromMyList} from 'actions/user';
```0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/55Dashboard: User profile section2018-09-20T10:30:30+02:00Matija ObrezaDashboard: User profile sectionAdd the user Profile section as part of the Dashboard at **/dashboard/profile**.
1. Add menu items: "User profile" and "Change password".
1. Profile page displays user info available at `/api/v0/me`
1. Add subpage "Change password" (API...Add the user Profile section as part of the Dashboard at **/dashboard/profile**.
1. Add menu items: "User profile" and "Change password".
1. Profile page displays user info available at `/api/v0/me`
1. Add subpage "Change password" (API at http://localhost:8080/swagger-ui.html#/me/changePasswordUsingPOST) if `user.accountType === 'LOCAL'`
This data should be maintained by Redux reducer `user`, actions go to `user`.0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/56Download KML from maps2019-05-02T20:11:52+02:00Matija ObrezaDownload KML from mapsDownload KML for selected accessions (genesys-pgr/genesys-server#329)Download KML for selected accessions (genesys-pgr/genesys-server#329)0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/57Entry page numbers2018-09-19T11:59:52+02:00Matija ObrezaEntry page numbersgenesys-pgr/genesys-server#330 adds information about number of accessions, datasets, etc to the `/api/v1/info` call.
1. Update ApiInfo model
1. Use this information to render correct numbers for "Accession records", "Subsets", "Dataset...genesys-pgr/genesys-server#330 adds information about number of accessions, datasets, etc to the `/api/v1/info` call.
1. Update ApiInfo model
1. Use this information to render correct numbers for "Accession records", "Subsets", "Datasets", "Insitutes" on the entry page http://genesys.demo.genesys-pgr.org/
![image](/uploads/a72374134f546c3dd3c143d9483f3fef/image.png)0.1Alexander PrendetskiyAlexander Prendetskiyhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/58Institute PDCI chart2018-09-18T17:57:18+02:00Matija ObrezaInstitute PDCI chartThe Institue details `statisticsPDCI` contains information to render the histogram:
![image](/uploads/d646aedfdb284441f9d41bc1198e1c8f/image.png)
Extend Institue Display page with the PDCI section as shown above.
Render this section o...The Institue details `statisticsPDCI` contains information to render the histogram:
![image](/uploads/d646aedfdb284441f9d41bc1198e1c8f/image.png)
Extend Institue Display page with the PDCI section as shown above.
Render this section only if data is provided.
## From JSP
Snippet of code that renders the current histogram in JSP is below. The `data` parameter for the chart is sourced from `statisticsPDCI.histogram`:
```js
// histogram = [0, 0, 0, 0, 0, 0, 0, 34, 45, 234, 444, 272, 103, 204, 44, 751, 1465, 35, 647, 0, 0]
// Histogram contains 21 values from '0.0' to '10.0' at '0.5' intervals:
const data: object[];
// I guess this would do it:
for (let x = 0; x <= 10; x += 0.5) {
data.push([ `${x}`, histogram[x * 2] ]);
}
// use data to render histogram
```
```js
function(placeholder, data) {
$.plot(placeholder, [ {
data : data,
color : '#88ba42'
} ], {
series : {
bars : {
show : true,
barWidth : 0.4,
fill : 1,
lineWidth : 0,
align : 'center'
}
},
xaxis : {
tickLength : 0
}
});
}
```0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/59Overviews: drill down2018-09-21T14:37:51+02:00Matija ObrezaOverviews: drill downThe Overview page now displays stats for currently applied filters:
![image](/uploads/3efa48eab4d3585c824faa2e815cd666/image.png)
## Drill-down
In each individual section, the number for a specific "Term" should be a link. Clicking t...The Overview page now displays stats for currently applied filters:
![image](/uploads/3efa48eab4d3585c824faa2e815cd666/image.png)
## Drill-down
In each individual section, the number for a specific "Term" should be a link. Clicking the number adds the term to current filters for the relevant property.
- No link on "Other" or "Missing" / "Not specified"
## Implementation
PropertyItem `numeric` renders these numbers properly. Perhaps just check if `value` is of `type number` then render as rendering now, otherwise render the `value` as provided by parent component.
Parent component (`<OverviewPage`) could then do something like:
```tsx
const filterByTerm = (property, term, count) => <Link onClick={ addTerm(property, term) }><Number value={ count } /></Link>;
<PropertiesCard propertiesList={ overviewsTerms.get('duplSite').map((term) => ({title: term.term, value: filterByTerm(property, term, term.count) })) } title={ t(`accession.overview.duplSite`) } small/>
```
0.1Andrey GarnitskiyAndrey Garnitskiyhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/60Mobile friendly2018-09-21T14:37:52+02:00Matija ObrezaMobile friendly## Tabs and actions
The actions fly above tabs on mobile. Maybe best if actions render as a drop-down list of actions when on size smaller than **md** ?
## Fliters
Some filters (date range and seqno) don't use all available width.
Th...## Tabs and actions
The actions fly above tabs on mobile. Maybe best if actions render as a drop-down list of actions when on size smaller than **md** ?
## Fliters
Some filters (date range and seqno) don't use all available width.
The collapse icon also renders funny. I guess that's the reason for filters using less space.
## Collapse
Make collapse block larger and easier to click on mobile. Increase icon and text size.
## Mobile header
It would be better if the hamburger icon is replaced with Genesys logo and the "Genesys" svg text removed on mobile.
Also the header does not need to be that high, it can use smaller text size when on mobile.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/61Accession maps2018-09-16T12:46:16+02:00Matija ObrezaAccession mapsgenesys-pgr/genesys-server#328 implements `v1/acn/mapinfo`, returning information on number of accessions, map bounds and CDN servers.
Upgrade `MapPage` and services.genesys-pgr/genesys-server#328 implements `v1/acn/mapinfo`, returning information on number of accessions, map bounds and CDN servers.
Upgrade `MapPage` and services.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/62SSR: Oh-Oh page2018-09-21T12:56:05+02:00Matija ObrezaSSR: Oh-Oh pageWhen server cannot reach the backend, SSR should render an *Oh-oh problem contacting Genesys* page.
At this moment, we're getting
```
This page isn’t working
192.168.99.100 didn’t send any data.
ERR_EMPTY_RESPONSE
```
while the Expres...When server cannot reach the backend, SSR should render an *Oh-oh problem contacting Genesys* page.
At this moment, we're getting
```
This page isn’t working
192.168.99.100 didn’t send any data.
ERR_EMPTY_RESPONSE
```
while the Express knows that the request failed:
```
Incoming request, url: /proxy/oauth/token?grant_type=client_credentials
HTTP proxy to http://localhost:8080/oauth/token?grant_type=client_credentials&client_id=....&client_secret=....
Error: connect ECONNREFUSED 127.0.0.1:8080
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1161:14)
You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
Error: Request failed with status code 500
at e.exports (/var/www/genesys-catalog-ui/server/server.js:1:637418)
at e.exports (/var/www/genesys-catalog-ui/server/server.js:1:836077)
at IncomingMessage.<anonymous> (/var/www/genesys-catalog-ui/server/server.js:1:1942527)
at IncomingMessage.emit (events.js:187:15)
at IncomingMessage.EventEmitter.emit (domain.js:442:20)
at endReadableNT (_stream_readable.js:1085:12)
at args.(anonymous function) (/usr/local/lib/node_modules/pm2/node_modules/event-loop-inspector/index.js:133:29)
at process._tickCallback (internal/process/next_tick.js:63:19)
Error: connect ECONNREFUSED 127.0.0.1:8080
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1161:14)
```
Render a simple error-message page with HTTP status **503** Service Unavailable: The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
The HTML template sent to the client in this case should be in `server/503-unavailable.html`.
0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/63Accession Card: long press2018-09-18T18:40:41+02:00Matija ObrezaAccession Card: long pressEnabling long press on the card made clicking the accession link impossible. On mobile it also initiates text selection.
Remove long press support for now.Enabling long press on the card made clicking the accession link impossible. On mobile it also initiates text selection.
Remove long press support for now.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/64User registration page2018-09-25T16:58:56+02:00Matija ObrezaUser registration pageImplement the user registration page at **/registration**. It should use fields similar to what we have now at https://www.genesys-pgr.org/registration:
![image](/uploads/695c7e3f09d71c44860fe3239b2f9b17/image.png)
- Don't copy existin...Implement the user registration page at **/registration**. It should use fields similar to what we have now at https://www.genesys-pgr.org/registration:
![image](/uploads/695c7e3f09d71c44860fe3239b2f9b17/image.png)
- Don't copy existing styles :smile:
- Use the standard form components we use in React
- Include recaptcha (get recaptcha.client ID from Redux state `serverInfo.captchaSiteKey`
- Passwords must match
- Password must have 1 special char and 1 uppercase and min-length of 8.
Depends on genesys-pgr/genesys-server#336.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/65Subsets display: 100+ accessions2018-10-25T11:42:57+02:00Matija ObrezaSubsets display: 100+ accessionsWe have subsets with over 100 accessions (https://genesys.demo.genesys-pgr.org/subsets/f5909f82-ffa8-423a-b5e2-296a5000a58d). At this moment, only the first 100 records are displayed (API limit?).
Please use `PagedLoader` on Subset disp...We have subsets with over 100 accessions (https://genesys.demo.genesys-pgr.org/subsets/f5909f82-ffa8-423a-b5e2-296a5000a58d). At this moment, only the first 100 records are displayed (API limit?).
Please use `PagedLoader` on Subset display page.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/66Crops: list and details2018-09-25T17:47:07+02:00Matija ObrezaCrops: list and detailsImplement crops list page at **/c/** displaying a `<CropCard compact crop={ crop } />`. Crop *list* is already available in Redux state (loaded in `App.tsx`).
Implement crop page at **/c/{shortName}**, displaying `<CropCard crop={ crop ...Implement crops list page at **/c/** displaying a `<CropCard compact crop={ crop } />`. Crop *list* is already available in Redux state (loaded in `App.tsx`).
Implement crop page at **/c/{shortName}**, displaying `<CropCard crop={ crop } />`.
## `ui/genesys/crop/Card`
New component. Use `compact` flag to render only basic information.
## Crop data in state
```json
{
"id": 27,
"version": 1,
"active": true,
"createdBy": 4,
"createdDate": 1408957665000,
"lastModifiedBy": 4,
"lastModifiedDate": 1412255885000,
"rdfUri": null,
"shortName": "apple",
"otherNames": [],
"name": "Apple",
"description": null,
"i18n": "{\"name\":{\"fa\":\"سیب\"}}",
"_class": "Crop",
"_permissions": {
"create": false,
"read": false,
"write": false,
"delete": false,
"manage": false
}
}
```0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/67PrettyFilters: booleans2018-09-20T12:44:44+02:00Matija ObrezaPrettyFilters: booleansInstead of displaying `Historic: true` or `Historic: false`, use just `Historic` or `Excluding historic`.
Use translations of `f.NOT`.Instead of displaying `Historic: true` or `Historic: false`, use just `Historic` or `Excluding historic`.
Use translations of `f.NOT`.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/68Crops SSR2018-10-03T16:51:26+02:00Matija ObrezaCrops SSRDirectly loading https://genesys.demo.genesys-pgr.org/c fails with `window is not defined` and the crops filter is not populated.Directly loading https://genesys.demo.genesys-pgr.org/c fails with `window is not defined` and the crops filter is not populated.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/69CMS2018-10-09T16:51:40+02:00Matija ObrezaCMSThe links in the footer work:
![image](/uploads/e5f7ac8d5544d4779605d836b304bb3b/image.png)
Add new module 'cms' with **/content/...**
The links in the footer work:
![image](/uploads/e5f7ac8d5544d4779605d836b304bb3b/image.png)
Add new module 'cms' with **/content/...**
0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/70SSR Redirects2019-08-14T08:36:32+02:00Matija ObrezaSSR RedirectsThere are quite a number of (permanent) redirects that need to be added for migration from JSP to React website.
## `redirects.ts`
Introduce a file that maps all redirect paths.
- `/geo/` to `/iso3166/`
- `/geo/{code}` to `/iso3166/{c...There are quite a number of (permanent) redirects that need to be added for migration from JSP to React website.
## `redirects.ts`
Introduce a file that maps all redirect paths.
- `/geo/` to `/iso3166/`
- `/geo/{code}` to `/iso3166/{code}`
## Remove obsolete routes and components
- Update `src/geo/routes.ts`
## /explore
**Note:** This is complicated and I don't think we need to do it.
Add ExpressJS redirect for `/*/explore` path.
It should call the backend to convert the `AppliedFilters` JSON to `AccessionFilter` (if possible) and return a 301 redirect to **/a/{filterCode}**
0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/71Main navigation: Public pages2019-06-21T01:05:01+02:00Nora Castaneda-AlvarezMain navigation: Public pagesWe are starting to devise the merge between Genesys and the Genesys Catalog. The following sections are proposed to be used in the header menu. Please propose a concept (using Material Design) for the header menu.
**Explore**
* By count...We are starting to devise the merge between Genesys and the Genesys Catalog. The following sections are proposed to be used in the header menu. Please propose a concept (using Material Design) for the header menu.
**Explore**
* By country [points to: https://www.genesys-pgr.org/geo/]
* By partner [points to: https://catalog.demo.genesys-pgr.org/partners] (we'll probably call this later 'data provider')
* By network [points to: https://sandbox.genesys-pgr.org/org/]
* By crop [points to: https://www.genesys-pgr.org/c/]
* By subset [points to: https://genesys.demo.genesys-pgr.org/subsets]
* C&E dataset [points to: https://catalog.demo.genesys-pgr.org/datasets]
* Crop descriptor list [points to: https://catalog.demo.genesys-pgr.org/descriptorlists]
**Documentation**
* Publish data [points to: TBD]
* Publish passport data (should cover: MCPD (accession passport data); API; Genesys Uploader; Genesys passport data validator)
* Publish C&E data
* Publish crop descriptor list
* Publish subsets
* Use data [points to: TBD] (should cover: How to filter accessions; Download data: ZIP and XLSX files; R package; BrAPI v1 implementation)
* Place plant sample order [points to: TBD] (should contain: https://www.genesys-pgr.org/content/news/66/placing-plant-samples-orders-using-genesys)
**About us**
* About Genesys [points to: https://sandbox.genesys-pgr.org/content/about/] (MM to prepare text using current About us / What is Genesys? / History of Genesys / Frequently Asked Questions)
* Join Genesys [points to: TDB] (should include: explanation of the process and Data Provider Agreement)
* Citation and attribution [points to: https://www.genesys-pgr.org/content/legal/copying]
* Recent activity [points to: https://www.genesys-pgr.org/content/news/]
* Contact us [points to: https://www.genesys-pgr.org/content/about/contact] (we are not using a form for this)
**My list**
cc @mobreza @mskoficGregor FrasGregor Frashttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/72Overviews: other/missing2018-10-04T10:34:59+02:00Matija ObrezaOverviews: other/missingIf the count for `other` or `missing` is **0**, then do not render those term lines:
![image](/uploads/8fa457ca6b5a468c15974f8042082378/image.png)
It should only render the "USA" line.
This applies to all sections. Strangely `duplSite...If the count for `other` or `missing` is **0**, then do not render those term lines:
![image](/uploads/8fa457ca6b5a468c15974f8042082378/image.png)
It should only render the "USA" line.
This applies to all sections. Strangely `duplSite` does that already:
![image](/uploads/c22184102739001a741061e9a08f94cf/image.png)
## Booleans
I don't understand the **Yes, no, no, no** and **No, no, no**:
![image](/uploads/2ac89e77717f92a94854c389777c2b24/image.png)
0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/73Circular structure2018-09-30T11:16:34+02:00Matija ObrezaCircular structureSSR on https://genesys.demo.genesys-pgr.org/a/v169c9153e90934f5aafb15cc4537dc2a6 fails with
```
Converting circular structure to JSON
```SSR on https://genesys.demo.genesys-pgr.org/a/v169c9153e90934f5aafb15cc4537dc2a6 fails with
```
Converting circular structure to JSON
```0.1Andrey GarnitskiyAndrey Garnitskiyhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/74Crop list in homepage2019-06-21T01:05:57+02:00Nora Castaneda-AlvarezCrop list in homepageThe homepage of the updated Genesys looks like this: https://genesys.demo.genesys-pgr.org/
The Crop List displayed in the current homepage (enclosed in the pink box below) helps users to find information easily:
![Screen_Shot_2018-09-2...The homepage of the updated Genesys looks like this: https://genesys.demo.genesys-pgr.org/
The Crop List displayed in the current homepage (enclosed in the pink box below) helps users to find information easily:
![Screen_Shot_2018-09-28_at_13.28.47](/uploads/b0d4354e92d51c0361e57545a9bb5d1f/Screen_Shot_2018-09-28_at_13.28.47.png)
Please provide alternatives to include the crop list in the updated homepage design.
cc @mobreza @mskoficGregor FrasGregor Frashttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/75Crop pictures2018-10-26T16:40:34+02:00Nora Castaneda-AlvarezCrop picturesThe cards in crops page are currently illustrated with in-house made icons. We've been adding crops, for which we do not have icons (https://sandbox.genesys-pgr.org/c/). A solution for this is using open access and botanically identified...The cards in crops page are currently illustrated with in-house made icons. We've been adding crops, for which we do not have icons (https://sandbox.genesys-pgr.org/c/). A solution for this is using open access and botanically identified pictures.
## Crop images
We will use the existing file repository and upload multiple images (at least one) per crop in folders like `/crops/banana/cover`. The file repository supports all metadata elements required to attribute the source properly.
See https://sandbox.genesys-pgr.org/admin/r/files/crop/cowpea
* Internal Crop Trust repositories can provide many of these pictures.
* wikimedia commons can be used as source (e.g., African spider plant: https://commons.wikimedia.org/wiki/Category:Cleome_gynandra).
* iNaturalist (e.g., Cowpea: https://www.inaturalist.org/observations/13397511). This site contains botanically verified images with open access licenses and maintains a REST API.
## Card
We don't need a card design -- material UI already provides for that, see https://material-ui.com/demos/cards/#media
## API changes
We need an updated server response that includes the image metadata: genesys-pgr/genesys-server#350Nora Castaneda-AlvarezNora Castaneda-Alvarezhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/76Subset details2019-06-21T01:05:49+02:00Nora Castaneda-AlvarezSubset detailsPlease present alternatives to better display the information contained in subset details. Let's use the following subset as an example: https://genesys.demo.genesys-pgr.org/subsets/acbf5cfa-8d47-4976-849a-ad58d21a7716
The subset detail...Please present alternatives to better display the information contained in subset details. Let's use the following subset as an example: https://genesys.demo.genesys-pgr.org/subsets/acbf5cfa-8d47-4976-849a-ad58d21a7716
The subset details page is composed by three sections (see image attached):
* Introduction: displays the title and description of the subset (enclosed with pink color in the image)
* Attribution: presents the roles and individuals in charge of producing the subset (enclosed with blue color in the image)
* List of accessions: contains the list of accessions belonging to the subset (enclosed with yellow color in the image)
![subsets](/uploads/65c5eec3b9942aebbe6f32b20e2529f2/subsets.png)
Things we'd like to see in the design:
* The introduction needs to be highlighted and blended with the background of the page. It's currently a card and we need visual cues to help it stand out.
* The list of accessions needs an element that groups it, and let the user know that each card displayed correspond to an accession (perhaps a subtitle?).
As usual, Material Design components are advised.
cc @mobreza @mskoficGregor FrasGregor Frashttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/77Migrate to modular layout2018-10-03T13:34:52+02:00Matija ObrezaMigrate to modular layoutMigrate existing code to modular layout (as in catalog-ui).Migrate existing code to modular layout (as in catalog-ui).0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/78File Repository: Admin2018-10-03T11:53:58+02:00Matija ObrezaFile Repository: AdminImplement frontend for FileRepository API.Implement frontend for FileRepository API.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/79Institutes, data providers and networks2019-06-21T01:06:10+02:00Nora Castaneda-AlvarezInstitutes, data providers and networksFAO assigns WIEWS INSTCODES to organizations and institutes that deal with the conservation and use of plant genetic resources for food and agriculture. Here some hints for use in Genesys:
* `Institutes` in Genesys are currently unique...FAO assigns WIEWS INSTCODES to organizations and institutes that deal with the conservation and use of plant genetic resources for food and agriculture. Here some hints for use in Genesys:
* `Institutes` in Genesys are currently unique FAO WIEWS INSTCODES (https://www.genesys-pgr.org/wiews/).
* A `data provider` of Genesys, is an organization that has a established **Genesys Data Provider Agreement** and publishes data on behalf of one or several FAO WIEWS INSTCODES. E.g., EMBRAPA publishes passport data for 21 INSTCODES; The Potato International Center publishes data for one INSTCODE).
* A `network` is a set of organizations, grouped by crop type, geography or institutional arrangements. A network can be a data provider (e.g., EURISCO), or a group of institutions publishing data provider individually (e.g., CGIAR). This grouping is helpful for users.Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/80Admin: User management2018-10-11T11:41:36+02:00Matija ObrezaAdmin: User managementgenesys-pgr/genesys-server#355 implements User management API v1.
Extend existing `users/` module with **admin** actions, reducers and `ui/`
- BrowsePage: lists users
- EditUserPage
- `c/UserFilter`
- `c/UserCard`
Please use the new m...genesys-pgr/genesys-server#355 implements User management API v1.
Extend existing `users/` module with **admin** actions, reducers and `ui/`
- BrowsePage: lists users
- EditUserPage
- `c/UserFilter`
- `c/UserCard`
Please use the new module layout for the code. Admin pages should use same approach as the existing **Requests** module.0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/81Admin: File repository2018-10-19T14:09:18+02:00Matija ObrezaAdmin: File repositoryUpdate existing **Repository** module for administrator with:
- `c/FolderForm`: Simple form with name, title, description to create new folders.
- Drag&Drop multiple files to the folder, they get uploaded to current folder
- Add "Permis...Update existing **Repository** module for administrator with:
- `c/FolderForm`: Simple form with name, title, description to create new folders.
- Drag&Drop multiple files to the folder, they get uploaded to current folder
- Add "Permissions" button to file card
- Add "Delete" button to file card
- Add "Edit" button to file card: opens file editor using `c/FileForm`.
I believe all API services are available for this.0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/82Footer with links2018-10-22T12:51:12+02:00Matija ObrezaFooter with linksPages that use infinite scroll should not use the footer. The footer should be included on the entry page, details pages and content pages only.
Add a flag to PageLayout `withFooter`?Pages that use infinite scroll should not use the footer. The footer should be included on the entry page, details pages and content pages only.
Add a flag to PageLayout `withFooter`?0.1Oleksii SavranOleksii Savranhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/83Bug: Institute loader dead2018-10-04T13:47:29+02:00Matija ObrezaBug: Institute loader deadhttps://genesys.demo.genesys-pgr.org/wiews is not loading records on scroll.https://genesys.demo.genesys-pgr.org/wiews is not loading records on scroll.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/84My List and creating requests2018-10-19T14:46:44+02:00Matija ObrezaMy List and creating requestshttps://sandbox.genesys-pgr.org/sel/ shows the details about accessions the user has **selected** and added to their "list". (+Add to list / Remove).
## Lists module
Add a new module `lists` and move existing actions for list managemen...https://sandbox.genesys-pgr.org/sel/ shows the details about accessions the user has **selected** and added to their "list". (+Add to list / Remove).
## Lists module
Add a new module `lists` and move existing actions for list management to the module.
Any user can maintain their list of selected accessions, these are `public`. The user should be able to see the list of accessions they have selected (Cards). They should be able to "Remove" items from their list.
When the user has some accessions selected they can **Send request for material**. This goes to the **Request module**.
**Dashboard**: TBD later.
## Update Request module
Add **public** actions to initiate request for material from "my list". To see existing UI and options follow these steps:
1. Do **not** login to Sandbox
2. Go to https://sandbox.genesys-pgr.org/wiews/NGA039/data
3. Add a few accessions to "My list"
4. Go to https://sandbox.genesys-pgr.org/sel/
5. Hit "Send request for germplasm** and use your email to receive instruction emails. Please don't register with Easy-SMTA!
We need the Stepper for making the request. Steps:
Review available material
![image](/uploads/8f1fb6829724428f1d3de3099ebf2534/image.png)
Your information (this can be autocompleted if user is logged in)
![image](/uploads/e027472beb6c4deaa6ecab8e898004e6/image.png)
Then a "Final step" that says "Thank you".
The **REquestService** should already provide all needed APIs, if not, extend it.
Add a "My list" top-level menu pointing to `/sel/`.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/85Genesys UI. Missing buttons etc.2018-11-22T10:52:22+01:00Aleksandr KirichenkoGenesys UI. Missing buttons etc.Missing buttons:
1. On the Institute details page missing buttons:
* Browse accessions;
* Overview;
* Download MCPD, PDCI, ZIP
2. Institute page missing buttons:
* VIEW MAP;
* VIEW ALL REGISTERED INSTITUTES
3. "My List"...Missing buttons:
1. On the Institute details page missing buttons:
* Browse accessions;
* Overview;
* Download MCPD, PDCI, ZIP
2. Institute page missing buttons:
* VIEW MAP;
* VIEW ALL REGISTERED INSTITUTES
3. "My List" page missing buttons for added accessions:
* ~~"RELOAD THE LIST"~~ (obsolete)
* "CLEAR THE LIST"
* "SHOW ACCESSION MAP"
* "DOWNLOAD ZIP", "DOWNLOAD MCPD"
Oleksii SavranOleksii Savranhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/86Check for updates2018-10-10T16:28:10+02:00Matija ObrezaCheck for updatesCommit 140dc84 generates /COMMITHASH file that contains the revision of the code running on ExpressJS. The current commit hash is also stored in `window.softwareCommit`.
Create a periodically executed action (every 5min) that will load ...Commit 140dc84 generates /COMMITHASH file that contains the revision of the code running on ExpressJS. The current commit hash is also stored in `window.softwareCommit`.
Create a periodically executed action (every 5min) that will load the **/COMMITHASH** from the server and compare its contents with `window.softwareCommit`.
If the **hash** is different, issue a Snack saying "New version is available" and a button to "Reload" the page.
**Note:** This needs to only execute on the client, not on the server!0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/87SSR: Circular JSON structure2018-10-09T20:02:04+02:00Matija ObrezaSSR: Circular JSON structureAgain...Again...0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/88Map: null bounds2018-10-11T12:12:18+02:00Matija ObrezaMap: null boundsCheck that bounds values are not `null` before applying bounds. This is also an indicator there are no georeferenced accessions matching the filter.Check that bounds values are not `null` before applying bounds. This is also an indicator there are no georeferenced accessions matching the filter.0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/89Update CI for production2018-10-15T17:03:34+02:00Matija ObrezaUpdate CI for productionUpdate CI for deployment to sandbox and productionUpdate CI for deployment to sandbox and production0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/90Crop details/edit pages2018-10-25T11:53:29+02:00Matija ObrezaCrop details/edit pageshttps://genesys.demo.genesys-pgr.org/c and https://genesys.demo.genesys-pgr.org/c/barley now provide basic crop information.
The crop DisplayPage needs to be updated to display more information (see https://www.genesys-pgr.org/c/banana ...https://genesys.demo.genesys-pgr.org/c and https://genesys.demo.genesys-pgr.org/c/barley now provide basic crop information.
The crop DisplayPage needs to be updated to display more information (see https://www.genesys-pgr.org/c/banana as example).
This requires work on genesys-pgr/genesys-server#350.
## Edit page
Update the crop edit page to manage the `private List<String> otherNames` (use approach we now use for adding WIEWS codes to Partner).
0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/91Crop list page2018-10-19T16:19:50+02:00Matija ObrezaCrop list pageUpdate the crop list page https://genesys.demo.genesys-pgr.org/c to include one of the crop images from the crop covers gallery.
For each crop, the file repository will contain an image gallery in `/crop/{shortName}/covers`. In the API ...Update the crop list page https://genesys.demo.genesys-pgr.org/c to include one of the crop images from the crop covers gallery.
For each crop, the file repository will contain an image gallery in `/crop/{shortName}/covers`. In the API response, include a list of repository images that can be used as the picture in https://material-ui.com/demos/cards/#media.
Relates to genesys-pgr/genesys-server#350 and genesys-pgr/genesys-ui#750.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/92Geo module2018-10-26T18:43:21+02:00Matija ObrezaGeo moduleAdd **/geo** module for public access to:
- **/geo**: list of countries, https://www.genesys-pgr.org/geo
- **/geo/{iso3code}**: country page, https://www.genesys-pgr.org/geo/BEL
- **/geo/regions**: list of GeoRegions from the server, ht...Add **/geo** module for public access to:
- **/geo**: list of countries, https://www.genesys-pgr.org/geo
- **/geo/{iso3code}**: country page, https://www.genesys-pgr.org/geo/BEL
- **/geo/regions**: list of GeoRegions from the server, https://www.genesys-pgr.org/geo/regions
- **/geo/region/{code}**: GeoRegion details, https://www.genesys-pgr.org/geo/regions/021
Implement a new API **v1** `GeoController` in genesys2-server project to support the frontend.
Please implement a `.../details/{iso3code}` endpoint that returns an object with:
```java
public Country details;
public List<FaoInstitute> institutes;
public Map<String, List<Term>> overview; // Let's discuss
```
See implementation of details API endpoint for **crops**.1.0Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/94Admin/Dashboard layout2019-06-21T01:04:01+02:00Matija ObrezaAdmin/Dashboard layoutUse a special top-level menu + background color for the Dashboard.
- Current items are "Subsets", "Datasets", "Descriptors", "Descriptor lists"
- Left side should be filters (when applicable)
![image](/uploads/d9b9f4eb1c2396913ecdd7c9c...Use a special top-level menu + background color for the Dashboard.
- Current items are "Subsets", "Datasets", "Descriptors", "Descriptor lists"
- Left side should be filters (when applicable)
![image](/uploads/d9b9f4eb1c2396913ecdd7c9c2436230/image.png)
0.1Gregor FrasGregor Frashttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/95i18n2018-10-26T12:40:08+02:00Matija Obrezai18nReplace all fixed strings in the project with `t()` strings.
## common vs translations
Generic texts like "Apply", "Click here", "Download", .... can go to `common.json`.
Texts more specific to the Catalog project should go to `transl...Replace all fixed strings in the project with `t()` strings.
## common vs translations
Generic texts like "Apply", "Click here", "Download", .... can go to `common.json`.
Texts more specific to the Catalog project should go to `translations.json`.
Feel free to ask for advice.
## `ui/common` Components
All components need to be exported as `translate()(...)`.
Translations here should go to `common.json`. Start with these, please.
## `src/xxxx` modules
These go to `translations.json`.
Please use `{moduleName}.xxxx` as keys.1.0Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/96Unnecessary API calls2018-11-02T11:19:44+01:00Matija ObrezaUnnecessary API callsThe frontend sometimes makes unnecessary API calls to load data that is already in state (SSR).
Example: https://catalog.demo.genesys-pgr.org/datasets has an extra call to list Datasets.
Click through the site, identify and fix other s...The frontend sometimes makes unnecessary API calls to load data that is already in state (SSR).
Example: https://catalog.demo.genesys-pgr.org/datasets has an extra call to list Datasets.
Click through the site, identify and fix other such cases.0.1Maxym BorodenkoMaxym Borodenkohttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/97Add number indicator to My List2018-10-25T18:10:46+02:00Aleksandr KirichenkoAdd number indicator to My ListAdd number indicator to *My List* menu item
![SCR_0082](/uploads/7ce4bddcc4207c95ea617e538ecfe23c/SCR_0082.png)Add number indicator to *My List* menu item
![SCR_0082](/uploads/7ce4bddcc4207c95ea617e538ecfe23c/SCR_0082.png)Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/98Update XLSX file2018-10-26T15:42:37+02:00Nora Castaneda-AlvarezUpdate XLSX filePlease update **subset template file** in the Subset creation page (needs login) with new version (attached below):
![Screen_Shot_2018-10-22_at_13.25.11](/uploads/5a647c4adfdb31e55319fba112fd71e5/Screen_Shot_2018-10-22_at_13.25.11.png)
...Please update **subset template file** in the Subset creation page (needs login) with new version (attached below):
![Screen_Shot_2018-10-22_at_13.25.11](/uploads/5a647c4adfdb31e55319fba112fd71e5/Screen_Shot_2018-10-22_at_13.25.11.png)
[genesys-subset-template-201810.xlsx](/uploads/f1d3b06298536f741dc12eec269f78d0/genesys-subset-template-201810.xlsx)0.1Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/99Remove licenses selector from subsets2018-10-25T22:17:10+02:00Nora Castaneda-AlvarezRemove licenses selector from subsetsData providers do not need to select a license when registering a subset. Please remove:
![Screen_Shot_2018-10-22_at_14.12.29](/uploads/5c42162bb766d7aa08c2e51fbdf37224/Screen_Shot_2018-10-22_at_14.12.29.png)
## Backend
Update server ...Data providers do not need to select a license when registering a subset. Please remove:
![Screen_Shot_2018-10-22_at_14.12.29](/uploads/5c42162bb766d7aa08c2e51fbdf37224/Screen_Shot_2018-10-22_at_14.12.29.png)
## Backend
Update server and remove license from Subset model.Viacheslav PavlovViacheslav Pavlovhttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/100Sort crops alphabetically2018-10-25T16:03:20+02:00Matija ObrezaSort crops alphabeticallySee https://genesys.demo.genesys-pgr.org/c
Add sort to the `render()` method of the page.
Also make crop image height `200px` and use the thumbnail at `/proxy/uploads/d/_thumbs${image.thumbnailPath}/200x200.png` instead of the full pic...See https://genesys.demo.genesys-pgr.org/c
Add sort to the `render()` method of the page.
Also make crop image height `200px` and use the thumbnail at `/proxy/uploads/d/_thumbs${image.thumbnailPath}/200x200.png` instead of the full picture.0.1Matija ObrezaMatija Obrezahttps://gitlab.croptrust.org/genesys-pgr/genesys-ui/-/issues/101Catalog modules2018-11-23T16:06:34+01:00Matija ObrezaCatalog modulesImport datasets, descriptors and descriptor list modules to **genesys-ui** project.
**Note** @vpavlov and @mborodenko will say when they're ready to execute this task.
## Navigation
- Add Datasets and Descriptor lists to top-level nav...Import datasets, descriptors and descriptor list modules to **genesys-ui** project.
**Note** @vpavlov and @mborodenko will say when they're ready to execute this task.
## Navigation
- Add Datasets and Descriptor lists to top-level navigation.
- Update the Dashboard0.1Viacheslav PavlovViacheslav Pavlov