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 {
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) => {
......
......@@ -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",
......
......@@ -79,7 +79,8 @@
"none": "You don't have any favorites yet",
"supprime": "Deleted from favourites&nbsp;!",
"supprimer": "Delete from favourites",
"title": "My favourites"
"title": "My favourites",
"use": "Use my favourites"
},
"futuremembers": "Future entries",
"futureexits": "Future exits",
......
......@@ -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",
......
......@@ -79,7 +79,8 @@
"none": "Vous n'avez pas encore de favoris",
"supprime": "Supprimé des favoris&nbsp;!",
"supprimer": "Supprimer des favoris",
"title": "Mes favoris"
"title": "Mes favoris",
"use": "Utiliser mes favoris"
},
"futuremembers": "Futures entrées",
"futureexits": "Futures sorties",
......
......@@ -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)
}
}
})
......
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