diff --git a/backend/toolshed/migrations/0024_workflowinstance_current_step.py b/backend/toolshed/migrations/0024_workflowinstance_current_step.py new file mode 100644 index 0000000..6e69f8a --- /dev/null +++ b/backend/toolshed/migrations/0024_workflowinstance_current_step.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.2 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('toolshed', '0023_remove_storagelocation_storagelocation_unique_owner_scoped_id_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='workflowinstance', + name='current_step', + field=models.PositiveIntegerField(default=1), + ), + ] diff --git a/backend/toolshed/models.py b/backend/toolshed/models.py index 9989cba..65de960 100644 --- a/backend/toolshed/models.py +++ b/backend/toolshed/models.py @@ -236,6 +236,7 @@ class StorageLocation(models.Model): class WorkflowInstance(models.Model): slug = models.CharField(max_length=255) state = models.CharField(max_length=255) + current_step = models.PositiveIntegerField(default=1) payload = models.TextField(default='', blank=True) # an opaque, frontend-serialized JSON string on the backend. owner = models.ForeignKey(ToolshedUser, on_delete=models.CASCADE, related_name='workflows') staged_files = models.ManyToManyField(File, related_name='staged_by_workflows', blank=True) diff --git a/backend/toolshed/serializers.py b/backend/toolshed/serializers.py index 586e958..07f60b9 100644 --- a/backend/toolshed/serializers.py +++ b/backend/toolshed/serializers.py @@ -319,7 +319,7 @@ class WorkflowInstanceSerializer(serializers.ModelSerializer): class Meta: model = WorkflowInstance - fields = ['id', 'slug', 'state', 'payload', 'owner', 'staged_files', 'created_at', 'updated_at'] + fields = ['id', 'slug', 'state', 'current_step', 'payload', 'owner', 'staged_files', 'created_at', 'updated_at'] read_only_fields = ['owner', 'staged_files', 'created_at', 'updated_at'] def get_staged_files(self, obj): diff --git a/frontend/src/components/workflow/workflows/FotoFirstCompletedItemCard.vue b/frontend/src/components/workflow/workflows/FotoFirstCompletedItemCard.vue new file mode 100644 index 0000000..cfc28bd --- /dev/null +++ b/frontend/src/components/workflow/workflows/FotoFirstCompletedItemCard.vue @@ -0,0 +1,73 @@ + + + diff --git a/frontend/src/components/workflow/workflows/FotoFirstFieldInput.vue b/frontend/src/components/workflow/workflows/FotoFirstFieldInput.vue new file mode 100644 index 0000000..3f8291e --- /dev/null +++ b/frontend/src/components/workflow/workflows/FotoFirstFieldInput.vue @@ -0,0 +1,73 @@ + + + diff --git a/frontend/src/workflows.js b/frontend/src/workflows.js index 9a3f436..0d392f8 100644 --- a/frontend/src/workflows.js +++ b/frontend/src/workflows.js @@ -45,7 +45,6 @@ export function buildWorkflowApiPayload(workflow) { slug: workflow.slug, state: 'running', current_step: 1, - total_steps: workflow.stepDefinitions.length, payload: { ...ownPayload }