File

widgets/implementations/map/map-widget-config.component.ts

Implements

OnInit OnChanges OnDestroy

Metadata

Index

Properties
Methods
Inputs
Accessors

Constructor

constructor(mapService: MapService, alertService: AlertService, translateService: TranslateService, defaultMapConfig: Observable, widgetConfigService: WidgetConfigService)
Parameters :
Name Type Optional
mapService MapService No
alertService AlertService No
translateService TranslateService No
defaultMapConfig Observable<MapDefaultConfig> No
widgetConfigService WidgetConfigService No

Inputs

config
Type : MapWidgetConfig
Default value : { mapConfig: undefined }

Methods

centerToAsset
centerToAsset()
Returns : void
changeCenter
changeCenter()
Returns : void
changeCenterOnEnterKey
changeCenterOnEnterKey(event: KeyboardEvent)
Parameters :
Name Type Optional
event KeyboardEvent No
Returns : void
Async fitToBounds
fitToBounds()
Returns : any
Async initForm
initForm()
Returns : any
Async ngOnChanges
ngOnChanges(changes: SimpleChanges)
Parameters :
Name Type Optional
changes SimpleChanges No
Returns : any
ngOnDestroy
ngOnDestroy()
Returns : void
ngOnInit
ngOnInit()
Returns : void
onBeforeSave
onBeforeSave()
Returns : boolean
onPreviewMapMove
onPreviewMapMove(event: L.LeafletEvent)
Parameters :
Name Type Optional
event L.LeafletEvent No
Returns : void
onPreviewZoomEnd
onPreviewZoomEnd(event: L.LeafletEvent)
Parameters :
Name Type Optional
event L.LeafletEvent No
Returns : void
onPreviewZoomStart
onPreviewZoomStart()
Returns : void
previewMapInit
previewMapInit(leaflet: unknown)
Parameters :
Name Type Optional
leaflet unknown No
Returns : void
selectIcon
selectIcon(icon: string)
Parameters :
Name Type Optional
icon string No
Returns : void
useOwnPosition
useOwnPosition()
Returns : void
zoomLevelChanged
zoomLevelChanged()
Returns : void

Properties

Readonly assets
Type : unknown
Default value : signal<PositionManagedObject[]>([])
Readonly canAutoCenter
Type : unknown
Default value : computed(() => { const assetsList = this.assets(); const deviceValue = this.device(); const isSingleAsset = assetsList?.length === 1; const idMatchesDevice = deviceValue?.id === assetsList[0]?.id; if (isSingleAsset && idMatchesDevice) { return this.mapService.hasPosition(assetsList[0]); } return false; })
Readonly device
Type : unknown
Default value : signal<IIdentified | undefined>(undefined)
formConfig
Type : ClusterMapConfig
Readonly isPositionedDevice
Type : unknown
Default value : computed(() => { const assetsList = this.assets(); const deviceValue = this.device(); const isSingleAsset = assetsList?.length === 1; const idMatchesDevice = deviceValue?.id === assetsList[0]?.id; if (isSingleAsset && idMatchesDevice) { return this.mapService.isPositionedDevice(assetsList[0]); } return false; })
previewMap
Type : MapComponent
Decorators :
@ViewChild(MapComponent)
refreshOption
Type : RefreshOption
Default value : 'live'

Accessors

