Skip to content
Snippets Groups Projects
Commit 683ce4f3 authored by Louis-Marie Michelin's avatar Louis-Marie Michelin
Browse files

:tada: initial commit

parents
No related branches found
No related tags found
No related merge requests found
{
"name": "centrale-ei-web-frontend",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.1",
"vue": "^3.0.0",
"vue-router": "^4.0.0-0"
},
"devDependencies": {
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.11",
"@vue/eslint-config-prettier": "^6.0.0",
"eslint": "^7.28.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-vue": "^7.10.0",
"prettier": "^2.3.1"
}
}
frontend/public/favicon.ico

4.19 KiB

<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
properly without JavaScript enabled. Please enable it to
continue.</strong
>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<div class="nav">
<router-link class="nav-link" to="/">Home</router-link> |
<router-link class="nav-link" to="/counter">Counter</router-link> |
<router-link class="nav-link" to="/users">Users</router-link> |
<router-link class="nav-link" to="/about">About</router-link>
</div>
<router-view />
</template>
<style scoped>
.nav {
text-align: center;
padding: 30px;
}
.nav-link {
font-weight: bold;
color: #2c3e50;
}
.nav-link.router-link-exact-active {
color: #42b983;
}
</style>
frontend/src/assets/logo.png

6.69 KiB

<template>
<table>
<thead>
<th>Email</th>
<th>First name</th>
<th>Lirst name</th>
</thead>
<tbody>
<tr v-for="user in users" :key="user.email">
<td>{{ user.email }}</td>
<td>{{ user.firstName }}</td>
<td>{{ user.lastName }}</td>
</tr>
</tbody>
</table>
</template>
<script>
export default {
name: "UsersTable",
props: {
users: Array,
},
};
</script>
<style scoped>
table {
border-collapse: collapse;
}
th,
td {
border: 1px solid #000000;
padding: 10px;
}
</style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
}
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import "./global.css";
createApp(App).use(router).mount("#app");
import { createRouter, createWebHistory } from "vue-router";
import Home from "../views/Home.vue";
import Counter from "../views/Counter.vue";
import Users from "../views/Users.vue";
import About from "../views/About.vue";
const routes = [
{
path: "/",
name: "Home",
component: Home,
},
{
path: "/counter",
name: "Counter",
component: Counter,
},
{
path: "/users",
name: "Users",
component: Users,
},
{
path: "/about",
name: "About",
component: About,
},
];
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
});
export default router;
<template>
<h1>This is an about page</h1>
</template>
<template>
<h1>This is a counter example</h1>
<div class="counter-value">Counter value is: {{ counter }}</div>
<button @click="increment()">Increment</button>
</template>
<script>
export default {
name: "Counter",
data: function () {
return {
counter: 0,
};
},
methods: {
increment: function () {
this.counter++;
},
},
};
</script>
<style scoped>
.counter-value {
margin-bottom: 5px;
}
</style>
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png" />
<h1>Welcome to Your Vue.js App</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br />
check out the
<a href="https://cli.vuejs.org" target="_blank">vue-cli documentation</a>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li>
<a
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router"
target="_blank"
>router</a
>
</li>
<li>
<a
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint"
target="_blank"
>eslint</a
>
</li>
</ul>
<h3>Essential Links</h3>
<ul>
<li>
<a href="https://vuejs.org" target="_blank">Core Docs</a>
</li>
<li>
<a href="https://forum.vuejs.org" target="_blank">Forum</a>
</li>
<li>
<a href="https://chat.vuejs.org" target="_blank">Community Chat</a>
</li>
<li>
<a href="https://twitter.com/vuejs" target="_blank">Twitter</a>
</li>
<li>
<a href="https://news.vuejs.org" target="_blank">News</a>
</li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li>
<a href="https://router.vuejs.org" target="_blank">vue-router</a>
</li>
<li>
<a href="https://vuex.vuejs.org" target="_blank">vuex</a>
</li>
<li>
<a
href="https://github.com/vuejs/vue-devtools#vue-devtools"
target="_blank"
>vue-devtools</a
>
</li>
<li>
<a href="https://vue-loader.vuejs.org" target="_blank">vue-loader</a>
</li>
<li>
<a href="https://github.com/vuejs/awesome-vue" target="_blank"
>awesome-vue</a
>
</li>
</ul>
</div>
</template>
<script>
export default {
name: "Home",
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.home {
text-align: center;
}
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
<template>
<h1>Users</h1>
<UsersTable v-if="users.length" :users="users" />
<div v-if="usersLoadingError">{{ usersLoadingError }}</div>
</template>
<script>
// @ is an alias to /src
import UsersTable from "@/components/UsersTable.vue";
import axios from "axios";
export default {
name: "Users",
components: {
UsersTable,
},
data: function () {
return {
users: [],
usersLoadingError: "",
};
},
methods: {
fetchUsers: function () {
axios
.get(`${process.env.VUE_APP_BACKEND_BASE_URL}/users`)
.then((response) => {
this.users = response.data.users;
})
.catch((error) => {
this.usersLoadingError = "An error occured while fetching users.";
console.error(error);
});
},
},
mounted: function () {
this.fetchUsers();
},
};
</script>
module.exports = {
lintOnSave: false,
};
module.exports = {
projects: ["./frontend"],
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment