1+
2+
3+
4+
5+ $ ( function ( ) {
6+
7+ // get usernames and keys from hidden variables and set up webwork object:
8+ var myUser = document . getElementById ( "hidden_user" ) . value ;
9+ var mySessionKey = document . getElementById ( "hidden_key" ) . value ;
10+ var myCourseID = document . getElementById ( "hidden_courseID" ) . value ;
11+ // check to make sure that our credentials are available.
12+ if ( myUser && mySessionKey && myCourseID ) {
13+ webwork . requestObject . user = myUser ;
14+ webwork . requestObject . session_key = mySessionKey ;
15+ webwork . requestObject . courseID = myCourseID ;
16+ } else {
17+ alert ( "missing hidden credentials: user "
18+ + myUser + " session_key " + mySessionKey
19+ + " courseID" + myCourseID , "alert-error" ) ;
20+ }
21+
22+
23+
24+ var UserListView = Backbone . View . extend ( {
25+ initialize : function ( ) {
26+
27+ this . setElement ( new EditableGrid ( "UserListTable" , {
28+ enableSort : true
29+ } ) ) ;
30+ // we build and load the metadata in Javascript
31+ this . el . load ( { metadata : [
32+ { name : "Select" , datatype : "boolean" , editable : true } ,
33+ { label : "Login Name" , name : "user_id" , datatype : "string" , editable : false } ,
34+ { name : "Login Status" , datatype : "string" , editable : false } ,
35+ { name : "Assigned Sets" , datatype : "integer" , editable : false } ,
36+ { label : "First Name" , name : "first_name" , datatype : "string" , editable : true } ,
37+ { label : "Last Name" , name :"last_name" , datatype : "string" , editable : true } ,
38+ { label : "Email Address" , name : "email_address" , datatype : "string" , editable : true } ,
39+ { label : "Student ID" , name : "student_id" , datatype : "string" , editable : true } ,
40+ { label : "Status" , name : "status" , datatype : "string" , editable : true ,
41+ values : {
42+ "en" :"Enrolled" ,
43+ "noten" :"Not Enrolled"
44+ }
45+ } ,
46+ { label : "Section" , name : "section" , datatype : "integer" , editable : true } ,
47+ { label : "Recitation" , name : "recitation" , datatype : "integer" , editable : true } ,
48+ { label : "Comment" , name : "comment" , datatype : "string" , editable : true } ,
49+ { label : "Permission Level" , name : "permission" , datatype : "integer" , editable : true ,
50+ values : {
51+ "-5" :"guest" , "0" :"Student" , "2" :"login proctor" ,
52+ "3" :"grade proctor" , "5" :"T.A." , "10" : "Professor" ,
53+ "20" :"Admininistrator"
54+ }
55+ } ,
56+ { name : "Take Action" , datatype : "string" , editable : true ,
57+ values : { "action0" :"Take Action" , "action1" :"Change Password" ,
58+ "action2" :"Delete User" , "action3" :"Act as User" ,
59+ "action4" :"Student Progess" , "action5" :"Email Student" }
60+ }
61+ ] , data : [ { id :0 , values :{ } } ] } ) ;
62+ this . el . renderGrid ( 'users_table' , 'testgrid' ) ;
63+ var self = this ;
64+ this . el . modelChanged = function ( rowIndex , columnIndex , oldValue , newValue ) {
65+ var cid = self . el . getRowId ( rowIndex ) ;
66+ var property = self . el . getColumnName ( columnIndex ) ;
67+ var editedModel = self . model . getByCid ( cid ) ;
68+ if ( property == 'permission' ) {
69+ newValue = { name : "" , value : newValue } ;
70+ }
71+ editedModel . set ( property , newValue ) ;
72+ editedModel . update ( ) ;
73+ console . log ( rowIndex ) ;
74+ console . log ( columnIndex ) ;
75+ console . log ( oldValue ) ;
76+ console . log ( newValue ) ;
77+ }
78+
79+ this . model . on ( 'reset' , function ( ) {
80+ while ( self . el . getRowCount ( ) > 1 ) {
81+ self . el . remove ( 1 ) ;
82+ }
83+ self . addAll ( ) ;
84+ } , this ) ;
85+ this . model . on ( 'all' , this . render , this ) ;
86+ this . model . fetch ( ) ;
87+
88+
89+ document . getElementById ( "filter" ) . addEventListener ( "keyup" , function ( ) { self . el . filter ( document . getElementById ( "filter" ) . value ) } , false ) ;
90+ } ,
91+
92+ render : function ( ) {
93+ this . el . refreshGrid ( ) ;
94+
95+ } ,
96+
97+ addOne : function ( user ) {
98+ var userInfo = user . toJSON ( ) ;
99+ userInfo . permission = "" + userInfo . permission . value ;
100+ this . el . append ( user . cid , userInfo ) ;
101+ } ,
102+
103+ addAll : function ( ) {
104+ var self = this ;
105+ this . model . each ( function ( user ) { self . addOne ( user ) } ) ;
106+ }
107+
108+
109+ } ) ;
110+
111+ var userList = new webwork . UserList ;
112+
113+ var App = new UserListView ( { model : userList } ) ;
114+
115+ // then we attach to the HTML table and render it
116+ //editableGrid.attachToHTMLTable('cltable');
117+
118+
119+ //userList.fetch();
120+ /*var users = new Array();
121+ for(var i = 0; i < editableGrid.getRowCount(); i++){
122+ var atts = editableGrid.getRowValues(i);
123+ delete atts['Take Action'];
124+ console.log(atts);
125+ users.push(atts);
126+ }
127+ userList.reset(users, {silent: true});*/
128+ } ) ;
129+
130+
131+ /*
132+ window.onload = function()
133+ {
134+
135+
136+ // update paginator whenever the table is rendered (after a sort, filter, page change, etc.)
137+ // tableRendered = function() { this.updatePaginator(); };
138+
139+ // set active (stored) filter if any
140+ // _$('filter').value = currentFilter ? currentFilter : '';
141+
142+ // filter when something is typed into filter
143+ // _$('filter').onkeyup = function() { editableGrid.filter(_$('filter').value); };
144+
145+
146+
147+ } */
0 commit comments