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%);
+}