Skip to content

Task details#369

Merged
dfguerrerom merged 10 commits intomasterfrom
task-details
Mar 12, 2026
Merged

Task details#369
dfguerrerom merged 10 commits intomasterfrom
task-details

Conversation

@dfguerrerom
Copy link
Contributor

@dfguerrerom dfguerrerom commented Mar 10, 2026

Continuation of #363.

I've created this new PR because the other became dirty due to all the new features in master. This is a clean continuation.

update:

  • removed the workspace destination filesystem lock, now we will rely on a check in the current (pending/active) tasks to avoid conflicts.
  • made some refactoring to the AssetDestionation/workspaceDestination panels so they are deactivated until the check is done.

@dfguerrerom dfguerrerom mentioned this pull request Mar 10, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR continues #363 by adding a task details UI and related backend endpoint, while also standardizing how “retrieve” tasks are submitted across recipes (including new output-path metadata and a new filename prefix for SEPAL exports). It additionally adds UI-side validation for SEPAL workspace destinations by listing directory contents and recognizing “pending export” markers.

Changes:

  • Add a TaskDetails modal (GUI) + /api/tasks/task/{id}/details endpoint (server) to display richer task metadata.
  • Standardize retrieve task submission via a shared recipeTaskSubmitter, including taskInfo (destination/output path) and Drive folder handling.
  • Add SEPAL export filenamePrefix and UI validation of destination folders; introduce .task_pending marker creation/removal for SEPAL exports.

Reviewed changes

Copilot reviewed 40 out of 40 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
modules/user-files/src/filesystem.js Adds count to listFiles response to support UI validation.
modules/task/src/tasks/timeSeriesSepalExport.js Updates params shape, adds filename prefix handling, and creates/removes .task_pending marker.
modules/task/src/tasks/imageSepalExport.js Adds filename prefix support and .task_pending marker handling for SEPAL image exports.
modules/task/src/tasks/imageDriveExport.js Switches Drive export folder source to task-provided folder name.
modules/task/src/tasks/ccdcAssetExport.js Adjusts CCDC export submit signature to new {image, description} params structure.
modules/task/src/rxjs/fileSystem.js Introduces createLock$/releaseLock$ utilities for .task_pending markers.
modules/task/src/jobs/export/toSepal.js Extracts Drive path helper into shared utility.
modules/task/src/jobs/export/toDrive.js Uses shared Drive path helper.
modules/task/src/jobs/export/driveUtils.js New shared drivePath utility.
modules/sepal-server/src/main/groovy/org/openforis/sepal/component/task/endpoint/TaskEndpoint.groovy Adds /tasks/task/{id}/details endpoint.
modules/gui/src/widget/workspaceDestination.jsx Adds debounced server-side folder listing to validate SEPAL destination emptiness/pending tasks.
modules/gui/src/app/home/body/tasks/tasks.jsx Opens TaskDetails modal on task click; updates click handling to avoid propagation issues.
modules/gui/src/app/home/body/tasks/taskDetails.module.css New styling for TaskDetails modal layout.
modules/gui/src/app/home/body/tasks/taskDetails.jsx New modal that loads task details and renders status/config/location/progress sections.
modules/gui/src/app/home/body/process/recipe/unsupervisedClassification/unsupervisedClassificationRecipe.js Migrates retrieve submission to shared submitter and custom band selection.
modules/gui/src/app/home/body/process/recipe/timeSeries/timeSeriesRecipe.js Updates time series task submission to include image wrapper + taskInfo.
modules/gui/src/app/home/body/process/recipe/stack/stackRecipe.js Migrates retrieve submission to shared submitter.
modules/gui/src/app/home/body/process/recipe/remapping/remappingRecipe.js Migrates retrieve submission to shared submitter with pyramiding policy.
modules/gui/src/app/home/body/process/recipe/regression/regressionRecipe.js Migrates retrieve submission to shared submitter and custom band selection.
modules/gui/src/app/home/body/process/recipe/recipeTaskSubmitter.js New shared helper to build/submit retrieve tasks consistently across recipes.
modules/gui/src/app/home/body/process/recipe/recipeOutputPath.js New helper to compute outputPath + taskInfo (destination, sharing, filenamePrefix).
modules/gui/src/app/home/body/process/recipe/radarMosaic/radarMosaicRecipe.js Migrates retrieve submission to shared submitter with RADAR dataset tagging.
modules/gui/src/app/home/body/process/recipe/planetMosaic/planetMosaicRecipe.js Migrates retrieve submission to shared submitter with PLANET dataset tagging.
modules/gui/src/app/home/body/process/recipe/phenology/phenologyRecipe.js Migrates retrieve submission to shared submitter with OPTICAL dataset tagging.
modules/gui/src/app/home/body/process/recipe/opticalMosaic/opticalMosaicRecipe.js Migrates retrieve submission to shared submitter with visualization filtering.
modules/gui/src/app/home/body/process/recipe/mosaic/panels/retrieve/retrievePanel.jsx Adds filenamePrefix field and defaults it from recipe title/placeholder.
modules/gui/src/app/home/body/process/recipe/masking/maskingRecipe.js Migrates retrieve submission to shared submitter with change-based pyramiding policy.
modules/gui/src/app/home/body/process/recipe/indexChange/indexChangeRecipe.js Migrates retrieve submission to shared submitter with change-based pyramiding policy.
modules/gui/src/app/home/body/process/recipe/classification/classificationRecipe.js Migrates retrieve submission to shared submitter with class-based pyramiding policy.
modules/gui/src/app/home/body/process/recipe/classChange/classChangeRecipe.js Migrates retrieve submission to shared submitter with transition-based pyramiding policy.
modules/gui/src/app/home/body/process/recipe/changeAlerts/changeAlertsRecipe.js Migrates retrieve submission to shared submitter with sample pyramiding policy.
modules/gui/src/app/home/body/process/recipe/ccdcSlice/ccdcSliceRecipe.js Migrates retrieve submission to shared submitter with custom band selection.
modules/gui/src/app/home/body/process/recipe/ccdc/ccdcRecipe.js Updates CCDC GEE task submission to include image wrapper + taskInfo.
modules/gui/src/app/home/body/process/recipe/baytsHistorical/baytsHistoricalRecipe.js Migrates retrieve submission to shared submitter with custom band selection.
modules/gui/src/app/home/body/process/recipe/baytsAlerts/baytsAlertsRecipe.js Migrates retrieve submission to shared submitter with sample pyramiding policy.
modules/gui/src/app/home/body/process/recipe/bandMath/bandMathRecipe.js Migrates retrieve submission to shared submitter.
modules/gui/src/app/home/body/process/recipe/asset/assetRecipe.js Migrates retrieve submission to shared submitter with RADAR dataset tagging.
modules/gui/src/api/userFiles.js Adds listFiles$ API call for workspace validation.
modules/gui/src/api/tasks.js Adds loadDetails$ API call for TaskDetails modal.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dfguerrerom dfguerrerom marked this pull request as ready for review March 12, 2026 13:27
@dfguerrerom
Copy link
Contributor Author

@copilot I've just made the refactoring. LGTM.

Copy link

Copilot AI commented Mar 12, 2026

@dfguerrerom I've opened a new pull request, #370, to work on those changes. Once the pull request is ready, I'll request review from you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

THe exportation files are not using the required name but the name of the recipe

3 participants