Comment intégrer un composant Anakeen Platform 4
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement avoir ajouté un style global à l’application.
Introduction
On se propose ici de mettre en place une grille présentant les Smart Elements correspondant à chaque section Plat
,
Boisson
et Menu
.
Pour cela nous allons nous baser sur l’utilisation de composants Vue
qui seront réutilisés dans chaque section.
Recommandation
Pour vous familiariser avec l’utilisation des composants Vue
, vous pouvez consulter la documentation associée
disponible ici
Comment configurer Nuxt pour intégrer les composants AP4
Installer les dépendances nécessaires en lançant la commande :
npm install @nuxtjs/proxy@2.1.0 @nuxtjs/i18n@7.0.3
Recommandation
Pour vous familiariser avec les plugins proxy
et i18n
de nuxt, vous pouvez consulter les documentations disponibles
ici : @nuxt/proxy - nuxt-i18N
Dans le fichier nuxt.config.js
rajouter la configuration suivante :
export default {
ssr: false,
target: "static",
components: true,
css: ["@/assets/css/bootstrap.scss", "@/assets/css/kendo.scss", "@/assets/css/main.scss"],
modules: ["@nuxtjs/proxy", "@nuxtjs/i18n"],
proxy: {
"/locale/catalog.json": {
target: "http://localhost:8080",
},
"/api/v2/**": {
target: "http://localhost:8080",
},
},
};
Dans le dossier assets
ajouter les deux fichiers suivants :
touch assets/css/bootstrap.scss assets/css/kendo.scss
assets/css/bootstrap.scss
:
$primary: #8ae234;
@import "~@anakeen/user-interfaces/components/scss/bootstrap.scss";
assets/css/kendo.scss
:
@import "~@anakeen/user-interfaces/components/scss/kendo.scss";
Lancer le serveur AP4 avec la commande :
make env-start
Comment utiliser un composant
Recommandation
Pour vous familiariser avec l’utilisation des composants Vue
dans Nuxt.js
, vous pouvez consulter la documentation
associée disponible ici
Créer le répertoire components
:
mkdir components
Créer alors le fichier components/RestauratecSection.vue
:
touch components/RestauratecSection.vue
<template>
<div class="restauratec-section">
<div class="restauratec-grid">
<ank-se-grid :collection="gridConfig.collection" :columns="gridConfig.columns" />
</div>
</div>
</template>
<script>
import Vue from "vue";
import AnkSmartElementGrid from "@anakeen/user-interfaces/components/lib/AnkSmartElementGrid.esm";
import setup from "@anakeen/user-interfaces/components/lib/setup.esm";
Vue.use(setup);
export default {
components: {
"ank-se-grid": () =>
new Promise((resolve) => {
Vue.$_globalI18n.recordCatalog().then(() => {
resolve(AnkSmartElementGrid);
});
}),
},
props: ["gridConfig"],
};
</script>
<style lang="scss">
.restauratec-section {
display: flex;
flex-direction: column;
align-items: center;
.restauratec-grid {
height: 25rem;
width: 80%;
margin-top: 5rem;
border: 1px solid;
}
}
</style>
Modifier ensuite les pages de chaque sections :
pages/Boisson.vue
:
<template>
<div class="restauratec-boisson-wrapper">
<restauratec-section :gridConfig="gridConfig" />
</div>
</template>
<script>
import RestauratecSection from "../components/RestauratecSection";
export default {
components: { RestauratecSection },
data() {
return {
gridConfig: {
collection: "BOISSON",
columns: [
{ field: "consommable_title" },
{ field: "consommable_creator" },
{ field: "consommable_price_incl_vat" },
],
},
};
},
};
</script>
pages/Menu.vue
:
<template>
<div class="restauratec-menu-wrapper">
<restauratec-section :gridConfig="gridConfig" />
</div>
</template>
<script>
import RestauratecSection from "../components/RestauratecSection";
export default {
components: { RestauratecSection },
data() {
return {
gridConfig: {
collection: "MENU",
columns: [{ field: "menu_title" }, { field: "menu_price" }],
},
};
},
};
</script>
pages/Plat.vue
:
<template>
<div class="restauratec-plat-wrapper">
<restauratec-section :gridConfig="gridConfig" />
</div>
</template>
<script>
import RestauratecSection from "../components/RestauratecSection";
export default {
components: { RestauratecSection },
data() {
return {
gridConfig: {
collection: "PLAT",
columns: [{ field: "consommable_title" }, { field: "consommable_creator" }, { field: "plat_type" }],
},
};
},
};
</script>
Modifier le fichier assets/css/main.scss
:
$primary: #8ae234;
@import "~@anakeen/user-interfaces/components/scss/AnkSmartElement.scss";
@import "~@anakeen/user-interfaces/components/scss/SmartElementGrid.scss";
body {
height: 100vh;
#__nuxt {
height: 100%;
#__layout {
height: 100%;
.restauratec-main {
height: 100%;
.restauratec-header {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
height: 3.5rem;
.restauratec-header-nav-button {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
.nuxt-link-active {
color: $primary;
&:hover {
color: black;
}
}
a {
width: 100%;
height: 100%;
text-decoration: auto;
text-align: center;
color: black;
font-weight: bold;
font-size: 1.5rem;
}
}
}
.restauratec-body {
width: 100%;
height: 100%;
}
}
}
}
}
Tester nos modifications
Lancez le serveur de développement :
npm run dev
Vous pouvez voir une grille pour chaque section sous http://localhost:3000/plat
: