Skip to content

Commit

Permalink
Update backend to provide more useful info to frontend (#866)
Browse files Browse the repository at this point in the history
  • Loading branch information
srimanachanta authored Jun 26, 2023
1 parent 7593c5e commit 715ef62
Show file tree
Hide file tree
Showing 17 changed files with 838 additions and 485 deletions.
2 changes: 1 addition & 1 deletion photon-client/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ export default {
this.previouslySelectedIndices = null;
},
switchToSettingsTab() {
this.axios.post('http://' + this.$address + '/api/sendMetrics', {})
this.axios.post('http://' + this.$address + '/api/utils/publishMetrics')
}
}
};
Expand Down
56 changes: 43 additions & 13 deletions photon-client/src/components/pipeline/CameraAndPipelineSelect.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
<template>
<div>
<v-snackbar
v-model="snack"
top
:color="snackbar.color"
:timeout="2000"
>
<span>{{ snackbar.text }}</span>
</v-snackbar>
<v-row
align="center"
style="padding: 12px 12px 12px 24px"
Expand Down Expand Up @@ -269,7 +277,12 @@ export default {
duplicateDialog: false,
showPipeTypeDialog: false,
proposedPipelineType : 0,
pipeIndexToDuplicate: undefined
pipeIndexToDuplicate: undefined,
snack: false,
snackbar: {
color: "success",
text: "",
}
}
},
computed: {
Expand Down Expand Up @@ -347,16 +360,37 @@ export default {
},
saveCameraNameChange() {
if (this.checkCameraName === "") {
// this.handleInputWithIndex("changeCameraName", this.newCameraName);
this.axios.post('http://' + this.$address + '/api/setCameraNickname',
this.axios.post('http://' + this.$address + '/api/settings/camera/setNickname',
{name: this.newCameraName, cameraIndex: this.$store.getters.currentCameraIndex})
// eslint-disable-next-line
.then(r => {
this.$emit('camera-name-changed')
.then(response => {
this.$emit('camera-name-changed')
this.snackbar = {
color: "success",
text: response.data.text || response.data
}
this.snack = true;
})
.catch(e => {
console.log("HTTP error while changing camera name " + e);
this.$emit('camera-name-changed')
.catch(error => {
this.$emit('camera-name-changed')
if(error.response) {
this.snackbar = {
color: "error",
text: error.response.data.text || error.response.data
}
} else if(error.request) {
this.snackbar = {
color: "error",
text: "Error while trying to process the request! The backend didn't respond.",
};
} else {
this.snackbar = {
color: "error",
text: "An error occurred while trying to process the request.",
};
}
this.snack = true;
})
this.discardCameraNameChange();
}
Expand Down Expand Up @@ -404,7 +438,3 @@ export default {
}
</script>

<style scoped>
</style>
99 changes: 53 additions & 46 deletions photon-client/src/views/CamerasView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@
<v-col>
<v-btn
color="secondary"
:disabled="isCalibrating"
small
style="width: 100%;"
@click="$refs.importCalibrationFromCalibdb.click()"
Expand Down Expand Up @@ -330,7 +331,7 @@
style="border-radius: 5px;"
/>
<v-dialog
v-model="snack"
v-model="calibrationDialog"
width="500px"
:persistent="true"
>
Expand Down Expand Up @@ -399,12 +400,12 @@
>

<v-snackbar
v-model="uploadSnack"
v-model="snack"
top
:color="uploadSnackData.color"
timeout="-1"
:color="snackbar.color"
timeout="2000"
>
<span>{{ uploadSnackData.text }}</span>
<span>{{ snackbar.text }}</span>
</v-snackbar>
</div>
</template>
Expand All @@ -431,17 +432,17 @@ export default {
},
data() {
return {
snack: false,
calibrationDialog: false,
calibrationInProgress: false,
calibrationFailed: false,
filteredVideomodeIndex: 0,
settingsValid: true,
unfilteredStreamDivisors: [1, 2, 4],
uploadSnackData: {
snackbar: {
color: "success",
text: "",
},
uploadSnack: false,
snack: false,
}
},
computed: {
Expand Down Expand Up @@ -617,43 +618,34 @@ export default {
};
this.axios
.post("http://" + this.$address + "/api/calibration/import", data, {
.post("http://" + this.$address + "/api/calibration/importFromCalibDB", data, {
headers: { "Content-Type": "text/plain" },
})
.then(() => {
this.uploadSnackData = {
color: "success",
text:
"Calibration imported successfully!",
};
this.uploadSnack = true;
.then((response) => {
this.snackbar = {
color: response.status === 200 ? "success" : "error",
text: response.data.text || response.data
}
this.snack = true;
})
.catch((err) => {
if (err.response) {
this.uploadSnackData = {
if (err.request) {
this.snackbar = {
color: "error",
text:
"Error while uploading calibration file! Could not process provided file.",
};
} else if (err.request) {
this.uploadSnackData = {
color: "error",
text:
"Error while uploading calibration file! No respond to upload attempt.",
text: "Error while uploading calibration file! The backend didn't respond to the upload attempt.",
};
} else {
this.uploadSnackData = {
this.snackbar = {
color: "error",
text: "Error while uploading calibration file!",
};
}
this.uploadSnack = true;
this.snack = true;
});
})
},
closeDialog() {
this.snack = false;
this.calibrationDialog = false;
this.calibrationInProgress = false;
this.calibrationFailed = false;
},
Expand Down Expand Up @@ -747,15 +739,33 @@ export default {
doc.save(`calibrationTarget-${config.type}.pdf`)
},
sendCameraSettings() {
this.axios.post("http://" + this.$address + "/api/settings/camera", {
"settings": this.cameraSettings,
"index": this.$store.state.currentCameraIndex
}).then(response => {
if (response.status === 200) {
this.$store.state.saveBar = true;
this.axios.post("http://" + this.$address + "/api/settings/camera", {"settings": this.cameraSettings, "index": this.$store.state.currentCameraIndex})
.then(response => {
this.snackbar = {
color: "success",
text: response.data.text || response.data
}
this.snack = true;
})
.catch(error => {
if(error.response) {
this.snackbar = {
color: "error",
text: error.response.data.text || error.response.data
}
}
)
} else if(error.request) {
this.snackbar = {
color: "error",
text: "Error while trying to process the request! The backend didn't respond.",
};
} else {
this.snackbar = {
color: "error",
text: "An error occurred while trying to process the request.",
};
}
this.snack = true;
})
},
isCalibrated(resolution) {
return this.$store.getters.currentCameraSettings.calibrations
Expand All @@ -782,16 +792,13 @@ export default {
sendCalibrationFinish() {
console.log("finishing calibration for index " + this.$store.getters.currentCameraIndex);
this.snack = true;
this.calibrationDialog = true;
this.calibrationInProgress = true;
this.axios.post("http://" + this.$address + "/api/settings/endCalibration", {idx: this.$store.getters.currentCameraIndex})
.then((response) => {
if (response.status === 200) {
this.calibrationInProgress = false;
} else {
this.calibrationFailed = true;
}
this.axios.post("http://" + this.$address + "/api/calibration/end", {index: this.$store.getters.currentCameraIndex})
.then(() => {
// End calibration will always return a 200 code on success
this.calibrationInProgress = false;
}
).catch(() => {
this.calibrationFailed = true;
Expand Down
2 changes: 1 addition & 1 deletion photon-client/src/views/LogsView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<a
ref="exportLogFile"
style="color: black; text-decoration: none; display: none"
:href="'http://' + this.$address + '/api/settings/photonvision-journalctl.txt'"
:href="'http://' + this.$address + '/api/utils/logs/photonvision-journalctl.txt'"
download="photonvision-journalctl.txt"
/>
</v-btn>
Expand Down
2 changes: 1 addition & 1 deletion photon-client/src/views/PipelineViews/OutputTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
/>
<v-snackbar
v-model="snackbar"
:timeout="3000"
:timeout="2000"
top
color="error"
>
Expand Down
Loading

0 comments on commit 715ef62

Please sign in to comment.