Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
99020c3
feat(item-card): show collection badge on item cards
siligam Mar 12, 2026
fd373d5
fix(filters): use cql2-json instead of cql2-text for GET filter requests
siligam Mar 13, 2026
a65f0c6
revert(filters): restore cql2-text for GET filter requests
siligam Mar 13, 2026
923dfc6
fix(cql2): fix CqlNot.toText() to emit NOT (inner) correctly
siligam Mar 13, 2026
65fe4d2
Add DataPreview Vue component for visualizing STAC item data
pgierz Mar 13, 2026
af93683
Integrate DataPreview component into Item view with vizServer config
pgierz Mar 13, 2026
8b0ea97
fix: wire quick filters to search submission and improve collection h…
pgierz Mar 14, 2026
6b7dbb8
fix: e2e test infrastructure and remove spatial extent feature
pgierz Mar 15, 2026
eb08f98
fix: update interactive preview URL to /preview/{item_id}/panel
pgierz Mar 15, 2026
ddedf8a
feat: enable collection-level interactive preview
pgierz Mar 15, 2026
01b3a0f
feat: personal collections with Treebeard tree view
pgierz Mar 16, 2026
51b037b
fix: collection comparison with parameter fetching and visual compare…
pgierz Mar 16, 2026
0154d66
fix: always show paleo presets on both collection and item search tabs
pgierz Mar 16, 2026
8743dc4
fix: initialize paleo presets in data() so they're available immediately
pgierz Mar 16, 2026
8c478ff
fix: default username to 'anonymous' when no auth configured
pgierz Mar 16, 2026
17ed7a2
feat: wire PersonalCollections into STAC Browser navigation
pgierz Mar 16, 2026
adba1a1
feat: Dask cluster management dashboard with compute nav button
pgierz Mar 17, 2026
2af59fd
feat: quick filter multi-select for experiment type and output frequency
siligam Mar 18, 2026
bfa6ce4
feat: metadata property search autocomplete with datalist
siligam Mar 18, 2026
65759b1
fix: Cql property name typo when combining manual and quick filters
siligam Mar 18, 2026
a79a6a2
feat: add success/error feedback to My Collections operations
siligam Mar 19, 2026
9742d65
fix: read data.roots instead of data.nodes from tree endpoint
siligam Mar 22, 2026
390be31
feat: clicking a collection shows its items; add drag-drop tip
siligam Mar 23, 2026
3aa994b
fix: align AddToCollection username fallback with PersonalCollections
siligam Mar 23, 2026
d8f78fc
feat: clickable items in collection view; sharing explanation
siligam Mar 23, 2026
802b969
fix: use localhost:23006 for catalog URL and allow all hosts
siligam Mar 23, 2026
a7c9843
fix: add raw tag fallback to Docker publish workflow for non-semver tags
pgierz Mar 30, 2026
c5f7588
feat: move Compare to badge-style button in card title; add star to c…
siligam Apr 7, 2026
e8c57b0
fix: use getBrowserPath() so star icon records correct URL for experi…
siligam Apr 8, 2026
ad95da8
feat(browser): adapt Catalog cards and search tab for Option A collap…
siligam Apr 24, 2026
d556a7c
fix(browser): fix vertical title text and enable Search for Experimen…
siligam Apr 24, 2026
18c218b
fix(browser): fix component quick filter field name (model → component)
siligam Apr 25, 2026
2e3c397
fix(browser): correct CO2/CH4/N2O field names in quick filters
siligam Apr 25, 2026
7a4ab42
feat(assets): show hpc:system name on file:// copy button
siligam Apr 26, 2026
697d52d
fix(comparison): use STAC collection ID instead of browser path
siligam May 12, 2026
6b432ee
fix(comparison): show collection ID as primary column header
siligam May 12, 2026
b56a8ee
fix(comparison): exclude nml:parameters blob and scan items for nml keys
siligam May 12, 2026
4fef42b
fix(cards): increase card-body subgrid span to prevent text overlap
siligam May 18, 2026
4576099
fix(search): active filters label and operator update reactively with…
siligam May 18, 2026
5684e1a
feat(comparison): replace HTML table with AG Grid for resizable columns
siligam Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/publish-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ jobs:
org.opencontainers.image.maintainer=$({github.repository_owner})
tags: |
type=semver,pattern={{version}},value=v${{ env.VERSION }}
type=raw,value=${{ env.VERSION }}

