Git Product home page Git Product logo

esa-climate-from-space's Introduction

Climate from Space application for ESAs CCI+ program.

Web Version

Desktop App

Besides the web version we also deliver a native Electron app to download and run on a local machine. This app also offers a "Safe for Offline Usage" feature which allows to download data and view it later without an active internet connection.

The native app releases can be downloaded from:

Note: Be sure to replace the VERSION number e.g. (0.4.0 -> https://storage.googleapis.com/esa-cfs-versions/electron/0.4.0/esa-climate-from-space-0.4.0-win.exe)

Installation

To run the native app just run the .exe file (Windows) or unpack the .zip archive (Linunx/MacOS) and run the containing app/binary file. Versions < 1.0.0 are not signed and may prompt a Security Warning from your Operating System.

Development

Requirements

Following software is required to develop for this project:

  • node.js (>= 10)
  • npm

Installation

After cloning the repository, install all dependencies:

npm install # install new dependencies

Run

Run the following command to start the server on localhost:

npm start # start the server

Build Web

Run the following command to build a production ready version of the web part:

npm run build

The final output will be in a folder called dist in the project's root directory.

Build Native Electron App

Run the following command to build a production ready version of the electron part:

npm run electron:build

The final output will be in a folder called dist-electron in the project's root directory.

Release New Version

Run the following command to create a new tagged release.

npm version <major|minor|patch>

A new git branch chore/release-${VERSION} will be pushed. Create PR and merge into develop branch (merge not squash to keep the tag).

Cloud Build will build and upload a new develop version once merged (https://storage.googleapis.com/esa-cfs-versions/web/develop/index.html)

Merge develop into master. Once merged Cloud Build will build and upload new master version (https://storage.googleapis.com/esa-cfs-versions/web/master/index.html).

In addition all remote files on cloud storage have to be updated to the new version folder. Run the follwing command with the correct version numbers:

./scripts/increase-storage-version.sh <old_version> <new_version> # e.g. increase-storage-version 0.9.3 1.0.0

Copy the master web application files into a separate version folder gsutil cp -r gs://esa-cfs-versions/web/master/* gs://esa-cfs-versions/web/{VERSION}/

Trigger the electron build task on Cloud build for the master branch (https://console.cloud.google.com/cloud-build/triggers?project=esa-climate-from-space)

Copy the master electron application files into a separate version folder gsutil cp -r gs://esa-cfs-versions/electron/master/*{VERSION}* gs://esa-cfs-versions/electron/{VERSION}/

Contact

esa-climate-from-space's People

Contributors

aemkei avatar andreashelms avatar dependabot[bot] avatar immo-be avatar katvonrivia avatar mrmetalwood avatar pmast avatar pwambach avatar ubilabs-ci avatar usefulthink avatar yfr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

esa-climate-from-space's Issues

backround info button

  • show info button with dataset
  • show dataset description
  • show separate link that links to data set website

Licence checker

As this will be an open source App we need to check that all dependencies fulfil the open source requirements. We will stick with MIT licence as a start.

Setup

  • typescript
  • prettier
  • linting
  • webpack

default dataset

  • allow to set a default dataset that is displayed when opening the application

pagination

  • show current slide number
  • show total number of slides
  • links for next and previous slide

evaluate cesium.js

Evaluate cesium.js for the usage within the Climate from Space application:

Questions to answer:

Test Dataset

  • multi time steps
  • plate carrée projected
  • transparent background
  • as small files as possible

switch for 2D map projection

  • allow to toggle between two 2D map projections:
    • web mercator
    • Equirectangular projection (plate carrée)
  • integrate this in one switcher

sidepanel

  • show header image
  • show (sub-) title
  • show body

Bundle as Electron App

Create an electron bundle that runs on all platforms just like a normal app.

  • bundle app as electron app
  • build apps for three platforms
    • Linux
    • Windows
    • Mac
  • store on state that app is running in electron (we need to show different content later, e.g. take our screen)
    - [ ] signature of app bundle for mac? (will do later too complicated for now)
    - [ ] signature for windows? (will do later too complicated for now)
  • inform about update capabilities

Show story title

  • show story title above globe, keep always visible
  • center or right aligned

synchronized dual view

  • show two maps next to each other, with synced perspective
  • show two globes next to each other, with synced perspective

Deployment

  • create a separate GCP project
  • deployment
  • versioning
  • CI: cloud build
  • slack notifications
  • testing

2D Map

  • allow to show 2D interactive map

Story Selector

  • create story selector
  • make story selectable and store story in state
  • show story name
  • show preview image
  • show description as tool tip

Make accessible from:

  • stories button
  • presenter mode
  • show case mode

NB: different mode will have different feature sets in the selectors

Layer selector

  • index file
    • list of layer elements
    • allow for sublayers
    • keep order of list
    • link to actual data
  • fetch index file from server
  • list of available layers (incl. sublayers)
  • only one active at a time (including sublayers)
  • highlight active layer
  • possibility to deselect a layer
  • store state in data store
  • get state from store
  • layers have
    • name
    • description (as tooltip)
  • dispatch required actions
  • we need this selector twice in the end
  • make selector collapsable
  • add button to expand selector

https://docs.google.com/presentation/d/1CUV9FqTaMOASQeAmjj_kfYOYys6kWvv4O7YzS7t3j-0/edit#slide=id.g5237e89095_0_25

video embed (youtube)

  • allow to embed video in panel header
  • store only ID, construct embed code form that
  • enable full screen button
  • enable subtitles if possible

Youtube only.

datenstruktur je story

  • story ID
  • file name reflects ID
  • list of slides
  • for each slide
    • title
    • subtitle
    • body text
    • header image
  • think of folder structure to store story
  • keep all links relative for easier download
  • document in wiki

images instead of globe

  • show images instead of globe in story mode
  • keep side panel visible
  • allow to be maximised by default when opening slide
    • when maximised by default hide gallery in panel header

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.