Giter Site home page Giter Site logo

geosolutions-it / geonode Goto Github PK

View Code? Open in Web Editor NEW

This project forked from geonode/geonode

6.0 9.0 12.0 446.05 MB

GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

Home Page: https://waffle.io/geosolutions-it/geonode

License: Other

Python 33.23% HTML 3.82% CSS 3.70% JavaScript 57.87% Shell 0.41% Makefile 0.03% XSLT 0.45% Gherkin 0.01% Dockerfile 0.02% Scheme 0.02% SCSS 0.02% Less 0.42%

geonode's Introduction

GeoNode OSGeo Project

Table of Contents

What is GeoNode?

GeoNode is a geospatial content management system, a platform for the management and publication of geospatial data. It brings together mature and stable open-source software projects under a consistent and easy-to-use interface allowing non-specialized users to share data and create interactive maps.

Data management tools built into GeoNode allow for integrated creation of data, metadata, and map visualization. Each dataset in the system can be shared publicly or restricted to allow access to only specific users. Social features like user profiles and commenting and rating systems allow for the development of communities around each platform to facilitate the use, management, and quality control of the data the GeoNode instance contains.

It is also designed to be a flexible platform that software developers can extend, modify or integrate against to meet requirements in their own applications.

Try out GeoNode

If you just want to try out GeoNode visit our official Demo online at: http://master.demo.geonode.org. After your registration you will be able to test all basic functionalities like uploading layers, creation of maps, editing metadata, styles and much more. To get an overview what GeoNode can do we recommend to have a look at the Users Workshop.

Install

The latest official release is 4.0.2!

GeoNode can be setup in different ways, flavors and plattforms. If you´re planning to do development or install for production please visit the offical GeoNode installation documentation:

Learn GeoNode

After you´ve finished the setup process make yourself familiar with the general usage and settings of your GeoNodes instance. - the User Training is going in depth into what we can do. - the Administrators Workshop will guide you to the most important parts regarding management commands and configuration settings.

Development

GeoNode is a web based GIS tool, and as such, in order to do development on GeoNode itself or to integrate it into your own application, you should be familiar with basic web development concepts as well as with general GIS concepts.

For development GeoNode can be run in a 'development environment'. In contrast to a 'production environment' development differs as it uses lightweight components to speed up things.

To get you started have a look at the Install instructions which cover all what is needed to run GeoNode for development. Further visit the the Developer workshop for a basic overview.

If you're planning of customizing your GeoNode instance, or to extend it's functionalities it's not advisable to change core files in any case. In this case it's common to use setup a GeoNode Project Template.

Contributing

GeoNode is an open source project and contributors are needed to keep this project moving forward. Learn more on how to contribute on our Community Bylaws.

Roadmap

GeoNode's development roadmap is documented in a series of GeoNode Improvement Projects (GNIPS). They are documented at GeoNode Wiki.

GNIPS are considered to be large undertakings which will add a large amount of features to the project. As such they are the topic of community dicussion and guidance. The community discusses these on the developer mailing list: http://lists.osgeo.org/pipermail/geonode-devel/

Showcase

A handful of other Open Source projects extend GeoNode’s functionality by tapping into the re-usability of Django applications. Visit our gallery to see how the community uses GeoNode: GeoNode Showcase.

The development community is very supportive of new projects and contributes ideas and guidance for newcomers.

Most useful links

General

Related projects

Support

Licensing

GeoNode is Copyright 2018 Open Source Geospatial Foundation (OSGeo).

GeoNode is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GeoNode is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with GeoNode. If not, see http://www.gnu.org/licenses.

geonode's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geonode's Issues

[disasterrisk] Unifi dimension structure

Currently, we have dimension structure looking like this (part of riskAnalysisData):

