Skip to content
Snippets Groups Projects
Commit b9bfe511 authored by Timothee P's avatar Timothee P :sunflower:
Browse files

change endpoint and move fetch to component

parent c70ab523
No related branches found
No related tags found
No related merge requests found
...@@ -11,7 +11,6 @@ Vue.config.productionTip = false ...@@ -11,7 +11,6 @@ Vue.config.productionTip = false
axios.all([store.dispatch("USER_INFO"), axios.all([store.dispatch("USER_INFO"),
store.dispatch("GET_ALL_PROJECTS"), store.dispatch("GET_ALL_PROJECTS"),
store.dispatch("GET_STATIC_PAGES"), store.dispatch("GET_STATIC_PAGES"),
store.dispatch("GET_USERS"),
store.dispatch("GET_USER_LEVEL_PROJECTS") // * mock en attendant endpoint ou autre store.dispatch("GET_USER_LEVEL_PROJECTS") // * mock en attendant endpoint ou autre
]).then(axios.spread(function () { ]).then(axios.spread(function () {
new Vue({ new Vue({
......
...@@ -33,9 +33,7 @@ export default new Vuex.Store({ ...@@ -33,9 +33,7 @@ export default new Vuex.Store({
state: { state: {
logged: false, logged: false,
user: false, user: false,
users: [],
project_slug: null, project_slug: null,
projectMembers: null,
projects: [], projects: [],
staticPages: null, staticPages: null,
SSO_SETTED: false, SSO_SETTED: false,
...@@ -49,9 +47,6 @@ export default new Vuex.Store({ ...@@ -49,9 +47,6 @@ export default new Vuex.Store({
SET_PROJECT_SLUG(state, slug) { SET_PROJECT_SLUG(state, slug) {
state.project_slug = slug; state.project_slug = slug;
}, },
SET_PROJECT_MEMBERS(state, projectMembers) {
state.projectMembers = projectMembers;
},
SET_USER(state, payload) { SET_USER(state, payload) {
state.user = payload; state.user = payload;
}, },
...@@ -105,14 +100,7 @@ export default new Vuex.Store({ ...@@ -105,14 +100,7 @@ export default new Vuex.Store({
throw error; 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) { LOGIN({ commit, dispatch }, payload) {
if (payload.username && payload.password) { if (payload.username && payload.password) {
axios axios
...@@ -134,7 +122,7 @@ export default new Vuex.Store({ ...@@ -134,7 +122,7 @@ export default new Vuex.Store({
} }
}, },
USER_INFO({ commit }) { USER_INFO({ commit }) { // ? not used currently ?
axios axios
.get(`${DJANGO_API_BASE}user_info/`) .get(`${DJANGO_API_BASE}user_info/`)
.then((response) => { .then((response) => {
......
...@@ -17,15 +17,15 @@ ...@@ -17,15 +17,15 @@
<th>Niveau d'autorisation</th> <th>Niveau d'autorisation</th>
</tr> </tr>
</thead> </thead>
<!-- <div id="formsets-members"> -->
<tbody> <tbody>
<div v-frag v-for="member in memberForms" :key="member.username"> <div v-frag v-for="member in projectMembers" :key="member.username">
<tr> <tr>
<td> <td>
{{ member.full_name }}<br /><i>{{ member.username }}</i> {{ member.last_name }} {{ member.first_name }}<br /><i>{{
member.username
}}</i>
</td> </td>
<td> <td>
<!-- :selection.sync="memberForms[index].userLevel" -->
<div class="required field"> <div class="required field">
<Dropdown <Dropdown
:options="levelOptions" :options="levelOptions"
...@@ -33,33 +33,9 @@ ...@@ -33,33 +33,9 @@
:selection.sync="member.userLevel" :selection.sync="member.userLevel"
:search="true" :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> </div>
</td> </td>
</tr> </tr>
<!-- </div> -->
</div> </div>
</tbody> </tbody>
</table> </table>
...@@ -78,8 +54,9 @@ ...@@ -78,8 +54,9 @@
</template> </template>
<script> <script>
import axios from "axios";
import frag from "vue-frag"; import frag from "vue-frag";
import { mapState } from "vuex"; import { mapGetters } from "vuex";
import Dropdown from "@/components/Dropdown.vue"; import Dropdown from "@/components/Dropdown.vue";
export default { export default {
...@@ -93,12 +70,12 @@ export default { ...@@ -93,12 +70,12 @@ export default {
}, },
computed: { computed: {
...mapState(["users"]), ...mapGetters(["project"]),
}, },
data() { data() {
return { return {
memberForms: [], projectMembers: [],
levelOptions: [ levelOptions: [
"Utilisateur connecté", "Utilisateur connecté",
"Contributeur", "Contributeur",
...@@ -109,14 +86,48 @@ export default { ...@@ -109,14 +86,48 @@ export default {
}, },
methods: { methods: {
validateMembers() { 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() { created() {
this.memberForms = this.users.map((el) => { if (!this.project) {
return { userLevel: null, ...el }; this.$store.commit("SET_PROJECT_SLUG", this.$route.params.slug);
}); }
this.populateMembers();
}, },
}; };
</script> </script>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment