Skip to content

Feature/panoramax - #74

Merged
frozenhelium merged 2 commits into
developfrom
feature/panoramax
Nov 3, 2026
Merged

frozenhelium merged 2 commits into
developfrom
feature/panoramax

Conversation

@ofr1tz

@ofr1tz ofr1tz commented Feb 23, 2026 •

Copy link
Copy Markdown
Contributor

Depends on mapswipe/mapswipe-backend#236

Changes

This introduces the possibility to create View Streets projects and tutorials with Panoramax as the image provider. Managers can choose to use either the federated Panoramax metacatalog, or a specific Panoramax instance (by providing the API url).

  • Adds an image provider input form
  • Adds a Panoramax image preview component to the tutorial scenario preview
  • Also: Fix to use default View Streets custom options

This PR doesn't introduce any:

  • temporary files, auto-generated files or secret keys
  • build works
  • eslint issues
  • typescript issues
  • codegen errors
  • console.log meant for debugging
  • typos
  • unwanted comments
  • conflict markers

@ofr1tz
ofr1tz marked this pull request as ready for review February 24, 2026 17:42
@frozenhelium
frozenhelium self-requested a review March 6, 2026 07:58
@frozenhelium frozenhelium self-assigned this Mar 6, 2026

@frozenhelium frozenhelium left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's send the Enum value from the backend (main/graphql/enums.py) and use that instead of creating a separate enum on the client side. We can then receive and use it in the EnumContext. We should add custom panoramax option to StreetImageProviderNameEnum and only add url field to the custom option.

To summarize, let's change following in the backend

  • In StreetImageProvider
    • Add PANORAMAX_CUSTOM option
    • Add pydantic validation to the StreetImageProvider.url
  • Add StreetImageProviderNameEnum to ENUM_TO_STRAWBERRY_ENUMS (main/graphql/enum)

@ofr1tz
ofr1tz force-pushed the feature/panoramax branch from 2610264 to 7ba77a9 Compare March 19, 2026 16:08
@ofr1tz
ofr1tz requested a review from frozenhelium March 23, 2026 16:05
/>
{data.imageProvider?.url && (
<TextOutput
label="Panoramax API URL"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this label correct? How do we know the url is for Panoramax?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's better to check the imageProvider type so that it does not break in the future.

onChange={setFieldValue}
disabled={disabled}
hint="Provide a valid Mapillary organization ID to filter for images belonging to a specific organization. Empty indicates that no filter is set on organization."
hint="Provide a valid Mapillary organization ID to filter for images belonging to a specific organization. Empty indicates that no filter is set on organization (only Mapillary)."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a conditional field if it is only applicable for Mapillary.

import TextInput from '#components/TextInput';

import { PartialStreetMapillaryImageFiltersInputFields } from './schema';
import { PartialStreetMapillaryImageFiltersInputFields } from './schema.ts';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might also need to rename the variables?
e.g. PartialStreetMapillaryImageFiltersInputFields

@ofr1tz
ofr1tz requested a review from tnagorra April 28, 2026 14:26
@ofr1tz ofr1tz mentioned this pull request Apr 28, 2026
7 of 9 tasks
ofr1tz and others added 2 commits November 3, 2026 18:48
- Let street projects use Mapillary, Panoramax or a custom Panoramax instance.
- Accept only a scheme and host for the custom Panoramax instance URL.
- Carry the common image filters over when switching providers.
- Show the organization ID filter only for Mapillary.
- Validate the sampling threshold as a non-negative integer in meters.
- Show the image provider and its filters in project details.
- Update the backend submodule.

Co-authored-by: tnagorra <weathermist@gmail.com>
- Show the Panoramax viewer for Panoramax and custom instance projects.
- Load the viewer lazily and show an error if it fails to load.
- Load MapComplete pictures through the public Panoramax catalog.
- Label the tutorial image ID field as a street-level image ID.

Co-authored-by: tnagorra <weathermist@gmail.com>
@frozenhelium
frozenhelium merged commit 4584e71 into develop Nov 3, 2026
2 checks passed
@frozenhelium
frozenhelium deleted the feature/panoramax branch November 3, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants