From b9bfe51165d708d3e3cf55402826d1c938a06b73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr> Date: Tue, 24 Aug 2021 12:03:41 +0200 Subject: [PATCH] change endpoint and move fetch to component --- src/main.js | 1 - src/store/index.js | 16 +----- src/views/project/Project_members.vue | 81 +++++++++++++++------------ 3 files changed, 48 insertions(+), 50 deletions(-) diff --git a/src/main.js b/src/main.js index 1680f107..1603b301 100644 --- a/src/main.js +++ b/src/main.js @@ -11,7 +11,6 @@ Vue.config.productionTip = false axios.all([store.dispatch("USER_INFO"), store.dispatch("GET_ALL_PROJECTS"), store.dispatch("GET_STATIC_PAGES"), -store.dispatch("GET_USERS"), store.dispatch("GET_USER_LEVEL_PROJECTS") // * mock en attendant endpoint ou autre ]).then(axios.spread(function () { new Vue({ diff --git a/src/store/index.js b/src/store/index.js index 457a3258..85597f12 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -33,9 +33,7 @@ export default new Vuex.Store({ state: { logged: false, user: false, - users: [], project_slug: null, - projectMembers: null, projects: [], staticPages: null, SSO_SETTED: false, @@ -49,9 +47,6 @@ export default new Vuex.Store({ SET_PROJECT_SLUG(state, slug) { state.project_slug = slug; }, - SET_PROJECT_MEMBERS(state, projectMembers) { - state.projectMembers = projectMembers; - }, SET_USER(state, payload) { state.user = payload; }, @@ -105,14 +100,7 @@ export default new Vuex.Store({ throw error; }); }, - async GET_USERS({ commit }) { - await axios - .get(`${DJANGO_API_BASE}users/`) - .then((response) => (commit("SET_USERS", response.data))) - .catch((error) => { - throw error; - }); - }, + LOGIN({ commit, dispatch }, payload) { if (payload.username && payload.password) { axios @@ -134,7 +122,7 @@ export default new Vuex.Store({ } }, - USER_INFO({ commit }) { + USER_INFO({ commit }) { // ? not used currently ? axios .get(`${DJANGO_API_BASE}user_info/`) .then((response) => { diff --git a/src/views/project/Project_members.vue b/src/views/project/Project_members.vue index 9e83c515..49c11427 100644 --- a/src/views/project/Project_members.vue +++ b/src/views/project/Project_members.vue @@ -17,15 +17,15 @@ <th>Niveau d'autorisation</th> </tr> </thead> - <!-- <div id="formsets-members"> --> <tbody> - <div v-frag v-for="member in memberForms" :key="member.username"> + <div v-frag v-for="member in projectMembers" :key="member.username"> <tr> <td> - {{ member.full_name }}<br /><i>{{ member.username }}</i> + {{ member.last_name }} {{ member.first_name }}<br /><i>{{ + member.username + }}</i> </td> <td> - <!-- :selection.sync="memberForms[index].userLevel" --> <div class="required field"> <Dropdown :options="levelOptions" @@ -33,33 +33,9 @@ :selection.sync="member.userLevel" :search="true" /> - <!-- <div class="ui selection search dropdown"> - <input - type="hidden" - name="level" - id="level" - v-model="member.level" - /> - <div class="default text"></div> - <i class="dropdown icon"></i> - <div class="menu"> - {% for x,y in form.level.field.choices %} - <div - v-for="(x, y) in form.level.field.choices" - :key="y" - class="item" - :data-value="x" - :selected="form.level.value === x" - > - {{ y }} - </div> - </div> - </div> - {{ form.level.errors }} --> </div> </td> </tr> - <!-- </div> --> </div> </tbody> </table> @@ -78,8 +54,9 @@ </template> <script> +import axios from "axios"; import frag from "vue-frag"; -import { mapState } from "vuex"; +import { mapGetters } from "vuex"; import Dropdown from "@/components/Dropdown.vue"; export default { @@ -93,12 +70,12 @@ export default { }, computed: { - ...mapState(["users"]), + ...mapGetters(["project"]), }, data() { return { - memberForms: [], + projectMembers: [], levelOptions: [ "Utilisateur connecté", "Contributeur", @@ -109,14 +86,48 @@ export default { }, methods: { validateMembers() { - console.log("POST ", this.memberForms); + const data = { + slug: this.project.slug, + data: this.projectMembers, + }; + console.log("validateMembers", data); + /* axios + .post(`${DJANGO_API_BASE}projet/${payload.slug}/utilisateurs/`, payload.data) + .then((response) => { + const user = response.data.user; + + }) + .catch(() => { + router.push({ name: "login" }); + }); */ + }, + async fetchMembers() { + return axios + .get( + `${process.env.VUE_APP_DJANGO_API_BASE}projet/${this.$route.params.slug}/utilisateurs` + ) + .then((response) => response.data.members) + .catch((error) => { + throw error; + }); + }, + async populateMembers() { + await this.fetchMembers().then((members) => { + this.projectMembers = members.map((el) => { + return { + userLevel: el.userLevel ? el.userLevel : this.levelOptions[0], + ...el, + }; + }); + }); }, }, created() { - this.memberForms = this.users.map((el) => { - return { userLevel: null, ...el }; - }); + if (!this.project) { + this.$store.commit("SET_PROJECT_SLUG", this.$route.params.slug); + } + this.populateMembers(); }, }; </script> \ No newline at end of file -- GitLab