Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
Joshua Groombridge committed Jan 16, 2024
2 parents de18c92 + 0d7b58b commit 4f3c5f6
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 7 deletions.
8 changes: 6 additions & 2 deletions backend/catalogue/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
# Released under the Affero General Public Licence (AGPL) v3. See LICENSE file for details.
import catalogue.models as models

from django.db.models import Min, Max
from django.db.models import Value
from django.db.models.functions import Coalesce
from rest_framework import serializers


Expand Down Expand Up @@ -97,7 +98,10 @@ class RichLayerSerializer(serializers.ModelSerializer):
timeline = serializers.SerializerMethodField()

def get_alternate_views(self, obj):
alternate_views = models.RichLayerAlternateView.objects.filter(richlayer=obj.id)
alternate_views = models.RichLayerAlternateView.objects \
.filter(richlayer=obj.id) \
.annotate(sort_key_null=Coalesce('sort_key', Value('zzzzzzzz'))) \
.order_by('sort_key_null')
return [RichLayerAlternateViewSerializer(v).data for v in alternate_views]

def get_timeline(self, obj):
Expand Down
12 changes: 12 additions & 0 deletions frontend/src/cljs/imas_seamap/interop/leaflet.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,18 @@
#js{:opacity (.-opacity props)
:fillOpacity (.-opacity props)})))))))

(def dynamic-map-layer
(r/adapt-react-class
(ReactLeafletCore/createLayerComponent
;; Create layer fn
(fn [props context]
(let [instance ((-> esri .-dynamicMapLayer) props)]
#js{:instance instance :context context}))
;; Update layer fn
(fn [instance props prev-props]
(when (not= (.-opacity props) (.-opacity prev-props))
(.setOpacity instance (.-opacity props)))))))

(def map-container (r/adapt-react-class ReactLeaflet/MapContainer))
(def pane (r/adapt-react-class ReactLeaflet/Pane))
(def marker (r/adapt-react-class ReactLeaflet/Marker))
Expand Down
3 changes: 3 additions & 0 deletions frontend/src/cljs/imas_seamap/map/events.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -861,6 +861,9 @@
(= layer_type :feature)
:map-server-vector

(= layer_type :raster)
:map-server-vector

(and (#{:wms :wms-non-tiled} layer_type)
(map-server-url? server_url))
:wms-image
Expand Down
22 changes: 19 additions & 3 deletions frontend/src/cljs/imas_seamap/map/views.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
;;; Copyright (c) 2017, Institute of Marine & Antarctic Studies. Written by Condense Pty Ltd.
;;; Released under the Affero General Public Licence (AGPL) v3. See LICENSE file for details.
(ns imas-seamap.map.views
(:require [reagent.core :as r]
(:require [clojure.string :as string]
[reagent.core :as r]
[re-frame.core :as re-frame]
[imas-seamap.blueprint :as b]
[imas-seamap.utils :refer [copy-text handler-dispatch create-shadow-dom-element format-number] :include-macros true]
Expand Down Expand Up @@ -216,14 +217,29 @@
(defmethod layer-component :feature
[{:keys [layer-opacities layer] {:keys [server_url]} :displayed-layer}]
[leaflet/feature-layer
{:url server_url
:opacity (/ (layer-opacities layer) 100)
{:url server_url
:opacity (/ (layer-opacities layer) 100)
:eventHandlers
{:loading #(re-frame/dispatch [:map.layer/load-start layer])
:tileloadstart #(re-frame/dispatch [:map.layer/tile-load-start layer])
:tileerror #(re-frame/dispatch [:map.layer/load-error layer])
:load #(re-frame/dispatch [:map.layer/load-finished layer])}}]) ; sometimes results in tile query errors: https://github.com/PaulLeCam/react-leaflet/issues/626

(defmethod layer-component :raster
[{:keys [layer-opacities layer] {:keys [server_url]} :displayed-layer}]
(let [layer-server-id (last (string/split server_url "/"))
url (string/join "/" (butlast (string/split server_url "/")))]
[leaflet/dynamic-map-layer
{:url url
:layers [layer-server-id]
:f "image"
:opacity (/ (layer-opacities layer) 100)
:eventHandlers
{:loading #(re-frame/dispatch [:map.layer/load-start layer])
:tileloadstart #(re-frame/dispatch [:map.layer/tile-load-start layer])
:tileerror #(re-frame/dispatch [:map.layer/load-error layer])
:load #(re-frame/dispatch [:map.layer/load-finished layer])}}])) ; sometimes results in tile query errors: https://github.com/PaulLeCam/react-leaflet/issues/626

(defmethod layer-component :wms-non-tiled
[{:keys [boundary-filter layer-opacities layer] {:keys [server_url layer_name style]} :displayed-layer}]
[leaflet/non-tiled-layer
Expand Down
10 changes: 8 additions & 2 deletions frontend/src/cljs/imas_seamap/views.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@
(let [expanded (reagent/atom false)
{:keys [img-url-base]} @(re-frame/subscribe [:url-base])]
(fn [{:keys [license-name license-link license-img constraints other]
{:keys [category organisation metadata_url server_url layer_name metadata_summary] :as layer} :layer}]
{:keys [category organisation metadata_url server_url layer_name metadata_summary layer_type] :as layer} :layer}]
[:div.metadata-record

(when-let [logo (:logo @(re-frame/subscribe [:map/organisations organisation]))]
Expand Down Expand Up @@ -408,7 +408,13 @@
[:p "Access map layer online at"]
[:div.server-info
[:span "WMS:"]
[:a {:href server_url} server_url]
[:a
{:href
(case layer_type
:wms (str server_url "?request=GetCapabilities&service=WMS")
:wms-non-tiled (str server_url "?request=GetCapabilities&service=WMS")
server_url)}
server_url]
[:span.server-layer layer_name]]]]

(when (or (seq license-img) (seq license-link) (seq license-name))
Expand Down

0 comments on commit 4f3c5f6

Please sign in to comment.