This web app is linked to projects from a protected Google Sheet. When a new project is added to the 'project' worksheet and marked for display (adding a 'y' in the show column), it will automatically appear on the website.
In an effort to share our completed projects more routinely, the following app has been created.
The web interface was designed to flexibly to grow with the data it loads. It's powered by columns in a spreadsheet with the ability to easily support additional columns of information as added. It should be noted that new columns will show immediately on the web interface. To enable specific functionality like date and map capabilities, specific columns like 'year' and 'lat,lng' are needed. The temporal component of submitted projects uses the YYYY format, so these submissions can be filtered by year.
The majority of this project was ported over from the Open Science Map, developed for HELIOS. This app consists of a Google spreadsheet published as a CSV file that is dynamically loaded into the app. Project entries in the spreadsheet include both manual and semi-automated entries for completed projects (using the QUERY function).
The semi-automated entries are partially managed by a Microsoft Power Automate Flow that's linked to a Teams Planner app. When a project is set to complete in Planner, an automatic notification is sent, prompting the manual update of the project's spreadsheet.
All projects are stored in the following Google Spreadsheet:
https://docs.google.com/spreadsheets/d/1XwjAo3ZPTcUZLSXx3a_9WA0ZwWcgEXWuzt-ey9OvQwk/edit?usp=sharing
There are three worksheets in the spreadsheet:
This worksheet powers the website directly. Any row marked with y in
the show column will appear in the web app.
This worksheet is generated from an export of the project planner in Teams.
Projects listed in project_planner_raw will automatically be added to
the projects worksheet by simply adding a title to in the "title"
column in the project_planner_raw worksheet.
To preserve this automatic workflow:
- DO NOT insert new rows below the query-generated section.
- If manually adding new projects (not listed in
project_planner_raw), insert rows above the query function cell. - The query function cell is located just below the thick black border
in the
projectsworksheet.
This worksheet contains earlier versions and legacy entries.
- Open the
project_planner_rawworksheet. - Add the project title in the appropriate column.
- The project will automatically populate in the
projectsworksheet. - Complete any remaining required fields in the
project_planner_rawworksheet. - Set the
showcolumn toyfor the project in theprojectsworksheet.
If the project does NOT exist in project_planner_raw:
- Go to the
projectsworksheet. - Insert a new row above the query function section (above the thick black border).
- Fill in the required columns.
- Set
show=y.
Column Description
title Project name
short_desc Brief 1--2 sentence summary
year Year completed or launched
image Image path (see image section below)
github_url GitHub repository URL
project_url Live project URL
tags Keywords (e.g., JavaScript, GIS)
geojson Map extent GeoJSON
show Enter y to display
Description Longer description
Contact Project contact
Department/Organization Affiliation
You have two options:
Paste the full image URL into the image column.
Example: https://example.com/my-image.jpg
Images should be stored in:
/images folder inside the repository
- Go to the GitHub repository.
- Open the
imagesfolder. - Click Add file → Upload files
- Upload your image.
- Commit changes.
- Use lowercase
- No spaces (use underscores)
- Example: images/colorado_groundwater.jpg
In the spreadsheet, enter: images/your_image_name.jpg
You can create GeoJSON using: https://geojson.io/
Steps:
- Draw your project area.
- Export as GeoJSON.
- Copy the full FeatureCollection.
- Paste into the
geojsoncolumn.
Ensure it is valid GeoJSON formatted as a FeatureCollection.
- Title entered
- Description completed
- Image path correct
- GitHub URL added
- Project URL added (if available)
- GeoJSON pasted
showcolumn set toy
The spreadsheet will automatically save, so best to add the y to the show column at the end, and be sure to test your changs at
GeospatialCentroid.github.io.
- Confirm
showcolumn containsy - Ensure row was inserted above the query function
- Check for accidental formatting issues
- Confirm image is in
/images - Verify spelling and capitalization
- Use relative path format: images/filename.jpg
Most users do NOT need to run the site locally.
If you are developing or testing:
- Clone the repository.
- Serve the site locally (for example using a simple HTTP server).
- Open in your browser.
Note python works well for this by running
python -m http.server 8000
Then navigate to http://localhost:8000/ in your web browser
The js/index.js file and setup_filters function controls how specific columns are to be handled. These settings could be exported to a settings.js file to make edits to this easier.
Currently the path to the CSV file is contained in the index.js file, having this path loaded in from a config file would make updates to this path easier.
Kevin Worthington, MASc (He/Him), Map and (GIS) Data Specialist, Geospatial Centroid
Special thanks to Dan Carver who was the inspiration for the development of the base source code. This earlier work can be seen here.