previewMapSet
setpreviewMapSet(template: TemplateRef)
Parameters :
Name Type Optional
template TemplateRef<any> No
Returns : void
@if (formConfig) {
  <fieldset class="c8y-fieldset">
    <legend>{{ 'Map' | translate }}</legend>
    <div class="row tight-grid">
      <div class="col-xs-3">
        <c8y-form-group class="m-b-16 text-center form-group-sm">
          <label translate>Marker icon</label>
          <c8y-icon-selector-wrapper
            [canRemoveIcon]="true"
            [selectedIcon]="formConfig.icon"
            (onSelect)="selectIcon($event)"
          ></c8y-icon-selector-wrapper>
        </c8y-form-group>
      </div>
      <div class="col-xs-9">
        <div class="form-group form-group-sm">
          <label translate>Zoom level</label>
          <c8y-range
            class="label-bottom"
            name="zoomLevel"
            #range
            [(ngModel)]="formConfig.zoomLevel"
            (change)="zoomLevelChanged()"
          >
            <input
              type="range"
              min="0"
              max="18"
              step="1"
            />
          </c8y-range>
        </div>
      </div>
    </div>
    <c8y-form-group class="form-group-sm">
      <label translate>Center bound</label>
      <div class="input-group input-group-sm">
        <input
          class="form-control"
          placeholder="{{ 'lat.`latitude`' | translate }}"
          name="centerLat"
          type="number"
          required
          [(ngModel)]="formConfig.center[0]"
          (change)="changeCenter()"
          (keydown.enter)="changeCenterOnEnterKey($event)"
          min="-90"
          max="90"
          step="0.1"
        />
        <input
          class="form-control"
          placeholder="{{ 'lng.`longitude`' | translate }}"
          name="centerLng"
          type="number"
          required
          min="-180"
          max="180"
          [(ngModel)]="formConfig.center[1]"
          (change)="changeCenter()"
          (keydown.enter)="changeCenterOnEnterKey($event)"
          min="-180"
          max="180"
          step="0.1"
        />
        <div class="input-group-btn">
          <button
            class="btn btn-default"
            [attr.aria-label]="'Use your location' | translate"
            [tooltip]="'Use your location' | translate"
            placement="top"
            container="body"
            (click)="useOwnPosition()"
          >
            <i
              class="icon-14"
              c8yIcon="location-arrow"
            ></i>
          </button>
        </div>
        <div class="input-group-btn">
          @if (canAutoCenter()) {
            <button
              class="btn btn-default"
              [attr.aria-label]="'Use selected asset location' | translate"
              [tooltip]="'Use selected asset location' | translate"
              placement="top"
              container="body"
              (click)="centerToAsset()"
            >
              <i
                class="icon-14"
                c8yIcon="location"
              ></i>
            </button>
          } @else {
            <button
              class="btn btn-default"
              [attr.aria-label]="'Fit to assets bounds' | translate"
              [tooltip]="'Fit to assets bounds' | translate"
              placement="top"
              container="body"
              (click)="fitToBounds()"
            >
              <i
                class="icon-14"
                c8yIcon="waypoint-map"
              ></i>
            </button>
          }
        </div>
      </div>

      <c8y-messages
        [helpMessage]="'Drag the map to the desired position' | translate"
      ></c8y-messages>
    </c8y-form-group>
  </fieldset>

  @if (isPositionedDevice()) {
    <fieldset class="c8y-fieldset">
      <legend>{{ 'Follow' | translate }}</legend>
      <div class="row tight-grid d-flex a-i-center">
        <div class="col-xs-12">
          <div class="form-group form-group-sm m-b-16">
            <label class="c8y-switch c8y-switch--inline">
              <input
                name="follow"
                type="checkbox"
                [(ngModel)]="formConfig.follow"
              />
              <span></span>
              <span
                class="text-12"
                translate
              >
                Follow selected
              </span>
            </label>
          </div>
        </div>
      </div>
    </fieldset>
  }
}

<ng-template #previewMap>
  <div style="width: 100%; height: 100%">
    @if (config.mapConfig) {
      <c8y-map
        [assets]="assets()"
        [config]="config.mapConfig"
        (onMove)="onPreviewMapMove($event)"
        (onZoomStart)="onPreviewZoomStart()"
        (onZoomEnd)="onPreviewZoomEnd($event)"
        (onInit)="previewMapInit($event)"
      ></c8y-map>
    }
  </div>
</ng-template>

results matching ""

    No results matching ""