diff --git a/package.json b/package.json
index 5c67e91..d80455f 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"@quasar/extras": "^1.15.11",
"@vue/apollo-composable": "4.0.0-beta.2",
"@vue/apollo-option": "^4.0.0-beta.5",
+ "apollo-upload-client": "^17.0.0",
"axios": "^1.4.0",
"graphql": "16.6.0",
"graphql-tag": "2.12.6",
diff --git a/src/components/FormWrapper.vue b/src/components/FormWrapper.vue
index dcc4ea5..3d5d87e 100644
--- a/src/components/FormWrapper.vue
+++ b/src/components/FormWrapper.vue
@@ -27,8 +27,7 @@ const props = defineProps({
const emits = defineEmits(["save"]);
const saveForm = () => {
- const formDataCopy = JSON.parse(JSON.stringify(props.modelValue));
- emits("save", formDataCopy);
+ emits("save", props.modelValue);
if (props.resetAfterSubmit) {
console.error("Not implemented")
@@ -38,9 +37,6 @@ const saveForm = () => {
-
- {{ modelValue }}
-
diff --git a/src/components/aircrafts/AircraftDetailSkeleton.vue b/src/components/aircrafts/AircraftDetailSkeleton.vue
new file mode 100644
index 0000000..ece9caa
--- /dev/null
+++ b/src/components/aircrafts/AircraftDetailSkeleton.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/components/aircrafts/AircraftForm.vue b/src/components/aircrafts/AircraftForm.vue
index 4be9d37..5f47f60 100644
--- a/src/components/aircrafts/AircraftForm.vue
+++ b/src/components/aircrafts/AircraftForm.vue
@@ -12,6 +12,7 @@ const formData = reactive({
model: "",
manufacturer: "",
description: "",
+ photo: null,
organizationId: null
});
@@ -38,6 +39,7 @@ onMounted(() => {
+
diff --git a/src/components/aircrafts/AircraftsList.vue b/src/components/aircrafts/AircraftsList.vue
index 0187648..4e8453d 100644
--- a/src/components/aircrafts/AircraftsList.vue
+++ b/src/components/aircrafts/AircraftsList.vue
@@ -9,9 +9,14 @@ const props = defineProps({
- letadla
+
+
+
+
+
+
{{ plane.name }}
diff --git a/src/components/aircrafts/AircraftsListSkeleton.vue b/src/components/aircrafts/AircraftsListSkeleton.vue
new file mode 100644
index 0000000..4731599
--- /dev/null
+++ b/src/components/aircrafts/AircraftsListSkeleton.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/composables/random.js b/src/composables/random.js
new file mode 100644
index 0000000..d16cb16
--- /dev/null
+++ b/src/composables/random.js
@@ -0,0 +1,3 @@
+export const randomInt = (min, max) => {
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
diff --git a/src/graphql/apollo.js b/src/graphql/apollo.js
index 27de9a6..c27bdd2 100644
--- a/src/graphql/apollo.js
+++ b/src/graphql/apollo.js
@@ -1,13 +1,19 @@
import {ApolloClient, ApolloLink, HttpLink, InMemoryCache} from '@apollo/client/core'
import {createApolloProvider} from "@vue/apollo-option";
+import { createUploadLink } from 'apollo-upload-client';
const httpLink = new HttpLink({
uri: 'http://localhost:8000/graphql',
credentials: 'include'
})
+const uploadLink = createUploadLink({
+ uri: 'http://localhost:8000/graphql',
+ credentials: 'include'
+})
+
export const apolloClient = new ApolloClient({
- link: ApolloLink.from([httpLink]),
+ link: ApolloLink.from([uploadLink]),
cache: new InMemoryCache(),
connectToDevTools: true,
})
@@ -24,6 +30,7 @@ export const apolloWrapper = {
console.error("Error during query: ", err)
})
},
+
mutate(mutation, variables, onUpdate = () => {}) {
return apolloClient
.mutate({
diff --git a/src/graphql/fragments/aircraft.js b/src/graphql/fragments/aircraft.js
index fbc4de6..91742c3 100644
--- a/src/graphql/fragments/aircraft.js
+++ b/src/graphql/fragments/aircraft.js
@@ -7,5 +7,6 @@ fragment aircraftFullInfo on Aircraft {
model
description
manufacturer
+ photoUrl
}
`;
diff --git a/src/graphql/mutations/aircrafts.js b/src/graphql/mutations/aircrafts.js
index c344b47..c33f0de 100644
--- a/src/graphql/mutations/aircrafts.js
+++ b/src/graphql/mutations/aircrafts.js
@@ -27,13 +27,3 @@ mutation deleteAircraft($id: Int!) {
}
}
`;
-
-// export const CREATE_CAMPAIGN = gql`
-// mutation createCampaign($input: CreateCampaignMutationInput!) {
-// createCampaign(input: $input) {
-// campaign {
-// id
-// }
-// }
-// }
-// `;
diff --git a/src/pages/profile/details/AircraftDetailPage.vue b/src/pages/profile/details/AircraftDetailPage.vue
index 45d0d0e..4591d41 100644
--- a/src/pages/profile/details/AircraftDetailPage.vue
+++ b/src/pages/profile/details/AircraftDetailPage.vue
@@ -2,8 +2,8 @@
import {computed, onMounted, reactive, ref} from "vue";
import {useAircraftsStore} from "stores/Aircrafts";
import {useRoute, useRouter} from "vue-router";
-import {storeToRefs} from "pinia";
import {useQuasar} from "quasar";
+import AircraftDetailSkeleton from "components/aircrafts/AircraftDetailSkeleton.vue";
const aircraftStore = useAircraftsStore();
const route = useRoute();
@@ -38,7 +38,7 @@ const confirmDelete = (id) => {
-
+
Letadla
@@ -47,6 +47,8 @@ const confirmDelete = (id) => {
{{ aircraft.name }}
+ {{ aircraft.photoUrl }}
+
Výrobce: {{ aircraft.manufacturer }}
diff --git a/src/pages/profile/forms/EditAircraftPage.vue b/src/pages/profile/forms/EditAircraftPage.vue
index a40b91f..668f4d0 100644
--- a/src/pages/profile/forms/EditAircraftPage.vue
+++ b/src/pages/profile/forms/EditAircraftPage.vue
@@ -26,22 +26,20 @@ const handleSave = (formData) => {
let loadedAircraft = ref(null);
onMounted(() => {
useAircraftsStore().fetchDetail(aircraftId).then((data) => {
- console.log("data ", data);
loadedAircraft.value = data;
- } ).catch(err => {
+ }).catch(err => {
console.error(err);
})
});
-
+
+
- Editace letadla {{ loadedAircraft.name}}
+ Editace letadla {{ loadedAircraft.name }}
- loaded aircraft: {{ loadedAircraft }}
-
-
-
+
+
diff --git a/src/pages/profile/forms/NewAircraftsPage.vue b/src/pages/profile/forms/NewAircraftsPage.vue
index 034aeff..fd66680 100644
--- a/src/pages/profile/forms/NewAircraftsPage.vue
+++ b/src/pages/profile/forms/NewAircraftsPage.vue
@@ -10,6 +10,9 @@ const $q = useQuasar();
const router = useRouter();
const handleSave = (formData) => {
isRequestPending.value = true;
+
+ console.log("handlesave", formData);
+
useAircraftsStore().create(formData).then(() => {
$q.notify({message: "Letadlo úspěšně vytvořeno", position: "top", color: "positive"});
@@ -21,7 +24,5 @@ const handleSave = (formData) => {
-
-
diff --git a/src/pages/profile/lists/AircraftsPage.vue b/src/pages/profile/lists/AircraftsPage.vue
index 24e35f5..49e3616 100644
--- a/src/pages/profile/lists/AircraftsPage.vue
+++ b/src/pages/profile/lists/AircraftsPage.vue
@@ -1,40 +1,28 @@
- Loading (sem pridat skeleton)
+ Letadla
+
- Fetch
-
- {{ aircrafts }}
-
- {{ aircraftsComputed }}
-
- {{ aircraftStore.items }}
-
diff --git a/src/stores/Aircrafts.js b/src/stores/Aircrafts.js
index a97ac4a..af9354b 100644
--- a/src/stores/Aircrafts.js
+++ b/src/stores/Aircrafts.js
@@ -24,28 +24,24 @@ export const useAircraftsStore = defineStore('Aircrafts', {
create(formData) {
delete formData['id'];
return apolloWrapper.mutate(CREATE_AIRCRAFT, {input: formData}).then(({data}) => {
- // this.items.push(data.createAircraft);
+ this.items.push(data.createAircraft);
return data.createAircraft;
})
},
delete(id) {
return apolloWrapper.mutate(DELETE_AIRCRAFT, {id}).then(({data}) => {
- // const idx = this.items.findIndex(a => a.id === id);
- // console.log(idx);
- // this.items.splice(idx, 1);
+ const idx = this.items.findIndex(a => a.id === id);
+ console.log(idx);
+ this.items.splice(idx, 1);
- this.items = this.items.filter(a => {
- console.log(a.id, id);
- return a.id !== id
- });
- console.log(this.items);
return data;
});
},
update(id, formData) {
console.log(id, formData);
return apolloWrapper.mutate(EDIT_AIRCRAFT, {id: id, input: formData}).then(({data}) => {
+ console.log("Pridat update ve storu")
return data.editAircraft;
});
},
diff --git a/yarn.lock b/yarn.lock
index 8e67554..1fced6d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -480,6 +480,13 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+apollo-upload-client@^17.0.0:
+ version "17.0.0"
+ resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-17.0.0.tgz#d9baaff8d14e54510de9f2855b487e75ca63b392"
+ integrity sha512-pue33bWVbdlXAGFPkgz53TTmxVMrKeQr0mdRcftNY+PoHIdbGZD0hoaXHvO6OePJAkFz7OiCFUf98p1G/9+Ykw==
+ dependencies:
+ extract-files "^11.0.0"
+
archiver-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2"
@@ -1426,6 +1433,11 @@ external-editor@^3.0.3:
iconv-lite "^0.4.24"
tmp "^0.0.33"
+extract-files@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a"
+ integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"