Skip to content

Commit 1b7bb16

Browse files
committed
Adds Select All checkbox and functionality
1 parent 67eeea1 commit 1b7bb16

File tree

2 files changed

+38
-18
lines changed

2 files changed

+38
-18
lines changed

app/assets/javascripts/project.js

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,24 @@
11
document.addEventListener("turbolinks:load", function () {
22
$("input[name='stories[]']").click(() => {
3-
const selected = $("input[name='stories[]']:checked");
4-
const is_unlocked = $("#stories").data("unlocked");
5-
if (!is_unlocked) {
6-
return;
7-
}
8-
9-
if (selected.length > 0) {
10-
const ending = selected.length == 1 ? "y" : "ies";
11-
$("#bulk_delete")
12-
.text(`Bulk Delete (${selected.length} Stor${ending})`)
13-
.attr("aria-disabled", "false")
14-
.prop("disabled", false);
15-
} else {
16-
$("#bulk_delete")
17-
.text("Bulk Delete")
18-
.attr("aria-disabled", "true")
19-
.prop("disabled", true);
20-
}
3+
updateBulkDeleteStatus();
214
});
225

6+
237
$(".import-export-header").click(function () {
248
$(this).children(".rotate").toggleClass("left");
259
});
2610

11+
12+
$("#select_all").click((event) => {
13+
let checked = event.target.checked;
14+
15+
$("input[name='stories[]']").each((_, checkbox) => {
16+
checkbox.checked = checked;
17+
})
18+
19+
updateBulkDeleteStatus();
20+
})
21+
2722
$("#bulk_delete").click((event) => {
2823
let stories_ids = [];
2924
$("input[name='stories[]']:checked").each((_, checkbox) => {
@@ -118,3 +113,24 @@ function toggleCloneSubProjects(value) {
118113
.querySelectorAll("#sub-projects-to-clone input[type='checkbox']")
119114
.forEach((el) => (el.checked = value));
120115
}
116+
117+
function updateBulkDeleteStatus() {
118+
const selected = $("input[name='stories[]']:checked");
119+
const is_unlocked = $("#stories").data("unlocked");
120+
if (!is_unlocked) {
121+
return;
122+
}
123+
124+
if (selected.length > 0) {
125+
const ending = selected.length == 1 ? "y" : "ies";
126+
$("#bulk_delete")
127+
.text(`Bulk Delete (${selected.length} Stor${ending})`)
128+
.attr("aria-disabled", "false")
129+
.prop("disabled", false);
130+
} else {
131+
$("#bulk_delete")
132+
.text("Bulk Delete")
133+
.attr("aria-disabled", "true")
134+
.prop("disabled", true);
135+
}
136+
}

app/views/projects/show.html.erb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
<th class="project-table__cell">Best<br />Estimate</th>
1919
<th class="project-table__cell">Worst<br />Estimate</th>
2020
<th class="project-table__cell story_actions">
21+
<div>
22+
<input type="checkbox" name="select_all" id="select_all">
23+
<label for="select_all">Select All</label>
24+
</div>
2125
<%= link_unless_archived(@project, "Add a Story", new_project_story_path(@project), classes: "green") if is_unlocked?(@project) %>
2226
<button id="bulk_delete" class="button magenta" aria-disabled="true" disabled>Bulk Delete</button>
2327
</th>

0 commit comments

Comments
 (0)