mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[Maps] layer work flow usability (#154102)
All this dashboard usability work as sparked some ideas to make better work flows in Maps ### Adding layer Enhance "Add layer" work flow by allowing users to exit wizard after layer is added instead of forcing users to continue wizard even if they do not have any additional configuration changes to make. Old <img width="300" alt="Screen Shot 2023-03-30 at 2 56 56 PM" src="https://user-images.githubusercontent.com/373691/228962788-397e77fe-81b5-438a-a45c-3210101be336.png"> New <img width="300" alt="Screen Shot 2023-03-30 at 2 22 44 PM" src="https://user-images.githubusercontent.com/373691/228962403-ed18f8dc-c518-473d-8dd1-f889f7e51684.png"> ### Editing layer "Save" language in layer editor is poor choice since layer changes are not persisted until user clicks "Save" button in top chrome to save entire map. Updated copy to better reflect action. Old <img width="300" alt="Screen Shot 2023-03-30 at 2 57 16 PM" src="https://user-images.githubusercontent.com/373691/228962822-d923978f-71c4-4c7f-96f9-b003ededfbbe.png"> New <img width="300" alt="Screen Shot 2023-03-30 at 2 49 57 PM" src="https://user-images.githubusercontent.com/373691/228962420-4bd9d554-97ae-4c37-b677-84cd762e3f39.png"> ### Other changes "Map settings" => "Settings" --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
234d92df97
commit
f4efe1b70b
18 changed files with 132 additions and 90 deletions
|
@ -342,7 +342,7 @@ Create your map and set the theme for the default layer to dark mode.
|
|||
. Click *Create map*.
|
||||
. In the *Layers* list, click *Road map*, and then click *Edit layer settings*.
|
||||
. Open the *Tile service* dropdown, and select *Road map - dark*.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
|
||||
[float]
|
||||
==== Step 2. Add a tracks layer
|
||||
|
@ -355,12 +355,12 @@ Add a layer to show the bus routes for the last 15 minutes.
|
|||
. Define the tracks:
|
||||
.. Set *Entity* to *trimet.vehicleID*.
|
||||
.. Set *Sort* to *trimet.time*.
|
||||
. Click *Add layer*.
|
||||
. Click *Add and continue*.
|
||||
. In Layer settings:
|
||||
.. Set *Name* to *Buses*.
|
||||
.. Set *Opacity* to 80%.
|
||||
. Scroll to *Layer Style*, and set *Border color* to pink.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
. In the *Layers* list, click *Buses*, and then click *Fit to data*.
|
||||
|
||||
At this point, you have a map with lines that represent the routes of the buses as they move around the city.
|
||||
|
@ -380,7 +380,7 @@ Add a layer that uses attributes in the data to set the style and orientation of
|
|||
.. Set *Documents per entity* to 1.
|
||||
.. Set *Sort field* to *trimet.time*.
|
||||
.. Set *Sort order* to *descending*.
|
||||
. Click *Add layer*.
|
||||
. Click *Add and continue*.
|
||||
. Scroll to *Layer Style*.
|
||||
.. Set *Symbol type* to *icon*.
|
||||
.. Set *Icon* to *arrow-es*.
|
||||
|
@ -395,7 +395,7 @@ Add a layer that uses attributes in the data to set the style and orientation of
|
|||
+
|
||||
[role="screenshot"]
|
||||
image::maps/images/asset-tracking-tutorial/top_hits_layer_style.png[]
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
. Open the <<set-time-filter, time filter>>, and set *Refresh every* to 10 seconds, and click *Start*.
|
||||
|
||||
Your map should automatically refresh every 10 seconds to show the latest bus positions and tracks.
|
||||
|
@ -423,7 +423,7 @@ Add a layer for construction zones, which you will draw on the map. The construc
|
|||
. When you finish drawing the construction zones, click *Exit* under the layer name in the legend.
|
||||
. In *Layer settings*, set *Name* to *Construction zones*.
|
||||
. Scroll to *Layer Style*, and set *Fill color* to yellow.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
. *Save* the map.
|
||||
.. Give the map a title.
|
||||
.. Under *Add to dashboard*, select *None*.
|
||||
|
|
|
@ -39,6 +39,6 @@ the Elasticsearch responses are shown on the *Layer add panel* and the indexed d
|
|||
appears on the map. The geospatial data on the map
|
||||
should be identical to the locally-previewed data, but now it's indexed data from Elasticsearch.
|
||||
|
||||
. To continue adding data to the map, click *Add layer*.
|
||||
. To continue adding data to the map, click *Add and continue*.
|
||||
. In *Layer settings*, adjust any settings or <<maps-vector-style-properties, properties>> as needed.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
|
|
|
@ -94,9 +94,7 @@ To open an existing index for drawing:
|
|||
|
||||
. Select the data view that points to your index. A <<data-views, data view>> can point to one or more indices. For feature editing, the data view must point to a single index.
|
||||
|
||||
. Click *Add layer*.
|
||||
|
||||
. Click *Save & close*.
|
||||
. Click *Add and close*.
|
||||
|
||||
. In the legend, click the layer name and select *Edit features*.
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ were successful.
|
|||
. Click *Add layer*.
|
||||
|
||||
. In *Layer settings*, adjust settings and <<maps-vector-style-properties, properties>> as needed.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
. Once you've added all of the sample files,
|
||||
<<maps-save, save your map>>.
|
||||
+
|
||||
|
@ -106,7 +106,7 @@ settings that you might want to change.
|
|||
Again the default looks good, but feel free to choose a
|
||||
different color range.
|
||||
|
||||
. When you're finished modifying settings, click *Save & close*.
|
||||
. When you're finished modifying settings, click *Keep changes*.
|
||||
+
|
||||
With your new lightning heat map layer, your map should look
|
||||
like this:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
== Configure map settings
|
||||
|
||||
Maps offers settings that let you configure how a map is displayed.
|
||||
To access these settings, click *Map settings* in the application toolbar.
|
||||
To access these settings, click *Settings* in the application toolbar.
|
||||
|
||||
[float]
|
||||
[[maps-settings-custom-icons]]
|
||||
|
|
|
@ -52,7 +52,7 @@ and lighter shades will symbolize countries with less traffic.
|
|||
** **Data view** to **kibana_sample_data_logs**
|
||||
** **Join field** to **geo.dest**
|
||||
|
||||
. Click **Add layer**.
|
||||
. Click **Add and continue**.
|
||||
|
||||
. In **Layer settings**, set:
|
||||
|
||||
|
@ -71,7 +71,7 @@ and lighter shades will symbolize countries with less traffic.
|
|||
** Set **Border color** to white.
|
||||
** Under **Label**, change **By value** to **Fixed**.
|
||||
|
||||
. Click **Save & close**.
|
||||
. Click **Keep changes**.
|
||||
+
|
||||
Your map now looks like this:
|
||||
+
|
||||
|
@ -97,7 +97,7 @@ The layer is only visible when users zoom in.
|
|||
|
||||
. Set **Data view** to **kibana_sample_data_logs**.
|
||||
|
||||
. Click **Add layer**.
|
||||
. Click **Add and continue**.
|
||||
|
||||
. In **Layer settings**, set:
|
||||
** **Name** to `Actual Requests`
|
||||
|
@ -111,7 +111,7 @@ The layer is only visible when users zoom in.
|
|||
|
||||
. In **Layer style**, set **Fill color** to **#2200FF**.
|
||||
|
||||
. Click **Save & close**.
|
||||
. Click **Keep changes**.
|
||||
+
|
||||
Your map will look like this from zoom level 9 to 24:
|
||||
+
|
||||
|
@ -130,7 +130,7 @@ grids with less bytes transferred.
|
|||
|
||||
. Click **Add layer**, and select **Clusters**.
|
||||
. Set **Data view** to **kibana_sample_data_logs**.
|
||||
. Click **Add layer**.
|
||||
. Click **Add and continue**.
|
||||
. In **Layer settings**, set:
|
||||
** **Name** to `Total Requests and Bytes`
|
||||
** **Visibility** to the range [0, 9]
|
||||
|
@ -142,7 +142,7 @@ grids with less bytes transferred.
|
|||
. In **Layer style**, change **Symbol size**:
|
||||
** Set *By value* to *sum bytes*.
|
||||
** Set the min size to 7 and the max size to 25 px.
|
||||
. Click **Save & close** button.
|
||||
. Click **Keep changes** button.
|
||||
+
|
||||
Your map will look like this between zoom levels 0 and 9:
|
||||
+
|
||||
|
|
|
@ -60,7 +60,7 @@ To get the CSA boundary data:
|
|||
.. Click *+ Add* to open the field select.
|
||||
.. Select *NAME*, *GEOID*, and *AFFGEOID*.
|
||||
.. Click *Add*.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
|
||||
Looking at the map, you get a sense of what constitutes a metro area in the eyes of the Census Bureau.
|
||||
|
||||
|
@ -169,9 +169,9 @@ Now that our web traffic contains CSA region identifiers, you'll visualize CSA r
|
|||
. For *Statistics source*:
|
||||
.. Set *Data view* to *Kibana Sample Data Logs*.
|
||||
.. Set *Join field* to *csa.GEOID.keyword*.
|
||||
. Click *Add layer*.
|
||||
. Click *Add and continue*.
|
||||
. Scroll to *Layer Style* and Set *Label* to *Fixed*.
|
||||
. Click *Save & close*.
|
||||
. Click *Keep changes*.
|
||||
. *Save* the map.
|
||||
.. Give the map a title.
|
||||
.. Under *Add to dashboard*, select *None*.
|
||||
|
|
|
@ -71,7 +71,7 @@ You can also use your own SVG icon to style Point features in your map. In **Lay
|
|||
|
||||
Dynamic styling in **Elastic Maps** requires rendering SVG icons as PNGs using a https://en.wikipedia.org/wiki/Signed_distance_function[signed distance function]. As a result, sharp corners and intricate details may not render correctly. Modifying the settings under **Advanced Options** in the **Add custom icon** modal may improve rendering.
|
||||
|
||||
Manage your custom icons in <<maps-settings, Map settings>>.
|
||||
Manage your custom icons in <<maps-settings, settings>>.
|
||||
|
||||
[float]
|
||||
[[polygon-style-properties]]
|
||||
|
|
|
@ -7,10 +7,23 @@
|
|||
|
||||
/* eslint-disable @typescript-eslint/consistent-type-definitions */
|
||||
|
||||
import { ReactElement, FunctionComponent } from 'react';
|
||||
import { ReactElement, ReactNode, FunctionComponent } from 'react';
|
||||
import type { LayerDescriptor } from '../../../../common/descriptor_types';
|
||||
import { LAYER_WIZARD_CATEGORY } from '../../../../common/constants';
|
||||
|
||||
export type RenderSecondaryActionButtonProps = {
|
||||
isDisabled: boolean;
|
||||
isLoading: boolean;
|
||||
addLayersAndClose: () => void;
|
||||
};
|
||||
|
||||
export type LayerWizardStep = {
|
||||
id: string;
|
||||
label: string;
|
||||
nextButtonLabel?: string;
|
||||
renderSecondaryActionButton?: (props: RenderSecondaryActionButtonProps) => ReactNode;
|
||||
};
|
||||
|
||||
export type LayerWizard = {
|
||||
id: string;
|
||||
title: string;
|
||||
|
@ -24,7 +37,7 @@ export type LayerWizard = {
|
|||
description: string;
|
||||
icon: string | FunctionComponent<any>;
|
||||
renderWizard(renderWizardArguments: RenderWizardArguments): ReactElement<any>;
|
||||
prerequisiteSteps?: Array<{ id: string; label: string }>;
|
||||
prerequisiteSteps?: LayerWizardStep[];
|
||||
disabledReason?: string;
|
||||
getIsDisabled?: () => Promise<boolean> | boolean;
|
||||
isBeta?: boolean;
|
||||
|
|
|
@ -39,7 +39,11 @@ function mapDispatchToProps(dispatch: ThunkDispatch<MapStoreState, void, AnyActi
|
|||
addPreviewLayers: (layerDescriptors: LayerDescriptor[]) => {
|
||||
dispatch(addPreviewLayers(layerDescriptors));
|
||||
},
|
||||
promotePreviewLayers: () => {
|
||||
addLayersAndClose: () => {
|
||||
dispatch(updateFlyout(FLYOUT_STATE.NONE));
|
||||
dispatch(promotePreviewLayers());
|
||||
},
|
||||
addLayersAndContinue: () => {
|
||||
dispatch(setFirstPreviewLayerToSelectedLayer());
|
||||
dispatch(updateFlyout(FLYOUT_STATE.LAYER_PANEL));
|
||||
dispatch(promotePreviewLayers());
|
||||
|
|
|
@ -20,20 +20,36 @@ import { FormattedMessage } from '@kbn/i18n-react';
|
|||
import { FlyoutBody } from './flyout_body';
|
||||
import { LayerDescriptor } from '../../../common/descriptor_types';
|
||||
import { LayerWizard } from '../../classes/layers';
|
||||
import { getWizardById } from '../../classes/layers/wizards/layer_wizard_registry';
|
||||
import {
|
||||
type LayerWizardStep,
|
||||
type RenderSecondaryActionButtonProps,
|
||||
getWizardById,
|
||||
} from '../../classes/layers/wizards/layer_wizard_registry';
|
||||
|
||||
export const ADD_LAYER_STEP_ID = 'ADD_LAYER_STEP_ID';
|
||||
const ADD_LAYER_STEP_LABEL = i18n.translate('xpack.maps.addLayerPanel.addLayer', {
|
||||
defaultMessage: 'Add layer',
|
||||
});
|
||||
const SELECT_WIZARD_LABEL = ADD_LAYER_STEP_LABEL;
|
||||
const ADD_LAYER_STEP_NEXT_BUTTON_LABEL = i18n.translate(
|
||||
'xpack.maps.addLayerPanel.addLayerNextButtonLabel',
|
||||
{
|
||||
defaultMessage: 'Add and continue',
|
||||
}
|
||||
);
|
||||
const ADD_LAYER_STEP_SECONDARY_ACTION_BUTTON_LABEL = i18n.translate(
|
||||
'xpack.maps.addLayerPanel.addLayerSecondaryActionButtonLabel',
|
||||
{
|
||||
defaultMessage: 'Add and close',
|
||||
}
|
||||
);
|
||||
|
||||
export interface Props {
|
||||
addPreviewLayers: (layerDescriptors: LayerDescriptor[]) => void;
|
||||
closeFlyout: () => void;
|
||||
hasPreviewLayers: boolean;
|
||||
isLoadingPreviewLayers: boolean;
|
||||
promotePreviewLayers: () => void;
|
||||
addLayersAndClose: () => void;
|
||||
addLayersAndContinue: () => void;
|
||||
enableEditMode: () => void;
|
||||
autoOpenLayerWizardId: string;
|
||||
clearAutoOpenLayerWizardId: () => void;
|
||||
|
@ -41,8 +57,8 @@ export interface Props {
|
|||
|
||||
interface State {
|
||||
currentStepIndex: number;
|
||||
currentStep: { id: string; label: string } | null;
|
||||
layerSteps: Array<{ id: string; label: string }> | null;
|
||||
currentStep: LayerWizardStep | null;
|
||||
layerSteps: LayerWizardStep[] | null;
|
||||
layerWizard: LayerWizard | null;
|
||||
isNextStepBtnEnabled: boolean;
|
||||
isStepLoading: boolean;
|
||||
|
@ -91,6 +107,22 @@ export class AddLayerPanel extends Component<Props, State> {
|
|||
{
|
||||
id: ADD_LAYER_STEP_ID,
|
||||
label: ADD_LAYER_STEP_LABEL,
|
||||
nextButtonLabel: ADD_LAYER_STEP_NEXT_BUTTON_LABEL,
|
||||
renderSecondaryActionButton: ({
|
||||
isDisabled,
|
||||
isLoading,
|
||||
addLayersAndClose,
|
||||
}: RenderSecondaryActionButtonProps) => {
|
||||
return (
|
||||
<EuiButton
|
||||
disabled={isDisabled || isLoading}
|
||||
isLoading={isLoading}
|
||||
onClick={addLayersAndClose}
|
||||
>
|
||||
{ADD_LAYER_STEP_SECONDARY_ACTION_BUTTON_LABEL}
|
||||
</EuiButton>
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
this.setState({
|
||||
|
@ -108,7 +140,7 @@ export class AddLayerPanel extends Component<Props, State> {
|
|||
|
||||
if (this.state.layerSteps.length - 1 === this.state.currentStepIndex) {
|
||||
// last step
|
||||
this.props.promotePreviewLayers();
|
||||
this.props.addLayersAndContinue();
|
||||
if (this.state.layerWizard?.showFeatureEditTools) {
|
||||
this.props.enableEditMode();
|
||||
}
|
||||
|
@ -156,21 +188,40 @@ export class AddLayerPanel extends Component<Props, State> {
|
|||
isLoading = this.state.isStepLoading;
|
||||
}
|
||||
|
||||
return (
|
||||
const nextButton = (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-test-subj="importFileButton"
|
||||
disabled={isDisabled || isLoading}
|
||||
isLoading={isLoading}
|
||||
iconSide="right"
|
||||
iconType={'sortRight'}
|
||||
iconType={'arrowRight'}
|
||||
onClick={this._onNext}
|
||||
fill
|
||||
>
|
||||
{this.state.currentStep.label}
|
||||
{this.state.currentStep.nextButtonLabel
|
||||
? this.state.currentStep.nextButtonLabel
|
||||
: this.state.currentStep.label}
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
);
|
||||
|
||||
return this.state.currentStep.renderSecondaryActionButton ? (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiFlexGroup responsive={false} gutterSize="s">
|
||||
<EuiFlexItem grow={false}>
|
||||
{this.state.currentStep.renderSecondaryActionButton({
|
||||
isDisabled,
|
||||
isLoading,
|
||||
addLayersAndClose: this.props.addLayersAndClose,
|
||||
})}
|
||||
</EuiFlexItem>
|
||||
{nextButton}
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
) : (
|
||||
nextButton
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -178,7 +229,7 @@ export class AddLayerPanel extends Component<Props, State> {
|
|||
<>
|
||||
<EuiFlyoutHeader hasBorder className="mapLayerPanel__header">
|
||||
<EuiTitle size="s">
|
||||
<h2>{this.state.currentStep ? this.state.currentStep.label : SELECT_WIZARD_LABEL}</h2>
|
||||
<h2>{this.state.currentStep ? this.state.currentStep.label : ADD_LAYER_STEP_LABEL}</h2>
|
||||
</EuiTitle>
|
||||
</EuiFlyoutHeader>
|
||||
|
||||
|
@ -200,7 +251,7 @@ export class AddLayerPanel extends Component<Props, State> {
|
|||
/>
|
||||
|
||||
<EuiFlyoutFooter className="mapLayerPanel__footer">
|
||||
<EuiFlexGroup justifyContent="spaceBetween" responsive={false}>
|
||||
<EuiFlexGroup justifyContent="spaceBetween" responsive={false} gutterSize="none">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty
|
||||
onClick={this.props.closeFlyout}
|
||||
|
|
|
@ -9,6 +9,7 @@ import React, { Component } from 'react';
|
|||
|
||||
import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiButtonEmpty } from '@elastic/eui';
|
||||
import { FormattedMessage } from '@kbn/i18n-react';
|
||||
import { panelStrings } from '../../panel_strings';
|
||||
import { ILayer } from '../../../classes/layers/layer';
|
||||
import { RemoveLayerConfirmModal } from '../../../components/remove_layer_confirm_modal';
|
||||
|
||||
|
@ -34,15 +35,6 @@ export class FlyoutFooter extends Component<Props, State> {
|
|||
};
|
||||
|
||||
render() {
|
||||
const cancelButtonLabel = this.props.hasStateChanged ? (
|
||||
<FormattedMessage
|
||||
id="xpack.maps.layerPanel.footer.cancelButtonLabel"
|
||||
defaultMessage="Cancel"
|
||||
/>
|
||||
) : (
|
||||
<FormattedMessage id="xpack.maps.layerPanel.footer.closeButtonLabel" defaultMessage="Close" />
|
||||
);
|
||||
|
||||
const removeModal =
|
||||
this.props.selectedLayer && this.state.showRemoveModal ? (
|
||||
<RemoveLayerConfirmModal
|
||||
|
@ -67,7 +59,7 @@ export class FlyoutFooter extends Component<Props, State> {
|
|||
flush="left"
|
||||
data-test-subj="layerPanelCancelButton"
|
||||
>
|
||||
{cancelButtonLabel}
|
||||
{this.props.hasStateChanged ? panelStrings.discardChanges : panelStrings.close}
|
||||
</EuiButtonEmpty>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
|
@ -93,10 +85,7 @@ export class FlyoutFooter extends Component<Props, State> {
|
|||
onClick={this.props.saveLayerEdits}
|
||||
fill
|
||||
>
|
||||
<FormattedMessage
|
||||
id="xpack.maps.layerPanel.footer.saveAndCloseButtonLabel"
|
||||
defaultMessage="Save & close"
|
||||
/>
|
||||
{panelStrings.keepChanges}
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
|
|
|
@ -16,13 +16,13 @@ import {
|
|||
EuiSpacer,
|
||||
EuiTitle,
|
||||
} from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n-react';
|
||||
import { NavigationPanel } from './navigation_panel';
|
||||
import { SpatialFiltersPanel } from './spatial_filters_panel';
|
||||
import { DisplayPanel } from './display_panel';
|
||||
import { CustomIconsPanel } from './custom_icons_panel';
|
||||
import { CustomIcon, MapCenter, MapSettings } from '../../../common/descriptor_types';
|
||||
import { panelStrings } from '../panel_strings';
|
||||
|
||||
export interface Props {
|
||||
cancelChanges: () => void;
|
||||
|
@ -49,24 +49,12 @@ export function MapSettingsPanel({
|
|||
deleteCustomIcon,
|
||||
zoom,
|
||||
}: Props) {
|
||||
// TODO move common text like Cancel and Close to common i18n translation
|
||||
const closeBtnLabel = hasMapSettingsChanges
|
||||
? i18n.translate('xpack.maps.mapSettingsPanel.cancelLabel', {
|
||||
defaultMessage: 'Cancel',
|
||||
})
|
||||
: i18n.translate('xpack.maps.mapSettingsPanel.closeLabel', {
|
||||
defaultMessage: 'Close',
|
||||
});
|
||||
|
||||
return (
|
||||
<EuiFlexGroup direction="column" gutterSize="none">
|
||||
<EuiFlyoutHeader hasBorder className="mapLayerPanel__header">
|
||||
<EuiTitle size="s">
|
||||
<h2>
|
||||
<FormattedMessage
|
||||
id="xpack.maps.mapSettingsPanel.title"
|
||||
defaultMessage="Map settings"
|
||||
/>
|
||||
<FormattedMessage id="xpack.maps.mapSettingsPanel.title" defaultMessage="Settings" />
|
||||
</h2>
|
||||
</EuiTitle>
|
||||
</EuiFlyoutHeader>
|
||||
|
@ -100,7 +88,7 @@ export function MapSettingsPanel({
|
|||
flush="left"
|
||||
data-test-subj="layerPanelCancelButton"
|
||||
>
|
||||
{closeBtnLabel}
|
||||
{hasMapSettingsChanges ? panelStrings.discardChanges : panelStrings.close}
|
||||
</EuiButtonEmpty>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
|
@ -114,10 +102,7 @@ export function MapSettingsPanel({
|
|||
fill
|
||||
data-test-subj="mapSettingSubmitButton"
|
||||
>
|
||||
<FormattedMessage
|
||||
id="xpack.maps.mapSettingsPanel.keepChangesButtonLabel"
|
||||
defaultMessage="Keep changes"
|
||||
/>
|
||||
{panelStrings.keepChanges}
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
export const panelStrings = {
|
||||
close: i18n.translate('xpack.maps.panel.closeLabel', {
|
||||
defaultMessage: 'Close',
|
||||
}),
|
||||
discardChanges: i18n.translate('xpack.maps.panel.discardChangesLabel', {
|
||||
defaultMessage: 'Discard changes',
|
||||
}),
|
||||
keepChanges: i18n.translate('xpack.maps.panel.keepChangesLabel', {
|
||||
defaultMessage: 'Keep changes',
|
||||
}),
|
||||
};
|
|
@ -58,7 +58,7 @@ export function getTopNavConfig({
|
|||
{
|
||||
id: 'mapSettings',
|
||||
label: i18n.translate('xpack.maps.topNav.openSettingsButtonLabel', {
|
||||
defaultMessage: `Map settings`,
|
||||
defaultMessage: `Settings`,
|
||||
}),
|
||||
description: i18n.translate('xpack.maps.topNav.openSettingsDescription', {
|
||||
defaultMessage: `Open map settings`,
|
||||
|
|
|
@ -20636,10 +20636,7 @@
|
|||
"xpack.maps.layerPanel.filterEditor.isLayerFilterNotApplied": "Le filtre de calque n'est pas appliqué lors de la modification des fonctionnalités",
|
||||
"xpack.maps.layerPanel.filterEditor.queryBarSubmitButtonLabel": "Définir le filtre",
|
||||
"xpack.maps.layerPanel.filterEditor.title": "Filtrage",
|
||||
"xpack.maps.layerPanel.footer.cancelButtonLabel": "Annuler",
|
||||
"xpack.maps.layerPanel.footer.closeButtonLabel": "Fermer",
|
||||
"xpack.maps.layerPanel.footer.removeLayerButtonLabel": "Retirer un calque",
|
||||
"xpack.maps.layerPanel.footer.saveAndCloseButtonLabel": "Enregistrer et fermer",
|
||||
"xpack.maps.layerPanel.join.applyGlobalQueryCheckboxLabel": "Appliquer une recherche globale à la liaison",
|
||||
"xpack.maps.layerPanel.join.applyGlobalTimeCheckboxLabel": "Appliquer une heure globale à la liaison",
|
||||
"xpack.maps.layerPanel.join.deleteJoinAriaLabel": "Supprimer la liaison",
|
||||
|
@ -20726,8 +20723,6 @@
|
|||
"xpack.maps.mapSettingsPanel.autoFitToDataBoundsLabel": "Ajuster automatiquement la carte aux limites de données",
|
||||
"xpack.maps.mapSettingsPanel.backgroundColorLabel": "Couleur d'arrière-plan",
|
||||
"xpack.maps.mapSettingsPanel.browserLocationLabel": "Emplacement du navigateur",
|
||||
"xpack.maps.mapSettingsPanel.cancelLabel": "Annuler",
|
||||
"xpack.maps.mapSettingsPanel.closeLabel": "Fermer",
|
||||
"xpack.maps.mapSettingsPanel.customIcons.emptyState.description": "Ajoutez une icône personnalisée pouvant être utilisée dans les calques de cette carte.",
|
||||
"xpack.maps.mapSettingsPanel.customIconsAddIconButton": "Ajouter",
|
||||
"xpack.maps.mapSettingsPanel.customIconsTitle": "Icônes personnalisées",
|
||||
|
@ -20737,7 +20732,6 @@
|
|||
"xpack.maps.mapSettingsPanel.initialLatLabel": "Latitude initiale",
|
||||
"xpack.maps.mapSettingsPanel.initialLonLabel": "Longitude initiale",
|
||||
"xpack.maps.mapSettingsPanel.initialZoomLabel": "Zoom initial",
|
||||
"xpack.maps.mapSettingsPanel.keepChangesButtonLabel": "Conserver les modifications",
|
||||
"xpack.maps.mapSettingsPanel.lastSavedLocationLabel": "Emplacement de la carte à l'enregistrement",
|
||||
"xpack.maps.mapSettingsPanel.navigationTitle": "Navigation",
|
||||
"xpack.maps.mapSettingsPanel.showScaleLabel": "Afficher l'échelle",
|
||||
|
|
|
@ -20636,10 +20636,7 @@
|
|||
"xpack.maps.layerPanel.filterEditor.isLayerFilterNotApplied": "特徴量の編集中には、レイヤーフィルターは適用されません",
|
||||
"xpack.maps.layerPanel.filterEditor.queryBarSubmitButtonLabel": "フィルターを設定",
|
||||
"xpack.maps.layerPanel.filterEditor.title": "フィルタリング",
|
||||
"xpack.maps.layerPanel.footer.cancelButtonLabel": "キャンセル",
|
||||
"xpack.maps.layerPanel.footer.closeButtonLabel": "閉じる",
|
||||
"xpack.maps.layerPanel.footer.removeLayerButtonLabel": "レイヤーを削除",
|
||||
"xpack.maps.layerPanel.footer.saveAndCloseButtonLabel": "保存して閉じる",
|
||||
"xpack.maps.layerPanel.join.applyGlobalQueryCheckboxLabel": "グローバル検索を結合に適用",
|
||||
"xpack.maps.layerPanel.join.applyGlobalTimeCheckboxLabel": "結合するグローバル時刻を適用",
|
||||
"xpack.maps.layerPanel.join.deleteJoinAriaLabel": "ジョブの削除",
|
||||
|
@ -20726,8 +20723,6 @@
|
|||
"xpack.maps.mapSettingsPanel.autoFitToDataBoundsLabel": "自動的にマップをデータ境界に合わせる",
|
||||
"xpack.maps.mapSettingsPanel.backgroundColorLabel": "背景色",
|
||||
"xpack.maps.mapSettingsPanel.browserLocationLabel": "ブラウザーの位置情報",
|
||||
"xpack.maps.mapSettingsPanel.cancelLabel": "キャンセル",
|
||||
"xpack.maps.mapSettingsPanel.closeLabel": "閉じる",
|
||||
"xpack.maps.mapSettingsPanel.customIcons.emptyState.description": "このマップのレイヤーで使用できるカスタムアイコンを追加します。",
|
||||
"xpack.maps.mapSettingsPanel.customIconsAddIconButton": "追加",
|
||||
"xpack.maps.mapSettingsPanel.customIconsTitle": "カスタムアイコン",
|
||||
|
@ -20737,7 +20732,6 @@
|
|||
"xpack.maps.mapSettingsPanel.initialLatLabel": "緯度初期値",
|
||||
"xpack.maps.mapSettingsPanel.initialLonLabel": "経度初期値",
|
||||
"xpack.maps.mapSettingsPanel.initialZoomLabel": "ズーム初期値",
|
||||
"xpack.maps.mapSettingsPanel.keepChangesButtonLabel": "変更を保持",
|
||||
"xpack.maps.mapSettingsPanel.lastSavedLocationLabel": "保存時のマップ位置情報",
|
||||
"xpack.maps.mapSettingsPanel.navigationTitle": "ナビゲーション",
|
||||
"xpack.maps.mapSettingsPanel.showScaleLabel": "縮尺を表示",
|
||||
|
|
|
@ -20636,10 +20636,7 @@
|
|||
"xpack.maps.layerPanel.filterEditor.isLayerFilterNotApplied": "编辑特征时不会应用图层筛选",
|
||||
"xpack.maps.layerPanel.filterEditor.queryBarSubmitButtonLabel": "设置筛选",
|
||||
"xpack.maps.layerPanel.filterEditor.title": "筛选",
|
||||
"xpack.maps.layerPanel.footer.cancelButtonLabel": "取消",
|
||||
"xpack.maps.layerPanel.footer.closeButtonLabel": "关闭",
|
||||
"xpack.maps.layerPanel.footer.removeLayerButtonLabel": "移除图层",
|
||||
"xpack.maps.layerPanel.footer.saveAndCloseButtonLabel": "保存并关闭",
|
||||
"xpack.maps.layerPanel.join.applyGlobalQueryCheckboxLabel": "应用全局搜索到联接",
|
||||
"xpack.maps.layerPanel.join.applyGlobalTimeCheckboxLabel": "应用全局时间到联接",
|
||||
"xpack.maps.layerPanel.join.deleteJoinAriaLabel": "删除联接",
|
||||
|
@ -20726,8 +20723,6 @@
|
|||
"xpack.maps.mapSettingsPanel.autoFitToDataBoundsLabel": "使地图自动适应数据边界",
|
||||
"xpack.maps.mapSettingsPanel.backgroundColorLabel": "背景色",
|
||||
"xpack.maps.mapSettingsPanel.browserLocationLabel": "浏览器位置",
|
||||
"xpack.maps.mapSettingsPanel.cancelLabel": "取消",
|
||||
"xpack.maps.mapSettingsPanel.closeLabel": "关闭",
|
||||
"xpack.maps.mapSettingsPanel.customIcons.emptyState.description": "添加可用在此地图的图层中的定制图标。",
|
||||
"xpack.maps.mapSettingsPanel.customIconsAddIconButton": "添加",
|
||||
"xpack.maps.mapSettingsPanel.customIconsTitle": "定制图标",
|
||||
|
@ -20737,7 +20732,6 @@
|
|||
"xpack.maps.mapSettingsPanel.initialLatLabel": "初始纬度",
|
||||
"xpack.maps.mapSettingsPanel.initialLonLabel": "初始经度",
|
||||
"xpack.maps.mapSettingsPanel.initialZoomLabel": "初始缩放",
|
||||
"xpack.maps.mapSettingsPanel.keepChangesButtonLabel": "保留更改",
|
||||
"xpack.maps.mapSettingsPanel.lastSavedLocationLabel": "保存时的地图位置",
|
||||
"xpack.maps.mapSettingsPanel.navigationTitle": "导航",
|
||||
"xpack.maps.mapSettingsPanel.showScaleLabel": "显示比例",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue