Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# OutSystems Maps · v2.3.0
# OutSystems Maps · v2.3.1

![GitHub License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg) ![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)

Expand Down
2 changes: 1 addition & 1 deletion gulp/DefaultSpecs.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const constants = {

// Store the default project specifications
const specs = {
version: '2.3.0',
version: '2.3.1',
name: 'OutSystems Maps',
description: '',
url: 'Website:\n • ' + constants.websiteUrl,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "outsystems-maps",
"version": "2.3.0",
"version": "2.3.1",
"description": "OutSystems Maps",
"author": "UI Components Team",
"license": "BSD-3-Clause",
Expand Down
9 changes: 8 additions & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,11 @@ sonar.sources=src
sonar.exclusions=**/node_modules/**,**/dist/**,**/*.min.js

# JavaScript/TypeScript settings
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.javascript.lcov.reportPaths=coverage/lcov.info

# Suppress S7764 (prefer globalThis over window) project-wide.
# Runtime-injected browser globals are declared via `interface Window` augmentation
# in Global.d.ts — `window.x` is the only access pattern TypeScript resolves correctly.
sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=typescript:S7764
sonar.issue.ignore.multicriteria.e1.resourceKey=**/*.ts
2 changes: 1 addition & 1 deletion src/OSFramework/Maps/Constants.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// eslint-disable-next-line @typescript-eslint/no-unused-vars
namespace OSFramework.Maps.Constants {
/* OutSystems Maps Version */
export const OSMapsVersion = '2.3.0';
export const OSMapsVersion = '2.3.1';

/**
* Maps Set OutSystems platform in use (O11/ODC).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ namespace Provider.DrawingTools.TerraDraw.Configuration {
public allowDrag: boolean;
public uniqueId: string;

public abstract getProviderConfig(): unknown[];
public abstract getProviderConfig(): unknown;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace Provider.DrawingTools.TerraDraw.Configuration {
* strokeWeight → styles.outlineWidth
* strokeOpacity → styles.outlineOpacity
*/
public getProviderConfig(): unknown[] {
public getProviderConfig(): unknown {
return {
styles: {
fillColor: this.fillColor ?? '#aaaaaa',
Expand All @@ -26,7 +26,7 @@ namespace Provider.DrawingTools.TerraDraw.Configuration {
outlineWidth: this.strokeWeight ?? 2,
outlineOpacity: this.strokeOpacity ?? 1,
},
} as unknown as unknown[];
};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ namespace Provider.DrawingTools.TerraDraw.Configuration {
export class DrawMarkerConfig extends DrawConfig {
public iconUrl: string;

public getProviderConfig(): unknown[] {
public getProviderConfig(): unknown {
return {
styles: {
markerUrl: this.iconUrl ?? '',
},
} as unknown as unknown[];
};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ namespace Provider.DrawingTools.TerraDraw.Configuration {
* strokeOpacity → styles.lineStringOpacity
*/
export class DrawPolylineConfig extends DrawBasicShapeConfig {
public getProviderConfig(): unknown[] {
public getProviderConfig(): unknown {
return {
styles: {
lineStringColor: this.strokeColor ?? '#555555',
lineStringWidth: this.strokeWeight ?? 2,
lineStringOpacity: this.strokeOpacity ?? 1,
},
} as unknown as unknown[];
};
}
}
}
33 changes: 19 additions & 14 deletions src/Providers/DrawingTools/TerraDraw/DrawingTools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

// Always include a select mode so the user can deselect drawing without reloading
modes.push(
new globalThis.terraDraw.TerraDrawSelectMode({
new window.terraDraw.TerraDrawSelectMode({

Check warning on line 38 in src/Providers/DrawingTools/TerraDraw/DrawingTools.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8rnELRW8fho_1S&open=AZ3Olx8rnELRW8fho_1S&pullRequest=260
flags: {
circle: { feature: { draggable: true } },
linestring: {
Expand Down Expand Up @@ -67,14 +67,14 @@
* support hot-swapping modes, so the entire instance must be replaced.
*/
private _buildTerraDraw(): void {
if (this._provider) {
if (this._provider?.enabled) {
this._provider.stop();
}

this._provider = new globalThis.terraDraw.TerraDraw({
this._provider = new window.terraDraw.TerraDraw({

Check warning on line 74 in src/Providers/DrawingTools/TerraDraw/DrawingTools.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8rnELRW8fho_1U&open=AZ3Olx8rnELRW8fho_1U&pullRequest=260
adapter: this._getAdapter(),
modes: this._buildModes(),
}) as TerraDrawProviderCompatible;
});

this._provider.on('finish', (id, context) => this._onFinish(id, context));

Expand All @@ -93,7 +93,7 @@

private _getAdapter(): TerraDrawGoogleMapsAdapter {
if (this.config.providerType === OSFramework.Maps.Enum.ProviderType.Google) {
return new globalThis.terraDrawGoogleMapsAdapter.TerraDrawGoogleMapsAdapter({
return new window.terraDrawGoogleMapsAdapter.TerraDrawGoogleMapsAdapter({

Check warning on line 96 in src/Providers/DrawingTools/TerraDraw/DrawingTools.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8rnELRW8fho_1V&open=AZ3Olx8rnELRW8fho_1V&pullRequest=260
map: this.map.provider as google.maps.Map,
lib: google.maps,
coordinatePrecision: 9,
Expand Down Expand Up @@ -196,9 +196,9 @@
}

public changeProperty(propertyName: string, value: unknown): void {
const propValue = OSFramework.Maps.Enum.OS_Config_DrawingTools[propertyName];
super.changeProperty(propertyName, value);
if (this.isReady) {
const propValue = OSFramework.Maps.Enum.OS_Config_DrawingTools[propertyName];
if (propValue === OSFramework.Maps.Enum.OS_Config_DrawingTools.position) {
const modeNames = this.tools.map((t) => t.type);
this._ui?.refresh(modeNames, value as string);
Expand All @@ -208,10 +208,13 @@

public dispose(): void {
if (this.isReady) {
// Resets the mouse icon to its default state.
// This prevents the tool's custom mouse icon from persisting after the provider is destroyed.
this._provider.setMode(Constants.ModeName.Select);
this._provider.stop();
// If the provider is not enabled, it means that it was never started.
if (this.provider.enabled) {
// Resets the mouse icon to its default state.
// This prevents the tool's custom mouse icon from persisting after the provider is destroyed.
this._provider.setMode(Constants.ModeName.Select);
this._provider.stop();
}
this._ui?.dispose();
}
this._provider = undefined;
Expand All @@ -235,10 +238,12 @@
tool && this._modeToTool.delete(tool.type);

if (this.isReady) {
// Resets the mouse icon to its default state.
// This prevents the tool's custom mouse icon from persisting after the provider is destroyed.
this._provider.setMode(Constants.ModeName.Select);

// If the provider is not enabled, it means that it was never started.
if (this.provider.enabled) {
// Resets the mouse icon to its default state.
// This prevents the tool's custom mouse icon from persisting after the provider is destroyed.
this._provider.setMode(Constants.ModeName.Select);
}
this._buildTerraDraw();

this._provider.start();
Expand Down
4 changes: 3 additions & 1 deletion src/Providers/DrawingTools/TerraDraw/Tools/DrawCircle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,9 @@
}

public createTerraDrawMode(): TerraDrawBaseDrawMode {
return new globalThis.terraDraw.TerraDrawCircleMode(this.config.getProviderConfig());
return new window.terraDraw.TerraDrawCircleMode(

Check warning on line 91 in src/Providers/DrawingTools/TerraDraw/Tools/DrawCircle.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8dnELRW8fho_1Q&open=AZ3Olx8dnELRW8fho_1Q&pullRequest=260
this.config.getProviderConfig() as ConstructorParameters<typeof window.terraDraw.TerraDrawCircleMode>[0]

Check warning on line 92 in src/Providers/DrawingTools/TerraDraw/Tools/DrawCircle.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8dnELRW8fho_1R&open=AZ3Olx8dnELRW8fho_1R&pullRequest=260
);
}
}
}
4 changes: 3 additions & 1 deletion src/Providers/DrawingTools/TerraDraw/Tools/DrawMarker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,9 @@
}

public createTerraDrawMode(): TerraDrawBaseDrawMode {
return new globalThis.terraDraw.TerraDrawMarkerMode(this.config.getProviderConfig());
return new window.terraDraw.TerraDrawMarkerMode(

Check warning on line 92 in src/Providers/DrawingTools/TerraDraw/Tools/DrawMarker.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8QnELRW8fho_1O&open=AZ3Olx8QnELRW8fho_1O&pullRequest=260
this.config.getProviderConfig() as ConstructorParameters<typeof window.terraDraw.TerraDrawMarkerMode>[0]

Check warning on line 93 in src/Providers/DrawingTools/TerraDraw/Tools/DrawMarker.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8QnELRW8fho_1P&open=AZ3Olx8QnELRW8fho_1P&pullRequest=260
);
}
}
}
6 changes: 5 additions & 1 deletion src/Providers/DrawingTools/TerraDraw/Tools/DrawPolygon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@
}

public createTerraDrawMode(): TerraDrawBaseDrawMode {
return new globalThis.terraDraw.TerraDrawPolygonMode(this.config.getProviderConfig());
return new window.terraDraw.TerraDrawPolygonMode(

Check warning on line 44 in src/Providers/DrawingTools/TerraDraw/Tools/DrawPolygon.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx8EnELRW8fho_1M&open=AZ3Olx8EnELRW8fho_1M&pullRequest=260
this.config.getProviderConfig() as ConstructorParameters<
typeof window.terraDraw.TerraDrawPolygonMode

Check warning on line 46 in src/Providers/DrawingTools/TerraDraw/Tools/DrawPolygon.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3OwjtWeoPjfIBUlaID&open=AZ3OwjtWeoPjfIBUlaID&pullRequest=260
>[0]
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@
}

public createTerraDrawMode(): TerraDrawBaseDrawMode {
return new globalThis.terraDraw.TerraDrawLineStringMode(this.config.getProviderConfig());
return new window.terraDraw.TerraDrawLineStringMode(

Check warning on line 44 in src/Providers/DrawingTools/TerraDraw/Tools/DrawPolyline.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx74nELRW8fho_1K&open=AZ3Olx74nELRW8fho_1K&pullRequest=260
this.config.getProviderConfig() as ConstructorParameters<
typeof window.terraDraw.TerraDrawLineStringMode

Check warning on line 46 in src/Providers/DrawingTools/TerraDraw/Tools/DrawPolyline.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3OwjtHeoPjfIBUlaIC&open=AZ3OwjtHeoPjfIBUlaIC&pullRequest=260
>[0]
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@
}

public createTerraDrawMode(): TerraDrawBaseDrawMode {
return new globalThis.terraDraw.TerraDrawRectangleMode(this.config.getProviderConfig());
return new window.terraDraw.TerraDrawRectangleMode(

Check warning on line 68 in src/Providers/DrawingTools/TerraDraw/Tools/DrawRectangle.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx44nELRW8fho_1I&open=AZ3Olx44nELRW8fho_1I&pullRequest=260
this.config.getProviderConfig() as ConstructorParameters<
typeof window.terraDraw.TerraDrawRectangleMode

Check warning on line 70 in src/Providers/DrawingTools/TerraDraw/Tools/DrawRectangle.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3OwjpceoPjfIBUlaIB&open=AZ3OwjpceoPjfIBUlaIB&pullRequest=260
>[0]
);
}
}
}
6 changes: 3 additions & 3 deletions src/Providers/Layers/deck.gl/HeatmapLayer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
...(gradientColors ? { colorRange: gradientColors } : {}),
// Id that enables the deck.gl to perform the update to the layer.
id: this.uniqueId,
} as ConstructorParameters<typeof globalThis.deck.HeatmapLayer>[0];
} as ConstructorParameters<typeof window.deck.HeatmapLayer>[0];

Check warning on line 27 in src/Providers/Layers/deck.gl/HeatmapLayer.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx86nELRW8fho_1W&open=AZ3Olx86nELRW8fho_1W&pullRequest=260

return new globalThis.deck.HeatmapLayer(finalConfigs);
return new window.deck.HeatmapLayer(finalConfigs);

Check warning on line 29 in src/Providers/Layers/deck.gl/HeatmapLayer.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx86nELRW8fho_1X&open=AZ3Olx86nELRW8fho_1X&pullRequest=260
}

private _gradientColors(): DeckglColor[] | undefined {
Expand Down Expand Up @@ -75,7 +75,7 @@
// Creates the provider HeatmapLayer
this._providerHeatmapLayer = this._buildProviderLayer();

this._provider = new globalThis.deck.GoogleMapsOverlay({
this._provider = new window.deck.GoogleMapsOverlay({

Check warning on line 78 in src/Providers/Layers/deck.gl/HeatmapLayer.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=OutSystems_outsystems-maps&issues=AZ3Olx86nELRW8fho_1Y&open=AZ3Olx86nELRW8fho_1Y&pullRequest=260
layers: [this._providerHeatmapLayer],
});

Expand Down
2 changes: 1 addition & 1 deletion src/Providers/Maps/Google/Shape/Polygon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace Provider.Maps.Google.Shape {
protected _createProvider(path: Array<OSFramework.Maps.OSStructures.OSMap.Coordinates>): google.maps.Polygon {
return new google.maps.Polygon({
map: this.map.provider,
paths: path,
paths: path as google.maps.LatLngLiteral[],
...(this.getProviderConfig() as Configuration.Shape.IShapeProviderConfig),
});
}
Expand Down
Loading