Code Monkey home page Code Monkey logo

o3webapp's Introduction

Build Status


Logo

The O3as Webapp

The O3as Webapp has the purpose of visualizing data from the ozone layer and thus enhancing the scientific research of the ozone layer decomposition. The Webapp provides an intuitive user interface for detailed visualizations, e.g. ozone recovery analysis, and calculation of statistical values. Furthermore, plotted data can be downloaded to share gathered information. Plots can also be shared by simply copying the URL. To get more information about the "O3as: Ozone Assessment" project, check out the main website.

Built With

  • npm.js package manager
  • React.js main Javascript Framework
  • Redux.js internal store, simplifies communication between different components
  • Apexcharts.js used for rendering of the graph. Used through the React wrapper
  • pdfmake used to export a pdf
  • Jest.js main framework for testing
  • React Testing Library provides more React specific tests
  • MaterialUI provides styled input components (similar to Bootstrap)
  • axios used for API communication
  • jsdoc used standard for documenting the code
  • better docs provides custom @component tags specifically for React Apps, as well as @category tags

Documentation

For now, you have to locally create the docs. In the future we are going to host the docs and provide a link to them here.

Prerequisites

Make sure that you have installed

  • node.js (automatically also installs npm)

How to install and run the Project

  • After cloning the project execute this command in order to install the necessary packages:
    npm install
  • If you want to start the App locally, execute:
    npm start
  • To run tests and to see the test coverage, execute:
    npm run test -- --watchAll --coverage 
  • To generate docs, execute:
    npm run docs

Before building the docs for the first time, you have to go to o3webapp/node_modules/better-docs/bundler.js and remove the --dist-dir ${outDist} option. So replace

  const cmd = `${process.platform === 'win32' ? 'SET ' : ''}NODE_ENV=development parcel build ${entry} --dist-dir ${outDist}`

with

  const cmd = `${process.platform === 'win32' ? 'SET ' : ''}NODE_ENV=development parcel build ${entry}`

Working on the VM

For testing purposes there is a running instance of the Webapp on a VM. You can visit the test WebApp here.

  • If you have a private key, and you want to connect to the VM where the WebApp is deployed, execute:
    ssh -i <your_private_key> [email protected]
  • After connecting to the VM and you want to see the logs of the application, including messages from the container, execute:
    sudo docker-compose -f app

Data

In order to see the API and try out some requests, visit: O3as Api

How to configure the sections of the Webapp

Section configuration can be done in the config/ directory. defaultConfig.json specifies the default setup of the sections. When a new plot type is added, it has the section configuration of defaultConfig.json. To customize the setup of a specific plot type, go to the .json file with the corresponding plot type name. The specific config files overwrite defaultConfig.json. To overwrite a section, add the section with the same name in the specific config file. If the name of a section doesn't appear in defaultConfig.json, it will be added as a new section.

Example:

defaultConfig.json:

{
  "sections": [
    {
      "name": "Appearance",
      "components": ["PlotNameField", "XAxisField", "YAxisField"]
    },
    {
      "name": "Models",
      "components": ["ModelGroupConfigurator"]
    }
  ]
}

and this specific config file:

{
  "sections": [
    {
      "name": "Appearance",
      "components": ["PlotNameField", "RegionSelector", "YAxisField"]
    },
    {
      "name": "Filter Data",
      "components": ["TimeCheckBoxGroup"]
    }
  ]
}

will convert to

{
  "sections": [
    {
      "name": "Appearance",
      "components": ["PlotNameField", "RegionSelector", "YAxisField"]
    },
    {
      "name": "Models",
      "components": ["ModelGroupConfigurator"]
    },
    {
      "name": "Filter Data",
      "components": ["TimeCheckBoxGroup"]
    }
  ]
}

Credits

Developers which worked on this project:

  • Furkan Çevik
  • Thomas Marwitz
  • Simon von Rönn
  • Nikolai Prjanikov
  • Jana Zeller

License

This project is licensed under the GNU License.

(back to top)

o3webapp's People

Contributors

furcev32 avatar jana-z avatar marcvs avatar simonvonroenn avatar thechristophe avatar thomasmarwitz avatar tuuxic avatar vykozlov avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.