feat: 🐛 readded support for selectable driver and vehicle at track upload
This commit is contained in:
7
app.py
7
app.py
@ -199,8 +199,11 @@ def uploadFile():
|
|||||||
with open(file_path, 'wb') as f:
|
with open(file_path, 'wb') as f:
|
||||||
f.write(file.read())
|
f.write(file.read())
|
||||||
|
|
||||||
driver = driverHandler.getDriver(1)
|
driverID = int(request.form.get('driverID'))
|
||||||
vehicle = vehicleHandler.getVehicle(1)
|
vehicleID = int(request.form.get('vehicleID'))
|
||||||
|
|
||||||
|
driver = driverHandler.getDriver(driverID)
|
||||||
|
vehicle = vehicleHandler.getVehicle(vehicleID)
|
||||||
|
|
||||||
app.logger.debug(f"driver {driver.id}")
|
app.logger.debug(f"driver {driver.id}")
|
||||||
app.logger.debug(f"vehicle {vehicle.id}")
|
app.logger.debug(f"vehicle {vehicle.id}")
|
||||||
|
@ -7,6 +7,12 @@ type driver = {
|
|||||||
name: string
|
name: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type vehicle = {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
emits: ['close', 'response'],
|
emits: ['close', 'response'],
|
||||||
name: 'settings',
|
name: 'settings',
|
||||||
@ -16,7 +22,9 @@ export default defineComponent({
|
|||||||
const file = ref<File | null>();
|
const file = ref<File | null>();
|
||||||
const form = ref<HTMLFormElement>();
|
const form = ref<HTMLFormElement>();
|
||||||
const drivers: Ref<driver[]> = ref([])
|
const drivers: Ref<driver[]> = ref([])
|
||||||
|
const vehicles: Ref<vehicle[]> = ref([])
|
||||||
const selectedDriver: Ref<number> = ref(0);
|
const selectedDriver: Ref<number> = ref(0);
|
||||||
|
const selectedVehicle: Ref<number> = ref(0);
|
||||||
|
|
||||||
props.drivers.forEach((d: driver) => {
|
props.drivers.forEach((d: driver) => {
|
||||||
drivers.value.push({ id: d.id, name: d.name })
|
drivers.value.push({ id: d.id, name: d.name })
|
||||||
@ -37,6 +45,60 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handles sending webrequests to the backend
|
||||||
|
const getDrivers = async () => {
|
||||||
|
|
||||||
|
const headers: Headers = new Headers()
|
||||||
|
|
||||||
|
headers.set('Content-Type', 'application/json')
|
||||||
|
headers.set('Accept', 'application/json')
|
||||||
|
|
||||||
|
const request: RequestInfo = new Request("http://localhost:5000/driver", {
|
||||||
|
method: "GET",
|
||||||
|
headers: headers
|
||||||
|
})
|
||||||
|
|
||||||
|
var response = await fetch(request)
|
||||||
|
|
||||||
|
// make sure the request was successfull
|
||||||
|
if (response.ok) {
|
||||||
|
|
||||||
|
var jsonBody = await response.json()
|
||||||
|
|
||||||
|
// convert vehicles from json response to processable data
|
||||||
|
for (let i = 0; i < jsonBody.length; i++) {
|
||||||
|
drivers.value.push({ id: jsonBody[i]["id"], name: jsonBody[i]["name"] })
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(await response.text())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// handles getting all existing drivers
|
||||||
|
const getVehicles = async () => {
|
||||||
|
const headers: Headers = new Headers()
|
||||||
|
headers.set('Content-Type', 'application/json')
|
||||||
|
headers.set('Accept', 'application/json')
|
||||||
|
|
||||||
|
const request: RequestInfo = new Request("http://localhost:5000/vehicle", {
|
||||||
|
method: "GET",
|
||||||
|
headers: headers
|
||||||
|
})
|
||||||
|
|
||||||
|
var response = await fetch(request)
|
||||||
|
// make sure the request was successfull
|
||||||
|
if (response.ok) {
|
||||||
|
var jsonBody = await response.json()
|
||||||
|
|
||||||
|
// convert vehicles from json response to processable data
|
||||||
|
for (let i = 0; i < jsonBody.length; i++) {
|
||||||
|
vehicles.value.push({ id: jsonBody[i]["id"], name: jsonBody[i]["name"] })
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(await response.text())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var save = async () => {
|
var save = async () => {
|
||||||
|
|
||||||
if (!file.value) {
|
if (!file.value) {
|
||||||
@ -46,7 +108,8 @@ export default defineComponent({
|
|||||||
|
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("file", file.value);
|
formData.append("file", file.value);
|
||||||
formData.append("driverId", selectedDriver.value.toString());
|
formData.append("driverID", selectedDriver.value.toString());
|
||||||
|
formData.append("vehicleID", selectedVehicle.value.toString());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@ -73,6 +136,8 @@ export default defineComponent({
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getVehicles()
|
||||||
|
getDrivers()
|
||||||
getLocalization()
|
getLocalization()
|
||||||
const close = () => {
|
const close = () => {
|
||||||
emit("close");
|
emit("close");
|
||||||
@ -82,7 +147,10 @@ export default defineComponent({
|
|||||||
close,
|
close,
|
||||||
fileInputChange,
|
fileInputChange,
|
||||||
selectedDriver,
|
selectedDriver,
|
||||||
|
selectedVehicle,
|
||||||
save,
|
save,
|
||||||
|
drivers,
|
||||||
|
vehicles,
|
||||||
localizedUploadHeader
|
localizedUploadHeader
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -105,7 +173,8 @@ export default defineComponent({
|
|||||||
<div class="label">
|
<div class="label">
|
||||||
<span class="label-text">Upload a GPX File</span>
|
<span class="label-text">Upload a GPX File</span>
|
||||||
</div>
|
</div>
|
||||||
<input type="file" ref="file" v-on:change="fileInputChange($event)" class="file-input file-input-bordered w-full max-w-xs" />
|
<input type="file" ref="file" v-on:change="fileInputChange($event)"
|
||||||
|
class="file-input file-input-bordered w-full max-w-xs" />
|
||||||
</label>
|
</label>
|
||||||
<div class="dropdown dropdown-bottom">
|
<div class="dropdown dropdown-bottom">
|
||||||
select Driver: <div tabindex="0" role="button" class="btn m-1">Click</div>
|
select Driver: <div tabindex="0" role="button" class="btn m-1">Click</div>
|
||||||
@ -113,6 +182,12 @@ export default defineComponent({
|
|||||||
<li v-for="driver in drivers"><a v-on:click="selectedDriver = driver.id">{{ driver.name }}</a></li>
|
<li v-for="driver in drivers"><a v-on:click="selectedDriver = driver.id">{{ driver.name }}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="dropdown dropdown-bottom">
|
||||||
|
select Vehicle: <div tabindex="0" role="button" class="btn m-1">Click</div>
|
||||||
|
<ul tabindex="0" class="dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow">
|
||||||
|
<li v-for="vehicle in vehicles"><a v-on:click="selectedVehicle = vehicle.id">{{ vehicle.name }}</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<button class="btn btn-success" v-on:click="save">Upload</button>
|
<button class="btn btn-success" v-on:click="save">Upload</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -125,6 +200,7 @@ export default defineComponent({
|
|||||||
width: 80%;
|
width: 80%;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn.close {
|
.btn.close {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 30px;
|
right: 30px;
|
||||||
|
Reference in New Issue
Block a user