All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Client-side validation to login form fields
- User experience when re-authenticating due to token expiration or unauthorized request
- Resolves moderate vulnerabilities in npm packages
- Upgrades
@typescript-eslint/eslint-plugin
from 6.5 to 7.18 - Upgrades
@typescript-eslint/parser
from 6.5 to 7.18 - Upgrades
vite
from 5.1.4 to 5.1.8 - Removes
@types/vite-plugin-react-svg
- Upgrades
- Simple export feature to allow exporting search results as geojson
- Refactor call to action button to reduce prominence and match export button size
- bump version in
package-lock.json
file ot matchpackage.json
- Added optional login feature
- Added optional config for ignoring aggregations feature if not supported by the STAC API
- Resolve high vulnerabilities in npm packages
- Fix bug with not showing search result count when Matched is not returned from a STAC API
- Changes from MUI Box to use a Stack component to fix build/rendering bug
- Alerts of type
error
now force logout when encountered - Alerts of type
warning
are used for non logout warnings shown to users
- Support for scene and mosaic tiling
colormap
configuration.
- Another instance of STAC API Item link using the first link in the links array, instead of looking up the "self" relation link by "rel" value.
- API calls via
fetch
now include configuration for including authentication. This can be changed with the config FETCH_CREDENTIALS, which defaults to the browser default ofsame-origin
.
- UI no longer throws an error if the STAC API does not support a queryables endpoint.
- STAC API Item link used the first link in the links array, instead of looking up the "self" relation link by "rel" value
- Added initial console log of application deploy version number read from
package.json
- Add support for
nodata
to tiling configurations.
- Added
.gitkeep
to empty config directory so it gets put into version control.
- Added
lint_config.py
helper script to assist in validatingconfig.json
files.
- Moved example config out of public so it doesn't get added to build.
- Update readme for config keys showing as
required
to correctly reflect app run requirements.
- Bug fixed for zoom to collection extent running on every collection dropdown re-render.
- Bug fixed for
select scenes
button not changing to item details tab when clicked.
- Added support for
COLLECTIONS
to be defined in theconfig.json
file. - Run search shortcut added for
SPACE
bar key press. - Added config option for
SHOW_ITEM_AUTO_ZOOM
to render switch that lets user toggle behavior of map center/zooming automatically on selected scene. - Added config option for
STAC_LINK_ENABLED
to render link out to item in STAC API when set totrue
. - Added
results not found message
when search results are empty.
- Move to vertical filter and search instead of top filters.
- Change
ADVANCED_SEARCH_ENABLED
in config settings to beSEARCH_BY_GEOM_ENABLED
. - Cart component from
stac-selector
effort moved to be in top nav bar. - Top nav bar and components height reduced.
- Search does not re-run automatically on view mode changed, search button must be clicked or
SPACE
key pressed. - Results info panel relocated to be sticky to top left of map frame.
- Fetch requests to files in hosted app build directory now use relative path.
- Config parameter for
LAUNCH_URL
renamed toACTION_BUTTON
and structure changed to be an object. - Analyze button moved into top nav.
- Scene count design refactored to reduce size.
Images not visible...
message moved to be next to search button in bottom left of map pane.- Results popup now renders in left panel.
- Tabs added to left panel to switch between results and info panels.
- Refactor of loading indicator to specify when imagery overlay is loading instead vs. search loading.
- Style adjusted for switch to be in line with other UI elements.
- Replace date picker library
DateTimeRangePicker
to usereact-datepicker
. - Collection range is now always visible in search panel.
- Date Range Picker does not get changed on collection change. Only set on initial load and then manually by user.
- Bug fix that made
DEFAULT_COLLECTION
required instead of optional, per the readme. It is now actually optional. - Fix bug where grid-code aggregation results didn't render if
grid_code_frequency
included a key that didn't match the expected pattern - Resolved bug with map tooltip not closing on mouseout that lead to extra tooltip rendering.
- Improved responsiveness for mid-size screens.
- Bug fix for when multiple grid-code grids are selected, bug was only showing one grid-code in results.
- Refactor keyboard shortcut for running search. Changed to use
ctrl+space
. - Date range format now renders and searches correctly using UTC instead of using local timezone.
- Auto-search function has been removed since it's behavior was deemed to be undesirable.
- Publish button and modal from an old demo no longer needed for any projects.
- Collapsible feature search results panel removed.
- Update link tag for manifest.json so that it uses basic auth credentials, fixes load when running behind CloudFront with basic auth
- Special handling of
grid_code_landsat_frequency
aggregation
- resolve security @vitejs/[email protected] vulnerabilities coming from
babel
- Updated max-height of main logo to be 40px
- Added config option for applying dark style to custom basemap URL
- Mosaic tiling parameter
bidx
is now passed as multiple parameters (e.g.,bidx=1&bidx=2&bidx=3
) instead of a single comma-delimited value (e.g.,bidx=1,2,3
). This is to accomodate a change to titler-mosaicjson as of v0.14.0
- Added config option for starting map zoom level
- Added config option for starting map center location
- Added config options for enabling and defining reference map layers (only wms currently supported)
- Bug fix for grid-code not working properly on map click events.
- Add buttons for:
loading all scenes
andselecting all scenes on map
to show in popup if more than initial load of 200 scenes is matched. - Add favicon config setting to allow custom favicon to be set.
- Migrate vitest coverage provider to use v8 instead of c8.
- Added cache-busting to config and data asset fetching to prevent caching of stale files.
- Update map attribution to show until user interaction.
- Move app title from env variable to config file for completing build once deploy anywhere approach.
- Removed mention of env variables from README as they are no longer used.
- Cart button to
Add all to cart
&Add/Remove scene from cart
added to search bar ifCART_ENABLED
set to true inconfig.json
(WIP feature) - Cart items are now shown in layer on map if
CART_ENABLED
set to true inconfig.json
and Items exist in cart. (WIP feature)
- Map legend updated to always show 'Scenes in Cart' symbology when
CART_ENABLED
set to true inconfig.json
and Items exist in cart. (WIP feature) - PopupResults component updated to allow users to minimize/maximize popup results component content.
- Metadata in
PopupResult
changed to show additional properties about the scene ifPOPUP_DISPLAY_FIELDS
set in theconfig.json
. - Bug fix to handle grid aggregations that 'landsat' in the title but
grid-code-frequency
in the properties.
- SHOW_BRAND_LOGO now defaults to
true
.
- Added Legend
- Launch modals have been removed along with the
CF_TEMPLATE_URL
config parameter. Instead, the 'Launch Your Own' button will redirect to the URL configured for theLAUNCH_URL
parameter
- Refactor map code and related files
- Refactor API calls
- Moved config reference from
envSetupVars.js
intosearch.jsx
- Geosearch moved under zoom control and changed to be collapsed
VITE_ADVANCED_SEARCH_ENABLED
andVITE_CART_ENABLED
must be set inconfig.js
- Moved config location from
src/assets/config.js
topublic/config/config.json
- Refactor config to be a json object instead of separate exported constants
- Changed config key names to remove the word
VITE
(leftover from when they were .env vars) - Refactor
default.js
to remove dead code and rename vars - Conditionally render E84 FilmDrop Logo based on config var for
SHOW_BRAND_LOGO
- Consolidate hex legend into single new legend component
- Map selection and popup now close in unison
- Fix styling of popup results component
- Added 'thumbnail not found' image placeholder
- Added Config feature flags for Advanced Search Options and Cart
- Added draw boundary feature to allow user to draw polygon on map (WIP)
- When polygon drawn, use as search intersects param instead of map viewport bbox
- Added upload geojson feature to allow users to select a geojson file to add to map
- Reusable System Message component for showing app alerts
- Load
config.json
into redux on app load once instead of direct imports - Add pre-initialization page to handle and show error (and not render app) if config is missing
- Add
SHOW_BRAND_LOGO
config option to optionally hide brand logo - Added Hawaii DOQQ grid (for NAIP)
- Add new Legend component for map
- Delete
envSetupVars.js
after moving functions and const into other files
- Publish button was not displaying with boolean true value set.
- Legend for geohex aggregation now displays.
- Rename REACT_APP_MIN_ZOOM_LEVEL to REACT_APP_MOSAIC_MIN_ZOOM_LEVEL
- Migrate from create-react-app to vite:
- Changed npm start, build, and test commands in package.json
- Rename REACT_APP_ in .env's to be VITE_
- Moved index.html into project root
- Rename index.html link references, title and src
- Updated readme to remove cra references
- Renamed react component files to be .jsx instead of .js
- Updated leaflet css import path
- Refactor inputs to
getTilerParams
to reference full .env object before passing into function - Change from 'require' to ES6 module import in
colormap.js
- Pre-commit hook for test changed to use test-pre-commit with
--run
flag - Bump vite-plugin-svgr from 2.4.0 to 3.2.0
- Migrated from '.env' to './assets/config.js'
- Config vars are now in JSON format
- You can specify new values when running locally, or during the build process
- Update precision for hex geo-aggregate to be defined per zoom levels instead of set based on a quotient
- Change default styles for gridCode and footprint layers to be defined in
Search.jsx
- Updated leaflet basemap to try to read from config if set, else default to OpenStreetMap with css darkmode
- Datetime search now searches from midnight UTC on the start date to immediately before midnight on the day after the end date (i.e., the last instant on the end date)
- Set ref for
zoomLevelRef.current
on initial map load
- For high DPI screens (e.g., Retina), scene image tiling is now done at scale of 2 (previously, scale of 1).
- Grid code aggregated results view at medium zoom levels
- Toggle to enable auto-search or manual search with Search Button
- Geo hex aggregated results view at low zoom levels
- Env variable REACT_APP_SEARCH_MIN_ZOOM_LEVELS
- Env variable REACT_APP_COLORMAP
- Migrate from create-react-app to vite:
- Added
vite.config.js
- Added eslint-plugin-jsx-a11y
- Vitest and related testing library libs
- Added NPM
coverage
andserve
commands
- Added
- Added types for react, react-dom, testing-library__jest-dom, and vite-plugin-react-svg
- Set coverage provider to use c8
- Added setup under test in
vite.config.ts
- Added
tsconfig.node.json
- Added reference and excludes sections in
tsconfig.json
- Reducer to reset redux state back to initialization state for use between tests
- Test ids added for
Content
andPageHeader
components - Example tests for
App.jsx
inApp.test.jsx
- Example test for
PageHeader.jsx
inPageHeader.test.jsx
- Added dompurify library for sanitizing before rendering configurable HTML
- Types declaration from
tsconfig.json
- Tests directory from include section in
tsconfig.json
- Grid code aggregated results view at medium zoom levels
- Toggle to enable auto-search or manual search with Search Button
- Geo hex aggregated results view at low zoom levels
- Move the viewport to include collection spatial bounds if it is outside those bounds
- Set the date picker to the collection temporal date range if date picker is outside that range
- Search by geolocation
- Move mosaic-specific tiler parameters (
mosaic_asset
andmosaic_color_formula
) into REACT_APP_MOSAIC_TILER_PARAMS (new), and rename them toassets
andcolor_formula
to align with scene view tiler parameters. - Rename REACT_APP_TILER_URL to REACT_APP_SCENE_TILER_URL
- Rename REACT_APP_TILER_PARAMS to REACT_APP_SCENE_TILER_PARAMS
- Env variable REACT_APP_MOSAIC_TILER_PARAMS
rescale
,colormap_name
, andexpression
tiler parameters
- Env variable REACT_APP_TILER_PARAMS key
asset_bidx
changed tobidx
. The format is now just a comma-separated list of indexes (e.g.,1,2,3
) rather than of the formasset-name|1,2,3
- Add mosaic view mode if REACT_APP_MOSAIC_TILER_URL (new) is defined
- Env variable REACT_APP_MOSAIC_MAX_ITEMS
mosaic_asset
andmosaic_color_formula
tiler parameters- Env variable REACT_APP_API_MAX_ITEMS
- Single-file, multi-band mosaic compositing (e.g., NAIP) now works
- Rename env variable REACT_APP_TITILER to REACT_APP_TILER_URL
- Rename env variable REACT_APP_STAC_API_ENDPOINT to REACT_APP_STAC_API_URL
- Rename env variable REACT_APP_COLLECTIONS to REACT_APP_DEFAULT_COLLECTION
- Rename env variable REACT_APP_DASHBOARD_LINK to REACT_APP_DASHBOARD_BTN_URL
- Rename env variable REACT_APP_ANALYZE_LINK to REACT_APP_ANALYZE_BTN_URL
- Make date/time field required
- Date function to calculate the last 2 weeks
- Make REACT_APP_MIN_ZOOM_LEVEL optional
- Improve use of MIN_ZOOM constant
- Enable cloud cover dependency based on collection
- Env variable PUBLIC_URL
- Env variable REACT_APP_LOGO_URL
- Env variable REACT_APP_LOGO_ALT
- Env variable REACT_APP_TILER_PARAMS
- Collection dropdown to Search that is dynamically populated from API
- Error indicators for UI elements
- Support for Landsat thumbnail preview
- Functionality for custom Logo and alt description
- Env variable REACT_APP_SHOW_PUBLISH_BTN
- FilmDrop - Element 84 logo
- Minimum zoom level for search
- Env variable REACT_APP_MIN_ZOOM_LEVEL
- Add support for
asset_bidx
tiler configuration - Env variable REACT_APP_CF_TEMPLATE_URL
- Env variable REACT_APP_APP_NAME
- Remove BBOX button
- Make Publish button configurable in env variable
- Remove time from date range
- Remove Search button
- Start of changelog