Skip to content

fix: fix "create media layer" activity #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 23, 2025
Merged
Show file tree
Hide file tree
Changes from 2 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 .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:

- run: cp LICENSE package.json README.md build

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: release
path: build/
Expand Down
8,058 changes: 4,545 additions & 3,513 deletions package-lock.json

Large diffs are not rendered by default.

9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"ArcGIS",
"GIS"
],
"type": "commonjs",
"scripts": {
"build": "vertigis-workflow-sdk build",
"generate": "vertigis-workflow-sdk generate",
Expand All @@ -27,14 +28,16 @@
"start": "vertigis-workflow-sdk start"
},
"dependencies": {
"@arcgis/core": "^4.28.10"
"@arcgis/core": "^4.32.10"
},
"devDependencies": {
"@vertigis/workflow": "5.38.0",
"@vertigis/workflow-sdk": "5.0.0",
"@vertigis/workflow": "^5.45.0",
"@vertigis/workflow-sdk": "^5.0.0",
"conventional-changelog-conventionalcommits": "^7.0.2",
"eslint-plugin-prettier": "^5.1.3",
"prettier": "^3.2.5",
"react": "^18.3.0",
"react-dom": "^18.3.0",
"typescript": "^5.4.3"
},
"browserslist": [
Expand Down
2 changes: 1 addition & 1 deletion src/activities/CreateAreaMeasurement2D.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export default class CreateAreaMeasurement2D implements IActivityHandler {
= await new Promise((resolve) => {
watchHandle = measurementWidget.watch("viewModel.state", function (state: string) {
if (state === "measured") {
resolve(measurementWidget.viewModel.measurement);
resolve(measurementWidget.viewModel.measurement ?? undefined);
} else if (state === "ready") {
resolve(undefined);
}
Expand Down
12 changes: 6 additions & 6 deletions src/activities/CreateAreaMeasurement3D.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,20 @@ interface CreateAreaMeasurement3DInputs {
* @description Unit system (imperial or metric) or specific unit used for area values.
*/
areaUnit?: "metric" | "imperial" | "square-inches" | "square-feet" | "square-us-feet" | "square-yards" | "square-miles" | "square-meters" | "square-kilometers" | "acres" | "ares" | "hectares" | string;

/* eslint-enable @typescript-eslint/no-redundant-type-constituents */
}

interface CreateAreaMeasurement3DOutputs {

mode?: "euclidean" | "geodesic";
area?: {
text: string;
state: string;
text: string | nullish;
state: string | nullish;
};
perimeterLength?: {
text: string;
state: string;
text: string | nullish;
state: string | nullish;
};

}
Expand Down Expand Up @@ -72,7 +72,7 @@ export default class CreateAreaMeasurement3D implements IActivityHandler {
= await new Promise((resolve) => {
watchHandle = measurementWidget.watch("viewModel.state", function (state: string) {
if (state === "measured") {
resolve(measurementWidget.viewModel.measurement);
resolve(measurementWidget.viewModel.measurement ?? undefined);
} else if (state === "ready") {
resolve(undefined);
}
Expand Down
14 changes: 7 additions & 7 deletions src/activities/CreateDirectLineMeasurement3D.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,16 @@ interface CreateDirectLineMeasurement3DOutputs {

measurementMode?: "euclidean" | "geodesic";
directDistance?: {
text: string;
state: string;
text: string | nullish;
state: string | nullish;
};
horizontalDistance?: {
text: string;
state: string;
text: string | nullish;
state: string | nullish;
};
verticalDistance?: {
text: string;
state: string;
text: string | nullish;
state: string | nullish;
};
}

Expand Down Expand Up @@ -76,7 +76,7 @@ export default class CreateDirectLineMeasurement3D implements IActivityHandler {
= await new Promise((resolve) => {
watchHandle = measurementWidget.watch("viewModel.state", function (state: string) {
if (state === "measured") {
resolve(measurementWidget.viewModel.measurement);
resolve(measurementWidget.viewModel.measurement ?? undefined);
} else if (state === "ready") {
resolve(undefined);
}
Expand Down
2 changes: 1 addition & 1 deletion src/activities/CreateDistanceMeasurement2D.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export default class CreateDistanceMeasurement2D implements IActivityHandler {
= await new Promise((resolve) => {
watchHandle = measurementWidget.watch("viewModel.state", function (state: string) {
if (state === "measured") {
resolve(measurementWidget.viewModel.measurement);
resolve(measurementWidget.viewModel.measurement ?? undefined);
} else if (state === "ready") {
resolve(undefined);
}
Expand Down
32 changes: 26 additions & 6 deletions src/activities/CreateMediaLayer.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import type { IActivityHandler } from "@vertigis/workflow";
import MediaLayer from "@arcgis/core/layers/MediaLayer";
import ImageElement from "@arcgis/core/layers/support/ImageElement";
import VideoElement from "@arcgis/core/layers/support/VideoElement";
import LocalMediaElementSource from "@arcgis/core/layers/support/LocalMediaElementSource.js";

interface CreateMediaLayerInputs {
/**
* @description The sources of the media layer.
* @required
*/
source:
| __esri.ImageElement
| __esri.LocalMediaElementSource
| __esri.VideoElement
| any[];
| __esri.ImageElement
| __esri.LocalMediaElementSource
| __esri.VideoElement
| __esri.ImageElementProperties
| __esri.VideoElementProperties
| __esri.LocalMediaElementSourceProperties;
/**
* @description The title of the layer.
*/
Expand Down Expand Up @@ -40,13 +45,28 @@ export default class CreateMediaLayer implements IActivityHandler {
execute(
inputs: CreateMediaLayerInputs,
): CreateMediaLayerOutputs {
const { properties, source, title } = inputs;
let {source } = inputs;
const { properties, title } = inputs;

if (!source) {
throw new Error("source is required");
}

if (!(source instanceof ImageElement ||
source instanceof LocalMediaElementSource ||
source instanceof VideoElement)) {

if ((source as __esri.ImageElementProperties).image) {
source = new ImageElement(source as __esri.ImageElementProperties);
} else if ((source as __esri.VideoElementProperties).video) {
source = new VideoElement(source as __esri.VideoElementProperties);
} else {
source = new LocalMediaElementSource(source as __esri.LocalMediaElementSourceProperties);
}
}

const layer = new MediaLayer({
source,
source: source as __esri.ImageElement | __esri.VideoElement | __esri.LocalMediaElementSource,
title,
...properties,
});
Expand Down
4 changes: 2 additions & 2 deletions src/activities/SelectGraphics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@ export default class SelectGraphics implements IActivityHandler {
resolve(undefined);
}
};
mapView.container.ownerDocument?.addEventListener("keydown", keyDown);
mapView?.container?.ownerDocument?.addEventListener("keydown", keyDown);
});
} finally {
pointerHandle?.remove();
clickHandle?.remove();
highlightHandle?.remove();
if (keyDown) {
mapView.container.ownerDocument?.removeEventListener("keydown", keyDown);
mapView?.container?.ownerDocument?.removeEventListener("keydown", keyDown);
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/activities/SendRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,15 @@ interface SendRequestOutputs {
/**
* Indicates if the request required https.
*/
ssl?: boolean;
ssl?: boolean | nullish;
/**
* The URL used to request the data.
*/
url?: string;
url?: string | nullish;
/**
* Method for getting a header sent from the server.
*/
getHeader?: (headerName: string) => string;
getHeader?: (headerName: string) => string | nullish;
};
}

Expand Down