front_foundation #5
@ -1,8 +1,10 @@
|
||||
{
|
||||
"entrepreneurs": [
|
||||
"entrepreneurs": [
|
||||
{ "id": 1, "name": "Alice", "email": "alice@example.com" },
|
||||
{ "id": 2, "name": "Bob", "email": "bob@example.com" },
|
||||
{ "id": 3, "name": "Charlie", "email": "charlie@example.com" }
|
||||
]
|
||||
}
|
||||
|
||||
],
|
||||
"data": [
|
||||
{ "data": "this is a fake data to test api" }
|
||||
]
|
||||
}
|
||||
|
2
front/MyINPulse-front/fake_data/open.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
json-server --watch db.json --port 5000
|
@ -7,51 +7,63 @@
|
||||
<h3>{{ title }}</h3>
|
||||
<p>{{ currentDescription }}</p>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref } from "vue";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
title: String,
|
||||
description: String
|
||||
},
|
||||
<script>
|
||||
mohamed_maoulainine marked this conversation as resolved
Outdated
|
||||
import { ref, onMounted } from "vue";
|
||||
import axios from "axios";
|
||||
|
||||
setup(props) {
|
||||
const expanded = ref(false);
|
||||
const currentDescription = ref(props.description);
|
||||
|
||||
const toggleExpand = () => {
|
||||
currentDescription.value = expanded.value
|
||||
? "3 problèmes essentiels à résoudre pour le client"
|
||||
: "FAKE DATA";
|
||||
export default {
|
||||
mohamed_maoulainine marked this conversation as resolved
Outdated
piair
commented
composition API composition API
|
||||
props: {
|
||||
title: String,
|
||||
description: String
|
||||
},
|
||||
|
||||
setup(props) {
|
||||
const expanded = ref(false);
|
||||
const currentDescription = ref(props.description);
|
||||
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const response = await axios.get("http://localhost:5000/data"); // to edit later!
|
||||
currentDescription.value = response.data.map(e => e.data);
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la récupération des données :", error);
|
||||
}
|
||||
};
|
||||
|
||||
const toggleExpand = async () => {
|
||||
if (!expanded.value) {
|
||||
await fetchData();
|
||||
} else {
|
||||
currentDescription.value = "3 problèmes essentiels à résoudre pour le client";
|
||||
}
|
||||
expanded.value = !expanded.value;
|
||||
};
|
||||
|
||||
return {
|
||||
expanded,
|
||||
currentDescription,
|
||||
toggleExpand
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
expanded.value = !expanded.value;
|
||||
};
|
||||
|
||||
return {
|
||||
expanded,
|
||||
currentDescription,
|
||||
toggleExpand
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import "@/components/canvas/style-project.css";
|
||||
|
||||
<style scoped>
|
||||
@import "@/components/canvas/style-project.css";
|
||||
|
||||
.cell {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.cell:not(.expanded):hover {
|
||||
transform: scale(1.05);
|
||||
@ -69,7 +81,7 @@
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.expanded {
|
||||
.expanded {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@ -81,7 +93,5 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
}
|
||||
</style>
|
||||
|
@ -17,39 +17,35 @@
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
<script setup>
|
||||
mohamed_maoulainine marked this conversation as resolved
Outdated
piair
commented
Ce n'est pas de la composition API, a changer Ce n'est pas de la composition API, a changer
|
||||
import { ref, onMounted } from "vue";
|
||||
piair
commented
Il faut se servir de Il faut se servir de `axiosInstance`, voir https://gitea.piair.dev/piair/MyINPulse/src/branch/main/front/MyINPulse-front/src/services/api.ts.
Cela permet de préconfigurer l'authentification et le host du backend.
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isDropdownOpen: false,
|
||||
entrepreneurEmails: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
toggleDropdown() {
|
||||
this.isDropdownOpen = !this.isDropdownOpen;
|
||||
console.log("Dropdown toggled:", this.isDropdownOpen); //for debug purposes
|
||||
},
|
||||
async fetchEntrepreneurs() {
|
||||
try {
|
||||
const response = await axios.get("http://localhost:5000/entrepreneurs");
|
||||
this.entrepreneurEmails = response.data.map(e => e.email);
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la récupération des entrepreneurs:", error);
|
||||
}
|
||||
},
|
||||
contactAll() {
|
||||
alert("Contacter tous les entrepreneurs : " + this.entrepreneurEmails.join(", "));
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.fetchEntrepreneurs();
|
||||
},
|
||||
const isDropdownOpen = ref(false);
|
||||
const entrepreneurEmails = ref([]);
|
||||
|
||||
const toggleDropdown = () => {
|
||||
mohamed_maoulainine marked this conversation as resolved
Outdated
piair
commented
Vérifier que le type de données renvoyé par le backend correspond bien à ca (ce n'est pas le cas). Vérifier que le type de données renvoyé par le backend correspond bien à ca (ce n'est pas le cas).
|
||||
isDropdownOpen.value = !isDropdownOpen.value;
|
||||
console.log("Dropdown toggled:", isDropdownOpen.value); // for debug purposes
|
||||
};
|
||||
|
||||
const fetchEntrepreneurs = async () => {
|
||||
try {
|
||||
const response = await axios.get("http://localhost:5000/entrepreneurs");
|
||||
entrepreneurEmails.value = response.data.map(e => e.email);
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la récupération des entrepreneurs:", error);
|
||||
mohamed_maoulainine marked this conversation as resolved
Outdated
piair
commented
il faut pas Hardcoder une addresse, elle est dans le fichier .env. Dans tout les cas, cette adresse ne devrait pas être là. il faut pas Hardcoder une addresse, elle est dans le fichier .env. Dans tout les cas, cette adresse ne devrait pas être là.
piair
commented
je viens de voir le message de commit, c'est en effet logique d'utiliser cette donnée. Par contre je suis pas sur que ce soit la bonne méthode pour faire des tests, c'est a discuter. Il serait bien d'appeler mock-data au lieu de fake-data je viens de voir le message de commit, c'est en effet logique d'utiliser cette donnée. Par contre je suis pas sur que ce soit la bonne méthode pour faire des tests, c'est a discuter.
Il serait bien d'appeler mock-data au lieu de fake-data
|
||||
}
|
||||
};
|
||||
|
||||
const contactAll = () => {
|
||||
alert("Contacter tous les entrepreneurs : " + entrepreneurEmails.value.join(", "));
|
||||
};
|
||||
|
||||
onMounted(fetchEntrepreneurs);
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
|
||||
header {
|
||||
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 39 KiB |
@ -1,10 +1,3 @@
|
||||
<script setup lang="ts">
|
||||
import Header from '../components/Header.vue';
|
||||
import Agenda from "../components/Agenda.vue"
|
||||
import ProjectComp from '../components/Project-comp.vue';
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
piair
commented
Il est plus logique de mettre un unique script setup. Je vais mettre içi une fois pour toute: je trouve beaucoup plus logique l'ordre C'est ce qui est utilisé par défaut dans le linter (vue-recommanded). Il est plus logique de mettre un unique script setup.
Je vais mettre içi une fois pour toute:
je trouve beaucoup plus logique l'ordre
`<script>` => `<template>` => `<style>`
que l'ordre qui est utilisé partout dans vos fichiers (`<template>` => `<script>` => `<style>`)
En effet, on utilise dans le template les fonctions qui sont définies dans les scripts, donc c'est plus logique de les définir avant.
C'est ce qui est utilisé par défaut dans le linter (vue-recommanded).
|
||||
<Header />
|
||||
<error-wrapper></error-wrapper>
|
||||
@ -25,6 +18,9 @@ import ProjectComp from '../components/Project-comp.vue';
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import Header from '../components/Header.vue';
|
||||
import Agenda from "../components/Agenda.vue"
|
||||
import ProjectComp from '../components/Project-comp.vue';
|
||||
|
||||
import { ref } from "vue";
|
||||
|
||||
|
ce n'est pas de la composition API