Browse Source

Merge pull request #14185 from mtsymbarov-del/feat/map-dragable-overlay-option

Added dragble overlay option on map widget settings
pull/14260/head
Igor Kulikov 7 months ago
committed by GitHub
parent
commit
fc74fdb839
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 19
      ui-ngx/src/app/modules/home/components/widget/lib/settings/common/map/map-data-layers.component.html
  2. 12
      ui-ngx/src/app/modules/home/components/widget/lib/settings/common/map/map-data-layers.component.ts

19
ui-ngx/src/app/modules/home/components/widget/lib/settings/common/map/map-data-layers.component.html

@ -29,8 +29,13 @@
<div *ngIf="dataLayerType === 'circles'" class="tb-form-table-header-cell tb-key-header" translate>widgets.maps.data-layer.circle.circle-key</div>
<div class="tb-form-table-header-cell tb-actions-header"></div>
</div>
<div *ngIf="dataLayersFormArray().controls.length; else noDataLayers" class="tb-form-table-body">
<div *ngFor="let dataLayerControl of dataLayersFormArray().controls; trackBy: trackByDataLayer; let $index = index;">
<div *ngIf="dataLayersFormArray().controls.length; else noDataLayers" class="tb-form-table-body tb-drop-list max-h-64 overflow-y-auto"
cdkDropList cdkDropListOrientation="vertical"
[cdkDropListDisabled]="!dragEnabled"
(cdkDropListDropped)="layerDrop($event)">
<div cdkDrag [cdkDragDisabled]="!dragEnabled"
class="tb-draggable-form-table-row"
*ngFor="let dataLayerControl of dataLayersFormArray().controls; trackBy: trackByDataLayer; let $index = index;">
<tb-map-data-layer-row class="flex-1"
[mapType]="mapType"
[dataLayerType]="dataLayerType"
@ -38,6 +43,16 @@
[formControl]="dataLayerControl"
(dataLayerRemoved)="removeDataLayer($index)">
</tb-map-data-layer-row>
<div class="tb-form-table-row-cell-buttons">
<button [class.tb-hidden]="!dragEnabled"
mat-icon-button
type="button"
cdkDragHandle
matTooltip="{{ 'action.drag' | translate }}"
matTooltipPosition="above">
<mat-icon>drag_indicator</mat-icon>
</button>
</div>
</div>
</div>
</div>

12
ui-ngx/src/app/modules/home/components/widget/lib/settings/common/map/map-data-layers.component.ts

@ -38,6 +38,7 @@ import {
} from '@shared/models/widget/maps/map.models';
import { MapSettingsComponent } from '@home/components/widget/lib/settings/common/map/map-settings.component';
import { MapSettingsContext } from '@home/components/widget/lib/settings/common/map/map-settings.component.models';
import { CdkDragDrop } from '@angular/cdk/drag-drop';
@Component({
selector: 'tb-map-data-layers',
@ -79,6 +80,10 @@ export class MapDataLayersComponent implements ControlValueAccessor, OnInit, Val
noDataLayersText: string;
get dragEnabled(): boolean {
return this.dataLayersFormArray().controls.length > 1;
}
private propagateChange = (_val: any) => {};
constructor(private mapSettingsComponent: MapSettingsComponent,
@ -162,6 +167,13 @@ export class MapDataLayersComponent implements ControlValueAccessor, OnInit, Val
removeDataLayer(index: number) {
(this.dataLayersFormGroup.get('dataLayers') as UntypedFormArray).removeAt(index);
}
layerDrop(event: CdkDragDrop<string[]>) {
const layersArray = this.dataLayersFormArray();
const layer = layersArray.at(event.previousIndex);
layersArray.removeAt(event.previousIndex);
layersArray.insert(event.currentIndex, layer);
}
addDataLayer() {
const dataLayer = mergeDeep<MapDataLayerSettings>({} as MapDataLayerSettings,

Loading…
Cancel
Save