Skip to content

Commit 8dae783

Browse files
committed
add a switch to filter closed UEs
1 parent d58af8e commit 8dae783

3 files changed

Lines changed: 23 additions & 2 deletions

File tree

pedagogy/schemas.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ class UeFilterSchema(FilterSchema):
153153
set[Literal["CS", "TM", "EC", "OM", "QC"]] | None,
154154
FilterLookup("credit_type__in"),
155155
] = None
156+
is_open: bool | None = None
156157
language: str = "FR"
157158
department: Annotated[set[str] | None, FilterLookup("department__in")] = None
158159

@@ -187,3 +188,10 @@ def filter_semester(self, value: set[str] | None) -> Q:
187188
return Q()
188189
value.add("AUTUMN_AND_SPRING")
189190
return Q(semester__in=value)
191+
192+
def filter_is_open(self, value: bool | None) -> Q: # noqa: FBT001
193+
if value is None:
194+
return Q()
195+
if not value:
196+
return Q(semester="CLOSED")
197+
return ~Q(semester="CLOSED")

pedagogy/static/bundled/pedagogy/guide-index.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ document.addEventListener("alpine:init", () => {
1717
// biome-ignore lint/style/useNamingConvention: api is in snake_case
1818
page_size: pageSizeDefault,
1919
search: "",
20+
hideClosedUes: true,
2021
department: [] as string[],
2122
// biome-ignore lint/style/useNamingConvention: api is in snake_case
2223
credit_type: [] as string[],
@@ -38,6 +39,7 @@ document.addEventListener("alpine:init", () => {
3839
10,
3940
);
4041
this.search = url.get("search") || "";
42+
this.hideClosedUes = url.get("hideClosed") || true;
4143
this.department = url.getAll("department");
4244
this.credit_type = url.getAll("credit_type");
4345
/* The semester is easier to use on the backend as an enum (spring/autumn/both/none)
@@ -58,7 +60,13 @@ document.addEventListener("alpine:init", () => {
5860
this.to_change = [];
5961
}, 50);
6062

61-
const searchParams = ["search", "department", "credit_type", "semester"];
63+
const searchParams = [
64+
"search",
65+
"hideClosedUes",
66+
"department",
67+
"credit_type",
68+
"semester",
69+
];
6270
const paginationParams = ["page", "page_size"];
6371

6472
for (const param of searchParams) {
@@ -87,7 +95,8 @@ document.addEventListener("alpine:init", () => {
8795
// biome-ignore lint/style/useNamingConvention: api is in snake_case
8896
credit_type: this.credit_type.length > 0 ? this.credit_type : undefined,
8997
semester: this.semester.length > 0 ? this.semester : undefined,
90-
98+
// biome-ignore lint/style/useNamingConvention: api is snake_case
99+
is_open: this.hideClosedUes ? true : undefined,
91100
department: this.department.length > 0 ? this.department : undefined,
92101
search: this.search || undefined,
93102
},

pedagogy/templates/pedagogy/guide.jinja

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
x-model.debounce.500ms="search"
4545
/>
4646
</fieldset>
47+
<fieldset>
48+
<input type="checkbox" class="switch" x-model="hideClosedUes" id="hide-closed-ues" name="hide-closed-ues">
49+
<label for="hide-closed-ues">{% trans %}Hide closed UEs{% endtrans %}</label>
50+
</fieldset>
4751
<div class="row gap-3x margin-bottom radio-guide">
4852
<fieldset>
4953
{% set departments = [

0 commit comments

Comments
 (0)