diff --git a/layers/models.py b/layers/models.py
index 3dc2192..59c0653 100644
--- a/layers/models.py
+++ b/layers/models.py
@@ -455,6 +455,41 @@ def orders(self):
content_type = ContentType.objects.get_for_model(self.__class__)
return ChildOrder.objects.filter(object_id=self.id, content_type=content_type)
+ @property
+ def layers(self):
+ """
+ Returns an array of all of the Layer records that are direct children of this Theme.
+ Helps 'get_portal_catalog_map' view identify 'visualizable' layers in the catalog
+ """
+ content_type = ContentType.objects.get_for_model(Layer)
+ child_orders = ChildOrder.objects.filter(parent_theme=self, content_type=content_type).order_by('order', 'id')
+ layers = [
+ child_order.content_object
+ for child_order in child_orders
+ if child_order.content_object.is_visible
+ ]
+ return layers
+
+ @property
+ def all_layers(self):
+ """
+ Returns an array of all of the Layer records that are descendants of this Theme.
+ Helps the 'get_portal_catalog_map' view to identify 'visualizable' layers in the catalog.
+ """
+ content_type = ContentType.objects.get_for_model(Theme)
+ child_theme_orders = ChildOrder.objects.filter(parent_theme=self, content_type=content_type).order_by('order', 'id')
+ layers = self.layers
+ for child_order in child_theme_orders:
+ if child_order.content_object.is_visible:
+ layers = layers + child_order.content_object.all_layers
+
+ unique_layers = []
+ seen_layer_pks = set()
+ for layer in layers:
+ if layer.pk not in seen_layer_pks:
+ seen_layer_pks.add(layer.pk)
+ unique_layers.append(layer)
+ return unique_layers
# return dict formatted for use in bootstrap-3-typeahead 'layer search' widget in 'visualize'
# overrides ChildType method to include any 'sublayer' information.
def get_search_object(self, site_id, parent_theme):
diff --git a/layers/static/admin/js/layer_admin.js b/layers/static/admin/js/layer_admin.js
index 46e4e24..a3e425e 100644
--- a/layers/static/admin/js/layer_admin.js
+++ b/layers/static/admin/js/layer_admin.js
@@ -22,13 +22,6 @@ document.addEventListener("DOMContentLoaded", function() {
});
- const layerTypeField = document.querySelector("#id_layer_type");
- if (layerTypeField) {
- layerTypeField.addEventListener("change", updateInlines);
- updateInlines();
- assign_field_values_from_source_technology();
- }
-
assign_field_values_from_source_technology = function() {
if ($('#id_layer_type').val() == "ArcRest" || $('#id_layer_type').val() == "ArcFeatureServer") {
var url = $('#id_url').val();
@@ -91,5 +84,11 @@ document.addEventListener("DOMContentLoaded", function() {
}
}
}
- assign_field_values_from_source_technology()
+
+ const layerTypeField = document.querySelector("#id_layer_type");
+ if (layerTypeField) {
+ layerTypeField.addEventListener("change", updateInlines);
+ updateInlines();
+ assign_field_values_from_source_technology();
+ }
});
\ No newline at end of file
diff --git a/layers/static/admin/layers/css/layer_form.css b/layers/static/admin/layers/css/layer_form.css
index 56d3dce..8c8b3a8 100644
--- a/layers/static/admin/layers/css/layer_form.css
+++ b/layers/static/admin/layers/css/layer_form.css
@@ -43,6 +43,11 @@ fieldset.late-transition.collapse * {
}
fieldset.late-transition.collapse *:not(.related-widget-wrapper):not(.related-widget-wrapper *) {
height: auto;
+ max-width: 100%;
+}
+
+fieldset.late-transition.collapse span.select2-selection__rendered:not(.related-widget-wrapper):not(.related-widget-wrapper *) {
+ min-height: 1.5rem;
}
fieldset.late-transition.collapse div.argis-details-table-wrapper,
diff --git a/layers/static/layers/js/catalog/GeoPortal2.js b/layers/static/layers/js/catalog/GeoPortal2.js
index 71ad81d..ff8631a 100644
--- a/layers/static/layers/js/catalog/GeoPortal2.js
+++ b/layers/static/layers/js/catalog/GeoPortal2.js
@@ -4,6 +4,12 @@
//
////////////////////////////////////////////////////////////////////////////////
+const union = function (array1, array2) {
+ var hash = {}, union_arr = [];
+ $.each($.merge($.merge([], array1), array2), function (index, value) { hash[value] = value; });
+ $.each(hash, function (key, value) { union_arr.push(key); });
+ return union_arr;
+}
var populate_fields_from_catalog = function (catalog_record_data, record_id) {
if (record_id == null || record_id == "null") {
@@ -25,6 +31,11 @@ var populate_fields_from_catalog = function (catalog_record_data, record_id) {
record_json = data._source;
record_json.id = data._id;
aggregate_catalog_record_values(record_json);
+ },
+ error: function (error) {
+ console.error("Error retrieving catalog record: " + error);
+ // AdminLayerForm.replace_all_select2_with_input();
+ hide_spinner();
}
});
}
diff --git a/layers/templates/admin/layers/Layer/change_form.html b/layers/templates/admin/layers/Layer/change_form.html
index 3e58d8a..7217fb9 100644
--- a/layers/templates/admin/layers/Layer/change_form.html
+++ b/layers/templates/admin/layers/Layer/change_form.html
@@ -11,7 +11,6 @@
-
-