Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions projects/api/src/lib/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,4 @@ export * from './dropdown-list-filter.model';
export * from './edit-filter-configuration.model';
export * from './unique-values-response.model';
export * from './tileset-3d-style.model';
export * from './layer-export-capabilities.model';
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,10 @@ export class AttributeListContentComponent implements OnInit {
if (!selectedTab || !selectedTab.layerId) {
return of(null);
}
const layerId = selectedTab.layerId;
return forkJoin([
this.simpleAttributeFilterService.getFilterForAttribute$(BaseComponentTypeEnum.ATTRIBUTE_LIST, layerId, $event.columnId).pipe(take(1)),
this.simpleAttributeFilterService.getFiltersExcludingAttribute$(BaseComponentTypeEnum.ATTRIBUTE_LIST, layerId, $event.columnId).pipe(take(1)),
of(layerId),
this.simpleAttributeFilterService.getFilterForAttribute$(BaseComponentTypeEnum.ATTRIBUTE_LIST, selectedTab.layerId, $event.columnId).pipe(take(1)),
this.simpleAttributeFilterService.getFiltersExcludingAttribute$(BaseComponentTypeEnum.ATTRIBUTE_LIST, selectedTab.layerId, $event.columnId).pipe(take(1)),
of(selectedTab),
of(applicationId),
this.columns$.pipe(
take(1),
Expand All @@ -109,16 +108,17 @@ export class AttributeListContentComponent implements OnInit {
if (!result) {
return;
}
const [ attributeFilterModel, otherFilters, layerId, applicationId, attributeAlias ] = result;
if (applicationId === null) {
const [ attributeFilterModel, otherFilters, selectedTab, applicationId, attributeAlias ] = result;
if (applicationId === null || !selectedTab.layerId) {
return;
}
const data: FilterDialogData = {
tabSourceId: selectedTab.tabSourceId,
columnName: $event.columnId,
layerId,
layerId: selectedTab.layerId,
filter: attributeFilterModel,
columnType: $event.attributeType,
cqlFilter: CqlFilterHelper.getFilters(otherFilters).get(layerId),
cqlFilter: CqlFilterHelper.getFilters(otherFilters).get(selectedTab.layerId),
applicationId,
attributeAlias,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
import { AttributeListExportService, SupportedExportFormats } from '../services/attribute-list-export.service';
import { Store } from '@ngrx/store';
import {
selectColumnsForSelectedTab, selectSelectedTab, selectSelectedTabLayerId, selectSortForSelectedTab,
selectColumnsForSelectedTab, selectSelectedTab, selectSortForSelectedTab,
} from '../state/attribute-list.selectors';
import { selectCQLFilters } from '../../../state/filter-state/filter.selectors';
import { selectLayers } from '../../../map/state/map.selectors';
Expand Down Expand Up @@ -37,20 +37,20 @@ export class AttributeListExportButtonComponent implements OnDestroy {
constructor() {
combineLatest([
this.store$.select(selectLayers),
this.store$.select(selectSelectedTabLayerId),
this.store$.select(selectSelectedTab),
])
.pipe(
takeUntil(this.destroyed),
distinctUntilChanged(),
concatMap(([ layers, layerId ]) => {
if (layerId === null) {
concatMap(([ layers, selectedTab ]) => {
if (!selectedTab || selectedTab.layerId === null || typeof selectedTab.layerId === 'undefined') {
return of([]);
}
const layer = layers.find(l => l.id === layerId);
const layer = layers.find(l => l.id === selectedTab.layerId);
if (layer?.hiddenFunctionality?.includes(HiddenLayerFunctionality.export)) {
return of([]);
}
return this.exportService.getExportFormats$(layerId);
return this.exportService.getExportFormats$(selectedTab.tabSourceId, selectedTab.layerId);
}),
)
.subscribe(formats => this.supportedFormatsSubject.next(formats));
Expand All @@ -77,7 +77,7 @@ export class AttributeListExportButtonComponent implements OnDestroy {
}
const filter = filters.get(tab.layerId);
const attributes = columns.filter(c => c.visible).map(c => c.id);
return this.exportService.export$({ layerId: tab.layerId, serviceLayerName: tab.label, format, filter, sort, attributes });
return this.exportService.export$({ tabSourceId: tab.tabSourceId, layerId: tab.layerId, serviceLayerName: tab.label, format, filter, sort, attributes });
}))
.subscribe(() => {
this.isExportingSubject.next(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@ import { render, screen } from '@testing-library/angular';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { AttributeListFilterComponent, FilterDialogData } from './attribute-list-filter.component';
import { SimpleAttributeFilterService } from '../../../filter/services/simple-attribute-filter.service';
import { AttributeType, UniqueValuesService, FilterTypeEnum } from '@tailormap-viewer/api';
import {
AttributeType, UniqueValuesService, FilterTypeEnum, TAILORMAP_API_V1_SERVICE, TailormapApiV1MockService,
} from '@tailormap-viewer/api';
import { SharedModule } from '@tailormap-viewer/shared';
import { AttributeFilterComponent } from '@tailormap-viewer/shared';
import userEvent from '@testing-library/user-event';
import { of } from 'rxjs';
import { ATTRIBUTE_LIST_DEFAULT_SOURCE } from '../models/attribute-list-default-source.const';
import { provideMockStore } from '@ngrx/store/testing';
import { selectAttributeListTabs, selectAttributeListVisible } from '../state/attribute-list.selectors';

describe('AttributeListFilterComponent', () => {

Expand All @@ -18,6 +23,7 @@ describe('AttributeListFilterComponent', () => {
layerId: '1',
columnType: AttributeType.STRING,
applicationId: '1',
tabSourceId: ATTRIBUTE_LIST_DEFAULT_SOURCE,
};
const attributeFilterService = { setFilter: jest.fn(), removeFilter: jest.fn() };
const uniqueValuesService = {
Expand All @@ -29,6 +35,13 @@ describe('AttributeListFilterComponent', () => {
{ provide: MAT_DIALOG_DATA, useValue: dialogData },
{ provide: SimpleAttributeFilterService, useValue: attributeFilterService },
{ provide: UniqueValuesService, useValue: uniqueValuesService },
provideMockStore({
selectors: [
{ selector: selectAttributeListTabs, value: [] },
{ selector: selectAttributeListVisible, value: true },
],
}),
{ provide: TAILORMAP_API_V1_SERVICE, useClass: TailormapApiV1MockService },
],
imports: [SharedModule],
declarations: [AttributeFilterComponent],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { Component, inject, OnInit } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { map, Observable } from 'rxjs';
import { BaseComponentTypeEnum, AttributeType, UniqueValuesService } from '@tailormap-viewer/api';
import { BaseComponentTypeEnum, AttributeType } from '@tailormap-viewer/api';
import { FilterConditionEnum, FilterTypeEnum, AttributeFilterModel } from '@tailormap-viewer/api';
import { SimpleAttributeFilterService } from '../../../filter/services/simple-attribute-filter.service';
import { AttributeFilterHelper } from '@tailormap-viewer/shared';
import { AttributeListManagerService } from '../services/attribute-list-manager.service';

export interface FilterDialogData {
tabSourceId: string;
columnName: string;
layerId: string;
filter: AttributeFilterModel | null;
Expand Down Expand Up @@ -38,7 +40,7 @@ export class AttributeListFilterComponent implements OnInit {
private simpleAttributeFilterService = inject(SimpleAttributeFilterService);
private dialogRef = inject(MatDialogRef<AttributeListFilterComponent>);
private data: FilterDialogData = inject(MAT_DIALOG_DATA);
private uniqueValuesService = inject(UniqueValuesService);
private managerService = inject(AttributeListManagerService);

public ngOnInit(): void {
this.uniqueValues$ = this.getUniqueValues$();
Expand Down Expand Up @@ -73,7 +75,7 @@ export class AttributeListFilterComponent implements OnInit {
}

public getUniqueValues$(): Observable<string[]> {
return this.uniqueValuesService.getUniqueValues$({
return this.managerService.getUniqueValues$(this.data.tabSourceId, {
attribute: this.data.columnName,
layerId: this.data.layerId,
filter: this.data.cqlFilter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,7 @@ export class AttributeListModule {
// Service is instantiated here, watches changes to visible layers to create tabs
//eslint-disable-next-line @angular-eslint/prefer-inject
public attributeListManagerService: AttributeListManagerService,
) {}
) {
this.attributeListManagerService.initDefaultAttributeListSource();
}
}
Loading
Loading