Skip to content

Commit

Permalink
[Maps] Add back removed logic copying feature properties for injected…
Browse files Browse the repository at this point in the history
… data (#49400) (#49698)

* Add back removed logic copying feature properties for injected data prior to modification

* Back out injected data and assign featureCollection to sourceDescriptor with __ prefix

* Review feedback. Ensure __featureCollection is always initialized minimally to a geojson object with an empty features array

* Check for null/undefined
  • Loading branch information
Aaron Caldwell authored Oct 30, 2019
1 parent afb338b commit cb9c582
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ describe('kibana.yml configured with map.tilemap.url', () => {
expect(layers).toEqual([{
alpha: 1,
__dataRequests: [],
__injectedData: null,
id: layers[0].id,
applyGlobalQuery: true,
label: null,
Expand Down Expand Up @@ -87,7 +86,6 @@ describe('EMS is enabled', () => {
expect(layers).toEqual([{
alpha: 1,
__dataRequests: [],
__injectedData: null,
id: layers[0].id,
applyGlobalQuery: true,
label: null,
Expand Down
11 changes: 0 additions & 11 deletions x-pack/legacy/plugins/maps/public/layers/layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { EuiIcon, EuiLoadingSpinner } from '@elastic/eui';
import turf from 'turf';
import turfBooleanContains from '@turf/boolean-contains';
import { DataRequest } from './util/data_request';
import { InjectedData } from './util/injected_data';
import {
MB_SOURCE_ID_LAYER_ID_PREFIX_DELIMITER,
SOURCE_DATA_ID_ORIGIN
Expand All @@ -32,11 +31,6 @@ export class AbstractLayer {
} else {
this._dataRequests = [];
}
if (this._descriptor.__injectedData) {
this._injectedData = new InjectedData(this._descriptor.__injectedData);
} else {
this._injectedData = null;
}
}

static getBoundDataForSource(mbMap, sourceId) {
Expand All @@ -48,7 +42,6 @@ export class AbstractLayer {
const layerDescriptor = { ...options };

layerDescriptor.__dataRequests = _.get(options, '__dataRequests', []);
layerDescriptor.__injectedData = _.get(options, '__injectedData', null);
layerDescriptor.id = _.get(options, 'id', uuid());
layerDescriptor.label = options.label && options.label.length > 0 ? options.label : null;
layerDescriptor.minZoom = _.get(options, 'minZoom', 0);
Expand Down Expand Up @@ -287,10 +280,6 @@ export class AbstractLayer {
return this._dataRequests.find(dataRequest => dataRequest.getDataId() === id);
}

getInjectedData() {
return this._injectedData ? this._injectedData.getData() : null;
}

isLayerLoading() {
return this._dataRequests.some(dataRequest => dataRequest.isLoading());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,32 @@ export class GeojsonFileSource extends AbstractVectorSource {
applyGlobalQuery: DEFAULT_APPLY_GLOBAL_QUERY
}

static createDescriptor(name) {
static createDescriptor(geoJson, name) {
// Wrap feature as feature collection if needed
let featureCollection;

if (!geoJson) {
featureCollection = {
type: 'FeatureCollection',
features: []
};
} else if (geoJson.type === 'FeatureCollection') {
featureCollection = geoJson;
} else if (geoJson.type === 'Feature') {
featureCollection = {
type: 'FeatureCollection',
features: [geoJson]
};
} else { // Missing or incorrect type
featureCollection = {
type: 'FeatureCollection',
features: []
};
}

return {
type: GeojsonFileSource.type,
__featureCollection: featureCollection,
name
};
}
Expand Down Expand Up @@ -85,16 +108,9 @@ export class GeojsonFileSource extends AbstractVectorSource {
onPreviewSource(null);
return;
}
const sourceDescriptor = GeojsonFileSource.createDescriptor(name);
const sourceDescriptor = GeojsonFileSource.createDescriptor(geojsonFile, name);
const source = new GeojsonFileSource(sourceDescriptor, inspectorAdapters);
const featureCollection = (geojsonFile.type === 'Feature')
? {
type: 'FeatureCollection',
features: [{ ...geojsonFile }]
}
: geojsonFile;

onPreviewSource(source, { __injectedData: featureCollection });
onPreviewSource(source);
};
};

Expand Down Expand Up @@ -125,6 +141,22 @@ export class GeojsonFileSource extends AbstractVectorSource {
);
}

async getGeoJsonWithMeta() {
const copiedPropsFeatures = this._descriptor.__featureCollection.features
.map(feature => ({
type: 'Feature',
geometry: feature.geometry,
properties: feature.properties ? { ...feature.properties } : {}
}));
return {
data: {
type: 'FeatureCollection',
features: copiedPropsFeatures
},
meta: {}
};
}

async getDisplayName() {
return this._descriptor.name;
}
Expand All @@ -136,8 +168,4 @@ export class GeojsonFileSource extends AbstractVectorSource {
shouldBeIndexed() {
return GeojsonFileSource.isIndexingSource;
}

isInjectedData() {
return true;
}
}
4 changes: 0 additions & 4 deletions x-pack/legacy/plugins/maps/public/layers/sources/source.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,6 @@ export class AbstractSource {
return AbstractSource.isIndexingSource;
}

isInjectedData() {
return false;
}

supportsElasticsearchFilters() {
return false;
}
Expand Down
21 changes: 0 additions & 21 deletions x-pack/legacy/plugins/maps/public/layers/util/injected_data.js

This file was deleted.

29 changes: 2 additions & 27 deletions x-pack/legacy/plugins/maps/public/layers/vector_layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,18 +132,6 @@ export class VectorLayer extends AbstractLayer {
return true;
}

getInjectedData() {
const featureCollection = super.getInjectedData();
if (!featureCollection) {
return null;
}
// Set default visible property on data
featureCollection.features.forEach(
feature => _.set(feature, `properties.${FEATURE_VISIBLE_PROPERTY_NAME}`, true)
);
return featureCollection;
}

getCustomIconAndTooltipContent() {
const featureCollection = this._getSourceFeatureCollection();

Expand Down Expand Up @@ -510,16 +498,7 @@ export class VectorLayer extends AbstractLayer {
startLoading, stopLoading, onLoadError, registerCancelCallback, dataFilters
}) {

if (this._source.isInjectedData()) {
const featureCollection = this.getInjectedData();
return {
refreshed: false,
featureCollection
};
}

const requestToken = Symbol(`layer-source-refresh:${ this.getId()} - source`);

const searchFilters = this._getSearchFilters(dataFilters);
const canSkip = await this._canSkipSourceUpdate(this._source, SOURCE_DATA_ID_ORIGIN, searchFilters);
if (canSkip) {
Expand Down Expand Up @@ -594,12 +573,8 @@ export class VectorLayer extends AbstractLayer {
}

_getSourceFeatureCollection() {
if (this._source.isInjectedData()) {
return this.getInjectedData();
} else {
const sourceDataRequest = this.getSourceDataRequest();
return sourceDataRequest ? sourceDataRequest.getData() : null;
}
const sourceDataRequest = this.getSourceDataRequest();
return sourceDataRequest ? sourceDataRequest.getData() : null;
}

_syncFeatureCollectionWithMb(mbMap) {
Expand Down

0 comments on commit cb9c582

Please sign in to comment.