{"layers":
     {"SSP1-2050": "geonode:test", 
      "Capital Stock - ACTUAL": "geonode:test", 
      "SSP4-2050": "geonode:test", 
      "CAPITAL LOSSES - Reformatted": "geonode:test", 
      "SSP3-2050": "geonode:test", 
      "SSP2-2050": "geonode:test", 
      "SSP5-2050": "geonode:test"}, 
  "name": "Scenario", 
  "abstract": "Scenario", 
  "layerAttributes": 
       {"SSP1-2050": "d1",
        "Capital Stock - ACTUAL": "d1", 
        "SSP4-2050": "d1", 
        "CAPITAL LOSSES - Reformatted": "d1", 
        "SSP3-2050": "d1", 
        "SSP2-2050": "d1", 
        "SSP5-2050": "d1"}, 
  "values": 
         ["CAPITAL LOSSES - Reformatted", 
          "SSP1-2050", 
          "SSP2-2050", 
          "SSP3-2050", 
          "SSP4-2050", 
          "SSP5-2050", 
          "Capital Stock - ACTUAL"],
  "unit": "NA"},

We could make it more readable:

{"values": ["CAPITAL LOSSES - Reformatted", "SSP1-2050", "SSP2-2050", "SSP3-2050", "SSP4-2050", "SSP5-2050", "Capital Stock - ACTUAL"],
 "layers": {'SSP1-2050': {'layerName': 'geonode:test',
                          'layerAttribute': 'd1',
                          'layerStyle': {'name': 'name',
                                    'sld': sld},
                         },
            'SSP2-2050': {'layerName': 'geonode:test',
                          'layerAttribute': 'd1',
                          'layerStyle': {..},
                          }
            },
...
}

[Disasterrisk] - Ordered JSON for Risk Analysis data

