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

Merge branch 'favourites-filter' into 'master'

Add possibility to use Favorites

See merge request !11
parents 041d857e aed0f420
No related branches found
No related tags found
1 merge request!11Add possibility to use Favorites
...@@ -119,6 +119,10 @@ export default { ...@@ -119,6 +119,10 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
certif: {
type: Boolean,
default: false
},
defaultSortDir: { defaultSortDir: {
type: String, type: String,
default: "asc" default: "asc"
...@@ -140,7 +144,13 @@ export default { ...@@ -140,7 +144,13 @@ export default {
}, },
date(member) { date(member) {
if (this.adhesion) return member.limitDate if (this.adhesion) return member.limitDate
if (this.certif) return member.received_certifications.limit
return Math.min(member.limitDate, 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: { computed: {
...@@ -151,28 +161,30 @@ export default { ...@@ -151,28 +161,30 @@ export default {
let modifier = this.currentSortDir === "desc" ? -1 : 1 let modifier = this.currentSortDir === "desc" ? -1 : 1
if (this.currentSort == "uid") { if (this.currentSort == "uid") {
if (a["uid"].toLowerCase() < b["uid"].toLowerCase()) sort(a["uid"].toLowerCase(), b["uid"].toLowerCase(), modifier)
return -1 * modifier
if (a["uid"].toLowerCase() > b["uid"].toLowerCase())
return 1 * modifier
} else if (this.currentSort == "pubkey") { } else if (this.currentSort == "pubkey") {
if (a["pubkey"].toLowerCase() < b["pubkey"].toLowerCase()) sort(a["pubkey"].toLowerCase(), b["pubkey"].toLowerCase(), modifier)
return -1 * modifier
if (a["pubkey"].toLowerCase() > b["pubkey"].toLowerCase())
return 1 * modifier
} else if (this.currentSort == "date_sortie") { } else if (this.currentSort == "date_sortie") {
if ( if (this.adhesion) {
Math.min(a["limitDate"], a["received_certifications"]["limit"]) < sort(a["limitDate"], b["limitDate"], modifier)
Math.min(b["limitDate"], b["received_certifications"]["limit"]) } else if (this.certif) {
) sort(
return -1 * modifier a["received_certifications"]["limit"],
if ( b["received_certifications"]["limit"],
Math.min(a["limitDate"], a["received_certifications"]["limit"]) > modifier
Math.min(b["limitDate"], b["received_certifications"]["limit"]) )
) } else {
return 1 * modifier 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 return 0
}) })
.filter((row, index) => { .filter((row, index) => {
......
...@@ -78,7 +78,8 @@ ...@@ -78,7 +78,8 @@
"none": "Sie haben noch keine Favoriten", "none": "Sie haben noch keine Favoriten",
"supprime": "Aus den Favoriten entfernt!", "supprime": "Aus den Favoriten entfernt!",
"supprimer": "Aus den Favoriten entfernen", "supprimer": "Aus den Favoriten entfernen",
"title": "Meine Favoriten" "title": "Meine Favoriten",
"use": "Verwenden Sie meine Favoriten"
}, },
"futuremembers": "Zukünftige Beitritte", "futuremembers": "Zukünftige Beitritte",
"futureexits": "Zukünfitge Austritte", "futureexits": "Zukünfitge Austritte",
......
...@@ -79,7 +79,8 @@ ...@@ -79,7 +79,8 @@
"none": "You don't have any favorites yet", "none": "You don't have any favorites yet",
"supprime": "Deleted from favourites&nbsp;!", "supprime": "Deleted from favourites&nbsp;!",
"supprimer": "Delete from favourites", "supprimer": "Delete from favourites",
"title": "My favourites" "title": "My favourites",
"use": "Use my favourites"
}, },
"futuremembers": "Future entries", "futuremembers": "Future entries",
"futureexits": "Future exits", "futureexits": "Future exits",
......
...@@ -79,7 +79,8 @@ ...@@ -79,7 +79,8 @@
"none": "Aún no tienes favoritos", "none": "Aún no tienes favoritos",
"supprime": "¡Eliminado de favoritos!", "supprime": "¡Eliminado de favoritos!",
"supprimer": "Eliminar de favoritos", "supprimer": "Eliminar de favoritos",
"title": "Mis favoritos" "title": "Mis favoritos",
"use": "Usar mis favoritos"
}, },
"futuremembers": "Futuras entradas", "futuremembers": "Futuras entradas",
"futureexits": "Futuras salidas", "futureexits": "Futuras salidas",
......
...@@ -79,7 +79,8 @@ ...@@ -79,7 +79,8 @@
"none": "Vous n'avez pas encore de favoris", "none": "Vous n'avez pas encore de favoris",
"supprime": "Supprimé des favoris&nbsp;!", "supprime": "Supprimé des favoris&nbsp;!",
"supprimer": "Supprimer des favoris", "supprimer": "Supprimer des favoris",
"title": "Mes favoris" "title": "Mes favoris",
"use": "Utiliser mes favoris"
}, },
"futuremembers": "Futures entrées", "futuremembers": "Futures entrées",
"futureexits": "Futures sorties", "futureexits": "Futures sorties",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<main class="container"> <main class="container">
<h2 class="text-center my-4 font-weight-light">{{ $t("futureexits") }}</h2> <h2 class="text-center my-4 font-weight-light">{{ $t("futureexits") }}</h2>
<div class="row mb-4"> <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">{{ <label for="period" class="form-label">{{
$t("previsions.period.title") $t("previsions.period.title")
}}</label> }}</label>
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
$t("previsions.period.desc") $t("previsions.period.desc")
}}</small> }}</small>
</div> </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> </div>
<NavigationLoader :isLoading="$apollo.queries.wwResult.loading" /> <NavigationLoader :isLoading="$apollo.queries.wwResult.loading" />
<transition name="fade"> <transition name="fade">
...@@ -41,7 +45,8 @@ ...@@ -41,7 +45,8 @@
<MemberList <MemberList
defaultSort="date_sortie" defaultSort="date_sortie"
:members="wwResult['outOfCerts']" :members="wwResult['outOfCerts']"
:displayPubkey="false" /> :displayPubkey="false"
:certif="true" />
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<h2 class="h4 text-danger text-center">{{ $t("statut.renew") }}</h2> <h2 class="h4 text-danger text-center">{{ $t("statut.renew") }}</h2>
...@@ -78,40 +83,51 @@ export default { ...@@ -78,40 +83,51 @@ export default {
} }
], ],
error: null, error: null,
period: 30 period: 30,
favoris: false
} }
}, },
methods: { methods: {
save() { save() {
localStorage.setItem("previsions_period", this.period) 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: { apollo: {
wwResult: { wwResult: {
query: NEXT_EXITS, query: NEXT_EXITS,
variables() { variables() {
return { period: this.period * 24 * 60 * 60 } return this.getParams()
}, },
update(data) { update(data) {
let result = { membership: [], outOfCerts: [] } let result = { membership: [], outOfCerts: [] }
data.memEnds.forEach((member) => { data.memEnds.forEach((member) => {
if ( if (this.favoris) {
["danger", "warning"].includes(
this.$options.filters.dateStatus(member.limitDate)
)
) {
result.membership.push(member) result.membership.push(member)
}
if (
["danger", "warning"].includes(
this.$options.filters.dateStatus(
member.received_certifications.limit
)
)
) {
result.outOfCerts.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)
}
} }
}) })
......
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