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 @@ - -