Skip to content

Commit 4712985

Browse files
Fix #3249 (#3263)
* Individually selected delete fixed * Bugfixes Fixed select-all checkbox so that it works properly. Fixed it so that when a user clicks inside checkbox cell, but not checkbox itself, it toggles status.
1 parent 64cf489 commit 4712985

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

qiita_pet/templates/study_ajax/sample_prep_summary.html

+21-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
var column_width_factor = 10;
77
var rows = {% raw list(rows.values()) %};
88
// setting up checkboxes
9-
var prep_colums = jQuery.map(
9+
var prep_columns = jQuery.map(
1010
Object.keys(rows[0]), function(e) { if (e.startsWith("prep")) return e });
1111
for(var i=0;i<rows.length;i++) {
1212
rows[i]['sample-delete'] = '';
@@ -19,13 +19,19 @@
1919
});
2020
}
2121
function toggleCheckbox(element){
22-
var checked = element.checked ? 'checked' : '';
23-
var row = $(element).prop('value');
24-
rows[row]["sample-delete"] = checked;
25-
}
22+
if(element['sample-delete'] == 'checked') {
23+
element['sample-delete'] = '';
24+
// if user clicks inside row and column, but not in checkbox, this will force checkbox to change.
25+
$('.sample-delete[name="' + element['sample'] + '"]').prop('checked', '');
26+
} else {
27+
element['sample-delete'] = 'checked';
28+
// if user clicks inside row and column, but not in checkbox, this will force checkbox to change.
29+
$('.sample-delete[name="' + element['sample'] + '"]').prop('checked', 'checked');
30+
};
31+
}
2632
function linkFormatter(row, cell, value, columnDef, dataContext) {
2733
{% if user_can_edit %}
28-
return "<input type='checkbox' class='sample-delete' value='" + row + "' name='" + rows[row]['sample'] + "' onchange='toggleCheckbox(this)' " + rows[row]['sample-delete'] + ">";
34+
return "<input type='checkbox' class='sample-delete' value='" + row + "' name='" + rows[row]['sample'] + "'>";
2935
{% else %}
3036
return ""
3137
{% end %}
@@ -44,7 +50,7 @@
4450
var to_delete = [];
4551
$.each(rows, function(i, row){
4652
var sample_delete = jQuery.map(
47-
prep_colums, function(pc) { if (row[pc] === 'X') return pc });
53+
prep_columns, function(pc) { if (row[pc] === 'X') return pc });
4854
if (sample_delete.length === 0){
4955
to_delete.push(row['sample'])
5056
}
@@ -64,15 +70,15 @@
6470

6571
// adding header
6672
var header = ['sample_name']
67-
$.each(prep_colums, function(i, prep){
73+
$.each(prep_columns, function(i, prep){
6874
header.push(prep_names[prep]);
6975
});
7076
information.push(header.join('\t'))
7177

7278
// adding data
7379
$.each(rows, function (i, row){
7480
var line = [row['sample']]
75-
$.each(prep_colums, function(i, prep){
81+
$.each(prep_columns, function(i, prep){
7682
line.push(row[prep]);
7783
});
7884
information.push(line.join('\t'));
@@ -116,6 +122,12 @@
116122
grid.invalidate();
117123
grid.render();
118124
});
125+
grid.onClick.subscribe(function(e, args){
126+
let cell = grid.getCellFromEvent(e);
127+
if(grid.getColumns()[cell.cell].id == "sample-delete") {
128+
toggleCheckbox(grid.getDataItem(cell.row))
129+
}
130+
});
119131

120132
function add_meta() {
121133
var metadata_category = $("#metadata_category").val();

0 commit comments

Comments
 (0)