diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..469e2741 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,59 @@ +name: Bug Report Form +description: Report a bug to help us improve +title: "[Bug]: " +labels: "bug" +body: + - type: markdown + attributes: + value: | + > _Thanks for filing a bug ticket. We appreciate your time and effort. Please answer a few questions._ + - type: dropdown + id: checked-for-duplicates + attributes: + label: Checked for duplicates + description: Have you checked for duplicate issue tickets? + multiple: false + options: + - "Yes - I've already checked" + - "No - I haven't checked" + validations: + required: yes + - type: textarea + id: description + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. Plain-text snippets preferred but screenshots welcome. + placeholder: Tell us what you saw + value: "When I did [...] action, I noticed [...]" + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: What did you expect? + description: A clear and concise description of what you expect to happen + placeholder: Tell us what you expected + value: "I expected [...]" + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Reproducible steps + description: "How would we reproduce this bug? Please walk us through it step by step. Plain-text snippets preferred but screenshots welcome." + value: | + 1. + 2. + 3. + ... + render: bash + - type: textarea + id: environment + attributes: + label: Environment + description: "What is your environment? Include any computer hardware, operating system, framework, browser, time-of-day or other contextual information related to your issue" + value: | + - Version of this software [e.g. vX.Y.Z] + - Operating System: [e.g. MacOSX with Docker Desktop vX.Y] + ... + render: bash diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000..4a4c387e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,48 @@ +name: New Feature Form +description: Suggest a new feature for us to implement +title: "[New Feature]: " +labels: "enhancement" +body: + - type: markdown + attributes: + value: | + > _Thanks for filing a new feature request. We appreciate your time and effort. Please answer a few questions._ + - type: dropdown + id: checked-for-duplicates + attributes: + label: Checked for duplicates + description: Have you checked for duplicate issue tickets? + multiple: false + options: + - "Yes - I've already checked" + - "No - I haven't checked" + validations: + required: yes + - type: dropdown + id: checked-alternatives + attributes: + label: Alternatives considered + description: Have you considered alternative solutions to your feature request? + options: + - "Yes - and alternatives don't suffice" + - "No - I haven't considered" + validations: + required: yes + - type: textarea + id: related-problems + attributes: + label: Related problems + description: Is your feature request related to any problems? Please help us understand if so, including linking to any other issue tickets. + placeholder: Tell us the problems + value: "I'm frustrated when [...] happens as documented in issue-XYZ" + validations: + required: false + - type: textarea + id: description + attributes: + label: Describe the feature request + description: A clear and concise description of your request. + placeholder: Tell us what you want + value: "I need or want [...]" + validations: + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..161ffc86 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,13 @@ +## Purpose +- Clear, easy-to-understand sentences outlining the purpose of the PR +## Proposed Changes +- [ADD] ... +- [CHANGE] ... +- [FIX] ... +## Issues +- Links to relevant issues +- Example: issue-XYZ +## Testing +- Provide some proof you've tested your changes +- Example: test results available at ... +- Example: tested on operating system ... \ No newline at end of file diff --git a/API/Backend/Draw/routes/files.js b/API/Backend/Draw/routes/files.js index f0d4f4cf..6262b169 100644 --- a/API/Backend/Draw/routes/files.js +++ b/API/Backend/Draw/routes/files.js @@ -252,6 +252,10 @@ router.post("/make", function (req, res, next) { id: created.id, res, }); + triggerWebhooks("drawFileAdd", { + id: created.id, + res, + }); return null; }) .catch((err) => { @@ -300,6 +304,10 @@ router.post("/make", function (req, res, next) { id: created.id, res, }); + triggerWebhooks("drawFileAdd", { + id: created.id, + res, + }); } return null; diff --git a/config/css/config.css b/config/css/config.css index 00eaac40..fa9b8e5d 100644 --- a/config/css/config.css +++ b/config/css/config.css @@ -290,6 +290,17 @@ body { #manage_webhooks:hover { color: #08aeea; } +#manage_webhooks { + height: 30px; + width: calc(100% - 16px); + line-height: 30px; + margin: 4px 8px; + font-size: 12px; + color: #ddd; +} +#manage_webhooks:hover { + color: #5ea1ed; +} textarea { resize: vertical; diff --git a/docs/pages/markdowns/Remote_Virtual_Layer.md b/docs/pages/markdowns/Remote_Virtual_Layer.md new file mode 100644 index 00000000..07551eb0 --- /dev/null +++ b/docs/pages/markdowns/Remote_Virtual_Layer.md @@ -0,0 +1,79 @@ +# Remote Virtual Layers + +A remote virtual layer can be supported via various GDAL drivers. The most common is the [GDAL WMS Driver](https://gdal.org/drivers/raster/wms.html). This allows MMGIS to treat remote datasets as if they were local. + +## GDAL XML Desciption File Template + +Here is a template of a GDAL XML Description file that may be used to access a remote DEM for the [Measure Tool](?page=Measure). + +```xml + + + + 1.1.1 + + http://localhost/map/? + + IAU2000%3A30166%2C31.1492746341015%2C-85.391176037601 + image/tiff + + some_dem_layer + + + + -2091.701 + 3505.141 + 6119.299 + -3638.859 + + 8211 + 7144 + + + +proj=stere +lat_0=-85.391176037601 +lon_0=31.1492746341015 +k=1 +x_0=0 +y_0=0 +a=1737400 +b=1737400 +units=m +no_defs + 1 + + Float32 + + + + 604800 + + ./gdalwmscache + + +``` + +## GDAL Local Caching + +If the `` tag is included in the XML description file, GDAL will by default create a directory named `gdalwmscache` at the root location of MMGIS (directory must have write permissions for this to work). It is highly recommended to include this capability to significantly improve performance. Initial queries to a remote dataset may take several seconds, but subsequent queries that hit the cache are just as fast as accessing a local file. + +## Remote XML Description File + +Typically, an XML description file is generated locally for any dataset that is to be accessed remotely. This file can be place in the mission's Data/ directly for easy access by MMGIS. + +However, it is also possible to access a remote XML description file on another server. This can enable more control for dynamic access. This is accomplished via GDAL's `/vsicurl/` prefix to access network locations. For example, instead of specifying a local XML description file for a DEM like so: + +```javascript +{ + "dem": "data/description.xml" +} +``` + +A remote XML description file can be specified like this: + +```javascript +{ + "dem": "/vsicurl/http://localhost/description.xml" +} +``` + +Other `vsi*` options exist for commercial cloud storage such as S3: `/vsis3/` + +Note: for directly accessing cloud-optimized GeoTIFFs, the XML description file is unnecessary and can be bypassed altogether by using the `/vsis3/` prefix and referencing the remote file path. + +See GDAL documentation for more information about virtual file systems: https://gdal.org/user/virtual_file_systems.html#network-based-file-systems + +## More Information + +For more details about the XML description file, see the official GDAL documentation here: https://gdal.org/drivers/raster/wms.html#xml-description-file diff --git a/src/essence/Basics/Layers_/Layers_.js b/src/essence/Basics/Layers_/Layers_.js index 48e098fc..3228f8f2 100644 --- a/src/essence/Basics/Layers_/Layers_.js +++ b/src/essence/Basics/Layers_/Layers_.js @@ -2582,6 +2582,8 @@ const L_ = { ) return } + L_.syncSublayerData(layerName) + L_.globeLithoLayerHelper(L_.layersNamed[layerName]) } else { console.warn( 'Warning: Unable to update vector layer as it does not exist: ' + diff --git a/src/external/Dropy/dropy.css b/src/external/Dropy/dropy.css index d9127de9..a7fb2435 100644 --- a/src/external/Dropy/dropy.css +++ b/src/external/Dropy/dropy.css @@ -164,3 +164,10 @@ dd { .dropy.openUp .dropy__content > ul { transform: translateY(-100%); } + +.dropy.openUp .dropy__content { + top: unset; +} +.dropy.openUp .dropy__content > ul { + transform: translateY(-100%); +}