From d9a33dd8e6374f3525fd5828d91c3b8777ac61cf Mon Sep 17 00:00:00 2001 From: paidge <paidge_cs@hotmail.com> Date: Tue, 1 Feb 2022 16:59:27 +0100 Subject: [PATCH] correct queries for future_sorties --- components/member/List.vue | 27 ++--- graphql/queries.js | 42 +++++++- pages/previsions/futures_sorties.vue | 145 ++++++++------------------- 3 files changed, 96 insertions(+), 118 deletions(-) diff --git a/components/member/List.vue b/components/member/List.vue index 77730ae..56a25b6 100644 --- a/components/member/List.vue +++ b/components/member/List.vue @@ -50,6 +50,9 @@ " :memberStatus="member.status" /> </div> + <div v-if="['adhesion', 'certif'].includes(type)" class="d-sm-none"> + <BadgeDate :date="date(member)" styleDate="long" /> + </div> <BadgeStatus :membre="member" /> <BadgeDispo :isDispo="member.minDatePassed" @@ -103,7 +106,6 @@ export default { type: Array, required: true }, - displayHead: { type: Boolean, default: true @@ -116,13 +118,12 @@ export default { type: Boolean, default: true }, - adhesion: { - type: Boolean, - default: false - }, - certif: { - type: Boolean, - default: false + type: { + type: String, + default: "default", + validator: function (value) { + return ["adhesion", "certif", "default"].indexOf(value) !== -1 + } }, defaultSortDir: { type: String, @@ -144,8 +145,8 @@ export default { this.currentSort = s }, date(member) { - if (this.adhesion) return member.limitDate - if (this.certif) return member.received_certifications.limit + if (this.type == "adhesion") return member.limitDate + if (this.type == "certif") return member.received_certifications.limit return Math.min(member.limitDate, member.received_certifications.limit) }, getOrder(a, b, order) { @@ -173,9 +174,9 @@ export default { modifier ) } else if (this.currentSort == "date_sortie") { - if (this.adhesion) { + if (this.type == "adhesion") { return this.getOrder(a["limitDate"], b["limitDate"], modifier) - } else if (this.certif) { + } else if (this.type == "certif") { return this.getOrder( a["received_certifications"]["limit"], b["received_certifications"]["limit"], @@ -202,7 +203,7 @@ export default { }) }, getTitleDate() { - if (this.adhesion || this.certif) { + if (["adhesion", "certif"].includes(this.type)) { return this.$t("date") } else { return this.$t("membre.datelimpertestatut") diff --git a/graphql/queries.js b/graphql/queries.js index ae84d24..00715cb 100644 --- a/graphql/queries.js +++ b/graphql/queries.js @@ -235,7 +235,7 @@ export const FAVORIS = gql` } ` -// Pour la page index +// Pour la page previsions/futures_sorties export const NEXT_EXITS = gql` query NextExits($group: [String!], $start: Int64, $period: Int64) { memEnds(group: $group, startFromNow: $start, period: $period) { @@ -251,6 +251,46 @@ export const NEXT_EXITS = gql` __typename limit } + sent_certifications { + __typename + pending + } + } + } +` +// Pour la page previsions/futures_sorties +export const NEXT_LOOSE_CERTS = gql` + query NextLoseCerts( + $group: [String!] + $start: Int64 + $period: Int64 + $missingIncluded: Boolean + ) { + certEnds( + group: $group + startFromNow: $start + period: $period + missingIncluded: $missingIncluded + ) { + id { + __typename + pubkey + uid + status + hash + minDatePassed + minDate + limitDate + received_certifications { + __typename + limit + } + sent_certifications { + __typename + pending + } + } + date } } ` diff --git a/pages/previsions/futures_sorties.vue b/pages/previsions/futures_sorties.vue index d434fe0..6202baf 100644 --- a/pages/previsions/futures_sorties.vue +++ b/pages/previsions/futures_sorties.vue @@ -6,60 +6,34 @@ <input type="checkbox" id="favoris" v-model="favoris" /> <label for="favoris" class="form-label">{{ $t("favoris.use") }}</label> </div> - <div class="col-10 mb-4" v-if="!favoris"> - <div class="form-group row period"> - <label for="period" class="col-sm-6 col-form-label">{{ - $t("previsions.period.title") + " :" - }}</label> - <div class="col-sm-6 col-md-5 col-lg-4 col-xl-3"> - <select - class="form-control" - id="period" - aria-describedby="periodHelp" - v-model="period" - @change="save"> - <option - v-for="index in 30" - :key="index" - :value="index" - v-html="$tc('jours', index)"></option> - </select> - <small id="periodHelp" class="form-text text-muted">{{ - $t("previsions.period.desc") - }}</small> - </div> - </div> - </div> </div> - <NavigationLoader :isLoading="$apollo.queries.wwResult.loading" /> + <NavigationLoader :isLoading="$apollo.loading" /> <transition name="fade"> - <div - class="alert alert-danger" - v-if="error && !$apollo.queries.wwResult.loading"> + <div class="alert alert-danger" v-if="error && !$apollo.loading"> {{ error }} </div> </transition> <transition name="fade"> - <div v-if="wwResult && !$apollo.queries.wwResult.loading"> - <div class="row"> - <div class="col-lg-6"> - <h2 class="h4 text-danger text-center"> - {{ $t("statut.bientotmanquecertif") }} - </h2> - <MemberList - defaultSort="date_sortie" - :members="wwResult['outOfCerts']" - :displayPubkey="false" - :certif="true" /> - </div> - <div class="col-lg-6"> - <h2 class="h4 text-danger text-center">{{ $t("statut.renew") }}</h2> - <MemberList - defaultSort="date_sortie" - :members="wwResult['membership']" - :displayPubkey="false" - :adhesion="true" /> - </div> + <div class="row" v-if="!$apollo.loading"> + <div class="col-lg-6" v-if="memEnds"> + <h2 class="h4 text-danger text-center"> + {{ $t("statut.renew") }} + </h2> + <MemberList + defaultSort="date_sortie" + :members="memEnds" + :displayPubkey="false" + type="adhesion" /> + </div> + <div class="col-lg-6" v-if="certEnds"> + <h2 class="h4 text-danger text-center"> + {{ $t("statut.bientotmanquecertif") }} + </h2> + <MemberList + defaultSort="date_sortie" + :members="certEnds" + :displayPubkey="false" + type="certif" /> </div> </div> </transition> @@ -68,6 +42,7 @@ <script> import { NEXT_EXITS } from "@/graphql/queries.js" +import { NEXT_LOOSE_CERTS } from "@/graphql/queries.js" export default { data() { @@ -87,55 +62,36 @@ export default { } ], error: null, - period: 30, favoris: false } }, - methods: { - save() { - localStorage.setItem("previsions_period", this.period) - }, + computed: { getParams() { - if (this.favoris && localStorage.favourites) { - return { group: this.$favourites.list } + if (this.favoris) { + return localStorage.favourites + ? { group: "wotwizard-nobody", period: 2635200 } + : { group: this.$favourites.list, period: 2635200 } } - return { period: this.period * 24 * 60 * 60 } + return { period: 2635200 } } }, apollo: { - wwResult: { + memEnds: { query: NEXT_EXITS, variables() { - return this.getParams() + return this.getParams + }, + error(err) { + this.error = err.message + } + }, + certEnds: { + query: NEXT_LOOSE_CERTS, + variables() { + return this.getParams }, update(data) { - let result = { membership: [], outOfCerts: [] } - - data.memEnds.forEach((member) => { - if (this.favoris) { - result.membership.push(member) - result.outOfCerts.push(member) - } else { - if ( - ["danger", "warning"].includes( - this.$options.filters.dateStatus(member.limitDate) - ) - ) { - result.membership.push(member) - } - if ( - ["danger", "warning"].includes( - this.$options.filters.dateStatus( - member.received_certifications.limit - ) - ) - ) { - result.outOfCerts.push(member) - } - } - }) - - return result + return data.certEnds.map((item) => item.id) }, error(err) { this.error = err.message @@ -151,25 +107,6 @@ export default { }, mounted() { $nuxt.$emit("changeRoute", this.breadcrumb) - if (localStorage.previsions_sorties) { - this.period = localStorage.getItem("previsions_period") - } } } </script> - -<style lang="scss"> -.period { - text-align: center; - - select { - text-align: inherit; - } - - @media (min-width: 576px) { - label { - text-align: right; - } - } -} -</style> -- GitLab