The JSON produced for Risk Analysis data
(e.g. http://disasterrisk-af.geo-solutions.it/risks/risk_data_extraction/loc/AF/ht/EQ/at/impact/an/2/)
should keep values ordered accordingly to the axis.

The response here below

{
	"riskAnalysisData": {
		"dataFile": "/uploaded/metadata_files/WP6__Impact_analysis_results_future_projections_Hospital_5a48fSH.xlsx",
		"name": "WP6_future_proj_Hospital",
		"metadataFile": "/uploaded/metadata_files/WP6__Impact_analysis_results_future_projections_Hospital_-_metadata.xlsx",
		"hazardSet": {
			"endDate": "",
			"author": null,
			"abstract": "This table shows the aggregated results of affected hospitals for the Afghanistan districts and provinces from 1km resolution results in the locations over PGA=0.075g. These are measured in USD. The results are created as future projections for SSPs 1-5 in 2050.",
			"bounds": "[60.4784E, 29.3775N], [74.8794E, 38.4834N].",
			"edition": "",
			"description": "",
			"category": "economy",
			"otherConstraints": "",
			"title": "Afghanistan Hazard-Exposures for provinces and districts for affected hospitals in future projections for SSPs 1-5 in 2050.",
			"dataQualityStatement": "",
			"pointOfContact": {},
			"language": "English",
			"purpose": "These maps have been derived on a nation-wide scale for the purpose of identifying high risk- areas on the district and provincial scale, from which decisions can be made on allocating efforts for more detailed site specific hazard and risk analysis. Use of this information on smaller scales should be applied with care. Importantly for on a local scale, it is often the case that more detailed case history and hazard information is required to perform such hazard and risk modelling, particularly where applied to dimension mitigation structures or strategies.",
			"date": "July 6, 2016",
			"keyword": "",
			"spatialRepresentationType": "",
			"referenceSystemCode": "",
			"country": null,
			"beginDate": "",
			"onlineResource": "",
			"useConstraints": "unclassified",
			"supplementalInformation": "Table in Excel",
			"url": "",
			"dateType": "mm dd, yyyy"
		},
		"descriptorFile": null,
		"data": {
			"values": [
				["Hospital", "100", "219000000.0"],
				["Hospital", "250", "240000000.0"],
				["Hospital", "500", "267000000.0"],
				["Hospital", "1000", "282000000.0"],
				["Hospital", "2500", "282000000.0"],
				["SSP1", "10", "321900000.0"],
				["SSP1", "20", "788655000.0"],
				["SSP1", "50", "2188920000.0"],
				["SSP1", "100", "2349870000.0"],
				["SSP1", "250", "2575200000.0"],
				["SSP1", "500", "2864910000.0"],
				["SSP1", "1000", "3025860000.0"],
				["SSP1", "2500", "3025860000.0"],
				["SSP2", "10", "221700000.0"],
				["SSP2", "20", "543165000.0"],
				["SSP2", "50", "1507560000.0"],
				["SSP2", "100", "1618410000.0"],
				["SSP2", "250", "1773600000.0"],
				["SSP2", "500", "1973130000.0"],
				["SSP2", "1000", "2083980000.0"],
				["SSP2", "2500", "2083980000.0"],
				["SSP3", "10", "186600000.0"],
				["SSP3", "20", "457170000.0"],
				["SSP3", "50", "1268880000.0"],
				["SSP3", "100", "1362180000.0"],
				["SSP3", "250", "1492800000.0"],
				["SSP3", "500", "1660740000.0"],
				["SSP3", "1000", "1754040000.0"],
				["SSP3", "2500", "1754040000.0"],
				["SSP4", "10", "162000000.0"],
				["SSP4", "20", "396900000.0"],
				["SSP4", "50", "1101600000.0"],
				["SSP4", "100", "1182600000.0"],
				["SSP4", "250", "1296000000.0"],
				["SSP4", "500", "1441800000.0"],
				["SSP4", "1000", "1522800000.0"],
				["SSP4", "2500", "1522800000.0"],
				["SSP5", "10", "386100000.0"],
				["SSP5", "20", "945945000.0"],
				["SSP5", "50", "2625480000.0"],
				["SSP5", "100", "2818530000.0"],
				["SSP5", "250", "3088800000.0"],
				["SSP5", "500", "3436290000.0"],
				["SSP5", "1000", "3629340000.0"],
				["SSP5", "2500", "3629340000.0"],
				["Hospital", "10", "30000000.0"],
				["Hospital", "20", "73500000.0"],
				["Hospital", "50", "204000000.0"]
			],
			"dimensions": [{
				"abstract": "Round Period",
				"values": ["10", "20", "50", "100", "250", "500", "1000", "2500"],
				"name": "Round Period",
				"unit": "Years"
			}, {
				"abstract": "Scenario",
				"values": ["Hospital", "SSP1", "SSP2", "SSP3", "SSP4", "SSP5"],
				"name": "Scenario",
				"unit": "NA"
			}]
		}
	}
}

mixed some "Hospital" values by pushing them at the bottom.

Switching dimension also does not correctly keeps the values order
(e.g. http://disasterrisk-af.geo-solutions.it/risks/risk_data_extraction/loc/AF/ht/EQ/at/impact/an/2/dym/2)

{
	"riskAnalysisData": {
		"dataFile": "/uploaded/metadata_files/WP6__Impact_analysis_results_future_projections_Hospital_5a48fSH.xlsx",
		"name": "WP6_future_proj_Hospital",
		"metadataFile": "/uploaded/metadata_files/WP6__Impact_analysis_results_future_projections_Hospital_-_metadata.xlsx",
		"hazardSet": {
			"endDate": "",
			"author": null,
			"abstract": "This table shows the aggregated results of affected hospitals for the Afghanistan districts and provinces from 1km resolution results in the locations over PGA=0.075g. These are measured in USD. The results are created as future projections for SSPs 1-5 in 2050.",
			"bounds": "[60.4784E, 29.3775N], [74.8794E, 38.4834N].",
			"edition": "",
			"description": "",
			"category": "economy",
			"otherConstraints": "",
			"title": "Afghanistan Hazard-Exposures for provinces and districts for affected hospitals in future projections for SSPs 1-5 in 2050.",
			"dataQualityStatement": "",
			"pointOfContact": {},
			"language": "English",
			"purpose": "These maps have been derived on a nation-wide scale for the purpose of identifying high risk- areas on the district and provincial scale, from which decisions can be made on allocating efforts for more detailed site specific hazard and risk analysis. Use of this information on smaller scales should be applied with care. Importantly for on a local scale, it is often the case that more detailed case history and hazard information is required to perform such hazard and risk modelling, particularly where applied to dimension mitigation structures or strategies.",
			"date": "July 6, 2016",
			"keyword": "",
			"spatialRepresentationType": "",
			"referenceSystemCode": "",
			"country": null,
			"beginDate": "",
			"onlineResource": "",
			"useConstraints": "unclassified",
			"supplementalInformation": "Table in Excel",
			"url": "",
			"dateType": "mm dd, yyyy"
		},
		"descriptorFile": null,
		"data": {
			"values": [
				["100", "Hospital", "219000000.0"],
				["250", "Hospital", "240000000.0"],
				["500", "Hospital", "267000000.0"],
				["1000", "Hospital", "282000000.0"],
				["2500", "Hospital", "282000000.0"],
				["10", "SSP1", "321900000.0"],
				["20", "SSP1", "788655000.0"],
				["50", "SSP1", "2188920000.0"],
				["100", "SSP1", "2349870000.0"],
				["250", "SSP1", "2575200000.0"],
				["500", "SSP1", "2864910000.0"],
				["1000", "SSP1", "3025860000.0"],
				["2500", "SSP1", "3025860000.0"],
				["10", "SSP2", "221700000.0"],
				["20", "SSP2", "543165000.0"],
				["50", "SSP2", "1507560000.0"],
				["100", "SSP2", "1618410000.0"],
				["250", "SSP2", "1773600000.0"],
				["500", "SSP2", "1973130000.0"],
				["1000", "SSP2", "2083980000.0"],
				["2500", "SSP2", "2083980000.0"],
				["10", "SSP3", "186600000.0"],
				["20", "SSP3", "457170000.0"],
				["50", "SSP3", "1268880000.0"],
				["100", "SSP3", "1362180000.0"],
				["250", "SSP3", "1492800000.0"],
				["500", "SSP3", "1660740000.0"],
				["1000", "SSP3", "1754040000.0"],
				["2500", "SSP3", "1754040000.0"],
				["10", "SSP4", "162000000.0"],
				["20", "SSP4", "396900000.0"],
				["50", "SSP4", "1101600000.0"],
				["100", "SSP4", "1182600000.0"],
				["250", "SSP4", "1296000000.0"],
				["500", "SSP4", "1441800000.0"],
				["1000", "SSP4", "1522800000.0"],
				["2500", "SSP4", "1522800000.0"],
				["10", "SSP5", "386100000.0"],
				["20", "SSP5", "945945000.0"],
				["50", "SSP5", "2625480000.0"],
				["100", "SSP5", "2818530000.0"],
				["250", "SSP5", "3088800000.0"],
				["500", "SSP5", "3436290000.0"],
				["1000", "SSP5", "3629340000.0"],
				["2500", "SSP5", "3629340000.0"],
				["10", "Hospital", "30000000.0"],
				["20", "Hospital", "73500000.0"],
				["50", "Hospital", "204000000.0"]
			],
			"dimensions": [{
				"abstract": "Round Period",
				"values": ["10", "20", "50", "100", "250", "500", "1000", "2500"],
				"name": "Round Period",
				"unit": "Years"
			}, {
				"abstract": "Scenario",
				"values": ["Hospital", "SSP1", "SSP2", "SSP3", "SSP4", "SSP5"],
				"name": "Scenario",
				"unit": "NA"
			}]
		}
	}
}

The values should be ordered accordingly to the main dimension, example:

			"values": [
				["10", "Hospital", "30000000.0"],
				["10", "SSP1", "321900000.0"],
				["10", "SSP2", "221700000.0"],
				["10", "SSP3", "186600000.0"],
				["10", "SSP4", "162000000.0"],
				["10", "SSP5", "386100000.0"],
				["20", "Hospital", "73500000.0"],
				["20", "SSP1", "788655000.0"],
				["20", "SSP2", "543165000.0"],
				["20", "SSP3", "457170000.0"],
				["20", "SSP4", "396900000.0"],
				["20", "SSP5", "945945000.0"],
				["50", "Hospital", "204000000.0"]
				["50", "SSP1", "2188920000.0"],
				["50", "SSP2", "1507560000.0"],
				["50", "SSP3", "1268880000.0"],
				["50", "SSP4", "1101600000.0"],
                                ...

[Disasterrisk] General optimization

  • Enable GZIP compression
  • Refine Geometries
  • General code optimizations...
  • include layer/SQLView creation in createriskanalysis command
  • caching data views

[Disasterrisk] Errors on console when a dimension of a RiskAnalysis has just one value

If a dimension has only one value like in the JSON below

{
	"wms": {
		"style": null,
		"baseurl": "http://disasterrisk-af-dev.geo-solutions.it/geoserver/",
		"viewparams": "ra:WP6_01_Airport_affected;ha:EQ;adm_code:AF;d1:{};d2:{}"
	},
	"furtherResources": {
		"analysisType": [],
		"hazardType": []
	},
	"context": "ht/EQ/at/airports/an/5/",
	"riskAnalysisData": {
		"dataFile": "/uploaded/metadata_files/WP6_Impact_analysis_results_01_Airport_affected.xlsx",
		"name": "WP6_01_Airport_affected",
		"metadataFile": "/uploaded/metadata_files/WP6_Impact_analysis_results_01_Airport_affected_-_metadata_idAGI5c.xlsx",
		"additionalLayers": [],
		"hazardSet": {
			"endDate": "",
			"author": null,
			"abstract": "This table shows the aggregated results of affected airports for the Afghanistan districts and provinces from 1km resolution results in the locations over PGA=0.075g. These are measured in USD. The results are created for the current year.",
			"bounds": "[60.4784E, 29.3775N], [74.8794E, 38.4834N].",
			"edition": "",
			"description": "",
			"category": "economy",
			"otherConstraints": "",
			"title": "Afghanistan Hazard-Exposures for provinces and districts for affected airports",
			"dataQualityStatement": "",
			"pointOfContact": {
				"city": "",
				"positionName": "",
				"role": "",
				"deliveryPoint": "",
				"postalCode": "",
				"organizationName": "Karlsruhe Institute of Technology",
				"email": "",
				"individualName": "James Daniell"
			},
			"language": "English",
			"purpose": "These maps have been derived on a nation-wide scale for the purpose of identifying high risk- areas on the district and provincial scale, from which decisions can be made on allocating efforts for more detailed site specific hazard and risk analysis. Use of this information on smaller scales should be applied with care. Importantly for on a local scale, it is often the case that more detailed case history and hazard information is required to perform such hazard and risk modelling, particularly where applied to dimension mitigation structures or strategies.",
			"date": "July 6, 2016",
			"keyword": "",
			"spatialRepresentationType": "",
			"referenceSystemCode": "",
			"country": null,
			"beginDate": "",
			"onlineResource": "",
			"useConstraints": "unclassified",
			"supplementalInformation": "Table in Excel",
			"url": "",
			"dateType": "mm dd, yyyy"
		},
		"descriptorFile": "/uploaded/descriptor_files/WP6_Impact_analysis_results_01_Airport_affected_kzGkQ6T.ini",
		"data": {
			"values": [
				["01_Airport_affected", "10", "14.0"],
				["01_Airport_affected", "20", "21.5"],
				["01_Airport_affected", "50", "44.0"],
				["01_Airport_affected", "100", "47.0"],
				["01_Airport_affected", "250", "59.0"],
				["01_Airport_affected", "500", "63.0"],
				["01_Airport_affected", "1000", "70.0"],
				["01_Airport_affected", "2500", "71.0"]
			],
			"dimensions": [{
				"layers": {
					"01_Airport_affected": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d1"
					}
				},
				"name": "Scenario",
				"abstract": "Scenario description...",
				"values": ["01_Airport_affected"],
				"id": 1,
				"unit": "NA"
			}, {
				"layers": {
					"10": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"20": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"50": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"250": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"2500": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"100": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"500": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					},
					"1000": {
						"layerStyle": {},
						"layerName": "geonode:risk_analysis",
						"layerAttribute": "d2"
					}
				},
				"name": "Return Period",
				"abstract": "Return Period description...",
				"values": ["10", "20", "50", "100", "250", "500", "1000", "2500"],
				"id": 2,
				"unit": "Years"
			}]
		}
	}
}

There are errors on the gui preventing the application to work correctly. Those issues most probably are related to the dimensions slider.

From Kappu:
"kappu72
seems ui slider
doesn’t like if we have range with min === max
1 value case
will have to add a check
the slider to choose the dimension is unuseful in that case so we’ll remove"

[Disasterrisk] Risk Analysis JSON: "wms" GeoServer endpiont should be renamed "baseurl"

e.g.:

http://disasterrisk-af.geo-solutions.it/risks/risk_data_extraction/loc/AF32/ht/EQ/at/impact/an/3/

The "wms" endpoint is rendered like

wms:
geonode:"http://disasterrisk-af.geo-solutions.it/geoserver/"
style:null
viewparams:"ra:WP6_future_proj_Population;ha:EQ;adm_code:AF32;d1:{};d2:{}"

Instead should be:

wms:
baseurl:"http://disasterrisk-af.geo-solutions.it/geoserver/"
style:null
viewparams:"ra:WP6_future_proj_Population;ha:EQ;adm_code:AF32;d1:{};d2:{}"

How backup works?

Do you have any documentation?
Because, I would like to test this functionality

[Disasterrisk] Download data seems not working correctly

Got this exception on the client

assets.min.js?v=2.7.dev20170403120905:2 Uncaught Error: Syntax error, unrecognized expression: /uploaded/metadata_files/WP6_Impact_analysis_results_future_projections_Population_-_metadata_T2Nid1E.xlsx
    at Function.b.error (assets.min.js?v=2.7.dev20170403120905:2)
    at b.tokenize (assets.min.js?v=2.7.dev20170403120905:2)
    at b.select (assets.min.js?v=2.7.dev20170403120905:2)
    at Function.b [as find] (assets.min.js?v=2.7.dev20170403120905:2)
    at _.fn.init.find (assets.min.js?v=2.7.dev20170403120905:3)
    at _.fn.init (assets.min.js?v=2.7.dev20170403120905:3)
    at _ (assets.min.js?v=2.7.dev20170403120905:2)
    at b.show (assets.min.js?v=2.7.dev20170403120905:23)
    at HTMLAnchorElement.<anonymous> (assets.min.js?v=2.7.dev20170403120905:23)
    at Function.each (assets.min.js?v=2.7.dev20170403120905:2)

[Disasterrisk] Dimensions details info on a pop-up / attach also dim-riskanalsyis specific further resources

On a Risk Analysis details page, we need the possibility to show a pop-up dialog window to the user displaying more information about the dimension (e.g. Return Period or Scenario).

On the model (DB) for a dimension currently we have:

  1. The name of the dimension
  2. The abstract of the dimension
  3. The Unit of Measure of the dimension
  4. Further Resources linked to dimension and specific Risk Analysis

The backend should send all those 4 infos to the frontend via JSON.

The frontend must show a "more info" button near the dimension name (under the chart or map), allowing the user to open a dialog pop-up reporting all the details above.

[disasterrisk] cost benefit analysis application

server side:

  • add support for cost benefit data model (basically: RiskApp and AdditionalData for small tables)
  • update cli tools to use RiskApp
  • rewrite urls to be more generic, allow per-application context
  • update views to use per-app context
  • admin: data upload form for additional tables (or merge with current data upload form)
  • report view for cost benefit

[Disasterrisk] merge client code repo

We're keeping compiled client code in repo. Each change in client (even one char) generates enormous diff/commit, because js is optimized/minified. We should merge client code into main repo and compile js on deployment.

[disasterrisk] context-aware nav links

Currently navItems liks are pointing to location-level view. We should have more context-aware links, when user selects hazard type/analysis type/risk report, links should point to other locations and preserve selected items. If data are not available for given location, user should be redirected to location (?)

Alternatively, we can send context data to client, navItems links will be updated by client code.

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.