<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jbcolli8</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jbcolli8"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Jbcolli8"/>
	<updated>2026-08-07T10:43:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=121415</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=121415"/>
		<updated>2018-12-08T05:29:01Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Files Involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We have used the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the view of the 'view scores' page after the modifications. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed for a particular round. A bar graph of the average score of the class for that subset of criteria is displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:1859_Chart_Preview.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows an average score of the class for 5 rubric criteria in Round 1 selected by the instructor. A live demo with randomly generated data can be found on [https://jsfiddle.net/Jereman/5uxqr92y/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We have implemented a new partial file criteria_charts to the team_chart that display the bar graph with existing data collected by the grades controller methods to the view page.&lt;br /&gt;
&lt;br /&gt;
Modified files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/grades_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_criteria_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
== app/views/grades/_criteria_charts.html.erb ==&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
 &amp;lt;%= content_tag :div, class: &amp;quot;chartdata_information&amp;quot;, data: {chartdata: @chartdata} do %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
 &amp;lt;%= content_tag :div, class: &amp;quot;text_information&amp;quot;, data: {text: @text} do %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;%= content_tag :div, class: &amp;quot;minmax_information&amp;quot;, data: {minmax: @minmax} do %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;https://www.gstatic.com/charts/loader.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      google.charts.load('current', {packages: ['corechart', 'bar']});&lt;br /&gt;
       //Display Options&lt;br /&gt;
      var showLabels = true;&lt;br /&gt;
      var barColors = [ // Other colors generated from the expertiza base red&lt;br /&gt;
          '#A90201',    // using paletton.com&lt;br /&gt;
          '#018701',&lt;br /&gt;
          '#016565',&lt;br /&gt;
          '#A94D01'&lt;br /&gt;
      ];&lt;br /&gt;
      function getData(){ //Loads all chart data from the page&lt;br /&gt;
        chartData = $('.chartdata_information').data('chartdata');&lt;br /&gt;
        chartText = $('.text_information').data('text');&lt;br /&gt;
        chartRange = $('.minmax_information').data('minmax');&lt;br /&gt;
 for (var i = 0; i &amp;lt; chartData.length; i++){ //Set all the criteriaSelected to true&lt;br /&gt;
          var criteria = [];&lt;br /&gt;
          for (var j = 0; j &amp;lt; chartData[i].length; j++){&lt;br /&gt;
            criteria.push(true);&lt;br /&gt;
          }&lt;br /&gt;
          criteriaSelected.push(criteria);&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
       function generateData() {	//Generates random data for testing&lt;br /&gt;
        var rounds = 3;&lt;br /&gt;
        for(var i = 0; i &amp;lt; rounds; i++) {&lt;br /&gt;
  var criteriaNum = Math.floor(Math.random() * 5 + 5);  //Random number of criteria&lt;br /&gt;
          var round = [];&lt;br /&gt;
          var criteria = [];&lt;br /&gt;
          for(var j = 0; j &amp;lt; criteriaNum; j++) {&lt;br /&gt;
  round.push(Math.floor(Math.random() * 101));  //Random score for each criterion&lt;br /&gt;
            criteria.push(true);  //Everything starts out true&lt;br /&gt;
          }&lt;br /&gt;
          chartData.push(round);&lt;br /&gt;
          criteriaSelected.push(criteria);&lt;br /&gt;
 &lt;br /&gt;
        chartOptions = {		//Render options for the chart&lt;br /&gt;
          title: 'Class Average on Criteria',&lt;br /&gt;
          titleTextStyle: {&lt;br /&gt;
  fontName: 'arial',&lt;br /&gt;
            fontSize: 18,&lt;br /&gt;
            italic: false,&lt;br /&gt;
            bold: true&lt;br /&gt;
         chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));&lt;br /&gt;
        var checkBox = document.getElementById(&amp;quot;labelCheck&amp;quot;);&lt;br /&gt;
        checkBox.checked = true;&lt;br /&gt;
        checkBox.style.display = &amp;quot;inline&amp;quot;;&lt;br /&gt;
        updateChart(currentRound);&lt;br /&gt;
        loadRounds(); }&lt;br /&gt;
 function updateChart(roundNum) {	//Updates the chart with a new round number and renders&lt;br /&gt;
        currentRound = roundNum;&lt;br /&gt;
        renderChart();&lt;br /&gt;
        loadCriteria();&lt;br /&gt;
      function renderChart() {	//Renders the chart if changes have been made&lt;br /&gt;
          var data = loadData();&lt;br /&gt;
 chartOptions.vAxis.viewWindow.max = 5;&lt;br /&gt;
          chartOptions.vAxis.viewWindow.min = 0;&lt;br /&gt;
          if (chartRange[currentRound]) { //Set axis ranges if they exist&lt;br /&gt;
              if (chartRange[currentRound][1])&lt;br /&gt;
                  chartOptions.vAxis.viewWindow.max = chartRange[currentRound][1];&lt;br /&gt;
 if (chartRange[currentRound][0])&lt;br /&gt;
                  chartOptions.vAxis.viewWindow.min = chartRange[currentRound][0];&lt;br /&gt;
 }&lt;br /&gt;
          chart.draw(data, chartOptions);&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
           chartOptions.hAxis.ticks = [];&lt;br /&gt;
          var rowCount = 1;&lt;br /&gt;
 for(var i = 0; i &amp;lt; chartData[currentRound].length; i++) { //Add a chart row for each criterion if not null&lt;br /&gt;
              if (criteriaSelected[currentRound][i] &amp;amp;&amp;amp; chartData[currentRound][i]) {&lt;br /&gt;
  data.addRow([rowCount, chartData[currentRound][i], barColors[0], (showLabels) ? chartData[currentRound][i].toFixed(1).toString() : &amp;quot;&amp;quot;]);&lt;br /&gt;
                  chartOptions.hAxis.ticks.push({v: rowCount++, f: (i+1).toString()});&lt;br /&gt;
              }&lt;br /&gt;
          }&lt;br /&gt;
 &lt;br /&gt;
          var data = new google.visualization.DataTable();&lt;br /&gt;
          data.addColumn('number', 'Criterion');&lt;br /&gt;
          var i;&lt;br /&gt;
 for(i = 0; i &amp;lt; roundNum; i++) { //Add all columns for the data&lt;br /&gt;
              data.addColumn('number', 'Round ' + (i+1).toString());&lt;br /&gt;
              data.addColumn({type: 'string', role: 'style'});	//column for specifying the bar color&lt;br /&gt;
              data.addColumn({type: 'string', role: 'annotation'});&lt;br /&gt;
 &lt;br /&gt;
              var newRow = [];&lt;br /&gt;
              var elementsAdded = false;&lt;br /&gt;
              newRow.push(rowCount);&lt;br /&gt;
 for(var j = 0; j &amp;lt; roundNum; j++) { //If the round has the criterion, add it&lt;br /&gt;
                  if (chartData[j][i]) {&lt;br /&gt;
                      newRow.push(chartData[j][i]);&lt;br /&gt;
                      elementsAdded = true;&lt;br /&gt;
                  } else {&lt;br /&gt;
                      newRow.push(null);&lt;br /&gt;
                  }&lt;br /&gt;
  newRow.push(barColors[j % barColors.length]); //Add column color&lt;br /&gt;
                  if (chartData[j] &amp;amp;&amp;amp; chartData[j][i] &amp;amp;&amp;amp; showLabels)&lt;br /&gt;
  newRow.push(chartData[j][i].toFixed(1).toString()); //Add column annotations&lt;br /&gt;
                  else&lt;br /&gt;
                      newRow.push(&amp;quot;&amp;quot;);&lt;br /&gt;
              }&lt;br /&gt;
       function loadCriteria() {	//Creates the criteria check boxes&lt;br /&gt;
          var form = document.getElementById(&amp;quot;chartCriteria&amp;quot;);&lt;br /&gt;
 while (form.firstChild) //Clear out the old check boxes&lt;br /&gt;
              form.removeChild(form.firstChild);&lt;br /&gt;
 if (currentRound == -1) //Don't show criteria for 'all rounds'&lt;br /&gt;
              return;&lt;br /&gt;
          chartData[currentRound].forEach(function(dat, i) {&lt;br /&gt;
              var checkbox = document.createElement('input');&lt;br /&gt;
              checkbox.type = &amp;quot;checkbox&amp;quot;;&lt;br /&gt;
              checkbox.id = &amp;quot;checkboxoption&amp;quot; + i;&lt;br /&gt;
 checkbox.onclick = function() { //Register callback to toggle the criterion&lt;br /&gt;
                  checkboxUpdate(i);&lt;br /&gt;
              }&lt;br /&gt;
              var label = document.createElement('label')&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;form id=&amp;quot;chartOptions&amp;quot; name=&amp;quot;chartOptions&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;select id=&amp;quot;chartRounds&amp;quot; name=&amp;quot;rounds&amp;quot; &lt;br /&gt;
 onChange=&amp;quot;updateChart(document.chartOptions.chartRounds.options[document.chartOptions.chartRounds.options.selectedIndex].value)&amp;quot; style = &amp;quot;display: none&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;/select&amp;gt;&lt;br /&gt;
 &amp;lt;label&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id = &amp;quot;labelCheck&amp;quot; checked=&amp;quot;checked&amp;quot; style=&amp;quot;display: none&amp;quot; onclick=&amp;quot;showLabels = !showLabels; renderChart();&amp;quot;&amp;gt;Show &lt;br /&gt;
 Labels&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;chartCriteria&amp;quot; name=&amp;quot;chartCriteria&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== app/controllers/grades_controller.rb ==&lt;br /&gt;
&lt;br /&gt;
 def action_allowed?&lt;br /&gt;
     case params[:action]&lt;br /&gt;
     when 'view_my_scores'&lt;br /&gt;
       ['Instructor',&lt;br /&gt;
        'Teaching Assistant',&lt;br /&gt;
        'Administrator',&lt;br /&gt;
        'Super-Administrator',&lt;br /&gt;
       'Student'].include? current_role_name and&lt;br /&gt;
        are_needed_authorizations_present?(params[:id], &amp;quot;reader&amp;quot;, &amp;quot;reviewer&amp;quot;) and&lt;br /&gt;
        check_self_review_status&lt;br /&gt;
 when 'view_team'&lt;br /&gt;
      if ['Student'].include? current_role_name # students can only see the head map for their own team&lt;br /&gt;
        participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
        session[:user].id == participant.user_id&lt;br /&gt;
      else&lt;br /&gt;
 true&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      ['Instructor',&lt;br /&gt;
       'Teaching Assistant',&lt;br /&gt;
       'Administrator',&lt;br /&gt;
       'Super-Administrator'].include? current_role_name&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
   # collects the question text for display on the chart&lt;br /&gt;
   # Added as part of E1859&lt;br /&gt;
   def assign_chart_text&lt;br /&gt;
     @text = []&lt;br /&gt;
     (1..@assignment.num_review_rounds).to_a.each do |round|&lt;br /&gt;
       question = @questions[('review' + round.to_s).to_sym]&lt;br /&gt;
       @text[round - 1] = []&lt;br /&gt;
       next if question.nil?&lt;br /&gt;
       (0..(question.length - 1)).to_a.each do |q|&lt;br /&gt;
         @text[round - 1][q] = question[q].txt&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   # find the maximum and minimum scores for each questionnaire round&lt;br /&gt;
   # Added as part of E1859&lt;br /&gt;
   def assign_minmax(questionnaires)&lt;br /&gt;
     @minmax = []&lt;br /&gt;
     questionnaires.each do |questionnaire|&lt;br /&gt;
      next if questionnaire.symbol != :review&lt;br /&gt;
      round = AssignmentQuestionnaire.where(assignment_id: @assignment.id, questionnaire_id: questionnaire.id).first.used_in_round&lt;br /&gt;
      next if round.nil?&lt;br /&gt;
  @minmax[round - 1] = []&lt;br /&gt;
      @minmax[round - 1][0] = if !questionnaire.min_question_score.nil? and questionnaire.min_question_score &amp;lt; 0&lt;br /&gt;
                                questionnaire.min_question_score&lt;br /&gt;
                              else&lt;br /&gt;
                                0&lt;br /&gt;
                              end&lt;br /&gt;
      @minmax[round - 1][1] = if !questionnaire.max_question_score.nil?&lt;br /&gt;
                                questionnaire.max_question_score&lt;br /&gt;
                              else&lt;br /&gt;
                                5&lt;br /&gt;
                              end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
 # this method collects and averages all the review scores across teams&lt;br /&gt;
   # Added as part of E1859&lt;br /&gt;
   def assign_chart_data&lt;br /&gt;
     @rounds = @assignment.num_review_rounds&lt;br /&gt;
     @chartdata = []&lt;br /&gt;
     (1..@rounds).to_a.each do |round|&lt;br /&gt;
       @teams = AssignmentTeam.where(parent_id: @assignment.id)&lt;br /&gt;
       @teamids = []&lt;br /&gt;
       @result = []&lt;br /&gt;
       @responseids = []&lt;br /&gt;
       @scoreviews = []&lt;br /&gt;
       (0..(@teams.length - 1)).to_a.each do |t|&lt;br /&gt;
         @teamids[t] = @teams[t].id&lt;br /&gt;
         @result[t] = ResponseMap.find_by_sql [&amp;quot;SELECT id FROM response_maps&lt;br /&gt;
           WHERE type = 'ReviewResponseMap' AND reviewee_id = ?&amp;quot;, @teamids[t]]&lt;br /&gt;
         @responseids[t] = []&lt;br /&gt;
         @scoreviews[t] = []&lt;br /&gt;
         (0..(@result[t].length - 1)).to_a.each do |r|&lt;br /&gt;
           @responseids[t][r] = Response.find_by_sql [&amp;quot;SELECT id FROM responses&lt;br /&gt;
             WHERE round = ? AND map_id = ?&amp;quot;, round, @result[t][r]]&lt;br /&gt;
          @scoreviews[t][r] = Answer.where(response_id: @responseids[t][r][0]) unless @responseids[t][r].empty?&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @chartdata[round - 1] = []&lt;br /&gt;
      # because the nth first elements could be nil&lt;br /&gt;
      # iterate until a non-nil value is found or move to next round&lt;br /&gt;
      t = 0&lt;br /&gt;
      r = 0&lt;br /&gt;
 t += 1 while @scoreviews[t].nil?&lt;br /&gt;
      while t &amp;lt; @scoreviews.length and @scoreviews[t][r].nil?&lt;br /&gt;
        if r &amp;lt; @scoreviews[t].length - 1&lt;br /&gt;
          r += 1&lt;br /&gt;
        else&lt;br /&gt;
 def assign_chart_data&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      next if t &amp;gt;= @scoreviews.length&lt;br /&gt;
 (0..(@scoreviews[t][r].length - 1)).to_a.each do |q|&lt;br /&gt;
        sum = 0&lt;br /&gt;
        counter = 0&lt;br /&gt;
 def retrieve_questions(questionnaires)&lt;br /&gt;
    questionnaires.each do |questionnaire|&lt;br /&gt;
      round = AssignmentQuestionnaire.where(assignment_id: @assignment.id, questionnaire_id: questionnaire.id).first.used_in_round&lt;br /&gt;
      questionnaire_symbol = if !round.nil?&lt;br /&gt;
                         (questionnaire.symbol.to_s + round.to_s).to_sym&lt;br /&gt;
                             else&lt;br /&gt;
                               questionnaire.symbol&lt;br /&gt;
                             end&lt;br /&gt;
      @questions[questionnaire_symbol] = questionnaire.questions&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
 def update&lt;br /&gt;
    if format(&amp;quot;%.2f&amp;quot;, total_score) != params[:participant][:grade]&lt;br /&gt;
      participant.update_attribute(:grade, params[:participant][:grade])&lt;br /&gt;
      message = if participant.grade.nil?&lt;br /&gt;
           &amp;quot;The computed score will be used for &amp;quot; + participant.user.name + &amp;quot;.&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
                  &amp;quot;A score of &amp;quot; + params[:participant][:grade] + &amp;quot;% has been saved for &amp;quot; + participant.user.name + &amp;quot;.&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
    end&lt;br /&gt;
    flash[:note] = message&lt;br /&gt;
    redirect_to action: 'edit', id: params[:id]&lt;br /&gt;
&lt;br /&gt;
== app/views/grades/_team_charts.html.erb ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;%= render :partial =&amp;gt; 'criteria_charts' %&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;a href=&amp;quot;#&amp;quot; name='team-chartLink' onClick=&amp;quot;toggleElement('team-chart', 'stats');return false;&amp;quot;&amp;gt;Hide stats&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;TR style =&amp;quot;background-color: white;&amp;quot; class=&amp;quot;team&amp;quot; id=&amp;quot;team-chart&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;circle&amp;quot; id=&amp;quot;average-score&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
      Class Average&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;TH COLSPAN=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;
    	&amp;lt;img src=&amp;quot;&amp;lt;%= @average_chart  %&amp;gt;&amp;quot; &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    	Class Distribution&lt;br /&gt;
    	&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;TH WIDTH=&amp;quot;9&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/TR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    var myCircle = Circles.create({&lt;br /&gt;
      id:           'average-score',&lt;br /&gt;
      radius:       50,&lt;br /&gt;
      value:        &amp;lt;%= @avg_of_avg.to_i %&amp;gt;,&lt;br /&gt;
      maxValue:     100,&lt;br /&gt;
      width:        15,&lt;br /&gt;
      text:         '&amp;lt;%=@avg_of_avg.to_i%&amp;gt;',&lt;br /&gt;
      colors:       ['#FFEB99', '#FFCC00'],&lt;br /&gt;
      duration:       700,&lt;br /&gt;
      textClass:      'circles-final'&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;style&amp;gt;&lt;br /&gt;
   .circles-final{&lt;br /&gt;
      font-size: 16px !important;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we have tested the existing tests after the addition of new features to the grades_controller. We have approached [http://rspec.info/ RSpec] testing framework. The UI feature tests are conducted manually.&lt;br /&gt;
&lt;br /&gt;
===JavaScript Chart===&lt;br /&gt;
To validate all functionality of the chart when adding new features or fixing old ones, the following criteria were tested manually for expected functionality:&lt;br /&gt;
&lt;br /&gt;
# Chart is displaying correctly&lt;br /&gt;
## Bars are showing up where expected&lt;br /&gt;
## Bar annotations are showing the expected value&lt;br /&gt;
## Criteria labels are for the correct bar and displaying correct values&lt;br /&gt;
## Hover text is displaying the correct values&lt;br /&gt;
## Null values are not present on the chart&lt;br /&gt;
## Correct colors are used for the multi-round view&lt;br /&gt;
# Show Labels checkbox works as expected&lt;br /&gt;
# Round Criteria is displaying correctly&lt;br /&gt;
## Round dropdown menu shows all rounds for the assignment&lt;br /&gt;
## Selecting a round changes the criteria checkboxes&lt;br /&gt;
## All checkboxes are displayed with appropriate text&lt;br /&gt;
## Checkboxes correctly remove or add criterion bars to the chart&lt;br /&gt;
&lt;br /&gt;
===RSpec Tests===&lt;br /&gt;
We have modified one of the existing tests for grades controller because the addition of new functionality broke that particular test. The added test handles the chart functionality correctly.&lt;br /&gt;
&lt;br /&gt;
== spec/controllers/grades_controller_spec.rb ==&lt;br /&gt;
    describe '#view' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      allow(Answer).to receive(:compute_scores).with([review_response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
      allow(Participant).to receive(:where).with(parent_id: 1).and_return([participant])&lt;br /&gt;
      allow(AssignmentParticipant).to receive(:find).with(1).and_return(participant)&lt;br /&gt;
      allow(assignment).to receive(:late_policy_id).and_return(false)&lt;br /&gt;
      allow(assignment).to receive(:calculate_penalty).and_return(false)&lt;br /&gt;
    end&lt;br /&gt;
    context 'when current assignment does not vary rubric by round' do&lt;br /&gt;
      it 'calculates scores and renders grades#view page' do&lt;br /&gt;
        allow(AssignmentQuestionnaire).to receive(:where).with(assignment_id: 1, used_in_round: 2).and_return([])&lt;br /&gt;
        # added AssignmentQuestionnaire 'allow' below to handle chart functionality added in E1859&lt;br /&gt;
        allow(AssignmentQuestionnaire).to receive(:where).with(assignment_id: 1, questionnaire_id: 1).and_return([assignment_questionnaire])&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([review_response])&lt;br /&gt;
        params = {id: 1}&lt;br /&gt;
        get :view, params&lt;br /&gt;
        expect(controller.instance_variable_get(:@questions)[:review].size).to eq(1)&lt;br /&gt;
        expect(response).to render_template(:view)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=121414</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=121414"/>
		<updated>2018-12-08T05:28:38Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* app/views/grades/_team_charts.html.erb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We have used the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the view of the 'view scores' page after the modifications. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed for a particular round. A bar graph of the average score of the class for that subset of criteria is displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:1859_Chart_Preview.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows an average score of the class for 5 rubric criteria in Round 1 selected by the instructor. A live demo with randomly generated data can be found on [https://jsfiddle.net/Jereman/5uxqr92y/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We have implemented a new partial file criteria_charts to the team_chart that display the bar graph with existing data collected by the grades controller methods to the view page.&lt;br /&gt;
&lt;br /&gt;
Modified files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/grades_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_criteria_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
== app/views/grades/_criteria_charts.html.erb ==&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
 &amp;lt;%= content_tag :div, class: &amp;quot;chartdata_information&amp;quot;, data: {chartdata: @chartdata} do %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
 &amp;lt;%= content_tag :div, class: &amp;quot;text_information&amp;quot;, data: {text: @text} do %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;%= content_tag :div, class: &amp;quot;minmax_information&amp;quot;, data: {minmax: @minmax} do %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;https://www.gstatic.com/charts/loader.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      google.charts.load('current', {packages: ['corechart', 'bar']});&lt;br /&gt;
       //Display Options&lt;br /&gt;
      var showLabels = true;&lt;br /&gt;
      var barColors = [ // Other colors generated from the expertiza base red&lt;br /&gt;
          '#A90201',    // using paletton.com&lt;br /&gt;
          '#018701',&lt;br /&gt;
          '#016565',&lt;br /&gt;
          '#A94D01'&lt;br /&gt;
      ];&lt;br /&gt;
      function getData(){ //Loads all chart data from the page&lt;br /&gt;
        chartData = $('.chartdata_information').data('chartdata');&lt;br /&gt;
        chartText = $('.text_information').data('text');&lt;br /&gt;
        chartRange = $('.minmax_information').data('minmax');&lt;br /&gt;
 for (var i = 0; i &amp;lt; chartData.length; i++){ //Set all the criteriaSelected to true&lt;br /&gt;
          var criteria = [];&lt;br /&gt;
          for (var j = 0; j &amp;lt; chartData[i].length; j++){&lt;br /&gt;
            criteria.push(true);&lt;br /&gt;
          }&lt;br /&gt;
          criteriaSelected.push(criteria);&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
       function generateData() {	//Generates random data for testing&lt;br /&gt;
        var rounds = 3;&lt;br /&gt;
        for(var i = 0; i &amp;lt; rounds; i++) {&lt;br /&gt;
  var criteriaNum = Math.floor(Math.random() * 5 + 5);  //Random number of criteria&lt;br /&gt;
          var round = [];&lt;br /&gt;
          var criteria = [];&lt;br /&gt;
          for(var j = 0; j &amp;lt; criteriaNum; j++) {&lt;br /&gt;
  round.push(Math.floor(Math.random() * 101));  //Random score for each criterion&lt;br /&gt;
            criteria.push(true);  //Everything starts out true&lt;br /&gt;
          }&lt;br /&gt;
          chartData.push(round);&lt;br /&gt;
          criteriaSelected.push(criteria);&lt;br /&gt;
 &lt;br /&gt;
        chartOptions = {		//Render options for the chart&lt;br /&gt;
          title: 'Class Average on Criteria',&lt;br /&gt;
          titleTextStyle: {&lt;br /&gt;
  fontName: 'arial',&lt;br /&gt;
            fontSize: 18,&lt;br /&gt;
            italic: false,&lt;br /&gt;
            bold: true&lt;br /&gt;
         chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));&lt;br /&gt;
        var checkBox = document.getElementById(&amp;quot;labelCheck&amp;quot;);&lt;br /&gt;
        checkBox.checked = true;&lt;br /&gt;
        checkBox.style.display = &amp;quot;inline&amp;quot;;&lt;br /&gt;
        updateChart(currentRound);&lt;br /&gt;
        loadRounds(); }&lt;br /&gt;
 function updateChart(roundNum) {	//Updates the chart with a new round number and renders&lt;br /&gt;
        currentRound = roundNum;&lt;br /&gt;
        renderChart();&lt;br /&gt;
        loadCriteria();&lt;br /&gt;
      function renderChart() {	//Renders the chart if changes have been made&lt;br /&gt;
          var data = loadData();&lt;br /&gt;
 chartOptions.vAxis.viewWindow.max = 5;&lt;br /&gt;
          chartOptions.vAxis.viewWindow.min = 0;&lt;br /&gt;
          if (chartRange[currentRound]) { //Set axis ranges if they exist&lt;br /&gt;
              if (chartRange[currentRound][1])&lt;br /&gt;
                  chartOptions.vAxis.viewWindow.max = chartRange[currentRound][1];&lt;br /&gt;
 if (chartRange[currentRound][0])&lt;br /&gt;
                  chartOptions.vAxis.viewWindow.min = chartRange[currentRound][0];&lt;br /&gt;
 }&lt;br /&gt;
          chart.draw(data, chartOptions);&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
           chartOptions.hAxis.ticks = [];&lt;br /&gt;
          var rowCount = 1;&lt;br /&gt;
 for(var i = 0; i &amp;lt; chartData[currentRound].length; i++) { //Add a chart row for each criterion if not null&lt;br /&gt;
              if (criteriaSelected[currentRound][i] &amp;amp;&amp;amp; chartData[currentRound][i]) {&lt;br /&gt;
  data.addRow([rowCount, chartData[currentRound][i], barColors[0], (showLabels) ? chartData[currentRound][i].toFixed(1).toString() : &amp;quot;&amp;quot;]);&lt;br /&gt;
                  chartOptions.hAxis.ticks.push({v: rowCount++, f: (i+1).toString()});&lt;br /&gt;
              }&lt;br /&gt;
          }&lt;br /&gt;
 &lt;br /&gt;
          var data = new google.visualization.DataTable();&lt;br /&gt;
          data.addColumn('number', 'Criterion');&lt;br /&gt;
          var i;&lt;br /&gt;
 for(i = 0; i &amp;lt; roundNum; i++) { //Add all columns for the data&lt;br /&gt;
              data.addColumn('number', 'Round ' + (i+1).toString());&lt;br /&gt;
              data.addColumn({type: 'string', role: 'style'});	//column for specifying the bar color&lt;br /&gt;
              data.addColumn({type: 'string', role: 'annotation'});&lt;br /&gt;
 &lt;br /&gt;
              var newRow = [];&lt;br /&gt;
              var elementsAdded = false;&lt;br /&gt;
              newRow.push(rowCount);&lt;br /&gt;
 for(var j = 0; j &amp;lt; roundNum; j++) { //If the round has the criterion, add it&lt;br /&gt;
                  if (chartData[j][i]) {&lt;br /&gt;
                      newRow.push(chartData[j][i]);&lt;br /&gt;
                      elementsAdded = true;&lt;br /&gt;
                  } else {&lt;br /&gt;
                      newRow.push(null);&lt;br /&gt;
                  }&lt;br /&gt;
  newRow.push(barColors[j % barColors.length]); //Add column color&lt;br /&gt;
                  if (chartData[j] &amp;amp;&amp;amp; chartData[j][i] &amp;amp;&amp;amp; showLabels)&lt;br /&gt;
  newRow.push(chartData[j][i].toFixed(1).toString()); //Add column annotations&lt;br /&gt;
                  else&lt;br /&gt;
                      newRow.push(&amp;quot;&amp;quot;);&lt;br /&gt;
              }&lt;br /&gt;
       function loadCriteria() {	//Creates the criteria check boxes&lt;br /&gt;
          var form = document.getElementById(&amp;quot;chartCriteria&amp;quot;);&lt;br /&gt;
 while (form.firstChild) //Clear out the old check boxes&lt;br /&gt;
              form.removeChild(form.firstChild);&lt;br /&gt;
 if (currentRound == -1) //Don't show criteria for 'all rounds'&lt;br /&gt;
              return;&lt;br /&gt;
          chartData[currentRound].forEach(function(dat, i) {&lt;br /&gt;
              var checkbox = document.createElement('input');&lt;br /&gt;
              checkbox.type = &amp;quot;checkbox&amp;quot;;&lt;br /&gt;
              checkbox.id = &amp;quot;checkboxoption&amp;quot; + i;&lt;br /&gt;
 checkbox.onclick = function() { //Register callback to toggle the criterion&lt;br /&gt;
                  checkboxUpdate(i);&lt;br /&gt;
              }&lt;br /&gt;
              var label = document.createElement('label')&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;form id=&amp;quot;chartOptions&amp;quot; name=&amp;quot;chartOptions&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;select id=&amp;quot;chartRounds&amp;quot; name=&amp;quot;rounds&amp;quot; &lt;br /&gt;
 onChange=&amp;quot;updateChart(document.chartOptions.chartRounds.options[document.chartOptions.chartRounds.options.selectedIndex].value)&amp;quot; style = &amp;quot;display: none&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;/select&amp;gt;&lt;br /&gt;
 &amp;lt;label&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id = &amp;quot;labelCheck&amp;quot; checked=&amp;quot;checked&amp;quot; style=&amp;quot;display: none&amp;quot; onclick=&amp;quot;showLabels = !showLabels; renderChart();&amp;quot;&amp;gt;Show &lt;br /&gt;
 Labels&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;chartCriteria&amp;quot; name=&amp;quot;chartCriteria&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== app/controllers/grades_controller.rb ==&lt;br /&gt;
&lt;br /&gt;
 def action_allowed?&lt;br /&gt;
     case params[:action]&lt;br /&gt;
     when 'view_my_scores'&lt;br /&gt;
       ['Instructor',&lt;br /&gt;
        'Teaching Assistant',&lt;br /&gt;
        'Administrator',&lt;br /&gt;
        'Super-Administrator',&lt;br /&gt;
       'Student'].include? current_role_name and&lt;br /&gt;
        are_needed_authorizations_present?(params[:id], &amp;quot;reader&amp;quot;, &amp;quot;reviewer&amp;quot;) and&lt;br /&gt;
        check_self_review_status&lt;br /&gt;
 when 'view_team'&lt;br /&gt;
      if ['Student'].include? current_role_name # students can only see the head map for their own team&lt;br /&gt;
        participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
        session[:user].id == participant.user_id&lt;br /&gt;
      else&lt;br /&gt;
 true&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      ['Instructor',&lt;br /&gt;
       'Teaching Assistant',&lt;br /&gt;
       'Administrator',&lt;br /&gt;
       'Super-Administrator'].include? current_role_name&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
   # collects the question text for display on the chart&lt;br /&gt;
   # Added as part of E1859&lt;br /&gt;
   def assign_chart_text&lt;br /&gt;
     @text = []&lt;br /&gt;
     (1..@assignment.num_review_rounds).to_a.each do |round|&lt;br /&gt;
       question = @questions[('review' + round.to_s).to_sym]&lt;br /&gt;
       @text[round - 1] = []&lt;br /&gt;
       next if question.nil?&lt;br /&gt;
       (0..(question.length - 1)).to_a.each do |q|&lt;br /&gt;
         @text[round - 1][q] = question[q].txt&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   # find the maximum and minimum scores for each questionnaire round&lt;br /&gt;
   # Added as part of E1859&lt;br /&gt;
   def assign_minmax(questionnaires)&lt;br /&gt;
     @minmax = []&lt;br /&gt;
     questionnaires.each do |questionnaire|&lt;br /&gt;
      next if questionnaire.symbol != :review&lt;br /&gt;
      round = AssignmentQuestionnaire.where(assignment_id: @assignment.id, questionnaire_id: questionnaire.id).first.used_in_round&lt;br /&gt;
      next if round.nil?&lt;br /&gt;
  @minmax[round - 1] = []&lt;br /&gt;
      @minmax[round - 1][0] = if !questionnaire.min_question_score.nil? and questionnaire.min_question_score &amp;lt; 0&lt;br /&gt;
                                questionnaire.min_question_score&lt;br /&gt;
                              else&lt;br /&gt;
                                0&lt;br /&gt;
                              end&lt;br /&gt;
      @minmax[round - 1][1] = if !questionnaire.max_question_score.nil?&lt;br /&gt;
                                questionnaire.max_question_score&lt;br /&gt;
                              else&lt;br /&gt;
                                5&lt;br /&gt;
                              end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
 # this method collects and averages all the review scores across teams&lt;br /&gt;
   # Added as part of E1859&lt;br /&gt;
   def assign_chart_data&lt;br /&gt;
     @rounds = @assignment.num_review_rounds&lt;br /&gt;
     @chartdata = []&lt;br /&gt;
     (1..@rounds).to_a.each do |round|&lt;br /&gt;
       @teams = AssignmentTeam.where(parent_id: @assignment.id)&lt;br /&gt;
       @teamids = []&lt;br /&gt;
       @result = []&lt;br /&gt;
       @responseids = []&lt;br /&gt;
       @scoreviews = []&lt;br /&gt;
       (0..(@teams.length - 1)).to_a.each do |t|&lt;br /&gt;
         @teamids[t] = @teams[t].id&lt;br /&gt;
         @result[t] = ResponseMap.find_by_sql [&amp;quot;SELECT id FROM response_maps&lt;br /&gt;
           WHERE type = 'ReviewResponseMap' AND reviewee_id = ?&amp;quot;, @teamids[t]]&lt;br /&gt;
         @responseids[t] = []&lt;br /&gt;
         @scoreviews[t] = []&lt;br /&gt;
         (0..(@result[t].length - 1)).to_a.each do |r|&lt;br /&gt;
           @responseids[t][r] = Response.find_by_sql [&amp;quot;SELECT id FROM responses&lt;br /&gt;
             WHERE round = ? AND map_id = ?&amp;quot;, round, @result[t][r]]&lt;br /&gt;
          @scoreviews[t][r] = Answer.where(response_id: @responseids[t][r][0]) unless @responseids[t][r].empty?&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @chartdata[round - 1] = []&lt;br /&gt;
      # because the nth first elements could be nil&lt;br /&gt;
      # iterate until a non-nil value is found or move to next round&lt;br /&gt;
      t = 0&lt;br /&gt;
      r = 0&lt;br /&gt;
 t += 1 while @scoreviews[t].nil?&lt;br /&gt;
      while t &amp;lt; @scoreviews.length and @scoreviews[t][r].nil?&lt;br /&gt;
        if r &amp;lt; @scoreviews[t].length - 1&lt;br /&gt;
          r += 1&lt;br /&gt;
        else&lt;br /&gt;
 def assign_chart_data&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      next if t &amp;gt;= @scoreviews.length&lt;br /&gt;
 (0..(@scoreviews[t][r].length - 1)).to_a.each do |q|&lt;br /&gt;
        sum = 0&lt;br /&gt;
        counter = 0&lt;br /&gt;
 def retrieve_questions(questionnaires)&lt;br /&gt;
    questionnaires.each do |questionnaire|&lt;br /&gt;
      round = AssignmentQuestionnaire.where(assignment_id: @assignment.id, questionnaire_id: questionnaire.id).first.used_in_round&lt;br /&gt;
      questionnaire_symbol = if !round.nil?&lt;br /&gt;
                         (questionnaire.symbol.to_s + round.to_s).to_sym&lt;br /&gt;
                             else&lt;br /&gt;
                               questionnaire.symbol&lt;br /&gt;
                             end&lt;br /&gt;
      @questions[questionnaire_symbol] = questionnaire.questions&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
 def update&lt;br /&gt;
    if format(&amp;quot;%.2f&amp;quot;, total_score) != params[:participant][:grade]&lt;br /&gt;
      participant.update_attribute(:grade, params[:participant][:grade])&lt;br /&gt;
      message = if participant.grade.nil?&lt;br /&gt;
           &amp;quot;The computed score will be used for &amp;quot; + participant.user.name + &amp;quot;.&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
                  &amp;quot;A score of &amp;quot; + params[:participant][:grade] + &amp;quot;% has been saved for &amp;quot; + participant.user.name + &amp;quot;.&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
    end&lt;br /&gt;
    flash[:note] = message&lt;br /&gt;
    redirect_to action: 'edit', id: params[:id]&lt;br /&gt;
&lt;br /&gt;
== app/views/grades/_team_charts.html.erb ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;%= render :partial =&amp;gt; 'criteria_charts' %&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;a href=&amp;quot;#&amp;quot; name='team-chartLink' onClick=&amp;quot;toggleElement('team-chart', 'stats');return false;&amp;quot;&amp;gt;Hide stats&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;TR style =&amp;quot;background-color: white;&amp;quot; class=&amp;quot;team&amp;quot; id=&amp;quot;team-chart&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;circle&amp;quot; id=&amp;quot;average-score&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
      Class Average&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;TH COLSPAN=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;
    	&amp;lt;img src=&amp;quot;&amp;lt;%= @average_chart  %&amp;gt;&amp;quot; &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    	Class Distribution&lt;br /&gt;
    	&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;TH WIDTH=&amp;quot;9&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/TR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    var myCircle = Circles.create({&lt;br /&gt;
      id:           'average-score',&lt;br /&gt;
      radius:       50,&lt;br /&gt;
      value:        &amp;lt;%= @avg_of_avg.to_i %&amp;gt;,&lt;br /&gt;
      maxValue:     100,&lt;br /&gt;
      width:        15,&lt;br /&gt;
      text:         '&amp;lt;%=@avg_of_avg.to_i%&amp;gt;',&lt;br /&gt;
      colors:       ['#FFEB99', '#FFCC00'],&lt;br /&gt;
      duration:       700,&lt;br /&gt;
      textClass:      'circles-final'&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;style&amp;gt;&lt;br /&gt;
   .circles-final{&lt;br /&gt;
      font-size: 16px !important;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we have tested the existing tests after the addition of new features to the grades_controller. We have approached [http://rspec.info/ RSpec] testing framework. The UI feature tests are conducted manually.&lt;br /&gt;
&lt;br /&gt;
===JavaScript Chart===&lt;br /&gt;
To validate all functionality of the chart when adding new features or fixing old ones, the following criteria were tested manually for expected functionality:&lt;br /&gt;
&lt;br /&gt;
# Chart is displaying correctly&lt;br /&gt;
## Bars are showing up where expected&lt;br /&gt;
## Bar annotations are showing the expected value&lt;br /&gt;
## Criteria labels are for the correct bar and displaying correct values&lt;br /&gt;
## Hover text is displaying the correct values&lt;br /&gt;
## Null values are not present on the chart&lt;br /&gt;
## Correct colors are used for the multi-round view&lt;br /&gt;
# Show Labels checkbox works as expected&lt;br /&gt;
# Round Criteria is displaying correctly&lt;br /&gt;
## Round dropdown menu shows all rounds for the assignment&lt;br /&gt;
## Selecting a round changes the criteria checkboxes&lt;br /&gt;
## All checkboxes are displayed with appropriate text&lt;br /&gt;
## Checkboxes correctly remove or add criterion bars to the chart&lt;br /&gt;
&lt;br /&gt;
===RSpec Tests===&lt;br /&gt;
We have modified one of the existing tests for grades controller because the addition of new functionality broke that particular test. The added test handles the chart functionality correctly.&lt;br /&gt;
&lt;br /&gt;
== spec/controllers/grades_controller_spec.rb ==&lt;br /&gt;
    describe '#view' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      allow(Answer).to receive(:compute_scores).with([review_response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
      allow(Participant).to receive(:where).with(parent_id: 1).and_return([participant])&lt;br /&gt;
      allow(AssignmentParticipant).to receive(:find).with(1).and_return(participant)&lt;br /&gt;
      allow(assignment).to receive(:late_policy_id).and_return(false)&lt;br /&gt;
      allow(assignment).to receive(:calculate_penalty).and_return(false)&lt;br /&gt;
    end&lt;br /&gt;
    context 'when current assignment does not vary rubric by round' do&lt;br /&gt;
      it 'calculates scores and renders grades#view page' do&lt;br /&gt;
        allow(AssignmentQuestionnaire).to receive(:where).with(assignment_id: 1, used_in_round: 2).and_return([])&lt;br /&gt;
        # added AssignmentQuestionnaire 'allow' below to handle chart functionality added in E1859&lt;br /&gt;
        allow(AssignmentQuestionnaire).to receive(:where).with(assignment_id: 1, questionnaire_id: 1).and_return([assignment_questionnaire])&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([review_response])&lt;br /&gt;
        params = {id: 1}&lt;br /&gt;
        get :view, params&lt;br /&gt;
        expect(controller.instance_variable_get(:@questions)[:review].size).to eq(1)&lt;br /&gt;
        expect(response).to render_template(:view)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=121035</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=121035"/>
		<updated>2018-12-06T15:24:10Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:1859_Chart_Preview.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 5 rubric criteria in Round 1 selected by the instructor. A live demo with randomly generated data can be found on [https://jsfiddle.net/Jereman/5uxqr92y/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;br /&gt;
&lt;br /&gt;
===JavaScript Chart===&lt;br /&gt;
To validate all functionality of the chart when adding new features or fixing old ones, the following criteria were tested manually for expected functionality:&lt;br /&gt;
&lt;br /&gt;
# Chart is displaying correctly&lt;br /&gt;
## Bars are showing up where expected&lt;br /&gt;
## Bar annotations are showing the expected value&lt;br /&gt;
## Criteria labels are for the correct bar and displaying correct values&lt;br /&gt;
## Hover text is displaying the correct values&lt;br /&gt;
## Null values are not present on the chart&lt;br /&gt;
## Correct colors are used for the multi-round view&lt;br /&gt;
# Show Labels checkbox works as expected&lt;br /&gt;
# Round Criteria is displaying correctly&lt;br /&gt;
## Round dropdown menu shows all rounds for the assignment&lt;br /&gt;
## Selecting a round changes the criteria checkboxes&lt;br /&gt;
## All checkboxes are displayed with appropriate text&lt;br /&gt;
## Checkboxes correctly remove or add criterion bars to the chart&lt;br /&gt;
&lt;br /&gt;
===RSpec Tests===&lt;br /&gt;
RSpec tests were added to validate functionality of the helper methods that were added to the grades controller.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120941</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120941"/>
		<updated>2018-12-04T16:06:14Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:1859_Chart_Preview.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 5 rubric criteria in Round 1 selected by the instructor. A live demo with randomly generated data can be found on [https://jsfiddle.net/Jereman/5uxqr92y/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:1859_Chart_Preview.png&amp;diff=120940</id>
		<title>File:1859 Chart Preview.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:1859_Chart_Preview.png&amp;diff=120940"/>
		<updated>2018-12-04T16:05:23Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120939</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120939"/>
		<updated>2018-12-04T15:55:11Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120883</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120883"/>
		<updated>2018-12-02T21:12:52Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/192/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120879</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120879"/>
		<updated>2018-11-29T19:25:34Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/180/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120878</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120878"/>
		<updated>2018-11-28T19:47:25Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/168/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120877</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120877"/>
		<updated>2018-11-28T16:37:43Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/148/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120876</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120876"/>
		<updated>2018-11-28T16:22:45Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/138/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120875</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120875"/>
		<updated>2018-11-28T16:21:53Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/137/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120857</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120857"/>
		<updated>2018-11-25T22:14:40Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:A3.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/51/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. On clicking Manage and then on assignments, following page appears.&lt;br /&gt;
&lt;br /&gt;
[[File:S1.JPG]]&lt;br /&gt;
&lt;br /&gt;
2. Click on 'view score' icon of an assignment. The summary report page of the selected assignment comes up.&lt;br /&gt;
&lt;br /&gt;
[[File:A0.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Following are mockup screens which we wish to create:&lt;br /&gt;
&lt;br /&gt;
a) Instructor would select the round and rubric criteria of the assignment for which he/she wants to view the class performance.&lt;br /&gt;
 &lt;br /&gt;
[[File:A1.jpg]]&lt;br /&gt;
&lt;br /&gt;
b) The bar graph of the class performance for those criteria would be displayed.&lt;br /&gt;
&lt;br /&gt;
[[File:Try.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120224</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120224"/>
		<updated>2018-11-19T23:22:54Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Files Involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:hw4.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/51/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping. Hopefully there is only slight controller modifications necessary, as the chart can use the existing information collected by controller methods to display the raw details on the existing page.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120223</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120223"/>
		<updated>2018-11-19T23:17:32Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ==== &lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:hw4.png]]&lt;br /&gt;
&lt;br /&gt;
==== Tools and Design Choice ====&lt;br /&gt;
&lt;br /&gt;
We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Visualization ====&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. &lt;br /&gt;
&lt;br /&gt;
[[File:JsfiddleBarChart.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor. The code and live demo can be found on [https://jsfiddle.net/Jereman/5uxqr92y/51/ JSFiddle]&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The specification of the project does not require us to use automated tests. However, we plan to test the modified ruby code or the new features that will be added to the grades_controller. We will be approaching [http://rspec.info/ RSpec] testing framework. For the javascript, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:JsfiddleBarChart.png&amp;diff=120222</id>
		<title>File:JsfiddleBarChart.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:JsfiddleBarChart.png&amp;diff=120222"/>
		<updated>2018-11-19T23:16:06Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120147</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120147"/>
		<updated>2018-11-17T15:55:23Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Flow ==&lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:hw4.png]]&lt;br /&gt;
&lt;br /&gt;
== Visualization ==&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and comparable graphical quality to the rest of expertiza while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
[[File:bar graph oss.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
We plan to test the modified ruby code or the new features that will be added to the controllers. We will be approaching RSpec testing framework. For the javascripts, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120145</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=120145"/>
		<updated>2018-11-17T15:31:09Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Visualization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Purpose ==&lt;br /&gt;
Our task is to provide an interactive visualization or a table for instructors that shows how their class performed on selected rubric criteria. Such feature would be immensely helpful for instructors as it would assist them to identify what they need to focus more attention on. For example, creating a graph showing the average scores for all or a certain subset of main rubric criteria (questionnaire). If the average score of the class on selected criteria (question) is low means the instructor can emphasize more on the learning materials related to it.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Flow ==&lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:hw4.png]]&lt;br /&gt;
&lt;br /&gt;
== Visualization ==&lt;br /&gt;
&lt;br /&gt;
The following graph shows the expected view of the 'view scores' page. The instructor selects a subset of rubric criteria for which he/she wants to know how a class performed. A bar graph of the average score of the class for that subset of criteria would be displayed. We plan to use the lightweight [https://developers.google.com/chart/ Google Charts] library for displaying the chart data on the page, with standard HTML for all of the options and dropdowns for option selection. Google Charts was chosen because of its high compatibility, full option set, and good graphical quality while keeping a small JS footprint, which should help prevent slow page responsiveness.&lt;br /&gt;
&lt;br /&gt;
[[File:bar graph oss.png]]&lt;br /&gt;
&lt;br /&gt;
The above graph shows average score of the class for 10 rubric criteria selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
We plan to test the modified ruby code or the new features that will be added to the controllers. We will be approaching RSpec testing framework. For the javascripts, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119751</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119751"/>
		<updated>2018-11-13T20:57:48Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Flow ==&lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:hw4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
We plan to test the modified ruby code or the new features that will be added to the controllers. We will be approaching RSpec testing framework. For the javascripts, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119745</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119745"/>
		<updated>2018-11-13T20:51:28Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an online assignment grading platform. Instructors can create assignments and implement peer reviews for submitted assignments. This project concerns the creation of a system for visualizing student performance on those assignments, primarily as graded in peer reviews. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Flow ==&lt;br /&gt;
&lt;br /&gt;
The flowchart representing graphical flow of an instructor visiting view scores under assignments is given below:&lt;br /&gt;
&lt;br /&gt;
[[File:hw4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files Involved ==&lt;br /&gt;
We plan to work on the files that the previous team were involved with such as controllers of grade and assignment and the view of grade and review_mapping.&lt;br /&gt;
&lt;br /&gt;
Proposed files:&lt;br /&gt;
&lt;br /&gt;
app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/view.html.erb &lt;br /&gt;
&lt;br /&gt;
app/views/grades/_teams.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_title.html.erb&lt;br /&gt;
&lt;br /&gt;
app/views/grades/_team_charts.html.erb&lt;br /&gt;
&lt;br /&gt;
app/view/review_mapping/_review_report.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
We plan to test the modified ruby code or the new features that will be added to the controllers. We will be approaching RSpec testing framework. For the javascripts, the tests will be conducted manually.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119495</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119495"/>
		<updated>2018-11-12T21:26:01Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This project concerns the creation of a system for visualizing student performance on assignments in the Expertiza system. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score. The changes made to the expertiza project will primarily include HTML/ERB changes to the view files to accommodate the added charts on the page and the necessary javascript to allow responsive design. Brief controller modifications will be made to facilitate database filtering to get the displayed data.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119493</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119493"/>
		<updated>2018-11-12T21:22:02Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This project concerns the creation of a system for visualizing student performance on assignments in the Expertiza system. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, an instructor should be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
The visualizations will be implemented as either a single or stacked bar chart with a bar for each of the selected criteria to be observed. If a single bar, then the height of the bar will be the total class average, but a stacked bar chart may be better to show the percentage of the class that received each score.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119484</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119484"/>
		<updated>2018-11-12T21:06:33Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This project concerns the creation of a system for visualizing student performance on assignments in the Expertiza system. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, it is desirable to be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119481</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119481"/>
		<updated>2018-11-12T21:04:17Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
This project concerns the creation of a system for visualizing student performance on assignments in the Expertiza system. Graphs will be made to show various rubric criteria and the class' performance on the criteria. If the criteria are the same for multiple stages of review, it is desirable to be able to compare performance over time or between reviews.&lt;br /&gt;
&lt;br /&gt;
= Proposed Changes =&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119478</id>
		<title>E1859 Visualizations for Instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1859_Visualizations_for_Instructors&amp;diff=119478"/>
		<updated>2018-11-12T20:59:00Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: Created page with &amp;quot;= Introduction =   = Proposed Changes =&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Proposed Changes =&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118641</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118641"/>
		<updated>2018-11-03T14:51:56Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents changes made to the Expertiza system as part of an OSS project on sorting issues related to roles and user accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Peer Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
Following the installation and setup of the Expertiza system with the scrubbed database, testing of the project functionality can be done as follows.&lt;br /&gt;
:'''A. User Deletion'''&lt;br /&gt;
::1. Sign in as a Super-Administrator (see above for sample account)&lt;br /&gt;
::2. Navigate to Administration&amp;gt;Show&amp;gt;Instructors&lt;br /&gt;
:::i. Select one of the instructor accounts&lt;br /&gt;
:::ii. On the account page, click the delete link at the bottom&lt;br /&gt;
:::iii. Assuming the instructor account is not tied to any assignments or other associations, the account will be gone from the list. If there is an issue, an error will be displayed at the top of the page.&lt;br /&gt;
::3. Navigate to Administration&amp;gt;Show&amp;gt;Administrators&lt;br /&gt;
:::i. Select one of the administrator accounts&lt;br /&gt;
:::ii. On the account page, click the delete link at the bottom&lt;br /&gt;
:::iii. Assuming the administrator account is not tied to any assignments or other associations, the account will be gone from the list. If there is an issue, an error will be displayed at the top of the page.&lt;br /&gt;
::4. Errors may appear on the page when an account to be deleted still has relations to other assignments, teams, etc. The content and quality of these error messages is outside the scope of this project; some may show an English error, others may return an SQL error. This is the intended functionality as of the time this project was written - this project only concerns successful deletion in situations where deletion should be working.&lt;br /&gt;
&lt;br /&gt;
:'''B. Role Creation'''&lt;br /&gt;
::1. Sign in as a Super-Administrator&lt;br /&gt;
::2. Navigate to Administration&amp;gt;Setup&amp;gt;Roles&lt;br /&gt;
::3. Ensure that there is no link on the page to create a new role&lt;br /&gt;
::4. Ensure that manually navigating to /roles/new results in an error message on the page.&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor are both account types that inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
Because of the varying properties on Users and Administrators, and due to some database table migrations that were put into effect earlier, the rails system was unable to find &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; columns in the Users table when trying to delete the Administrator and Instructor accounts. The earlier migration had renamed it to &amp;lt;code&amp;gt;team_id&amp;lt;/code&amp;gt; when team functionality was changed, but since Administrator and Instructor don't join teams, that id was invalid. A new migration was created to re-add the &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; column to the table as a blank column just used for SQL matching. &lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments. The code segments only show the destroy method for the users controller, as the code is nearly identical in the administrator controller for both Instructor and Administrator deletion, with the only changes being to the name of the position being passed and the &amp;lt;code&amp;gt;redirect_to&amp;lt;/code&amp;gt; path after the deletion.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Role Creation ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
In Expertiza, each user has a role in the system which dictates the availability of functionality to the user. The current roles in the system are Administrator, Instructor, Student, Super-Administrator, Teaching Assistant, and Unregistered User. The other focus of this project was to remove the ability to add new roles to the system. The functionality was previously available only to Super Administrators, but the functionality was deemed unnecessary and a potential issue to keep around. The solution simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
'''Before:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&lt;br /&gt;
'''After:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RSpec Test Cases ==&lt;br /&gt;
&lt;br /&gt;
In order to develop test cases for the functionality added and removed in this project, both an admin_controller_spec.rb and a roles_controller_spec.rb file were created and added to the RSpec test environment. &lt;br /&gt;
&lt;br /&gt;
The admin tests include building and deleting both Administrator and Instructor accounts using Capybara for testing the front-end web functionality.&lt;br /&gt;
&lt;br /&gt;
To test the role creation, Capybara was again used to check that the web page did not have any button for &amp;quot;New Role&amp;quot; and that navigating to the page manually resulted in an error.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118605</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118605"/>
		<updated>2018-11-03T04:49:09Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents changes made to the Expertiza system as part of an OSS project on sorting issues related to roles and user accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Peer Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
Following the installation and setup of the Expertiza system with the scrubbed database, testing of the project functionality can be done as follows.&lt;br /&gt;
:'''A. User Deletion'''&lt;br /&gt;
::1. Sign in as a Super-Administrator (see above for sample account)&lt;br /&gt;
::2. Navigate to Administration&amp;gt;Show&amp;gt;Instructors&lt;br /&gt;
:::i. Select one of the instructor accounts&lt;br /&gt;
:::ii. On the account page, click the delete link at the bottom&lt;br /&gt;
:::iii. Assuming the instructor account is not tied to any assignments or other associations, the account will be gone from the list. If there is an issue, an error will be displayed at the top of the page.&lt;br /&gt;
::3. Navigate to Administration&amp;gt;Show&amp;gt;Administrators&lt;br /&gt;
:::i. Select one of the administrator accounts&lt;br /&gt;
:::ii. On the account page, click the delete link at the bottom&lt;br /&gt;
:::iii. Assuming the administrator account is not tied to any assignments or other associations, the account will be gone from the list. If there is an issue, an error will be displayed at the top of the page.&lt;br /&gt;
&lt;br /&gt;
:'''B. Role Creation'''&lt;br /&gt;
::1. Sign in as a Super-Administrator&lt;br /&gt;
::2. Navigate to Administration&amp;gt;Setup&amp;gt;Roles&lt;br /&gt;
::3. Ensure that there is no link on the page to create a new role&lt;br /&gt;
::4. Ensure that manually navigating to /roles/new results in an error message on the page.&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor are both account types that inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
Because of the varying properties on Users and Administrators, and due to some database table migrations that were put into effect earlier, the rails system was unable to find &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; columns in the Users table when trying to delete the Administrator and Instructor accounts. The earlier migration had renamed it to &amp;lt;code&amp;gt;team_id&amp;lt;/code&amp;gt; when team functionality was changed, but since Administrator and Instructor don't join teams, that id was invalid. A new migration was created to re-add the &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; column to the table as a blank column just used for SQL matching. &lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments. The code segments only show the destroy method for the users controller, as the code is nearly identical in the administrator controller for both Instructor and Administrator deletion, with the only changes being to the name of the position being passed and the &amp;lt;code&amp;gt;redirect_to&amp;lt;/code&amp;gt; path after the deletion.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Role Creation ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
In Expertiza, each user has a role in the system which dictates the availability of functionality to the user. The current roles in the system are Administrator, Instructor, Student, Super-Administrator, Teaching Assistant, and Unregistered User. The other focus of this project was to remove the ability to add new roles to the system. The functionality was previously available only to Super Administrators, but the functionality was deemed unnecessary and a potential issue to keep around. The solution simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
'''Before:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&lt;br /&gt;
'''After:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RSpec Test Cases ==&lt;br /&gt;
&lt;br /&gt;
In order to develop test cases for the functionality added and removed in this project, both an admin_controller_spec.rb and a roles_controller_spec.rb file were created and added to the RSpec test environment. &lt;br /&gt;
&lt;br /&gt;
The admin tests include building and deleting both Administrator and Instructor accounts using Capybara for testing the front-end web functionality.&lt;br /&gt;
&lt;br /&gt;
To test the role creation, Capybara was again used to check that the web page did not have any button for &amp;quot;New Role&amp;quot; and that navigating to the page manually resulted in an error.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118604</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118604"/>
		<updated>2018-11-03T04:46:59Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents changes made to the Expertiza system as part of an OSS project on sorting issues related to roles and user accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Peer Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
Following the installation and setup of the Expertiza system with the scrubbed database, testing of the project functionality can be done as follows.&lt;br /&gt;
:'''A. User Deletion'''&lt;br /&gt;
::1. Sign in as a Super-Administrator (see above for sample account)&lt;br /&gt;
::2. Navigate to Administration&amp;gt;Show&amp;gt;Instructors&lt;br /&gt;
:::i. Select one of the instructor accounts&lt;br /&gt;
:::ii. On the account page, click the delete link at the bottom&lt;br /&gt;
:::iii. Assuming the instructor account is not tied to any assignments or other associations, the account will be gone from the list. If there is an issue, an error will be displayed at the top of the page.&lt;br /&gt;
::3. Navigate to Administration&amp;gt;Show&amp;gt;Administrators&lt;br /&gt;
:::i. Select one of the administrator accounts&lt;br /&gt;
:::ii. On the account page, click the delete link at the bottom&lt;br /&gt;
:::iii. Assuming the administrator account is not tied to any assignments or other associations, the account will be gone from the list. If there is an issue, an error will be displayed at the top of the page.&lt;br /&gt;
&lt;br /&gt;
:'''B. Role Creation'''&lt;br /&gt;
::1. Sign in as a Super-Administrator&lt;br /&gt;
::2. Navigate to Administration&amp;gt;Setup&amp;gt;Roles&lt;br /&gt;
::3. Ensure that there is no link on the page to create a new role&lt;br /&gt;
::4. Ensure that manually navigating to /roles/new results in an error message on the page.&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor are both account types that inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
Because of the varying properties on Users and Administrators, and due to some database table migrations that were put into effect earlier, the rails system was unable to find &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; columns in the Users table when trying to delete the Administrator and Instructor accounts. The earlier migration had renamed it to &amp;lt;code&amp;gt;team_id&amp;lt;/code&amp;gt; when team functionality was changed, but since Administrator and Instructor don't join teams, that id was invalid. A new migration was created to re-add the &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; column to the table as a blank column just used for SQL matching. &lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Role Creation ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
In Expertiza, each user has a role in the system which dictates the availability of functionality to the user. The current roles in the system are Administrator, Instructor, Student, Super-Administrator, Teaching Assistant, and Unregistered User. The other focus of this project was to remove the ability to add new roles to the system. The functionality was previously available only to Super Administrators, but the functionality was deemed unnecessary and a potential issue to keep around. The solution simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
'''Before:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&lt;br /&gt;
'''After:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RSpec Test Cases ==&lt;br /&gt;
&lt;br /&gt;
In order to develop test cases for the functionality added and removed in this project, both an admin_controller_spec.rb and a roles_controller_spec.rb file were created and added to the RSpec test environment. &lt;br /&gt;
&lt;br /&gt;
The admin tests include building and deleting both Administrator and Instructor accounts using Capybara for testing the front-end web functionality.&lt;br /&gt;
&lt;br /&gt;
To test the role creation, Capybara was again used to check that the web page did not have any button for &amp;quot;New Role&amp;quot; and that navigating to the page manually resulted in an error.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118603</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118603"/>
		<updated>2018-11-03T04:30:13Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents changes made to the Expertiza system as part of an OSS project on sorting issues related to roles and user accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Peer Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor are both account types that inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
Because of the varying properties on Users and Administrators, and due to some database table migrations that were put into effect earlier, the rails system was unable to find &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; columns in the Users table when trying to delete the Administrator and Instructor accounts. The earlier migration had renamed it to &amp;lt;code&amp;gt;team_id&amp;lt;/code&amp;gt; when team functionality was changed, but since Administrator and Instructor don't join teams, that id was invalid. A new migration was created to re-add the &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt; column to the table as a blank column just used for SQL matching. &lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
In Expertiza, each user has a role in the system which dictates the availability of functionality to the user. The current roles in the system are Administrator, Instructor, Student, Super-Administrator, Teaching Assistant, and Unregistered User. The other focus of this project was to remove the ability to add new roles to the system. The functionality was previously available only to Super Administrators, but the functionality was deemed unnecessary and a potential issue to keep around. The solution simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&lt;br /&gt;
=== Changes ===&lt;br /&gt;
'''Before:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&lt;br /&gt;
'''After:''' (roles_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118441</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118441"/>
		<updated>2018-11-03T01:39:59Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents changes made to the Expertiza system as part of an OSS project on sorting issues related to roles and user accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Roles ==&lt;br /&gt;
One other focus of the project was to remove the ability to add new roles to the expertiza system. This simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118421</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118421"/>
		<updated>2018-11-03T01:15:16Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: /* Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Roles ==&lt;br /&gt;
One other focus of the project was to remove the ability to add new roles to the expertiza system. This simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118387</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118387"/>
		<updated>2018-11-03T00:41:12Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Roles ==&lt;br /&gt;
One other focus of the project was to remove the ability to add new roles to the expertiza system. This simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118341</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118341"/>
		<updated>2018-11-02T23:58:57Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below and the before and after code segments.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Before:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      flash[:note] = undo_link(&amp;quot;The user \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;)&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After:''' (users_controller.rb)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def destroy&lt;br /&gt;
    begin&lt;br /&gt;
    flash[:note] = undo_link(UsersController.destroy_helper(params, 'user'))&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      flash[:error] = $ERROR_INFO&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.destroy_helper(params, position)&lt;br /&gt;
    begin&lt;br /&gt;
      @user = User.find(params[:id])&lt;br /&gt;
      AssignmentParticipant.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      TeamsUser.where(user_id: @user.id).each(&amp;amp;:delete)&lt;br /&gt;
      AssignmentQuestionnaire.where(user_id: @user.id).each(&amp;amp;:destroy)&lt;br /&gt;
      # Participant.delete(true)&lt;br /&gt;
      @user.destroy&lt;br /&gt;
      &amp;quot;The #{position} \&amp;quot;#{@user.name}\&amp;quot; has been successfully deleted.&amp;quot;&lt;br /&gt;
    rescue StandardError&lt;br /&gt;
      raise&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Roles ==&lt;br /&gt;
One other focus of the project was to remove the ability to add new roles to the expertiza system. This simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118245</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=118245"/>
		<updated>2018-11-02T21:57:32Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;br /&gt;
&lt;br /&gt;
== New Roles ==&lt;br /&gt;
One other focus of the project was to remove the ability to add new roles to the expertiza system. This simply involved removing the &amp;lt;code&amp;gt; New&amp;lt;/code&amp;gt; button from the Roles list view and preventing any new functionality in the Role controller.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    @role = Role.new&lt;br /&gt;
    foreign&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In the controller, the above was changed to the following in order to prevent the functionality on the GUI side.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  def new&lt;br /&gt;
    flash[:error] = 'New Roles cannot be created.'&lt;br /&gt;
    redirect_to roles_path&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117795</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117795"/>
		<updated>2018-11-02T01:21:41Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;br /&gt;
&lt;br /&gt;
In order to maintain DRY principles and support future code maintenance, a helper method was created for use with deleting Users, Administrator, and Instructor. By using a static class method, both UserController and AdminController could use the same underlying functionality for deleting User objects while customizing the flash message and the redirect url. The changes made to both controllers is visible in the UML diagram below.&lt;br /&gt;
&lt;br /&gt;
[[File:E1845Changes.jpg]]&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E1845Changes.jpg&amp;diff=117792</id>
		<title>File:E1845Changes.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E1845Changes.jpg&amp;diff=117792"/>
		<updated>2018-11-02T01:15:06Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117687</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117687"/>
		<updated>2018-10-31T16:02:13Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;br /&gt;
&lt;br /&gt;
The first step towards fixing the deletion functionality was to sort out the routing issues. No listing in the routing table existed for administrator deletion, and no controller method existed for neither administrator nor instructor deletion. With both of those in place, the only issue left was the deletion functionality.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117685</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117685"/>
		<updated>2018-10-31T15:17:44Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;br /&gt;
&lt;br /&gt;
== User Deletion ==&lt;br /&gt;
The majority of the project was related to solving issues regarding the deletion of Administrator and Instructor accounts. &lt;br /&gt;
Administrator and Instructor both inherit behavior from User but are handled and deleted in different codepaths. Furthermore, properties are used on a User that aren't on an Administrator, such as team ids or course associations.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117574</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117574"/>
		<updated>2018-10-28T16:59:50Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
In order to test all functionality, a super-administrator account is needed. The following account can be used in a standard Expertiza deployment:&lt;br /&gt;
&lt;br /&gt;
:- Super_administrator2 : ''password''&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117573</id>
		<title>E1845 Issues Related to Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1845_Issues_Related_to_Security&amp;diff=117573"/>
		<updated>2018-10-28T16:49:25Z</updated>

		<summary type="html">&lt;p&gt;Jbcolli8: Created page with &amp;quot;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scope of this project was to sort out issues related to roles and user accounts on the Expertiza system.&lt;/div&gt;</summary>
		<author><name>Jbcolli8</name></author>
	</entry>
</feed>