front_foundation #5
8
front/MyINPulse-front/fake_data/db.json
Normal file
8
front/MyINPulse-front/fake_data/db.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -6,11 +6,8 @@ import ErrorWrapper from "@/views/errorWrapper.vue";
|
|||||||
<template>
|
<template>
|
||||||
|
|
||||||
<Header />
|
<Header />
|
||||||
<!--<nav>
|
|
||||||
<RouterLink to="/">Home</RouterLink> |
|
<RouterLink to="/">Home</RouterLink> |
|
||||||
<RouterLink to="/canvas">Canvas</RouterLink>
|
<RouterLink to="/canvas">Canvas</RouterLink>
|
||||||
</nav>-->
|
|
||||||
|
|
||||||
<RouterView />
|
<RouterView />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -2,35 +2,123 @@
|
|||||||
<header>
|
<header>
|
||||||
<img src="../icons/logo inpulse.png" alt="INPulse Logo">
|
<img src="../icons/logo inpulse.png" alt="INPulse Logo">
|
||||||
<div class="header-buttons">
|
<div class="header-buttons">
|
||||||
<div class="contact-menu">
|
<div class="menu">
|
||||||
<button class="contact-button" @click="toggleDropdown">Contact</button>
|
<button class="contact-button" @click="toggleDropdown">Contact</button>
|
||||||
<div class="contact-dropdown" v-show="isDropdownOpen">
|
<div class="contact-dropdown" v-bind:class="{ 'dropdown-visible': isDropdownOpen }">
|
||||||
<button>Contact All</button>
|
<button @click="contactAll">Contact All</button>
|
||||||
<button>Contact Person 1</button>
|
<button v-for="(email, index) in entrepreneurEmails" :key="index">
|
||||||
<button>Contact Person 2</button>
|
{{ email }}
|
||||||
<button>Contact Person 3</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="return"><a href="/">return to list project</a></div>
|
<button class="return-button"><a href="/">Return to list project</a></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import axios from "axios";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isDropdownOpen: false
|
isDropdownOpen: false,
|
||||||
|
entrepreneurEmails: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
toggleDropdown() {
|
toggleDropdown() {
|
||||||
this.isDropdownOpen = !this.isDropdownOpen;
|
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();
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
|
header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-buttons {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-button, .return-button {
|
||||||
|
background-color: #000;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
padding: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.return-button a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-dropdown {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
background-color: white;
|
||||||
|
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 10px;
|
||||||
|
margin-top: 5px;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-dropdown button {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
text-align: left;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-dropdown button:hover {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
header img {
|
||||||
|
width: 100px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@import "@/components/canvas/style-project.css";
|
@import "@/components/canvas/style-project.css";
|
||||||
</style>
|
</style>
|
||||||
|
@ -3,7 +3,7 @@ import {store} from "../main.ts";
|
|||||||
import {callApi} from "@/services/api.ts";
|
import {callApi} from "@/services/api.ts";
|
||||||
import ErrorModal from "@/components/errorModal.vue";
|
import ErrorModal from "@/components/errorModal.vue";
|
||||||
import {errorList} from "@/services/popupDisplayer.ts";
|
import {errorList} from "@/services/popupDisplayer.ts";
|
||||||
import TempModal from "@/components/temp-modal.vue";
|
//import TempModal from "@/components/temp-modal.vue";
|
||||||
import ErrorWrapper from "@/App.vue";
|
import ErrorWrapper from "@/App.vue";
|
||||||
function addResToTable(id: any){
|
function addResToTable(id: any){
|
||||||
return (req: any) => {
|
return (req: any) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user