diff --git a/umap/static/umap/js/modules/data/features.js b/umap/static/umap/js/modules/data/features.js index 18ce98f9..5a021ecd 100644 --- a/umap/static/umap/js/modules/data/features.js +++ b/umap/static/umap/js/modules/data/features.js @@ -213,6 +213,7 @@ class Feature { if (this._umap.currentFeature === this) { this.view() } + this.datalayer.indexProperties(this) } this.redraw() } @@ -235,7 +236,7 @@ class Feature { const properties = [] let labelKeyFound = undefined - for (const property of this.datalayer._propertiesIndex) { + for (const property of this.datalayer.allProperties()) { if (!labelKeyFound && U.LABEL_KEYS.includes(property)) { labelKeyFound = property continue diff --git a/umap/static/umap/js/modules/rendering/layers/classified.js b/umap/static/umap/js/modules/rendering/layers/classified.js index 52f9127d..138f53b0 100644 --- a/umap/static/umap/js/modules/rendering/layers/classified.js +++ b/umap/static/umap/js/modules/rendering/layers/classified.js @@ -88,7 +88,11 @@ const ClassifiedMixin = { }, getColorSchemes: function (classes) { - return this.colorSchemes.filter((scheme) => Boolean(colorbrewer[scheme][classes])) + const found = this.colorSchemes.filter((scheme) => + Boolean(colorbrewer[scheme][classes]) + ) + if (found.length) return found + return [['', translate('Default')]] }, } @@ -191,7 +195,7 @@ export const Choropleth = FeatureGroup.extend({ 'options.choropleth.property', { handler: 'Select', - selectOptions: this.datalayer._propertiesIndex, + selectOptions: this.datalayer.allProperties(), label: translate('Choropleth property value'), }, ], @@ -300,7 +304,7 @@ export const Circles = FeatureGroup.extend({ 'options.circles.property', { handler: 'Select', - selectOptions: this.datalayer._propertiesIndex, + selectOptions: this.datalayer.allProperties(), label: translate('Property name to compute circles'), }, ], @@ -377,7 +381,7 @@ export const Categorized = FeatureGroup.extend({ _getValue: function (feature) { const key = - this.datalayer.options.categorized.property || this.datalayer._propertiesIndex[0] + this.datalayer.options.categorized.property || this.datalayer.allProperties()[0] return feature.properties[key] }, @@ -420,7 +424,7 @@ export const Categorized = FeatureGroup.extend({ } else { this.options.colors = colorbrewer?.Accent[this._classes] ? colorbrewer?.Accent[this._classes] - : U.COLORS // Fixme: move COLORS to modules/ + : Utils.COLORS } }, @@ -430,7 +434,7 @@ export const Categorized = FeatureGroup.extend({ 'options.categorized.property', { handler: 'Select', - selectOptions: this.datalayer._propertiesIndex, + selectOptions: this.datalayer.allProperties(), label: translate('Category property'), }, ], @@ -464,7 +468,7 @@ export const Categorized = FeatureGroup.extend({ onEdit: function (field, builder) { // Only compute the categories if we're dealing with categorized - if (!field.startsWith('options.categorized')) return + if (!field.startsWith('options.categorized') && field !== 'options.type') return // If user touches the categories, then force manual mode if (field === 'options.categorized.categories') { this.datalayer.options.categorized.mode = 'manual' diff --git a/umap/static/umap/js/modules/tableeditor.js b/umap/static/umap/js/modules/tableeditor.js index 255f26cb..bdfe8619 100644 --- a/umap/static/umap/js/modules/tableeditor.js +++ b/umap/static/umap/js/modules/tableeditor.js @@ -104,7 +104,7 @@ export default class TableEditor extends WithTemplate { } resetProperties() { - this.properties = this.datalayer._propertiesIndex + this.properties = this.datalayer.allProperties() if (this.properties.length === 0) { this.properties = [U.DEFAULT_LABEL_KEY, 'description'] }