Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Maps] use EMS v6.6 #27560

Merged
merged 11 commits into from
Dec 26, 2018
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@

import MarkdownIt from 'markdown-it';
import _ from 'lodash';
import { modifyUrl } from '../../../core/public/utils';
import { modifyUrl } from '../../../../core/public/utils';
import { TMSService } from './tms_service';
import { FileLayer } from './file_layer';
import fetch from 'node-fetch';

const extendUrl = (url, props) => (
modifyUrl(url, parsed => _.merge(parsed, props))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { truncatedColorMaps } from 'ui/vislib/components/color/truncated_colorma
import { mapToLayerWithId } from './util';
import { RegionMapsVisualizationProvider } from './region_map_visualization';
import { Status } from 'ui/vis/update_status';
import { ORIGIN } from '../../../../core_plugins/ems_util/common/origin';
import { ORIGIN } from '../../../../legacy/core_plugins/ems_util/common/origin';

VisTypesRegistryProvider.register(function RegionMapProvider(Private, regionmapsConfig, config, i18n) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { toastNotifications } from 'ui/notify';
import regionMapVisParamsTemplate from './region_map_vis_params.html';
import { mapToLayerWithId } from './util';
import '../../tile_map/public/editors/wms_options';
import { ORIGIN } from '../../../../core_plugins/ems_util/common/origin';
import { ORIGIN } from '../../../../legacy/core_plugins/ems_util/common/origin';

uiModules.get('kibana/region_map')
.directive('regionMapVisParams', function (serviceSettings, regionmapsConfig) {
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/core_plugins/region_map/public/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/

import _ from 'lodash';
import { ORIGIN } from '../../../../core_plugins/ems_util/common/origin';
import { ORIGIN } from '../../../../legacy/core_plugins/ems_util/common/origin';

export function mapToLayerWithId(prefix, layer) {
const clonedLayer = _.cloneDeep(layer);
Expand Down
2 changes: 1 addition & 1 deletion src/ui/public/vis/__tests__/map/ems_client.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import EMS_FILES from './ems_mocks/sample_files_6.6.json';
import EMS_TILES from './ems_mocks/sample_tiles_6.6.json';


import { EMSClientV66 } from '../../../../../core_plugins/ems_util/common/ems_client';
import { EMSClientV66 } from '../../../../../legacy/core_plugins/ems_util/common/ems_client';

describe('ems_client', () => {

Expand Down
2 changes: 1 addition & 1 deletion src/ui/public/vis/__tests__/map/service_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import url from 'url';
import EMS_CATALOGUE from './ems_mocks/sample_manifest_6.6.json';
import EMS_FILES from './ems_mocks/sample_files_6.6.json';
import EMS_TILES from './ems_mocks/sample_tiles_6.6.json';
import { ORIGIN } from '../../../../../core_plugins/ems_util/common/origin';
import { ORIGIN } from '../../../../../legacy/core_plugins/ems_util/common/origin';

describe('service_settings (FKA tilemaptest)', function () {

Expand Down
4 changes: 2 additions & 2 deletions src/ui/public/vis/map/service_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import { uiModules } from '../../modules';
import _ from 'lodash';
import MarkdownIt from 'markdown-it';
import { ORIGIN } from '../../../../core_plugins/ems_util/common/origin';
import { EMSClientV66 } from '../../../../core_plugins/ems_util/common/ems_client';
import { ORIGIN } from '../../../../legacy/core_plugins/ems_util/common/origin';
import { EMSClientV66 } from '../../../../legacy/core_plugins/ems_util/common/ems_client';

const markdownIt = new MarkdownIt({
html: false,
Expand Down
124 changes: 0 additions & 124 deletions x-pack/plugins/gis/common/ems_v2.js

This file was deleted.

24 changes: 12 additions & 12 deletions x-pack/plugins/gis/public/shared/layers/sources/ems_file_source.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,24 @@ export class EMSFileSource extends VectorSource {
static type = 'EMS_FILE';
static typeDisplayName = 'Elastic Maps Service region boundaries';

static createDescriptor(name) {
static createDescriptor(id) {
return {
type: EMSFileSource.type,
name: name
id: id
};
}

static renderEditor({ dataSourcesMeta, onPreviewSource }) {

const emsVectorOptionsRaw = (dataSourcesMeta) ? dataSourcesMeta.ems.file : [];
const emsVectorOptions = emsVectorOptionsRaw ? emsVectorOptionsRaw.map((file) => ({
value: file.name,
value: file.id,
text: file.name
})) : [];

const onChange = ({ target }) => {
const selectedName = target.options[target.selectedIndex].text;
const emsFileSourceDescriptor = EMSFileSource.createDescriptor(selectedName);
const selectedId = target.options[target.selectedIndex].value;
const emsFileSourceDescriptor = EMSFileSource.createDescriptor(selectedId);
const emsFileSource = new EMSFileSource(emsFileSourceDescriptor, emsVectorOptionsRaw);
onPreviewSource(emsFileSource);
};
Expand All @@ -59,8 +59,8 @@ export class EMSFileSource extends VectorSource {
}

async getGeoJsonWithMeta() {
const fileSource = this._emsFiles.find((source => source.name === this._descriptor.name));
const fetchUrl = `../${GIS_API_PATH}/data/ems?name=${encodeURIComponent(this._descriptor.name)}`;
const fileSource = this._emsFiles.find((source => source.id === this._descriptor.id));
const fetchUrl = `../${GIS_API_PATH}/data/ems?id=${encodeURIComponent(this._descriptor.id)}`;
const featureCollection = await VectorSource.getGeoJson(fileSource, fetchUrl);
return {
data: featureCollection,
Expand All @@ -69,25 +69,25 @@ export class EMSFileSource extends VectorSource {
}

renderDetails() {
const emsHotLink = emsServiceSettings.getEMSHotLink(this._descriptor.name);
const emsHotLink = emsServiceSettings.getEMSHotLink(this._descriptor.id);
return (
<EuiText color="subdued" size="s">
<p className="gisLayerDetails">
<strong className="gisLayerDetails__label">Source </strong><span>Elastic Maps Service</span><br/>
<strong className="gisLayerDetails__label">Name </strong><span>{this._descriptor.name}</span><br/>
<strong className="gisLayerDetails__label">Id </strong><span>{this._descriptor.id}</span><br/>
<EuiLink href={emsHotLink} target="_blank">Preview on landing page</EuiLink><br/>
</p>
</EuiText>
);
}

async getDisplayName() {
return this._descriptor.name;
const fileSource = this._emsFiles.find((source => source.id === this._descriptor.id));
return fileSource.name;
}

async getStringFields() {
//todo: use map/service-settings instead.
const fileSource = this._emsFiles.find((source => source.name === this._descriptor.name));
const fileSource = this._emsFiles.find((source => source.id === this._descriptor.id));

return fileSource.fields.map(f => {
return { name: f.name, label: f.description };
Expand Down
2 changes: 1 addition & 1 deletion x-pack/plugins/gis/public/shared/layers/sources/source.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class ASource {
this._descriptor = descriptor;
}

destory() {}
destroy() {}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for fixing this


renderDetails() {
return (<div>{`Here be details for source`}</div>);
Expand Down
53 changes: 41 additions & 12 deletions x-pack/plugins/gis/server/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
*/


import { EMS_V2 } from '../common/ems_v2';
import { GIS_API_PATH } from '../common/constants';
import fetch from 'node-fetch';
import _ from 'lodash';
import { EMSClientV66 } from '../../../../src/legacy/core_plugins/ems_util/common/ems_client';

const ROOT = `/${GIS_API_PATH}`;

Expand All @@ -17,32 +17,31 @@ export function initRoutes(server) {
const serverConfig = server.config();
const mapConfig = serverConfig.get('map');

const emsV2 = new EMS_V2({
const emsClient = new EMSClientV66({
kbnVersion: serverConfig.get('pkg.version'),
license: server.plugins.xpack_main.info.license.getUid(),
manifestServiceUrl: mapConfig.manifestServiceUrl,
emsLandingPageUrl: mapConfig.emsLandingPageUrl
landingPageUrl: mapConfig.emsLandingPageUrl
});

server.route({
method: 'GET',
path: `${ROOT}/data/ems`,
handler: async (request) => {

if (!request.query.name) {
if (!request.query.id) {
server.log('warning', 'Must supply id parameters to retrieve EMS file');
return null;
}

const ems = await getEMSResources();//todo: should do this lazily from emsV2 instance
const layer = ems.fileLayers.find(layer => layer.name === request.query.name);
const ems = await getEMSResources();

const layer = ems.fileLayers.find(layer => layer.id === request.query.id);
if (!layer) {
return null;
}

const file = await fetch(layer.url);
const fileGeoJson = await file.json();

return fileGeoJson;
return await file.json();

}
});
Expand Down Expand Up @@ -80,8 +79,38 @@ export function initRoutes(server) {
});

async function getEMSResources() {
const fileLayers = await emsV2.getFileLayers();
const tmsServices = await emsV2.getTMSServices();

const fileLayerObjs = await emsClient.getFileLayers();
const tmsServicesObjs = await emsClient.getTMSServices();

const fileLayers = fileLayerObjs.map(fileLayer => {
//backfill to static settings
const format = fileLayer.getDefaultFormatType();
const meta = fileLayer.getDefaultFormatMeta();

return {
name: fileLayer.getDisplayName(),
origin: fileLayer.getOrigin(),
id: fileLayer.getId(),
created_at: fileLayer.getCreatedAt(),
attribution: fileLayer.getHTMLAttribution(),
fields: fileLayer.getFieldsInLanguage(),
url: fileLayer.getDefaultFormatUrl(),
format: format, //legacy: format and meta are split up
meta: meta //legacy, format and meta are split up
};
});

const tmsServices = tmsServicesObjs.map(tmsService => {
return {
origin: tmsService.getOrigin(),
id: tmsService.getId(),
minZoom: tmsService.getMinZoom(),
maxZoom: tmsService.getMaxZoom(),
attribution: tmsService.getHTMLAttribution(),
url: tmsService.getUrlTemplate()
};
});
return { fileLayers, tmsServices };
}
}
Expand Down