|
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