ilri / OpenRXV

OpenRXV is a repository harvesting and explorer tool utilizing Dublin Core and CG Core metadata schemas
GNU General Public License v3.0
4 stars 6 forks source link
angular docker dspace dublin-core elasticsearch nodejs open-access reactjs repositories

Screenshot of OpenRXV running on AReS

Open Repository Explorer and Visualizer

Frontend Build Status Backend Build Status

The Open Repository Explorer and Visualizer (OpenRXV) is a dashboard-like tool that was created to help people find and understand content in open access repositories like DSpace. It began as a proof of concept developed by CodeObia and the Monitoring, Evaluation and Learning (MEL) team at the International Center for Agricultural Research in the Dry Areas (ICARDA) to enable exploring and reporting on content in two key institutional repositories. Later, in partnership with the International Livestock Research Institute (ILRI), the scope was expanded with the idea of supporting more repository types and larger amounts of items. In the future we hope to be able to support any repository that uses Dublin Core metadata and has an API for harvesting.

This project contains a backend indexer powered by Node.js and Elasticsearch, and a dynamic frontend built with Angular, Bootstrap, Highcharts, Angular Material, and Ngrx. The application is wrapped up and deployed via Docker.

You can see an example of the project working on our Agricultural Research e-Seeker (AReS).

Requirements

Installation

After you have configured Docker you can clone this repository and build OpenRXV:

$ sudo docker-compose up -d

This will bring up all of the container components of the project and start building them. Monitor the progress with docker logs -f frontend, for example. After a few minutes you can visit the site at localhost:80 and log into the admin dashboard (default is admin/admin).

Note: the Elasticsearch component requires more virtual memory. You will most likely need to increase the host system's memory map limits by setting vm.max_map_count = 262144 in /etc/sysctl.conf. See the Elasticsearch docs for more information.

Documentation

The application is divided into four sections.

  1. The navbar (yellow): which holds the logo on the left, and three buttons with icons on the right:
  1. The chart and lists components (gray):
  1. The side navigation buttons (red color). These buttons navigate the user to the corresponding components with the same icon(s).

  2. The filters (blue color), which are multiple inputs that allow you to search and filter the data. Changes to these filters are immediately reflected in the charts and lists.

App structure image ( Click to expand ) App structure

Almost everything is configurable: colors, the position of charts, tooltip text, and the data being displayed in the charts themselves. To change these attributes you need to modify some TypeScript and SCSS files, which you can find in /RES/src/configs

Generic Configurations

The properties that you can add to each object:

examples :

Two elements next to each other, linked with one side navigation button. ( Click to expand ) two element next to each other
Three elements next to each other, linked with one side navigation button. ( Click to expand ) Three elements next to each other
One element, with single side navigation button. ( Click to expand ) One element

Note about the generic configurations:

About Colors

If you go to /RES/src/configs/colorsMap.scss you will find a scss map, which contains the pirmary custom colors of the app, and follows the angular material theming convection, the key 500 is the color that we see often on the page.

Change the map with the colors you want (if you commented the original one and uncommented the map under it you will see how the page changes).

Changing this map will not change the colors of the charts, to change them go to /RES/src/configs/chartColors.ts and you will see multiple exported variables.

We included a file /RES/src/configs/codeobia.colors.ts which includes colors that match with the commented scss map, active them both and see how much change happens. ( copy the content of the codeobia.colors.ts into charts.colors.ts after you deleted every thing in it).

Changing the configurations notes & examples

Example

Old `image` ( Click to expand ) Search icon
Old `/RES/src/configs/dashoards.ts` (Click to expand) ```ts export const dashboardConfig: GeneralConfigs[] = [ { show: true, class: 'col-md-6 no-side-padding', component: 'PieComponent', componentConfigs: { id: 'pie', title: 'Info Products by Type', source: 'type', description: `....`, } as ComponentDashboardConfigs, scroll: { icon: 'pie_chart', }, tour: true, }, { class: 'col-md-6 no-side-padding', show: true, component: 'WordcloudComponent', componentConfigs: { id: 'wordcloud', title: 'Info Products by Subject', source: 'subject', description: `...`, } as ComponentDashboardConfigs, scroll: { linkedWith: 'pie', }, tour: true, }, .... ] ```
New `image` (Click to expand) Search icon
New `/RES/src/configs/dashoards.ts` (Click to expand) ```ts export const dashboardConfig: GeneralConfigs[] = [ { show:true, class: 'col-md-4 no-side-padding', component: 'PieComponent', componentConfigs: { id: 'pie', title: 'Info Products by Type', source: 'subject', description: `...`, } as ComponentDashboardConfigs, scroll: { icon: 'pie_chart', }, tour: true, }, { class: 'col-md-4 no-side-padding', show: true, component: 'WordcloudComponent', componentConfigs: { id: 'wordcloud', title: 'Info Products by Subject', source: 'type', description: `...`, } as ComponentDashboardConfigs, scroll: { linkedWith: 'pie', }, tour: true, }, { class: 'col-md-4 no-side-padding', show: true, component: 'WordcloudComponent', componentConfigs: { id: 'pie2', title: 'Countries', source: 'country', description: `...`, } as ComponentDashboardConfigs, scroll: { linkedWith: 'pie', }, tour: true, }, { class: 'col-12 no-side-padding', show: true, component: 'PieComponent', componentConfigs: { id: 'pie3', title: 'Authors', source: 'author', description: ``, } as ComponentDashboardConfigs, scroll: { icon: 'bubble_chart', }, tour: true, }, .... ] ```

Note

Authors

The following people have made significant contributions to the technical development of OpenRXV:

The following people have made significant contributions to the design and overall function of OpenRXV:

License

This work is licensed under the GPLv3. The license allows you to use and modify the work for personal and commercial purposes, but if you distribute the work you must provide users with a means to access the source code for the version you are distributing. Read more about the GPLv3 at TL;DR Legal.

Read more about ILRI's commitment to openness click here.