3
3
<h1><%- locale.get('bulk_tile') %></h1>
4
4
5
5
<div class="row">
6
- <div class="col js-bulkCreation ">
6
+ <div class="col">
7
7
<p><%- locale.get('bulk_text') %></p>
8
8
<div>
9
9
<p>Example:</p>
@@ -15,7 +15,8 @@ myclass-student2,sentences-make-good-passwords</pre>
15
15
</div>
16
16
</div>
17
17
18
- <div class="row">
18
+ <!-- This section contains all the controls used for JS / manipulating CSVs, etc. -->
19
+ <div class="row js-bulkCreation">
19
20
<div class="col-md-6 col-sm-12">
20
21
<p><strong>Upload a CSV file:</strong></p>
21
22
<div class="input-group mb-3">
@@ -30,7 +31,7 @@ myclass-student2,sentences-make-good-passwords</pre>
30
31
style="font-family: monospace"></textarea>
31
32
</details>
32
33
<p>
33
- <div class="form-check form-switch">
34
+ <div class="form-check form-switch js-createCollection ">
34
35
<input id="add_collection"
35
36
type="checkbox" class="add-collection form-check-input" name="add_collection"
36
37
onchange="document.querySelector('div.collection').hidden =
@@ -45,49 +46,57 @@ myclass-student2,sentences-make-good-passwords</pre>
45
46
<input id="collection_name" name="collection_name" class="collection_name form-control" />
46
47
</div>
47
48
</p>
48
- <button class="btn btn-primary" onclick="
49
- var div = document.querySelector('div.js-bulkCreation'),
50
- collection_name =
51
- div.querySelector('input.add-collection').checked ?
52
- div.querySelector('.collection_name').value :
53
- null,
54
- file = div.querySelector('.csv').files[0],
55
- csv_text = div.querySelector('#csv_text').value;
56
-
57
- if (file) {
58
- file.text().then(data => processCSV(data));
59
- } else if (csv_text) {
60
- processCSV(csv_text);
61
- }
62
-
63
- function processCSV (csv_data) {
64
- if (csv_data.substring(0,8) !== 'username') {
65
- csv_data = 'username,password\n' + csv_data;
66
- }
67
- Papa.parse(
68
- csv_data,
69
- {
70
- skipEmptyLines: true,
71
- header: true,
72
- complete: (results) => {
73
- let post_body = { users: results.data };
74
- if (collection_name) {
75
- post_body.collection_name = collection_name;
76
- }
77
- cloud.post(
78
- '/users/create_learners',
79
- null,
80
- post_body
81
- );
82
- }
83
- }
84
- );
85
- };
86
- "><%- locale.get('bulk_create') %></button>
49
+ <button type="button"
50
+ class="btn btn-primary js-createLearners"><%- locale.get('bulk_create') %></button>
87
51
<script>
88
52
document.querySelector('div.collection').hidden =
89
53
!document.querySelector('input.add-collection').checked;
90
54
</script>
91
55
</div>
92
56
</div>
93
57
</div>
58
+
59
+ <script type="text/javascript">
60
+ window.onload = () => {
61
+ let create_learners = function() {
62
+ var div = document.querySelector('div.js-bulkCreation'),
63
+ collection_name =
64
+ div.querySelector('input.add-collection').checked ?
65
+ div.querySelector('.collection_name').value :
66
+ null,
67
+ file = div.querySelector('.csv').files[0],
68
+ csv_text = div.querySelector('#csv_text').value;
69
+
70
+ if (file) {
71
+ file.text().then(data => processCSV(data));
72
+ } else if (csv_text) {
73
+ processCSV(csv_text);
74
+ }
75
+
76
+ function processCSV (csv_data) {
77
+ if (csv_data.trim().substring(0,8) !== 'username') {
78
+ csv_data = 'username,password\n' + csv_data;
79
+ }
80
+ Papa.parse(
81
+ csv_data,
82
+ {
83
+ skipEmptyLines: true,
84
+ header: true,
85
+ complete: (results) => {
86
+ let post_body = { users: results.data };
87
+ if (collection_name) {
88
+ post_body.collection_name = collection_name;
89
+ }
90
+ cloud.post(
91
+ '/users/create_learners',
92
+ null,
93
+ post_body
94
+ );
95
+ }
96
+ }
97
+ );
98
+ };
99
+ };
100
+ document.querySelector('.js-createLearners').addEventListener('click', create_learners);
101
+ }
102
+ </script>
0 commit comments