diff --git a/app/api/tasks.py b/app/api/tasks.py index 99b3ec57..c4e12d75 100644 --- a/app/api/tasks.py +++ b/app/api/tasks.py @@ -52,6 +52,7 @@ class TaskSerializer(serializers.ModelSerializer): processing_node_name = serializers.SerializerMethodField() can_rerun_from = serializers.SerializerMethodField() statistics = serializers.SerializerMethodField() + extent = serializers.SerializerMethodField() tags = TagsField(required=False) def get_processing_node_name(self, obj): @@ -82,6 +83,16 @@ class TaskSerializer(serializers.ModelSerializer): return [] + def get_extent(self, obj): + if obj.orthophoto_extent is not None: + return obj.orthophoto_extent.extent + elif obj.dsm_extent is not None: + return obj.dsm_extent.extent + elif obj.dtm_extent is not None: + return obj.dsm_extent.extent + else: + return None + class Meta: model = models.Task exclude = ('orthophoto_extent', 'dsm_extent', 'dtm_extent', ) @@ -93,7 +104,7 @@ class TaskViewSet(viewsets.ViewSet): A task represents a set of images and other input to be sent to a processing node. Once a processing node completes processing, results are stored in the task. """ - queryset = models.Task.objects.all().defer('orthophoto_extent', 'dsm_extent', 'dtm_extent', ) + queryset = models.Task.objects.all().defer('dsm_extent', 'dtm_extent', ) parser_classes = (parsers.MultiPartParser, parsers.JSONParser, parsers.FormParser, ) ordering_fields = '__all__' diff --git a/app/static/app/js/components/MapPreview.jsx b/app/static/app/js/components/MapPreview.jsx index dbfc9e8a..ac65e58e 100644 --- a/app/static/app/js/components/MapPreview.jsx +++ b/app/static/app/js/components/MapPreview.jsx @@ -526,6 +526,10 @@ _('Example:'), })); } + setAlignmentPolygon = (task) => { + console.log(task.extent) + } + download = format => { let output = ""; let filename = `images.${format}`; diff --git a/app/static/app/js/components/NewTaskPanel.jsx b/app/static/app/js/components/NewTaskPanel.jsx index 9ea64ed7..0c9189fc 100644 --- a/app/static/app/js/components/NewTaskPanel.jsx +++ b/app/static/app/js/components/NewTaskPanel.jsx @@ -184,6 +184,13 @@ class NewTaskPanel extends React.Component { handleAlignToChanged = e => { this.setState({alignTo: e.target.value}); + if (this.mapPreview){ + if (e.target.value !== "auto"){ + this.mapPreview.setAlignmentPolygon(this.state.alignTasks.find(t => t.id === e.target.value)); + }else{ + this.mapPreview.setAlignmentPolygon(null); + } + } setTimeout(() => { this.handleFormChanged();