No Description

transformativeAction.blade.php 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901
  1. @extends('layouts.master')
  2. @section('navigation')
  3. @if($role==2)
  4. @include('local.managers.sCoords._navigation')
  5. @elseif($role==3)
  6. @include('local.managers.pCoords._navigation')
  7. @else
  8. @include('local.professors._navigation')
  9. @endif
  10. @stop
  11. @section('main')
  12. <div class="row">
  13. <div class="col-md-6">
  14. <!-- Form to add a new criterion -->
  15. <div class="panel panel-default panel-button">
  16. <div class="panel-heading">
  17. Create a TA
  18. </div>
  19. <div class="panel-body" id="createPanel">
  20. {{ Form::open(array('action' => 'TransformativeActionsController@createTA')) }}
  21. <div class="form-group">
  22. {{ Form::label('createText', 'Name') }}
  23. {{ Form::text('createText', '', array('class' => 'form-control')) }}
  24. </div>
  25. <div class="form-group">
  26. {{ Form::label('createDescription', 'Description') }}
  27. {{ Form::textarea('createDescription', '', array('class' => 'form-control')) }}
  28. </div>
  29. <div class="form-group"> </div>
  30. <div class="form-group" id='dummyApproval'>
  31. <label>Availability</label>
  32. <select name="approval" class="form-control">
  33. <option value="1">Recommended</option>
  34. <option value="0">To be implemented</option>
  35. </select>
  36. </div>
  37. <label>Courses being Transformed by the Action</label>
  38. <div class="" id="">
  39. <div class="form-group col-md-11">
  40. <select name="courseid[]" class="form-control createCourses selectpicker">
  41. @foreach ($courses_create as $course)
  42. <option value="{{$course->id}}">{{$course->name}} [{{$course->code}}]</option>
  43. @endforeach
  44. </select>
  45. </div>
  46. <button type="button" class='btn btn-md btn-primary col-md-1 remove-course'>
  47. X
  48. </button>
  49. </div>
  50. <button type="button" class='btn btn-md btn-secondary add-course'>
  51. <span class='glyphicon glyphicon-plus'>
  52. </span>
  53. Add another Course
  54. </button>
  55. <div class="form-group"> </div>
  56. <div class="form-group" id='createOutcome'>
  57. <label>Outcome perteneciente</label>
  58. <select name="outcome" class="form-control selectpicker">
  59. @foreach ($outcomes as $outcome)
  60. <option value="{{$outcome->id}}">{{$outcome->name}}</option>
  61. @endforeach
  62. </select>
  63. </div>
  64. <label>Associated Objectives</label>
  65. <div class="" id="">
  66. <div class="form-group col-md-11">
  67. {{-- <select class="form-control selectpicker"> --}}
  68. <select name="objectiveid[]" class="form-control createObjectives">
  69. {{-- @foreach ($objectives as $id => $text)
  70. <option value="{{$id}}">{{$text}}</option>
  71. @endforeach --}}
  72. <option value="">First, select an Outcome</option>
  73. </select>
  74. {{-- {{ Form::select('objective[]', $objectives, reset($objectives), ['class'=>'form-control selectpicker', 'id' =>'objective0']) }} --}}
  75. </div>
  76. <button type="button" class='btn btn-md btn-primary col-md-1 remove-objective'>
  77. X
  78. </button>
  79. </div>
  80. <button type="button" class='btn btn-md btn-secondary add-objective'>
  81. {{-- <button type="button" class='btn btn-md btn-secondary add-create-objective'> --}}
  82. <span class='glyphicon glyphicon-plus'>
  83. </span>
  84. Add another Objective
  85. </button>
  86. <div class="form-group"> </div>
  87. {{ Form::submit('Create', array('class' => 'btn btn-primary btn-block')) }}
  88. {{ Form::close() }}
  89. </div>
  90. </div>
  91. <div class="panel panel-default panel-button">
  92. <div class="panel-heading">
  93. Approve a Recommended TA
  94. </div>
  95. <div class="panel-body" id="approvePanel">
  96. <div class="">
  97. <button class="btn btn-md btn-secondary filterButton">
  98. <span class="glyphicon glyphicon-plus">
  99. </span>
  100. Filters
  101. </button>
  102. </div>
  103. <div class="filterSection">
  104. <br>
  105. <div class="">
  106. <div class="">
  107. <label>Professor that created the TA</label>
  108. <select class="form-control filterProfessor selectpicker">
  109. <option value="0">Show All</option>
  110. @foreach ($professor_filter_approvePanel as $ta)
  111. <option value="{{$ta->id}}">Prof. {{$ta->first_name}} {{$ta->surnames}}</option>
  112. @endforeach
  113. </select>
  114. </div>
  115. <br>
  116. <div class="">
  117. <label>Course evaluated by an Objective of the TA</label>
  118. <select class="form-control filterCourse selectpicker">
  119. <option value="0">Show All</option>
  120. @foreach ($course_filter_approvePanel as $course)
  121. <option value="{{$course->id}}">{{$course->name}}[{{$course->code}}]</option>
  122. @endforeach
  123. </select>
  124. </div>
  125. <br>
  126. <div class="">
  127. <label>Outcome of the TA</label>
  128. <select class="form-control filterOutcome selectpicker">
  129. <option value="0">Show All</option>
  130. @foreach ($outcome_filter_approvePanel as $outcome)
  131. <option value="{{$outcome->id}}">{{$outcome->name}}</option>
  132. @endforeach
  133. </select>
  134. </div>
  135. </div>
  136. </div>
  137. <hr>
  138. {{ Form::open(array('action' => 'TransformativeActionsController@approveTA')) }}
  139. <div>
  140. <div class="form-group col-md-11">
  141. <label>Select Transformative Action</label>
  142. <select name="ta" class="form-control SelectTA selectpicker" id='approvalSelectTA'>
  143. @if (count($ta_approval_panel) == 0)
  144. <option value="0">No TAs available</option>
  145. @else
  146. {{-- <option value="0">Select a TA</option> --}}
  147. @endif
  148. @foreach ($ta_approval_panel as $ta)
  149. <option value="{{$ta->id}}">{{$ta->at_text}}</option>
  150. {{-- <option value="{{$ta->id}}">{{$ta->at_text}}</option> --}}
  151. @endforeach
  152. </select>
  153. </div>
  154. </div>
  155. <div class="form-group">
  156. {{ Form::label('approvalDescription', 'Description') }}
  157. {{ Form::textarea('approvalDescription', '', array('class' => 'form-control')) }}
  158. </div>
  159. <label>Associated Courses</label>
  160. <div class="approveCourses">
  161. <div class="form-group col-md-11 approveCourse">
  162. <select name="courseid[]" class="form-control selectpicker">
  163. <option value="">option</option>
  164. </select>
  165. </div>
  166. <button type="button" class='btn btn-md btn-primary col-md-1 remove-course'>
  167. X
  168. </button>
  169. </div>
  170. <button type="button" class='btn btn-md btn-secondary add-course'>
  171. <span class='glyphicon glyphicon-plus'>
  172. </span>
  173. Add another Course
  174. </button>
  175. <label>Associated Objectives</label>
  176. <div class="approveObjectives">
  177. <div class="form-group col-md-11">
  178. <select name="objectiveid[]" class="form-control">
  179. @foreach ($objectives as $id => $text)
  180. <option value="{{$id}}">{{$text}}</option>
  181. @endforeach
  182. </select>
  183. </div>
  184. <button type="button" class='btn btn-md btn-primary col-md-1 remove-objective'>
  185. X
  186. </button>
  187. </div>
  188. <button type="button" class='btn btn-md btn-secondary add-objective'>
  189. <span class='glyphicon glyphicon-plus'>
  190. </span>
  191. Add another Objective
  192. </button>
  193. <input type='hidden' name='at_text' class="approvalText">
  194. <input type='hidden' name='ta_id' class='updateTA'>
  195. {{ Form::submit('Approve', array('class' => 'btn btn-primary btn-block')) }}
  196. {{ Form::close() }}
  197. </div>
  198. </div>
  199. </div>
  200. <div class="col-md-6">
  201. <div class="panel panel-default panel-button">
  202. <div class="panel-heading">
  203. Edit a TA
  204. </div>
  205. <div class="panel-body" id="editPanel">
  206. <div class="">
  207. <button class="btn btn-md btn-secondary filterButton">
  208. <span class="glyphicon glyphicon-plus">
  209. </span>
  210. Filters
  211. </button>
  212. </div>
  213. <div class="filterSection">
  214. <br>
  215. <div class="">
  216. <div class="">
  217. <label>Professor that created the TA</label>
  218. <select class="form-control filterProfessor selectpicker">
  219. <option value="0">Show All</option>
  220. @foreach ($professor_filter_editPanel as $user)
  221. <option value="{{$user->id}}">Prof. {{$user->first_name}} {{$user->surnames}}</option>
  222. @endforeach
  223. </select>
  224. </div>
  225. <br>
  226. <div class="">
  227. <label>Course evaluated by an Objective of the TA</label>
  228. <select class="form-control filterCourse selectpicker">
  229. <option value="0">Show All</option>
  230. @foreach ($course_filter_editPanel as $course)
  231. <option value="{{$course->id}}">{{$course->name}}[{{$course->code}}]</option>
  232. @endforeach
  233. </select>
  234. </div>
  235. <br>
  236. <div class="">
  237. <label>Outcome of the TA</label>
  238. <select class="form-control filterOutcome selectpicker">
  239. <option value="0">Show All</option>
  240. @foreach ($outcome_filter_editPanel as $outcome)
  241. <option value="{{$outcome->id}}">{{$outcome->name}}</option>
  242. @endforeach
  243. </select>
  244. </div>
  245. </div>
  246. </div>
  247. <hr>
  248. {{ Form::open(array('action' => 'TransformativeActionsController@updateTA')) }}
  249. <div>
  250. <div class="form-group col-md-12">
  251. <label>Select Transformative Action</label>
  252. <select name="ta" class="form-control SelectTA selectpicker" id='editSelectTA'>
  253. @if (count($ta_edit_panel) == 0)
  254. <option value="0">No TAs available</option>
  255. @else
  256. {{-- <option value="0">Select a TA</option> --}}
  257. @endif
  258. @foreach ($ta_edit_panel as $ta)
  259. <option value="{{$ta->id}}">{{$ta->at_text}}</option>
  260. @endforeach
  261. </select>
  262. </div>
  263. </div>
  264. <div class="form-group" id="editName">
  265. {{ Form::label('editText', 'Name') }}
  266. {{ Form::text('editText', '', array('class' => 'form-control')) }}
  267. </div>
  268. <input type='hidden' name='ta_id' class='updateTA' value="0">
  269. <div class="form-group">
  270. {{ Form::label('editDescription', 'Description') }}
  271. {{ Form::textarea('editDescription', '', array('class' => 'form-control')) }}
  272. </div>
  273. <div class="form-group"> </div>
  274. <div class="form-group" id='editApproval'>
  275. <label>Availability</label>
  276. <select name="approval" class="form-control selectpicker">
  277. <option value="1">Recommended</option>
  278. <option value="0">To be implemented</option>
  279. </select>
  280. </div>
  281. <label>Associated Courses</label>
  282. <div class="editCourses">
  283. <div class="form-group col-md-11 editCourse">
  284. <select name="courseid[]" class="form-control selectpicker">
  285. @foreach ($courses_create as $course)
  286. <option value="{{$course->id}}">{{$course->name}}[{{$course->code}}]</option>
  287. @endforeach
  288. </select>
  289. </div>
  290. <button type="button" class='btn btn-md btn-primary col-md-1 remove-course'>
  291. X
  292. </button>
  293. </div>
  294. <button type="button" class='btn btn-md btn-secondary add-course'>
  295. <span class='glyphicon glyphicon-plus'>
  296. </span>
  297. Add another Course
  298. </button>
  299. <div class="form-group"> </div>
  300. <label>Associated Objectives</label>
  301. <div class="editObjectives">
  302. <div class="form-group col-md-11">
  303. {{-- <select class="form-control selectpicker"> --}}
  304. <select name="objectiveid[]" class="form-control">
  305. @foreach ($objectives as $id => $text)
  306. <option value="{{$id}}">{{$text}}</option>
  307. @endforeach
  308. </select>
  309. {{-- {{ Form::select('objective[]', $objectives, reset($objectives), ['class'=>'form-control selectpicker', 'id' =>'objective0']) }} --}}
  310. </div>
  311. <button type="button" class='btn btn-md btn-primary col-md-1 remove-objective'>
  312. X
  313. </button>
  314. </div>
  315. <button type="button" class='btn btn-md btn-secondary add-objective'>
  316. <span class='glyphicon glyphicon-plus'>
  317. </span>
  318. Add another Objective
  319. </button>
  320. <div class="form-group"> </div>
  321. {{ Form::submit('Update', array('class' => 'btn btn-primary btn-block')) }}
  322. {{ Form::close() }}
  323. {{ Form::open(array('action' => 'TransformativeActionsController@deleteTA')) }}
  324. <input type='hidden' name='ta_id' id='deleteTA'>
  325. {{Form::submit("Delete", array('class'=> 'btn btn-primary btn-block', 'id'=>"DeleteButton"))}}
  326. </div>
  327. </div>
  328. </div>
  329. </div>
  330. @stop
  331. @section('javascript')
  332. // --------------------------------------------------------------------------
  333. // Page load
  334. // --------------------------------------------------------------------------
  335. // Hide accordion panel contents by default
  336. $('.panel-group .panel-body').hide();
  337. $('#outcome-display').parent().hide();
  338. $('.remove-objective').hide();
  339. $('.remove-course').hide();
  340. ////createPanel
  341. // remove TA approval section if the user isnt a program coordinator
  342. var dummyApproval = $('#dummyApproval');
  343. dummyApproval.find('select').prop('disabled', 'disabled');
  344. dummyApproval.find('option').remove();
  345. var role = {{Auth::user()['role']}};
  346. if (role == 3){
  347. dummyApproval.find('select').append('<option value="0">To be implemented</option>');
  348. $('#approvePanel .add-course').hide();
  349. } else if (role == 4){
  350. dummyApproval.find('select').append('<option value="1">Recommended</option>');
  351. $('#approvePanel').parent().hide();
  352. //hide the select for changin Availability
  353. $('#editApproval').find('select').prop('disabled', 'disabled');
  354. //add an input since disabled the form wont recognize it
  355. $('#editApproval').append('<input type="text" name="approval" value="1" hidden />')
  356. // in edit panel, hide the professor filter
  357. $('.filterProfessor').parent().hide();
  358. $('.filterProfessor').parent().next().hide(); // hide <br>
  359. }
  360. $('.createObjectives').prop('disabled', 'disabled');
  361. $('#createPanel .add-objective').prop('disabled', 'disabled');
  362. ////editPanel
  363. // disable the buttons of the edit section if there are no TA for selection
  364. if(($('#editSelectTA').val() === "")){
  365. $('#editPanel').find('select').prop('disabled', 'disabled');
  366. $('#editPanel').find('button').prop('disabled', 'disabled');
  367. $('#editPanel').find('input').prop('disabled', 'disabled');
  368. }else{
  369. var ta_id = $('#editSelectTA').val();
  370. if(ta_id != 0){
  371. load_ta_info_for_edit(ta_id);
  372. }
  373. }
  374. ////approvePanel
  375. $('#approvePanel .add-objective').hide();
  376. // disable the buttons of the approval section if there are no TA for selection
  377. if(($('#approvalSelectTA').val() === "")){
  378. $('#approvePanel').find('select').prop('disabled', 'disabled');
  379. $('#approvePanel').find('button').prop('disabled', 'disabled');
  380. $('#approvePanel').find('input').prop('disabled', 'disabled');
  381. $('#approvalDescription').prop('disabled', 'disabled');
  382. }else{
  383. var ta_id = $('#approvalSelectTA').val();
  384. if(ta_id != 0){
  385. load_ta_info_for_approval(ta_id);
  386. }
  387. }
  388. //
  389. $('.filterSection').hide();
  390. // --------------------------------------------------------------------------
  391. // Functions
  392. // --------------------------------------------------------------------------
  393. function load_objectives_from_outcome(outcome_id) {
  394. $.post(
  395. "{{ URL::action('TransformativeActionsController@objectivesFromOutcome') }}",
  396. {
  397. outcome_id: (outcome_id),
  398. },
  399. function(data)
  400. {
  401. var panel = $('#createPanel');
  402. //
  403. var objectives = data.objectives;
  404. //delete al current select
  405. panel.find('.remove-objective').parent().remove();
  406. //create select
  407. var new_div = $('<div/>',{
  408. 'class': 'createObjectives'
  409. });
  410. var new_inner_div = $('<div/>',{
  411. 'class': 'form-group col-md-11'
  412. });
  413. var new_select = $('<select/>',{
  414. 'class': 'form-control createObjectives selectpicker',
  415. 'data-live-search': 'true',
  416. 'name': 'objectiveid[]'
  417. });
  418. var new_button = $('<button/>',{
  419. 'class': 'btn btn-md btn-primary col-md-1 remove-objective',
  420. 'type': 'button',
  421. 'html': 'X'
  422. });
  423. new_button.hide();
  424. $.each(objectives, function(index, objective)
  425. {
  426. new_select.append('<option value="'+ objective.id +'">'+ objective.text +'</option>');
  427. });
  428. panel.find('.add-objective').before(new_div);
  429. new_div.append(new_button);
  430. new_div.append(new_inner_div);
  431. new_inner_div.append(new_select);
  432. new_select.selectpicker('refresh');
  433. //activate the button for adding more objectives
  434. $('#createPanel .add-objective').prop('disabled', false);
  435. }
  436. );
  437. }
  438. function load_ta_info_for_edit(ta_id) {
  439. $.post(
  440. "{{ URL::action('TransformativeActionsController@selectTA') }}",
  441. {
  442. ta_id: (ta_id),
  443. },
  444. function(data)
  445. {
  446. //
  447. var selected_courses = data.selected_courses;
  448. var objectives = data.objectives;
  449. var objectives_from_outcome = data.objectives_from_outcome;
  450. var status = data.status;
  451. var name = data.name[0];
  452. var description = data.description[0];
  453. var can_be_deleted = data.can_be_deleted;
  454. //add objectives button
  455. var add_button = $('#editPanel .add-objective');
  456. //set if the TA is approved or not
  457. $('#editApproval select').val(status);
  458. //delete objectives select
  459. $('.editObjectives').remove();
  460. //create one objective select and populate it
  461. var panel = $('#editPanel');
  462. //
  463. var objectives = data.objectives;
  464. //delete al current select
  465. panel.find('.remove-objective').parent().remove();
  466. //create select
  467. var new_div = $('<div/>',{
  468. 'class': 'editObjectives'
  469. });
  470. var new_inner_div = $('<div/>',{
  471. 'class': 'form-group col-md-11'
  472. });
  473. var new_select = $('<select/>',{
  474. 'class': 'form-control editObjectives selectpicker',
  475. 'data-live-search': 'true',
  476. 'name': 'objectiveid[]'
  477. });
  478. var new_button = $('<button/>',{
  479. 'class': 'btn btn-md btn-primary col-md-1 remove-objective',
  480. 'type': 'button',
  481. 'html': 'X'
  482. });
  483. new_button.hide();
  484. $.each(objectives_from_outcome, function(index, objective)
  485. {
  486. new_select.append('<option value="'+ objective.id +'">'+ objective.text +'</option>');
  487. });
  488. panel.find('.add-objective').before(new_div);
  489. new_div.append(new_button);
  490. new_div.append(new_inner_div);
  491. new_inner_div.append(new_select);
  492. new_select.selectpicker('refresh');
  493. //change de value of the select
  494. //add the other selects
  495. var prev_select = new_div;
  496. $.each(objectives, function(index, objective)
  497. {
  498. prev_select.find('select').val(objective.id);
  499. add_objective_select(add_button);
  500. {{-- add_button; --}}
  501. prev_select = add_button.prev();
  502. });
  503. add_button.prev().remove();
  504. //set the text box
  505. $('#editName').find('input').val(name);
  506. $('#editDescription').val(description);
  507. //
  508. $('#deleteTA').val(ta_id);
  509. $('#editPanel .updateTA').val(ta_id);
  510. if(can_be_deleted == false){
  511. $('#DeleteButton').prop('disabled', 'disabled');
  512. }else{
  513. $('#DeleteButton').prop('disabled', false);
  514. }
  515. //locate de "add course" button on edit panel
  516. var add_course_button = $('#editPanel .add-course')
  517. //save current course selectpickers, add a new one, and delete old ones
  518. var current_course_selects = $('#editPanel .editCourse');
  519. add_course_button.click();
  520. current_course_selects.remove();
  521. //populate edit panel with courses previusly selected
  522. var prev_select = add_course_button.prev();
  523. prev_select.find('.remove-course').hide();
  524. $.each(selected_courses, function(index, course)
  525. {
  526. prev_select.find('select').val(course.id);
  527. add_course_button.click();
  528. prev_select = add_course_button.prev();
  529. });
  530. prev_select.remove();
  531. }
  532. );
  533. }
  534. function load_ta_info_for_approval(ta_id) {
  535. $.post(
  536. "{{ URL::action('TransformativeActionsController@selectTA') }}",
  537. {
  538. ta_id: (ta_id),
  539. },
  540. function(data)
  541. {
  542. //
  543. var selected_courses = data.selected_courses;
  544. var objectives = data.objectives;
  545. var status = data.status[0];
  546. var name = data.name[0];
  547. var description = data.description[0];
  548. //clear the objectives of ony prevoius TA selected for approve
  549. var add_button = $('#approvePanel .add-objective');
  550. var select = add_button.prev().clone(true);
  551. var first_select = select.clone(true);
  552. first_select.find('button').hide();
  553. $('.approveObjectives').remove();
  554. add_button.before(first_select);
  555. var prev_select = first_select;
  556. $.each(objectives, function(index, objective)
  557. {
  558. // save the new select in a var
  559. var new_select = select.clone(true);
  560. // set only one option on the select
  561. prev_select.find('option').remove();
  562. prev_select.find('select').append('<option value="'+ objective.id +'">'+objective.text +'</option>');
  563. prev_select = new_select;
  564. // add the copy of the select
  565. add_button.before(new_select);
  566. });
  567. // remove the last objective select, since it isnt one of the saved objectives
  568. add_button.prev().remove();
  569. //
  570. $('#approvalDescription').val(description);
  571. $('.approvalText').val(name);
  572. $('#approvePanel .updateTA').val(ta_id);
  573. //locate de "add course" button on approve panel
  574. var add_course_button = $('#approvePanel .add-course')
  575. //save current course selectpickers, add a new one, and delete old ones
  576. var current_course_selects = $('#approvePanel .approveCourse');
  577. add_course_button.click();
  578. current_course_selects.remove();
  579. //populate approve panel with courses previusly selected
  580. var prev_select = add_course_button.prev();
  581. prev_select.find('.remove-course').hide();
  582. $.each(selected_courses, function(index, course)
  583. {
  584. var new_option = $('<option/>',{
  585. 'value': course.id,
  586. 'type': 'button',
  587. 'html': course.name+' ['+course.code+']'
  588. });
  589. prev_select.find('select option').remove();
  590. prev_select.find('select').append(new_option);
  591. prev_select.find('.remove-course').hide();
  592. add_course_button.click();
  593. prev_select = add_course_button.prev();
  594. });
  595. prev_select.remove();
  596. }
  597. );
  598. }
  599. function add_objective_select(element) {
  600. var prev_select = $(element).prev();
  601. var parent_panel = $(element).parent().parent().attr('id');
  602. var select_class = '';
  603. if(parent_panel == 'editPanel'){
  604. select_class = 'editObjectives';
  605. }else{
  606. select_class = 'createObjectives';
  607. }
  608. //create select
  609. var new_div = $('<div/>',{
  610. 'class': select_class
  611. });
  612. var new_inner_div = $('<div/>',{
  613. 'class': 'form-group col-md-11'
  614. });
  615. var new_select = $('<select/>',{
  616. 'class': 'form-control createObjectives selectpicker',
  617. 'data-live-search': 'true',
  618. 'name': 'objectiveid[]'
  619. });
  620. var new_button = $('<button/>',{
  621. 'class': 'btn btn-md btn-primary col-md-1 remove-objective',
  622. 'type': 'button',
  623. 'html': 'X'
  624. });
  625. $.each(prev_select.find('option'), function(index, option)
  626. {
  627. var new_option = $('<option/>',{
  628. 'value': $(option).val(),
  629. 'html': $(option).html()
  630. });
  631. new_select.append(new_option);
  632. });
  633. $(element).before(new_div);
  634. new_div.append(new_inner_div);
  635. new_div.append(new_button);
  636. new_inner_div.append(new_select);
  637. $(element).parent().find('.selectpicker').selectpicker('refresh');
  638. new_select.selectpicker('refresh');
  639. }
  640. function add_course_select(element) {
  641. var prev_select = $(element).prev();
  642. var parent_panel = $(element).parent().parent().attr('id');
  643. var select_class = '';
  644. if(parent_panel == 'editPanel'){
  645. select_class = 'editCourse';
  646. }else{
  647. select_class = 'createCourse';
  648. }
  649. //create select
  650. var new_div = $('<div/>',{
  651. 'class': select_class+' approveCourse'
  652. });
  653. var new_inner_div = $('<div/>',{
  654. 'class': 'form-group col-md-11'
  655. });
  656. var new_select = $('<select/>',{
  657. 'class': 'form-control createCourses selectpicker',
  658. 'data-live-search': 'true',
  659. 'name': 'courseid[]'
  660. });
  661. var new_button = $('<button/>',{
  662. 'class': 'btn btn-md btn-primary col-md-1 remove-course',
  663. 'type': 'button',
  664. 'html': 'X'
  665. });
  666. $.each(prev_select.find('option'), function(index, option)
  667. {
  668. var new_option = $('<option/>',{
  669. 'value': $(option).val(),
  670. 'html': $(option).html()
  671. });
  672. new_select.append(new_option);
  673. });
  674. $(element).before(new_div);
  675. new_div.append(new_inner_div);
  676. new_div.append(new_button);
  677. new_inner_div.append(new_select);
  678. $(element).parent().find('.selectpicker').selectpicker('refresh');
  679. new_select.selectpicker('refresh');
  680. }
  681. // --------------------------------------------------------------------------
  682. // Events
  683. // --------------------------------------------------------------------------
  684. // When a TA is selected for edit, load the TA info
  685. $('#createOutcome').on('change', function()
  686. {
  687. var outcome_id = $(this).find('select').val();
  688. load_objectives_from_outcome(outcome_id);
  689. });
  690. // When a TA is selected for edit, load the TA info
  691. $('#editSelectTA').parent().on('change', function()
  692. {
  693. var ta_id = $(this).find('select').val();
  694. if(ta_id != 0){
  695. load_ta_info_for_edit(ta_id);
  696. }
  697. });
  698. // When a TA is selected for approval, load the TA info
  699. $('#approvalSelectTA').parent().on('change', function()
  700. {
  701. var ta_id = $(this).find('select').val();
  702. if(ta_id != 0){
  703. load_ta_info_for_approval(ta_id);
  704. }
  705. });
  706. // Add an objective Select picker
  707. $('.add-objective').on('click', function()
  708. {
  709. add_objective_select(this);
  710. });
  711. // Add an course Select picker
  712. $('.add-course').on('click', function()
  713. {
  714. add_course_select(this);
  715. });
  716. // Remove an objective Select picker
  717. $('.panel').on('click', '.remove-objective', function()
  718. {
  719. $(this).parent().remove();
  720. });
  721. // Remove an course Select picker
  722. $('.panel').on('click', '.remove-course', function()
  723. {
  724. $(this).parent().remove();
  725. });
  726. // Remove an objective Select picker
  727. $('.filterButton').on('click', function()
  728. {
  729. var span = $(this).find('span');
  730. if(span.attr('class') == 'glyphicon glyphicon-plus'){
  731. span.attr('class','glyphicon glyphicon-minus');
  732. } else{
  733. span.attr('class','glyphicon glyphicon-plus');
  734. }
  735. $(this).parent().next().toggle(533);
  736. });
  737. //
  738. $('.filterSection').on('change', function()
  739. {
  740. var professor_id = $(this).find('.filterProfessor select').val();
  741. var course_id = $(this).find('.filterCourse select').val();
  742. var outcome_id = $(this).find('.filterOutcome select').val();
  743. var panel_id = $(this).parent().attr('id');
  744. var select = $('#'+panel_id+' .SelectTA select');
  745. $.post(
  746. "{{ URL::action('TransformativeActionsController@filterTA') }}",
  747. {
  748. professor_id: (professor_id),
  749. course_id: (course_id),
  750. outcome_id: (outcome_id),
  751. panel_id: (panel_id),
  752. },
  753. function(data)
  754. {
  755. //
  756. select.find('option').remove();
  757. $.each(data, function(index, ta)
  758. {
  759. var ta_id = ta.id;
  760. var ta_text = ta.at_text;
  761. var new_option = '<option value="'+ ta_id +'">'+ ta_text +'</option>';
  762. select.append(new_option);
  763. });
  764. select.selectpicker('refresh');
  765. if(data.length != 0){
  766. var ta_id = data[0].id;
  767. if(panel_id=='editPanel'){
  768. load_ta_info_for_edit(ta_id);
  769. }
  770. if(panel_id=='approvePanel'){
  771. load_ta_info_for_approval(ta_id);
  772. }
  773. }
  774. }
  775. );
  776. });
  777. @stop