From aed0f42032bc54f72aa2209c956c254f1cbdc87c Mon Sep 17 00:00:00 2001 From: CaTasTrOOf <benoit@besnard.biz> Date: Tue, 1 Feb 2022 11:38:13 +0100 Subject: [PATCH] Add possibility to use Favorites --- components/member/List.vue | 50 ++++++++++++++++---------- i18n/locales/de.json | 3 +- i18n/locales/en.json | 3 +- i18n/locales/es.json | 3 +- i18n/locales/fr.json | 3 +- pages/previsions/futures_sorties.vue | 52 ++++++++++++++++++---------- 6 files changed, 73 insertions(+), 41 deletions(-) diff --git a/components/member/List.vue b/components/member/List.vue index c2f3e91..df23d52 100644 --- a/components/member/List.vue +++ b/components/member/List.vue @@ -119,6 +119,10 @@ export default { type: Boolean, default: false }, + certif: { + type: Boolean, + default: false + }, defaultSortDir: { type: String, default: "asc" @@ -140,7 +144,13 @@ export default { }, date(member) { if (this.adhesion) return member.limitDate + if (this.certif) return member.received_certifications.limit return Math.min(member.limitDate, member.received_certifications.limit) + }, + sort(a, b, order) { + if (a < b) return -1 * order + if (a > b) return 1 * order + return 0 } }, computed: { @@ -151,28 +161,30 @@ export default { let modifier = this.currentSortDir === "desc" ? -1 : 1 if (this.currentSort == "uid") { - if (a["uid"].toLowerCase() < b["uid"].toLowerCase()) - return -1 * modifier - if (a["uid"].toLowerCase() > b["uid"].toLowerCase()) - return 1 * modifier + sort(a["uid"].toLowerCase(), b["uid"].toLowerCase(), modifier) } else if (this.currentSort == "pubkey") { - if (a["pubkey"].toLowerCase() < b["pubkey"].toLowerCase()) - return -1 * modifier - if (a["pubkey"].toLowerCase() > b["pubkey"].toLowerCase()) - return 1 * modifier + sort(a["pubkey"].toLowerCase(), b["pubkey"].toLowerCase(), modifier) } else if (this.currentSort == "date_sortie") { - if ( - Math.min(a["limitDate"], a["received_certifications"]["limit"]) < - Math.min(b["limitDate"], b["received_certifications"]["limit"]) - ) - return -1 * modifier - if ( - Math.min(a["limitDate"], a["received_certifications"]["limit"]) > - Math.min(b["limitDate"], b["received_certifications"]["limit"]) - ) - return 1 * modifier + if (this.adhesion) { + sort(a["limitDate"], b["limitDate"], modifier) + } else if (this.certif) { + sort( + a["received_certifications"]["limit"], + b["received_certifications"]["limit"], + modifier + ) + } else { + let minA = Math.min( + a["limitDate"], + a["received_certifications"]["limit"] + ) + let minB = Math.min( + b["limitDate"], + b["received_certifications"]["limit"] + ) + sort(minA, minB, modifier) + } } - return 0 }) .filter((row, index) => { diff --git a/i18n/locales/de.json b/i18n/locales/de.json index a20e4de..869cc13 100644 --- a/i18n/locales/de.json +++ b/i18n/locales/de.json @@ -78,7 +78,8 @@ "none": "Sie haben noch keine Favoriten", "supprime": "Aus den Favoriten entfernt!", "supprimer": "Aus den Favoriten entfernen", - "title": "Meine Favoriten" + "title": "Meine Favoriten", + "use": "Verwenden Sie meine Favoriten" }, "futuremembers": "Zukünftige Beitritte", "futureexits": "Zukünfitge Austritte", diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 3d11593..99fad3e 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -79,7 +79,8 @@ "none": "You don't have any favorites yet", "supprime": "Deleted from favourites !", "supprimer": "Delete from favourites", - "title": "My favourites" + "title": "My favourites", + "use": "Use my favourites" }, "futuremembers": "Future entries", "futureexits": "Future exits", diff --git a/i18n/locales/es.json b/i18n/locales/es.json index c4cd434..5aa977c 100644 --- a/i18n/locales/es.json +++ b/i18n/locales/es.json @@ -79,7 +79,8 @@ "none": "Aún no tienes favoritos", "supprime": "¡Eliminado de favoritos!", "supprimer": "Eliminar de favoritos", - "title": "Mis favoritos" + "title": "Mis favoritos", + "use": "Usar mis favoritos" }, "futuremembers": "Futuras entradas", "futureexits": "Futuras salidas", diff --git a/i18n/locales/fr.json b/i18n/locales/fr.json index df72ff4..ccf811d 100644 --- a/i18n/locales/fr.json +++ b/i18n/locales/fr.json @@ -79,7 +79,8 @@ "none": "Vous n'avez pas encore de favoris", "supprime": "Supprimé des favoris !", "supprimer": "Supprimer des favoris", - "title": "Mes favoris" + "title": "Mes favoris", + "use": "Utiliser mes favoris" }, "futuremembers": "Futures entrées", "futureexits": "Futures sorties", diff --git a/pages/previsions/futures_sorties.vue b/pages/previsions/futures_sorties.vue index dc01ed1..4d70742 100644 --- a/pages/previsions/futures_sorties.vue +++ b/pages/previsions/futures_sorties.vue @@ -2,7 +2,7 @@ <main class="container"> <h2 class="text-center my-4 font-weight-light">{{ $t("futureexits") }}</h2> <div class="row mb-4"> - <div class="col-6 m-auto text-center"> + <div class="col-6 m-auto text-center" v-if="!favoris"> <label for="period" class="form-label">{{ $t("previsions.period.title") }}</label> @@ -22,6 +22,10 @@ $t("previsions.period.desc") }}</small> </div> + <div class="col-6 m-auto text-center"> + <input type="checkbox" id="favoris" v-model="favoris" /> + <label for="favoris" class="form-label">{{ $t("favoris.use") }}</label> + </div> </div> <NavigationLoader :isLoading="$apollo.queries.wwResult.loading" /> <transition name="fade"> @@ -41,7 +45,8 @@ <MemberList defaultSort="date_sortie" :members="wwResult['outOfCerts']" - :displayPubkey="false" /> + :displayPubkey="false" + :certif="true" /> </div> <div class="col-lg-6"> <h2 class="h4 text-danger text-center">{{ $t("statut.renew") }}</h2> @@ -78,40 +83,51 @@ export default { } ], error: null, - period: 30 + period: 30, + favoris: false } }, methods: { save() { localStorage.setItem("previsions_period", this.period) + }, + getParams() { + if (this.favoris && localStorage.favourites) { + return { group: this.$favourites.list } + } + return { period: this.period * 24 * 60 * 60 } } }, apollo: { wwResult: { query: NEXT_EXITS, variables() { - return { period: this.period * 24 * 60 * 60 } + return this.getParams() }, update(data) { let result = { membership: [], outOfCerts: [] } data.memEnds.forEach((member) => { - if ( - ["danger", "warning"].includes( - this.$options.filters.dateStatus(member.limitDate) - ) - ) { + if (this.favoris) { result.membership.push(member) - } - - if ( - ["danger", "warning"].includes( - this.$options.filters.dateStatus( - member.received_certifications.limit - ) - ) - ) { 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) + } } }) -- GitLab