9292</template >
9393
9494<script lang="ts">
95- import type { Ref } from ' vue' ;
9695import { defineComponent , ref , computed , watch } from ' vue' ;
9796import { useQuasar } from ' quasar' ;
9897import { parse } from ' papaparse' ;
@@ -102,8 +101,7 @@ import { logger } from 'boot/logger';
102101import { useStore } from ' src/store' ;
103102import type { Dictionary , ResponseError } from ' src/store/models' ;
104103import { MergedUser , CourseUser , User , ParseableMergedUser } from ' src/store/models/users' ;
105- import { pick , fromPairs , values , invert , mapValues , clone , isUndefined ,
106- assign , filter } from ' lodash-es' ;
104+ import { pick , fromPairs , values , invert , mapValues , clone , assign , filter } from ' lodash-es' ;
107105
108106interface ParseError {
109107 type: string ;
@@ -124,21 +122,21 @@ export default defineComponent({
124122 setup(props , context ) {
125123 const store = useStore ();
126124 const $q = useQuasar ();
127- const file: Ref < File > = ref (new File ([], ' ' ));
125+ const file = ref < File > (new File ([], ' ' ));
128126 // stores all users from the file as well as parsing errors
129- const merged_users: Ref <Array <UserFromFile >> = ref ([]);
130- const selected: Ref <Array <UserFromFile >> = ref ([]); // stores the selected users
131- const column_headers: Ref <Dictionary <string >> = ref ({});
132- const user_param_map: Ref <Dictionary <string >> = ref ({}); // provides a map from column number to field name
133- const use_single_role: Ref < boolean > = ref (false );
134- const common_role: Ref <string | null > = ref (null );
135- const loading: Ref < boolean > = ref (false ); // used to indicate parsing is occurring
136-
137- const first_row_header: Ref < boolean > = ref (false );
138- const header_row: Ref < UserFromFile > = ref ({});
139- const merged_users_to_add: Ref <Array <MergedUser >> = ref ([]);
140- const selected_user_error: Ref < boolean > = ref (false );
141- const users_already_in_course: Ref < boolean > = ref (false );
127+ const merged_users = ref <Array <UserFromFile >>([]);
128+ const selected = ref <Array <UserFromFile >>([]); // stores the selected users
129+ const column_headers = ref <Dictionary <string >>({});
130+ const user_param_map = ref <Dictionary <string >>({}); // provides a map from column number to field name
131+ const use_single_role = ref < boolean > (false );
132+ const common_role = ref <string | null >(null );
133+ const loading = ref < boolean > (false ); // used to indicate parsing is occurring
134+
135+ const first_row_header = ref < boolean > (false );
136+ const header_row = ref < UserFromFile > ({});
137+ const merged_users_to_add = ref <Array <MergedUser >>([]);
138+ const selected_user_error = ref < boolean > (false );
139+ const users_already_in_course = ref < boolean > (false );
142140
143141 const user_fields = [
144142 { label: ' Username' , field: ' username' , regexp: / (user)| (login)/ i },
@@ -243,9 +241,9 @@ export default defineComponent({
243241 (user_fields .indexOf (err .field )>= 0 || course_user_fields .indexOf (err .field )>= 0 )) {
244242 assign (parse_error , {
245243 col: user_param_map .value [err .field ],
246- entire_row: isUndefined ( user_param_map .value [err .field ])
244+ entire_row: user_param_map .value [err .field ] == undefined
247245 });
248- } else if (isUndefined ( err .field ) ) { // missing field
246+ } else if (err .field != undefined ) { // missing field
249247 assign (parse_error , { entire_row: true });
250248 }
251249 }
0 commit comments