- name: Log in to the GitHub container registry
uses: docker/login-action@v3
Expand Down
10 changes: 6 additions & 4 deletions config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
export default {
catalogUrl: null,
catalogTitle: "STAC Browser",
catalogUrl: 'http://10.7.0.13:23006',
catalogTitle: "ESM-Tools STAC Catalog",
catalogImage: null,
allowExternalAccess: true, // Must be true if catalogUrl is not given
allowedDomains: [],
allowedHosts: true,
detectLocaleFromBrowser: true,
storeLocale: true,
locale: "en",
Expand All @@ -28,7 +29,7 @@ export default {
"id",
"pl"
],
apiCatalogPriority: null,
apiCatalogPriority: 'collections',
useTileLayerAsFallback: false,
displayGeoTiffByDefault: false,
displayPreview: true,
Expand All @@ -54,5 +55,6 @@ export default {
preprocessSTAC: null,
authConfig: null,
crs: {},
footerLinks: null
footerLinks: null,
vizServer: null // URL of visualization server for data previews (e.g., 'http://localhost:8001')
};
8 changes: 8 additions & 0 deletions config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,14 @@
"url"
]
}
},
"vizServer": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "URL of visualization server for data previews"
}
}
}
42 changes: 42 additions & 0 deletions config.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Test configuration for Playwright e2e tests
// Uses null catalogUrl so external paths work correctly
export default {
catalogUrl: null, // Tests use /search/external/... paths which work without a default catalog
catalogTitle: "STAC Browser (Test)",
catalogImage: null,
allowExternalAccess: true,
allowedDomains: [],
detectLocaleFromBrowser: false,
storeLocale: false,
locale: "en",
fallbackLocale: "en",
supportedLocales: ["en"],
apiCatalogPriority: null,
useTileLayerAsFallback: false,
displayGeoTiffByDefault: false,
displayPreview: true,
displayOverview: true,
buildTileUrlTemplate: null,
getMapSourceOptions: null,
pathPrefix: "/",
historyMode: "history",
cardViewMode: "cards",
cardViewSort: "asc",
showKeywordsInItemCards: false,
showKeywordsInCatalogCards: false,
showThumbnailsAsAssets: false,
searchResultsPerPage: null,
itemsPerPage: null,
collectionsPerPage: null,
maxEntriesPerPage: 1000,
defaultThumbnailSize: null,
crossOriginMedia: null,
requestHeaders: {},
requestQueryParameters: {},
socialSharing: [],
preprocessSTAC: null,
authConfig: null,
crs: {},
footerLinks: null,
vizServer: null // No viz server for tests - preview endpoints can be mocked
};
66 changes: 30 additions & 36 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
"main": "src/main.js",
"scripts": {
"start": "vite",
"start:test": "SB_CONFIG=./config.test.js vite",
"build": "vite build",
"build:test": "SB_CONFIG=./config.test.js vite build",
"build:preview": "vite build && vite preview",
"build:report": "vite build --mode report",
"build:minimal": "vite build --mode minimal",
Expand Down Expand Up @@ -50,6 +52,8 @@
"@radiantearth/stac-migrate": "~2.0.2",
"@turf/mask": "^7.2.0",
"@vuepic/vue-datepicker": "^12.1.0",
"ag-grid-community": "^35.3.1",
"ag-grid-vue3": "^35.3.1",
"ajv-i18n": "^4.2.0",
"axios": "^1.2.0",
"bootstrap": "^5.3.8",
Expand Down
11 changes: 6 additions & 5 deletions playwright.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,19 @@ export default defineConfig({
],

/* Run your local dev server before starting the tests */
webServer: process.env.CI
webServer: process.env.CI
? {
// In CI: Build and serve the production build
command: 'npm run build && npx vite preview --port 4173 --strictPort',
// In CI: Build and serve the production build using test config
command: 'npm run build:test && npx vite preview --port 4173 --strictPort',
url: 'http://localhost:4173',
reuseExistingServer: false,
timeout: 120 * 1000,
}
: {
command: 'npm start',
// Local dev: Use test config (no albedo1 references)
command: 'npm run start:test',
url: 'http://localhost:8080',
reuseExistingServer: true,
reuseExistingServer: false, // Always start fresh with test config
timeout: 120 * 1000,
},
});
21 changes: 21 additions & 0 deletions src/StacBrowser.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
<b-button v-if="canSearch" variant="primary" size="sm" :to="searchBrowserLink" :title="$t('search.title')" :pressed="isSearchPage">
<b-icon-search /><span class="button-label">{{ $t('search.title') }}</span>
</b-button>
<b-button v-if="!isServerSelector" variant="primary" size="sm" :to="'/collections/personal'" title="My Collections" :pressed="isPersonalCollectionsPage">
<b-icon-bookmark /><span class="button-label">My Collections</span>
</b-button>
<b-button v-if="!isServerSelector" variant="primary" size="sm" :to="'/compute'" title="Compute Clusters" :pressed="isDaskDashboardPage">
<b-icon-cpu /><span class="button-label">Compute</span>
</b-button>
</b-button-group>
</nav>
<div class="title">
Expand Down Expand Up @@ -80,6 +86,9 @@
</template>
</i18n-t>
</footer>
<!-- Collection Comparison UI -->
<CompareButton />
<CollectionComparison />
<b-popover
v-if="root" id="popover-root" class="popover-large" target="popover-root-btn"
placement="bottom" :title="serviceType" teleport-to="#stac-browser"
Expand All @@ -99,6 +108,8 @@ import CONFIG from './config';
// Import icons needed for dynamic component usage
import BIconLock from '~icons/bi/lock';
import BIconUnlock from '~icons/bi/unlock';
import BIconBookmark from '~icons/bi/bookmark';
import BIconCpu from '~icons/bi/cpu';

import ErrorAlert from './components/ErrorAlert.vue';
import StacLink from './components/StacLink.vue';
Expand Down Expand Up @@ -136,9 +147,13 @@ export default defineComponent({
name: 'StacBrowser',
components: {
Authentication,
BIconBookmark,
BIconCpu,
BIconLock,
BIconUnlock,
BPopover: defineAsyncComponent(() => import('bootstrap-vue-next').then(m => m.BPopover)),
CompareButton: defineAsyncComponent(() => import('./components/CompareButton.vue')),
CollectionComparison: defineAsyncComponent(() => import('./components/CollectionComparison.vue')),
ErrorAlert,
LanguageChooser: defineAsyncComponent(() => import('./components/LanguageChooser.vue')),
RootStats: defineAsyncComponent(() => import('./components/RootStats.vue')),
Expand Down Expand Up @@ -181,6 +196,12 @@ export default defineComponent({
isSearchPage() {
return this.$route.name === 'search';
},
isPersonalCollectionsPage() {
return this.$route.name === 'personal-collections';
},
isDaskDashboardPage() {
return this.$route.name === 'dask-dashboard';
},
isServerSelector() {
return this.$route.name === 'select';
},
Expand Down
Loading
Loading