This is an automated email from the git hooks/post-receive script. New commit to branch bow-v2-go in repository bow. See https://gitlab.nuiton.org/chorem/bow.git commit fff863477f5f69b59941319c95729eafb89e00a3 Author: Benjamin <poussin@codelutin.com> Date: Mon May 25 00:08:19 2020 +0200 on ne met plus d'en l'url les params qui ont la valeur par defaut --- doc/front-concept.md | 22 ++++++++++++++++++++++ web/src/main.js | 42 +++++++++++++++++++++++------------------- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/doc/front-concept.md b/doc/front-concept.md new file mode 100644 index 0000000..0c9a625 --- /dev/null +++ b/doc/front-concept.md @@ -0,0 +1,22 @@ +### Front + +Le front est en vuejs + vuerouter + vuex + +L'intégration de vuex n'est là que pour ce qui est vraiment comment à tous les composants: +- user pour les infos de l'utilisateur courant +- authenticated (boolean) pour savoir si l'utilisateur a un jeton jwt +- query qui contient les infos et le resultat de la requête courante (info: {}, tags:[[tags...],[occurence...]], result:) + +Il faut sinon privilégier le dialogue parent/enfant dans les composants + +Il exist un mixin déclarer dans main.js qui permet l'accès à toutes les +informations du store vuex sous forme de properties. Ce mixin apporte aussi un +ensemble de methodes pour faire évoluer la query courante. + +Lorsque l'utilisateur se connecte ou se déconnecte, le user modifier est celui +du localStorage, qui envoie ensuite un event qui est intercepté dans App.js +pour mettre à jour le store vuex (user et authenticated) + +La query elle, est mise à jour dans le store lorsqu'on recoie le nouveau +résultat, le composant qui fait cette requête lors du changement d'url est +Home.vue \ No newline at end of file diff --git a/web/src/main.js b/web/src/main.js index cb2bc37..fed1c74 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -26,18 +26,19 @@ Vue.prototype.$storage = StoreHelper Vue.mixin({ methods: { - getCurrentQuery() { + go: function(fullQuery) { + console.log('go query', fullQuery) + + // keep only non default params, to not pollute url let query = {} - query.tags = this.queryInfo.tags - query.fulltext = this.queryInfo.fulltext - query.query = this.queryInfo.query - query.orderby = this.queryInfo.orderby - query.orderasc = this.queryInfo.orderasc - query.first = this.queryInfo.first - return query - }, - go: function(query) { - console.log('go', query) + fullQuery.first && (query.first = fullQuery.first) + fullQuery.tags && (query.tags = fullQuery.tags) + fullQuery.fulltext && (query.fulltext = fullQuery.fulltext) + fullQuery.query && (query.query = fullQuery.query) + fullQuery.orderby != 'creationdate' && (query.orderby = fullQuery.orderby) + fullQuery.orderasc && (query.orderas = fullQuery.orderasc) + + console.log('go params', query) this.$router.push({ name: 'Home', query }) }, changeTagsAndFulltextAndGo: function(tags, fulltext) { @@ -48,9 +49,10 @@ Vue.mixin({ this.go(query) }, goFirst: function() { - let query = { ...this.currentQuery } + let c = this.currentQuery + let query = { ...c } query.first = 0 - if (query.first != this.currentQuery.first) { + if (query.first != c.first) { this.go(query) } }, @@ -62,22 +64,24 @@ Vue.mixin({ } }, goPrev: function() { - let query = { ...this.currentQuery } + let c = this.currentQuery + let query = { ...c } query.first = query.first - this.user.maxresult if (query.first < 0) { query.first = 0 } - if (query.first != this.currentQuery.first) { + if (query.first != c.first) { this.go(query) } }, goLast: function() { - let query = { ...this.currentQuery } + let c = this.currentQuery + let query = { ...c } query.first = this.queryInfo.total - this.user.maxresult if (query.first < 0) { query.first = 0 } - if (query.first != this.currentQuery.first) { + if (query.first != c.first) { this.go(query) } }, @@ -85,7 +89,7 @@ Vue.mixin({ let query = { ...this.currentQuery } let added = false query.tags = query.tags ? [...query.tags] : [] - tags.forEach(t => { + tags.forEach((t) => { if (query.tags.indexOf(t) === -1) { query.tags.push(t) added = true @@ -104,8 +108,8 @@ Vue.mixin({ return this.$store.state.user }, currentQuery: function() { + // faut-il mettre aussi: id ? uri ? let i = this.queryInfo - // id ? uri ? return { first: i.first, tags: i.tags, -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.