Browse Source

Merge pull request #13038 from vvlladd28/bug/place-item/multiple-clicl

Fixed place map item action on multiple header button clicks
pull/13059/head
Igor Kulikov 1 year ago
committed by GitHub
parent
commit
dc23b15aa7
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      ui-ngx/src/app/core/api/widget-api.models.ts
  2. 19
      ui-ngx/src/app/modules/home/components/widget/lib/maps/map.ts

2
ui-ngx/src/app/core/api/widget-api.models.ts

@ -91,7 +91,7 @@ export interface IWidgetUtils {
}
export interface PlaceMapItemActionData {
action: WidgetAction;
action: WidgetAction | WidgetActionDescriptor;
additionalParams?: any;
afterPlaceItemCallback: ($event: Event, descriptor: WidgetAction, entityId?: EntityId, entityName?: string,
additionalParams?: any, entityLabel?: string) => void;

19
ui-ngx/src/app/modules/home/components/widget/lib/maps/map.ts

@ -133,6 +133,7 @@ export abstract class TbMap<S extends BaseMapSettings> {
private currentEditButton: L.TB.ToolbarButton;
private dragMode = true;
private createMapItemActionId: string;
private get isPlacingItem(): boolean {
return !!this.currentEditButton;
@ -686,9 +687,14 @@ export abstract class TbMap<S extends BaseMapSettings> {
}
private createItem(actionData: PlaceMapItemActionData, prepareDrawMode: () => void) {
if (this.isPlacingItem) {
const actionId = 'id' in actionData.action ? actionData.action.id : 'map-button';
if (this.createMapItemActionId === actionId) {
this.finishCreatedItem();
return;
}
if (isDefined(this.createMapItemActionId)) {
this.finishCreatedItem();
}
this.updatePlaceItemState(actionData.additionalParams?.button, true);
this.map.once('pm:create', (e) => {
@ -701,7 +707,7 @@ export abstract class TbMap<S extends BaseMapSettings> {
// @ts-ignore
e.layer._pmTempLayer = true;
e.layer.remove();
this.finishAdd();
this.finishCreatedItem();
});
prepareDrawMode();
@ -714,10 +720,12 @@ export abstract class TbMap<S extends BaseMapSettings> {
iconClass: 'tb-close',
title: this.ctx.translate.instant('action.cancel'),
showText: true,
click: this.finishAdd
click: this.finishCreatedItem
}
], false);
this.createMapItemActionId = actionId;
const convertLayerToCoordinates = (type: MapItemType, layer: L.Layer): {x: number; y: number} | TbPolygonRawCoordinates | TbCircleData => {
switch (type) {
case MapItemType.marker:
@ -749,6 +757,11 @@ export abstract class TbMap<S extends BaseMapSettings> {
}
}
private finishCreatedItem = () => {
delete this.createMapItemActionId;
this.finishAdd();
}
private finishAdd = () => {
if (this.currentPopover) {
this.currentPopover.hide();

Loading…
Cancel
Save