|
6 | 6 | var column_width_factor = 10; |
7 | 7 | var rows = {% raw list(rows.values()) %}; |
8 | 8 | // setting up checkboxes |
9 | | - var prep_colums = jQuery.map( |
| 9 | + var prep_columns = jQuery.map( |
10 | 10 | Object.keys(rows[0]), function(e) { if (e.startsWith("prep")) return e }); |
11 | 11 | for(var i=0;i<rows.length;i++) { |
12 | 12 | rows[i]['sample-delete'] = ''; |
|
19 | 19 | }); |
20 | 20 | } |
21 | 21 | 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 | + } |
26 | 32 | function linkFormatter(row, cell, value, columnDef, dataContext) { |
27 | 33 | {% 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'] + "'>"; |
29 | 35 | {% else %} |
30 | 36 | return "" |
31 | 37 | {% end %} |
|
44 | 50 | var to_delete = []; |
45 | 51 | $.each(rows, function(i, row){ |
46 | 52 | 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 }); |
48 | 54 | if (sample_delete.length === 0){ |
49 | 55 | to_delete.push(row['sample']) |
50 | 56 | } |
|
64 | 70 |
|
65 | 71 | // adding header |
66 | 72 | var header = ['sample_name'] |
67 | | - $.each(prep_colums, function(i, prep){ |
| 73 | + $.each(prep_columns, function(i, prep){ |
68 | 74 | header.push(prep_names[prep]); |
69 | 75 | }); |
70 | 76 | information.push(header.join('\t')) |
71 | 77 |
|
72 | 78 | // adding data |
73 | 79 | $.each(rows, function (i, row){ |
74 | 80 | var line = [row['sample']] |
75 | | - $.each(prep_colums, function(i, prep){ |
| 81 | + $.each(prep_columns, function(i, prep){ |
76 | 82 | line.push(row[prep]); |
77 | 83 | }); |
78 | 84 | information.push(line.join('\t')); |
|
116 | 122 | grid.invalidate(); |
117 | 123 | grid.render(); |
118 | 124 | }); |
| 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 | + }); |
119 | 131 |
|
120 | 132 | function add_meta() { |
121 | 133 | var metadata_category = $("#metadata_category").val(); |
|
0 commit comments