Skip to content

Commit

Permalink
Merge pull request #2348 from WISE-Community/issue-2318-notebook-grad…
Browse files Browse the repository at this point in the history
…ing-redesign

Notebook grading redesign
  • Loading branch information
geoffreykwan authored May 19, 2020
2 parents 053c224 + 23adf87 commit ee850b0
Show file tree
Hide file tree
Showing 43 changed files with 907 additions and 732 deletions.
2 changes: 1 addition & 1 deletion gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ gulp.task('update-i18n', gulp.series(function() {
// Default task
// -----------------------------------------------------------------------------

gulp.task('default', gulp.series('watch-sass', 'transpile'));
gulp.task('default', gulp.series('watch-sass'));


// http://stackoverflow.com/questions/27859691/gulp-handling-multiple-themes-and-folders
Expand Down
26 changes: 10 additions & 16 deletions src/main/webapp/site/src/messages.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -100,17 +100,11 @@
<context context-type="sourcefile">app/home/home.component.html</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit><trans-unit id="d97fd6757dbd8190c0e310c2be8432718b2a417b" datatype="html">
<source>Legacy</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit><trans-unit id="e1a07fb742a7b025b2a594d867a5805c37697f86" datatype="html">
<source>WISE on Facebook</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/home/home.component.html</context>
Expand All @@ -120,7 +114,7 @@
<source>WISE on Twitter</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/home/home.component.html</context>
Expand All @@ -130,7 +124,7 @@
<source>WISE on Github</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">39</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">app/home/home.component.html</context>
Expand All @@ -140,43 +134,43 @@
<source>Powered by the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>TELS Research Community<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> and <x id="START_LINK_1" ctype="x-a" equiv-text="&lt;a&gt;"/>WISE Open Source Technology<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. Help us <x id="START_LINK_2" ctype="x-a" equiv-text="&lt;a&gt;"/>translate<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> WISE!</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">53</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit><trans-unit id="3e1904c6c60cfbdcfde26154fe8ed09b5ce0f9f4" datatype="html">
<source>This material is based upon work supported by the National Science Foundation. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">54</context>
<context context-type="linenumber">53</context>
</context-group>
</trans-unit><trans-unit id="0dc5b912bfe8d326a1af3975c6a7d049521eae12" datatype="html">
<source>National Science Foundation</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">62</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit><trans-unit id="eb6ec6c4564dfbd4ffc8020d00aa0c48400f629b" datatype="html">
<source>UC Berkeley</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">65</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit><trans-unit id="8f885baf51f23ab4c81a547cd984d9355bea0239" datatype="html">
<source>Concord Consortium</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit><trans-unit id="f8a12f0f1530051d1bc70b7df85a11832436cf00" datatype="html">
<source>SAIL (Scalable Architecture for Interactive Learning)</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">70</context>
<context context-type="linenumber">69</context>
</context-group>
</trans-unit><trans-unit id="ffac91e3ed3d3f9238f218aaa135735f55daec60" datatype="html">
<source>©1996-<x id="INTERPOLATION" equiv-text="{{time | amDateFormat:&apos;YYYY&apos;}}"/>, <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>UC Berkeley<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> | Web-based Inquiry Science Environment</source>
<context-group purpose="location">
<context context-type="sourcefile">app/modules/footer/footer.component.html</context>
<context context-type="linenumber">75</context>
<context context-type="linenumber">74</context>
</context-group>
</trans-unit><trans-unit id="470b3fb4b02529d4f9f25850711632271fd27508" datatype="html">
<source>WISE header logo</source>
Expand Down
2 changes: 0 additions & 2 deletions src/main/webapp/wise5/classroomMonitor/classroomMonitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ import '../components/multipleChoice/multipleChoiceComponentModule';
import NodeService from '../services/nodeService';
import '../themes/default/notebook/notebookComponents';
import NotebookGradingController from './notebook/notebookGradingController';
import NotebookItemGrading from './notebook/notebookItemGrading/notebookItemGrading';
import NotebookService from '../services/notebookService';
import NotificationService from '../services/notificationService';
import '../components/openResponse/openResponseComponentModule';
Expand Down Expand Up @@ -143,7 +142,6 @@ const classroomMonitorModule = angular
.controller('NotebookGradingController', NotebookGradingController)
.controller('StudentGradingController', StudentGradingController)
.controller('StudentProgressController', StudentProgressController)
.component('notebookItemGrading', NotebookItemGrading)
.config([
'$urlRouterProvider',
'$stateProvider',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ import './classroomMonitorComponents/nodeProgress/nodeProgress';
import './classroomMonitorComponents/studentGrading/studentGrading';
import './classroomMonitorComponents/studentProgress/studentProgress';
import './classroomMonitorComponents/shared/shared';
import './classroomMonitorComponents/notebook/notebook';
import * as angular from 'angular';

const ClassroomMonitorComponents = angular.module('classroomMonitor.components', [
'milestones',
'nodeGrading',
'nodeProgress',
'notebook',
'studentGrading',
'studentProgress',
'shared'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,87 +1,99 @@
<div class="l-constrained grading">
<div ng-if="!$ctrl.componentId"
class="flex md-subhead content-head"
layout="row"
layout-align="center center"
layout-align-gt-sm="start center"
layout-wrap>
<div layout="row" layout-align="center center" layout-wrap flex-xs="100" flex-sm="100">
<div class="accent-2" layout="row" layout-align="center center">
<h2 class="content-head__item">{{$ctrl.getNodeCompletion($ctrl.nodeId)}}%<span class="md-subhead" translate="completion"></span></h2>
<h2 class="content-head__item" ng-if="$ctrl.nodeHasWork">{{$ctrl.getNodeAverageScore()}}<span class="md-subhead" translate="meanScore"></span></h2>
</div>
</div>
<span flex></span>
<div class="content-head__more" layout="row" layout-align="center center">
<component-select node-id="{{ ::$ctrl.nodeId }}"
custom-class="'md-no-underline md-button'"
on-change="$ctrl.onUpdateHiddenComponents(value)"></component-select>
<md-button ng-if="$ctrl.milestoneReport"
ng-click="$ctrl.showReport($event)"
class="md-raised info">
<md-icon class="info"> flag </md-icon>
<span>{{ ::'REPORT' | translate }}</span>
</md-button>
<md-button ng-click="$ctrl.showRubric($event)"
class="md-raised info">
<md-icon class="info"> info_outline </md-icon>
<span ng-if="!$ctrl.numRubrics">{{ ::'STEP_INFO' | translate }}</span>
<span ng-if="$ctrl.numRubrics">{{ ::'infoTipsLabel' | translate:{numberOfTips: $ctrl.numRubrics} }}</span>
</md-button>
</div>
<div ng-if="!$ctrl.componentId" class="flex md-subhead content-head" layout="row"
layout-align="center center" layout-align-gt-sm="start center" layout-wrap>
<div layout="row" layout-align="center center" layout-wrap flex-xs="100" flex-sm="100">
<div class="accent-2" layout="row" layout-align="center center">
<h2 class="content-head__item">
{{$ctrl.getNodeCompletion($ctrl.nodeId)}}%<span class="md-subhead" translate="completion"></span>
</h2>
<h2 class="content-head__item" ng-if="$ctrl.nodeHasWork">
{{$ctrl.getNodeAverageScore()}}<span class="md-subhead" translate="meanScore"></span>
</h2>
</div>
</div>
<md-list class="user-list">
<md-list-item class="md-whiteframe-1dp md-with-secondary list-item list-item--actions" layout-wrap>
<div flex-xs="100" flex-sm="100">
<workgroup-select by-student="true"
custom-class="'autocomplete--flat autocomplete--minwidth'"
use-autocomplete="true"></workgroup-select>
</div>
<span flex hide-xs hide-sm></span>
<div class="md-secondary-container" ng-if="$ctrl.nodeHasWork"
flex-xs="100" flex-sm="100" layout-column layout-align="center center">
<md-button aria-label="{{ ::'expandAllLabel' | translate }}"
class="button--small md-primary"
ng-click="$ctrl.expandAll()">{{ ::'expandAll' | translate }}</md-button>
<md-button aria-label="{{ ::'collapseAllLabel' | translate }}"
class="button--small md-primary"
ng-click="$ctrl.collapseAll()">{{ ::'collapseAll' | translate }}</md-button>
</div>
<div ng-if="!$ctrl.nodeHasWork" class="center md-padding" flex-xs="100" flex-sm="100">
<span class="text-secondary md-caption" translate="stepNoCaptureWork"></span>
</div>
</md-list-item>
<md-list-item class="table--list__thead table--list__thead__th md-whiteframe-1dp">
<div class="md-list-item-text table--list__thead__tr" layout="row" flex>
<md-button class="table--list__thead__link" flex layout="row" layout-align="start center"
ng-click="$ctrl.setSort('team')" aria-label="{{::'sortByTeam' | translate}}">
<span translate="team"></span>
<md-icon ng-if="$ctrl.sort === 'team' || $ctrl.sort === '-team'" class="text-light table--list__thead__sort" ng-class="{'table--list__thead__sort--reverse': $ctrl.sort === '-team'}"> arrow_drop_up </md-icon>
</md-button>
<md-button class="table--list__thead__link" flex="{{$ctrl.nodeHasWork ? 30 : 20}}" layout="row" layout-align="center center"
ng-click="$ctrl.setSort('status')" aria-label="{{::'sortByCompletion' | translate}}">
<span translate="status"></span>
<md-icon ng-if="$ctrl.sort === 'status' || $ctrl.sort === '-status'" class="text-light table--list__thead__sort" ng-class="{'table--list__thead__sort--reverse': $ctrl.sort === '-status'}"> arrow_drop_up </md-icon>
</md-button>
<!--<div flex="20" layout="row" layout-align="center center">Time Spent</div>-->
<md-button class="table--list__thead__link" ng-if="$ctrl.nodeHasWork" flex="20" layout="row" layout-align="center center"
ng-click="$ctrl.setSort('score')" aria-label="{{::'sortByScore' | translate}}">
<span translate="score"></span>
<md-icon ng-if="$ctrl.sort === 'score' || $ctrl.sort === '-score'" class="text-light table--list__thead__sort" ng-class="{'table--list__thead__sort--reverse': $ctrl.sort === '-score'}"> arrow_drop_up </md-icon>
</md-button>
</div>
</md-list-item>
<workgroup-item ng-repeat="workgroup in $ctrl.workgroupsById | toArray | orderBy:$ctrl.getOrderBy()"
ng-if="$ctrl.isWorkgroupShown(workgroup.$key)"
expand="$ctrl.workVisibilityById[workgroup.$key]"
max-score="$ctrl.maxScore"
show-score="$ctrl.nodeHasWork"
node-id="$ctrl.nodeId"
component-id="$ctrl.componentId"
workgroup-id="workgroup.$key"
workgroup-data="workgroup"
hidden-components="$ctrl.hiddenComponents"
on-update-expand="$ctrl.onUpdateExpand(workgroupId, value)"
in-view="$ctrl.workgroupInView(workgroup.$key, $inview)"></workgroup-item>
</md-list>
</div>
<span flex></span>
<div class="content-head__more" layout="row" layout-align="center center">
<component-select node-id="{{ ::$ctrl.nodeId }}" custom-class="'md-no-underline md-button'"
on-change="$ctrl.onUpdateHiddenComponents(value)"></component-select>
<md-button ng-if="$ctrl.milestoneReport" ng-click="$ctrl.showReport($event)"
class="md-raised info">
<md-icon class="info"> flag </md-icon>
<span>{{ ::'REPORT' | translate }}</span>
</md-button>
<md-button ng-click="$ctrl.showRubric($event)" class="md-raised info">
<md-icon class="info"> info_outline </md-icon>
<span ng-if="!$ctrl.numRubrics">{{ ::'STEP_INFO' | translate }}</span>
<span ng-if="$ctrl.numRubrics">
{{ ::'infoTipsLabel' | translate:{numberOfTips: $ctrl.numRubrics} }}
</span>
</md-button>
</div>
</div>
<md-list class="user-list">
<md-list-item class="md-whiteframe-1dp md-with-secondary list-item list-item--actions"
layout-wrap>
<div flex-xs="100" flex-sm="100">
<workgroup-select by-student="true"
custom-class="'autocomplete--flat autocomplete--minwidth'"
use-autocomplete="true"></workgroup-select>
</div>
<span flex hide-xs hide-sm></span>
<div class="md-secondary-container" ng-if="$ctrl.nodeHasWork" flex-xs="100" flex-sm="100"
layout-column layout-align="center center">
<md-button aria-label="{{ ::'expandAllLabel' | translate }}"
class="button--small md-primary" ng-click="$ctrl.expandAll()">
{{ ::'expandAll' | translate }}
</md-button>
<md-button aria-label="{{ ::'collapseAllLabel' | translate }}"
class="button--small md-primary" ng-click="$ctrl.collapseAll()">
{{ ::'collapseAll' | translate }}
</md-button>
</div>
<div ng-if="!$ctrl.nodeHasWork" class="center md-padding" flex-xs="100" flex-sm="100">
<span class="text-secondary md-caption" translate="stepNoCaptureWork"></span>
</div>
</md-list-item>
<md-list-item class="table--list__thead table--list__thead__th md-whiteframe-1dp">
<div class="md-list-item-text table--list__thead__tr" layout="row" flex>
<md-button class="table--list__thead__link" flex layout="row" layout-align="start center"
ng-click="$ctrl.setSort('team')" aria-label="{{::'sortByTeam' | translate}}">
<span translate="team"></span>
<md-icon ng-if="$ctrl.sort === 'team' || $ctrl.sort === '-team'"
class="text-light table--list__thead__sort" md-theme="default"
ng-class="{'table--list__thead__sort--reverse': $ctrl.sort === '-team'}">
arrow_drop_up
</md-icon>
</md-button>
<md-button class="table--list__thead__link" flex="{{$ctrl.nodeHasWork ? 30 : 20}}"
layout="row" layout-align="center center" ng-click="$ctrl.setSort('status')"
aria-label="{{::'sortByCompletion' | translate}}">
<span translate="status"></span>
<md-icon ng-if="$ctrl.sort === 'status' || $ctrl.sort === '-status'"
class="text-light table--list__thead__sort" md-theme="default"
ng-class="{'table--list__thead__sort--reverse': $ctrl.sort === '-status'}">
arrow_drop_up
</md-icon>
</md-button>
<!--<div flex="20" layout="row" layout-align="center center">Time Spent</div>-->
<md-button class="table--list__thead__link" ng-if="$ctrl.nodeHasWork" flex="20" layout="row"
layout-align="center center" ng-click="$ctrl.setSort('score')"
aria-label="{{::'sortByScore' | translate}}">
<span translate="score"></span>
<md-icon ng-if="$ctrl.sort === 'score' || $ctrl.sort === '-score'"
class="text-light table--list__thead__sort" md-theme="default"
ng-class="{'table--list__thead__sort--reverse': $ctrl.sort === '-score'}">
arrow_drop_up
</md-icon>
</md-button>
</div>
</md-list-item>
<workgroup-item ng-repeat="workgroup in $ctrl.workgroupsById | toArray | orderBy:$ctrl.getOrderBy()"
ng-if="$ctrl.isWorkgroupShown(workgroup)"
expand="$ctrl.workVisibilityById[workgroup.$key]" max-score="$ctrl.maxScore"
show-score="$ctrl.nodeHasWork" node-id="$ctrl.nodeId"
component-id="$ctrl.componentId" workgroup-id="workgroup.$key"
workgroup-data="workgroup" hidden-components="$ctrl.hiddenComponents"
on-update-expand="$ctrl.onUpdateExpand(workgroupId, value)"
in-view="$ctrl.workgroupInView(workgroup.$key, $inview)"></workgroup-item>
</md-list>
</div>
Loading

0 comments on commit ee850b0

Please sign in to comment.