Skip to content
Snippets Groups Projects
Commit d9a33dd8 authored by Pierre-Jean CHANCELLIER's avatar Pierre-Jean CHANCELLIER
Browse files

correct queries for future_sorties

parent 48689a10
No related branches found
No related tags found
No related merge requests found
......@@ -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")
......
......@@ -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
}
}
`
......@@ -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") + "&nbsp;:"
}}</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>
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