diff --git a/app/models/task.py b/app/models/task.py index 61c5c615..530de0b0 100644 --- a/app/models/task.py +++ b/app/models/task.py @@ -156,6 +156,7 @@ class Task(models.Model): 'deferred_path': 'orthophoto_tiles.zip', 'deferred_compress_dir': 'orthophoto_tiles' }, + 'cameras.json': 'cameras.json', } STATUS_CODES = ( diff --git a/app/static/app/js/classes/AssetDownloads.js b/app/static/app/js/classes/AssetDownloads.js index c8cbf96a..948ad450 100644 --- a/app/static/app/js/classes/AssetDownloads.js +++ b/app/static/app/js/classes/AssetDownloads.js @@ -44,6 +44,7 @@ const api = { new AssetDownload("Point Cloud (PLY)","georeferenced_model.ply","fa fa-cube"), new AssetDownload("Point Cloud (CSV)","georeferenced_model.csv","fa fa-cube"), new AssetDownload("Textured Model","textured_model.zip","fa fa-connectdevelop"), + new AssetDownload("Camera Parameters","cameras.json","fa fa-camera"), new AssetDownloadSeparator(), new AssetDownload("All Assets","all.zip","fa fa-file-archive-o") ]; diff --git a/app/static/app/js/components/EditTaskForm.jsx b/app/static/app/js/components/EditTaskForm.jsx index 9a603621..6026ee9c 100644 --- a/app/static/app/js/components/EditTaskForm.jsx +++ b/app/static/app/js/components/EditTaskForm.jsx @@ -13,6 +13,7 @@ class EditTaskForm extends React.Component { selectedNode: null, task: null, onFormChanged: () => {}, + inReview: false }; static propTypes = { @@ -22,6 +23,7 @@ class EditTaskForm extends React.Component { ]), onFormLoaded: PropTypes.func, onFormChanged: PropTypes.func, + inReview: PropTypes.bool, task: PropTypes.object }; @@ -323,7 +325,9 @@ class EditTaskForm extends React.Component { getAvailableOptionsOnlyText(options, availableOptions){ const opts = this.getAvailableOptionsOnly(options, availableOptions); - return opts.map(opt => `${opt.name}:${opt.value}`).join(", "); + let res = opts.map(opt => `${opt.name}:${opt.value}`).join(", "); + if (!res) res = "Default"; + return res; } saveLastPresetToStorage(){ @@ -479,6 +483,49 @@ class EditTaskForm extends React.Component { let taskOptions = ""; if (this.formReady()){ + const optionsSelector = (
+ + + {!this.state.presetActionPerforming ? +
+ + + +
+ : } + +
); + taskOptions = (
@@ -494,46 +541,10 @@ class EditTaskForm extends React.Component {
- - - {!this.state.presetActionPerforming ? -
- - - -
- : } - + {!this.props.inReview ? optionsSelector : +
+ {this.getAvailableOptionsOnlyText(this.state.selectedPreset.options, this.state.selectedNode.options)} +
}
diff --git a/app/static/app/js/components/NewTaskPanel.jsx b/app/static/app/js/components/NewTaskPanel.jsx index ea22a93f..d7ae95a0 100644 --- a/app/static/app/js/components/NewTaskPanel.jsx +++ b/app/static/app/js/components/NewTaskPanel.jsx @@ -121,6 +121,7 @@ class NewTaskPanel extends React.Component { { if (domNode) this.taskForm = domNode; }} /> diff --git a/app/static/app/js/css/EditTaskForm.scss b/app/static/app/js/css/EditTaskForm.scss index 8bad7aec..521abf59 100644 --- a/app/static/app/js/css/EditTaskForm.scss +++ b/app/static/app/js/css/EditTaskForm.scss @@ -13,5 +13,10 @@ .system-preset{ background-color: #eee; - } + } + + .review-options{ + margin-top: 10px; + margin-bottom: 14px; + } } \ No newline at end of file diff --git a/dev-worker.sh b/dev-worker.sh new file mode 100755 index 00000000..4deb5721 --- /dev/null +++ b/dev-worker.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Launch a development worker so that changes in a dev +# environment can be refreshed + +docker stop worker +docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --entrypoint bash worker