-
Notifications
You must be signed in to change notification settings - Fork 0
Add ability to import OSM XML directly #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
…ag and drop feature to fill with json file, Added exmaple json and schema links in the description
added schema and example json for long form quests
…ing in WorkspacesClient
…yListDef and longFormQuestDef
… from workspaces/id API
…s settings page (#9) This pull request enhances the workspace settings page by adding support for uploading, validating, and saving external application configurations, specifically for "Imagery JSON Definition" and "Long Form Quest JSON Definition". It introduces JSON schema validation for the imagery configuration, improves the user interface with drag-and-drop file support, and updates documentation and dependencies accordingly. **External app configuration enhancements:** * Added two new configuration fields to the workspace settings page: "AVIV ScoutRoute Long Form Quest JSON Definition" and "Imagery JSON Definition", both supporting direct JSON input or drag-and-drop file upload. Helpful links to schema and example files are provided for both. ([pages/workspace/[id]/settings.vueL33-R77](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1L33-R77)) * Implemented drag-and-drop handlers for both configuration fields, with visual feedback and error handling for invalid files. ([pages/workspace/[id]/settings.vueL33-R77](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1L33-R77), [pages/workspace/[id]/settings.vueL94-R136](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1L94-R136), [pages/workspace/[id]/settings.vueL124-R247](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1L124-R247), [pages/workspace/[id]/settings.vueR261-R268](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1R261-R268)) **Validation and saving logic:** * Integrated `ajv` and `ajv-formats` libraries to validate the "Imagery JSON Definition" against a remote JSON schema before saving. User receives clear feedback if the JSON is invalid or does not match the schema. ([package.jsonR15-R16](diffhunk://#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519R15-R16), [pages/workspace/[id]/settings.vueR117-R118](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1R117-R118), [pages/workspace/[id]/settings.vueL124-R247](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1L124-R247)) * Updated the save logic to persist both the imagery and quest definitions together, with improved error handling and success messages. ([pages/workspace/[id]/settings.vueL124-R247](diffhunk://#diff-df660f7ed890a7937381f40d9ea64aafa7852e4f8a13ebd03f31b4a360dbe5a1L124-R247)) **Documentation and environment variables:** * Added new environment variables in `README.md` for the imagery and quest schema/example URLs, ensuring the frontend can dynamically link to the correct resources. **Dependency updates:** * Added `ajv` and `ajv-formats` as new dependencies in `package.json` for JSON schema validation. Ticket: https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/2326 <img width="1624" height="977" alt="2326" src="https://github.com/user-attachments/assets/c1cbd491-3d3c-4b81-81e2-183ff7eb1fa4" />
Signed-off-by: Cy Rossignol <cy@rossignols.me>
| && datasetFile.value instanceof File | ||
| && datasetFile.value.name.endsWith('.zip') | ||
| && (datasetFile.value.name.endsWith('.zip') | ||
| || datasetFile.value.name.endsWith('.xml')) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No .osm?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The .osm extension is a little messy—OSM publishes the official planet file with the .osm extension, but other tools like JOSM may use the extension for both OSM XML and for changeset diffs (instead of .osc). We would need to peek the file to determine how to process it.
Though, I suppose the same issue exists with the .xml extension. Maybe we should shelve this until we have time to write out the validation logic.
|
|
||
| async _run(data: Blob, workspace): Promise<number> { | ||
| if (workspace.type === 'osw') { | ||
| if (workspace.type === 'osw' && !isMimeXml(data.type)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add a check for the mime type of a .zip file and display an error if the file is neither .zip or .xml vs. assuming anything not .xml is .zip?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, that makes sense. Originally, this was "feed anything through to the converter, and let it complain if it doesn't support it", but it looks like the converter API's error messages are not helpful at all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LMK if you wanna connect on wrapping this up!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(when you get back!)
This adds the ability to select an OSM XML file for import with the "Create Workspace from File" workflow. I used this while testing the output of the new SQL-based converter. It seems useful enough to keep around.