-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTranslation.html
More file actions
156 lines (133 loc) · 50.7 KB
/
Translation.html
File metadata and controls
156 lines (133 loc) · 50.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<!DOCTYPE html>
<html data-ng-app="udacity.grading" data-enforce-browser="" class="ng-scope" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style><style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}</style><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>
<!--[if lte IE 9]>
<script type="text/javascript">
window.location = 'https://www.udacity.com/upgrade';
</script>
<![endif]-->
<title>Udacity Reviews</title>
<meta charset="UTF-8">
<link rel="shortcut icon" href="https://review.udacity.com/assets/images/favicon.ico">
<meta name="description" content="Discover online classes taught by top instructors and industry experts. Take courses at your own pace.">
<meta name="robots" content="noodp">
<!--
These properties are here so social shares of review pages works
properly. We decided to let them apply to every page on the site
because we only expect people to share the review pages.
Guidelines obtained from https://moz.com/blog/meta-data-templates-123
-->
<!-- facebook -->
<meta property="og:title" content="Look at my Udacity Project Feedback!">
<meta property="og:description" content="A review of my work and personalized tips to improve.">
<meta property="og:image" content="https://s3-us-west-1.amazonaws.com/udacity-content/images/reviews/facebook-thumbnail-neutral.png ">
<!-- twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@udacity">
<meta name="twitter:title" content="Udacity Project Feedback">
<meta name="twitter:description" content="A review of my work and personalized tips to improve.">
<!-- "Twitter Summary card images must be at least 120x120px" -->
<meta name="twitter:image" content="https://s3-us-west-1.amazonaws.com/udacity-content/images/reviews/twitter-thumbnail-neutral.png ">
<meta name="application-name" content="Udacity">
<meta name="msapplication-TileColor" content="#FFFFFF">
<meta name="msapplication-TileImage" content="assets/img/logos/udacity/windows_tile/udacity-full-144x144.png">
<meta name="google-site-verification" content="ELX2btu3VElBKIdvkGj5ESBnJh_Dg9PnWjuCwVkPEkA">
<meta http-equiv="X-UA-Compatible" content="requiresActiveX=true">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" href="https://review.udacity.com/assets/images/apple-touch-icon.png">
<link type="text/plain" rel="author" href="http://udacity.com/humans.txt">
<link href="Translation_files/css_002.css" rel="stylesheet" type="text/css">
<link href="Translation_files/css.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="Translation_files/udacity-base.css" type="text/css">
<!-- ngIf: googleBranded -->
<!-- inject:css -->
<link rel="stylesheet" href="Translation_files/grading_29bb7e1c.css">
<!-- endinject -->
<style>
@font-face {
font-family: 'Glyphicons Halflings';
src: url('/assets/fonts/glyphicons/glyphicons-halflings-regular.eot');
src: url('/assets/fonts/glyphicons/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/glyphicons/glyphicons-halflings-regular.woff2') format('woff2'), url('/assets/fonts/glyphicons/glyphicons-halflings-regular.woff') format('woff'), url('/assets/fonts/glyphicons/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/fonts/glyphicons/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
</style>
<script src="Translation_files/airbrake.js" async=""></script><script src="Translation_files/airbrake.js" async=""></script><script type="text/javascript" async="" src="Translation_files/amplitude-3.js"></script><script type="text/javascript" async="" src="Translation_files/analytics.js"></script><script type="text/javascript">
var segment_write_key = "toT8LUD8hh9KKz18k1i8l8AnAJlF27VY"; // production key for segment
</script>
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.1.0";
analytics.load(segment_write_key);
}}();
</script>
</head>
<body data-modal-anti-scroll-helper="" class="responsive ng-class:{'google-certs': googleBranded} ng-scope" ng-controller="MainCtrl as main">
<!-- ngInclude: main.pageContext.headerURL --><div ng-include="main.pageContext.headerURL" class="ng-scope"><header class="navbar site-nav navbar-inverse navbar-static-top ng-scope" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse"> <span class="sr-only ng-scope" translate="">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="logo navbar-brand" href="https://udacity.com/" id="header-logo"> <img alt="Udacity Logo" src="Translation_files/logo.svg"> </a> </div> <nav class="navbar-collapse collapse text-center-xs" id="navbar-collapse" role="navigation"> <ul class="nav navbar-nav navbar-right"> <!-- ngIf: isGrader() --> <!-- ngIf: isGrader() --> <li> <a data-ng-click="main.logout()" href="" translate="" class="ng-scope">Logout</a> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <ul class="dropdown-menu"> <a data-ng-click="main.logout()" href="" translate="" class="ng-scope">Logout</a> </ul> </li> </ul> </nav> </div> </header> </div>
<div id="page-content" data-qualaroo-survey-info-hack="">
<div loading-container="" class="container-fluid"><div ng-show="loading" class="row ng-hide" style=""> <div class="col-sm-6 col-sm-offset-3 text-center"> <div class="row row-gap-huge"></div> <img src="Translation_files/loading.gif"> <div class="row row-gap-huge"></div> </div> </div> <div ng-show="!loading" class="" style=""> <div ng-transclude="">
<div class="row row-gap-medium ng-scope ng-isolate-scope ng-hide fadeOutUp animated" ng-show="!!message && !dismissed" ng-class="{fadeInDown: !!message, fadeOutUp: dismissed, animated: !!message || dismissed}" alert-box="" style=""> <div class="col-md-offset-2 col-md-8"> <div class="alert hr-slim alert-info"> <button type="button" ng-click="dismiss()" class="close" aria-label="Close"> <span aria-hidden="true">×</span> </button> <span ng-bind-html="message" class="ng-binding"></span> </div> </div> </div>
<!-- uiView: --><div ui-view="" autoscroll="true" class="ng-scope"><div class="row ng-scope"> <div class="col-xs-12 col-lg-10 col-lg-offset-1"> <!-- ngIf: submission.previous_submission_id --> <div class="review-header"> <div class="project-label text-uppercase text-center ng-scope" translate="">Project</div> <div class="project-name text-center ng-binding">Translation From One Language to Another Language</div> <!-- ngIf: currentProject.nanodegree_title --><div class="nanodegree-link text-center ng-binding ng-scope" ng-if="currentProject.nanodegree_title" style=""> A part of the Deep Learning Nanodegree Foundation Program </div><!-- end ngIf: currentProject.nanodegree_title --> </div> <div class="row row-gap-medium"></div> <div class="review-container"> <ul class="nav nav-tabs nav-justified ng-hide" ng-show="isUngradeable()"> <li ng-class="{'active': isCurrentTab('feedback')}" class="" style=""> <a href="" ng-click="showTab('feedback')" class="ng-binding">Project Review</a> </li> <li ng-class="{'active': isCurrentTab('notes')}"> <a href="" ng-click="showTab('notes')" class="ng-binding">Notes</a> </li> </ul> <ul class="nav nav-tabs nav-justified" ng-hide="isUngradeable()"> <!-- ngIf: hasFeedback --><li ng-if="hasFeedback" ng-class="{'active': isCurrentTab('feedback')}" class="ng-scope" style=""> <a href="" ng-click="showTab('feedback')" class="ng-binding">Project Review</a> </li><!-- end ngIf: hasFeedback --> <!-- ngIf: showCode --><li ng-if="showCode" ng-class="{'active': isCurrentTab('code')}" class="ng-scope active" style=""> <a href="" ng-click="showTab('code')" class="ng-binding"> Code Review <!-- ngIf: commentsCount > 0 --> </a> </li><!-- end ngIf: showCode --> <!-- ngIf: annotation_link --> <li ng-class="{'active': isCurrentTab('notes')}"> <a href="" ng-click="showTab('notes')" class="ng-binding">Notes</a> </li> <!-- ngIf: userCanCreateAudits() && !auditTabState.visible --> <!-- ngIf: auditTabState.visible --> </ul> <div class="row review-tab-body"> <div class="col-sm-10 col-sm-offset-1"> <div ng-show="isUngradeable()" class="ng-hide"> <div class="row row-gap-medium"></div> <section ng-show="isCurrentTab('feedback')" class="ng-hide" style=""> <div class="ungradeable-tab"> <h3 class="result-label ng-scope" translate="">Unable to review</h3> <p class="ungradeable-info ng-scope" translate="">Your project could not be reviewed. Please resubmit after you address the issue noted by the reviewer.</p> <p class="result-reason ng-isolate-scope" marked="submission.result_reason"></p> <div class="row row-gap-small"></div> <!-- ngIf: isResubmittable() --> <!-- ngIf: submission.archive_url --><div ng-if="submission.archive_url" class="row row-gap-small ng-scope"> <div class="col-xs-12 text-center wide-and-bold"> <a href="https://udacity-reviews-uploads.s3.amazonaws.com/_submissions/zipfile/802200/language-translation.zip" download="" class="ng-binding"><img src="Translation_files/download-icon.svg" class="img-initial icon-medium">Download project files</a> </div> </div><!-- end ngIf: submission.archive_url --> <!-- ngIf: submission.url --> <div class="row row-gap-small"> </div> </div> </section> <section ng-show="isCurrentTab('notes')" class="ng-hide"> <!-- ngIf: pastReviews !== undefined --><div reviews-list="" ng-if="pastReviews !== undefined" reviews="pastReviews" this-review="submission" class="ng-scope ng-isolate-scope"><h2 class="review-list-name current-review-name h-slim"> <!-- ngIf: thisReview.status !== 'canceled' --><span ng-if="thisReview.status !== 'canceled'" class="ng-binding ng-scope" style=""> Review #1 </span><!-- end ngIf: thisReview.status !== 'canceled' --> <!-- ngIf: thisReview.status === 'canceled' --> <span class="ng-binding"> (this review)</span> </h2> <!-- ngIf: thisReview.completed_at --><small class="text-muted ng-scope" ng-if="thisReview.completed_at" style=""> <!-- ngIf: thisReview.status !== 'canceled' --><span ng-if="thisReview.status !== 'canceled'" translate="" class="ng-scope">Reviewed</span><!-- end ngIf: thisReview.status !== 'canceled' --> <!-- ngIf: thisReview.status === 'canceled' --> <span> <span am-time-ago="thisReview.completed_at">1 week ago</span></span> </small><!-- end ngIf: thisReview.completed_at --> <!-- ngIf: !thisReview.completed_at --> <div class="text-uppercase submission-notes-header ng-scope" translate="">student notes</div> <div class="submission-notes ng-isolate-scope" marked="thisReview.notes || '_None provided_'"><p>Please review. Thanks</p>
</div> <!-- ngIf: filteredReviews.length > 1 --> <!-- ngRepeat: review in filteredReviews --><!-- ngIf: filteredReviews.length > 1 --><!-- end ngRepeat: review in filteredReviews --> <div class="row row-gap-large"></div> </div><!-- end ngIf: pastReviews !== undefined --> </section> </div> <div ng-hide="isUngradeable()" class=""> <div class="row row-gap-medium"></div> <section ng-show="isCurrentTab('notes')" class="ng-hide"> <!-- ngIf: pastReviews !== undefined --><div reviews-list="" ng-if="pastReviews !== undefined" reviews="pastReviews" this-review="submission" class="ng-scope ng-isolate-scope"><h2 class="review-list-name current-review-name h-slim"> <!-- ngIf: thisReview.status !== 'canceled' --><span ng-if="thisReview.status !== 'canceled'" class="ng-binding ng-scope" style=""> Review #1 </span><!-- end ngIf: thisReview.status !== 'canceled' --> <!-- ngIf: thisReview.status === 'canceled' --> <span class="ng-binding"> (this review)</span> </h2> <!-- ngIf: thisReview.completed_at --><small class="text-muted ng-scope" ng-if="thisReview.completed_at" style=""> <!-- ngIf: thisReview.status !== 'canceled' --><span ng-if="thisReview.status !== 'canceled'" translate="" class="ng-scope">Reviewed</span><!-- end ngIf: thisReview.status !== 'canceled' --> <!-- ngIf: thisReview.status === 'canceled' --> <span> <span am-time-ago="thisReview.completed_at">1 week ago</span></span> </small><!-- end ngIf: thisReview.completed_at --> <!-- ngIf: !thisReview.completed_at --> <div class="text-uppercase submission-notes-header ng-scope" translate="">student notes</div> <div class="submission-notes ng-isolate-scope" marked="thisReview.notes || '_None provided_'"><p>Please review. Thanks</p>
</div> <!-- ngIf: filteredReviews.length > 1 --> <!-- ngRepeat: review in filteredReviews --><!-- ngIf: filteredReviews.length > 1 --><!-- end ngRepeat: review in filteredReviews --> <div class="row row-gap-large"></div> </div><!-- end ngIf: pastReviews !== undefined --> </section> <section class="code-section" ng-show="isCurrentTab('code')" style=""> <!-- ngIf: files && currentRubric --><div code-review="" ng-if="files && currentRubric" files="files" rubric="currentRubric" allow-comments="false" class="ng-scope ng-isolate-scope"><div ng-show="allowComments" class="ng-hide" style=""> <input class="form-control ng-pristine ng-untouched ng-valid ng-empty" ng-model="filterPattern" placeholder="File filter (e.g. "readme.md", ".css", "src/lib/*.js")" style="" type="text"> <div class="row row-gap-small"></div> </div> <!-- ngRepeat: file in files --><div class="code-section-item ng-scope" ng-repeat="file in files" ng-show="isFileVisible(file)" style=""> <div class="code-section-item-title" ng-click="setCurrentFileIndex($index)"> <small> <span ng-class="{'glyphicon-triangle-right': currentFileIndex !== $index, 'glyphicon-triangle-bottom': currentFileIndex === $index}" class="glyphicon glyphicon-triangle-right"> </span> </small> <strong class="ng-binding">report.html</strong> <!-- ngIf: file.comments_count > 0 --> </div> <!-- ngIf: currentFileIndex === $index --> </div><!-- end ngRepeat: file in files --><div class="code-section-item ng-scope" ng-repeat="file in files" ng-show="isFileVisible(file)"> <div class="code-section-item-title" ng-click="setCurrentFileIndex($index)"> <small> <span ng-class="{'glyphicon-triangle-right': currentFileIndex !== $index, 'glyphicon-triangle-bottom': currentFileIndex === $index}" class="glyphicon glyphicon-triangle-right"> </span> </small> <strong class="ng-binding">problem_unittests.py</strong> <!-- ngIf: file.comments_count > 0 --> </div> <!-- ngIf: currentFileIndex === $index --> </div><!-- end ngRepeat: file in files --><div class="code-section-item ng-scope" ng-repeat="file in files" ng-show="isFileVisible(file)"> <div class="code-section-item-title" ng-click="setCurrentFileIndex($index)"> <small> <span ng-class="{'glyphicon-triangle-right': currentFileIndex !== $index, 'glyphicon-triangle-bottom': currentFileIndex === $index}" class="glyphicon glyphicon-triangle-right"> </span> </small> <strong class="ng-binding">helper.py</strong> <!-- ngIf: file.comments_count > 0 --> </div> <!-- ngIf: currentFileIndex === $index --> </div><!-- end ngRepeat: file in files --> </div><!-- end ngIf: files && currentRubric --> <div class="row row-gap-medium"></div> </section> <section ng-show="isCurrentTab('annotation')" class="ng-hide"> <div class="row row-gap-large"> <div class="col-xs-12 annotation-text ng-scope" translate="">Your reviewer has provided annotations for your project</div> </div> <div class="row row-gap-medium"> <div class="col-xs-12"> <a class="btn btn-primary btn-sm ng-binding" href="" download="" _target="_blank">Download annotations</a> </div> </div> <div class="row row-gap-huge"></div> </section> <!-- ngIf: critiquesAccessor --><section ng-if="critiquesAccessor" ng-show="isCurrentTab('feedback')" class="ng-scope ng-hide" style=""> <!-- ngIf: isSubmissionByCurrentUser() --><div social-share="" ng-if="isSubmissionByCurrentUser()" user-type="'student'" button-hashtag="hashtag" url="getShareableUrl()" prompt="'Share your accomplishment'" text="'Just received helpful feedback on my project from a @Udacity reviewer!'" class="ng-scope ng-isolate-scope"><div class="share-table hidden-xs"> <div class="share-prompt ng-binding"> Share your accomplishment </div> <div class="pull-right"> <a ng-click="showTwitterPopup()" class="btn btn-xs"> <img src="Translation_files/twitter.svg"> </a> <a ng-click="showFacebookPopup()" class="btn btn-xs"> <img src="Translation_files/facebook.svg"> </a> </div> </div> <div class="btn-block share-table visible-xs ng-binding"> Share your accomplishment! <a href="" ng-click="showTwitterPopup()"><img src="Translation_files/twitter.svg"></a> <a href="" ng-click="showFacebookPopup()"><img src="Translation_files/facebook.svg"></a> </div> </div><!-- end ngIf: isSubmissionByCurrentUser() --> <!-- ngIf: isSubmissionGradedByCurrentUser() --> <!-- ngIf: hasFeedback && submission.result --><div ng-if="hasFeedback && submission.result" class="ng-scope"> <h3 class="result-label h-slim-top ng-binding"> Meets Specifications </h3> <!-- ngIf: doesNotMeetCount > 0 --> </div><!-- end ngIf: hasFeedback && submission.result --> <!-- ngIf: submission.general_comment --><div ng-if="submission.general_comment" class="row row-gap-medium ng-scope"> <div class="col-xs-12 ng-isolate-scope" marked="submission.general_comment"><p>Excellent job! Congratulations on passing this project 🎉. </p>
<p>Keep it up! Good luck with the final project “Face Generation”.</p>
</div> </div><!-- end ngIf: submission.general_comment --> <div critiques-editor="" critiques-accessor="critiquesAccessor" editable="false" class="ng-isolate-scope"><!-- ngRepeat: section in critiquesAccessor.getSections() --><div ng-repeat="section in critiquesAccessor.getSections()" class="ng-scope"> <div section-critiques="" section="section" critiques="critiquesAccessor.getCritiques(section.id)" editable="editable" failed-required-placeholder="failedRequiredPlaceholder" passed-required-placeholder="passedRequiredPlaceholder" optional-placeholder="optionalPlaceholder" state="sectionCritiquesState[section.id]" class="ng-isolate-scope"><div> <div class="row row-gap-small"></div> <h3 class="section-name ng-binding"> Required Files and Tests </h3> <div> <!-- ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The project submission contains the project notebook, called “dlnd_language_translation.ipynb”.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>All the unit tests in project have passed.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>All the code ran and passed all the unit tests. Great job! <img src="Translation_files/clap.png" alt=":clap:" title=":clap:" class="emoji"></p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --> </div> </div> </div> </div><!-- end ngRepeat: section in critiquesAccessor.getSections() --><div ng-repeat="section in critiquesAccessor.getSections()" class="ng-scope"> <div section-critiques="" section="section" critiques="critiquesAccessor.getCritiques(section.id)" editable="editable" failed-required-placeholder="failedRequiredPlaceholder" passed-required-placeholder="passedRequiredPlaceholder" optional-placeholder="optionalPlaceholder" state="sectionCritiquesState[section.id]" class="ng-isolate-scope"><div> <div class="row row-gap-small"></div> <h3 class="section-name ng-binding"> Preprocessing </h3> <div> <!-- ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>text_to_ids</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>The function text_to_ids is implemented correctly.</p>
<p>Excellent job using list comprehension.</p>
<p><strong>Suggestion:</strong></p>
<p>Please consider printing out few examples only to make the report more concise. When we run the test as <code>tests.test_text_to_ids(text_to_ids)</code> there are just few examples but when we process the whole data as <code>helper.preprocess_and_save_data(source_path, target_path, text_to_ids)</code> the output is really long.</p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --> </div> </div> </div> </div><!-- end ngRepeat: section in critiquesAccessor.getSections() --><div ng-repeat="section in critiquesAccessor.getSections()" class="ng-scope"> <div section-critiques="" section="section" critiques="critiquesAccessor.getCritiques(section.id)" editable="editable" failed-required-placeholder="failedRequiredPlaceholder" passed-required-placeholder="passedRequiredPlaceholder" optional-placeholder="optionalPlaceholder" state="sectionCritiquesState[section.id]" class="ng-isolate-scope"><div> <div class="row row-gap-small"></div> <h3 class="section-name ng-binding"> Neural Network </h3> <div> <!-- ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>model_inputs</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>process_decoding_input</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>Good work removing the last word id in target_data and concatenated the GO id to the beginning of each batch.</p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>encoding_layer</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>The function encoding_layer is implemented correctly.</p>
<p>Nice work adding a dropout layer on the outputs of the encoder. It is a simple way to prevent the network from overfitting.</p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>decoding_layer_train</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>decoding_layer_infer</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>decoding_layer</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>The function decoding_layer is implemented correctly.</p>
<p>Nicely done reusing the variables between the training and inference.</p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>seq2seq_model</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --> </div> </div> </div> </div><!-- end ngRepeat: section in critiquesAccessor.getSections() --><div ng-repeat="section in critiquesAccessor.getSections()" class="ng-scope"> <div section-critiques="" section="section" critiques="critiquesAccessor.getCritiques(section.id)" editable="editable" failed-required-placeholder="failedRequiredPlaceholder" passed-required-placeholder="passedRequiredPlaceholder" optional-placeholder="optionalPlaceholder" state="sectionCritiquesState[section.id]" class="ng-isolate-scope"><div> <div class="row row-gap-small"></div> <h3 class="section-name ng-binding"> Neural Network Training </h3> <div> <!-- ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The parameters are set to reasonable numbers.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>Very good choices! The parameters are set to reasonable numbers.</p>
<p><strong>Suggestion:</strong><br><code>Roughly the number of unique words: 227</code> so <code>embedding_size</code>so <code>embedding_size</code> should not be higher than that.</p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The project should end with a validation and test accuracy that is at least 90.00%</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>Excellent! The accuracy is very high <code>Validation Accuracy: 0.9804</code></p>
</div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --> </div> </div> </div> </div><!-- end ngRepeat: section in critiquesAccessor.getSections() --><div ng-repeat="section in critiquesAccessor.getSections()" class="ng-scope"> <div section-critiques="" section="section" critiques="critiquesAccessor.getCritiques(section.id)" editable="editable" failed-required-placeholder="failedRequiredPlaceholder" passed-required-placeholder="passedRequiredPlaceholder" optional-placeholder="optionalPlaceholder" state="sectionCritiquesState[section.id]" class="ng-isolate-scope"><div> <div class="row row-gap-small"></div> <h3 class="section-name ng-binding"> Language Translation </h3> <div> <!-- ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The function <code>sentence_to_seq</code> is implemented correctly.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --><div ng-repeat="critique in critiques" class="ng-scope"> <div row="" row-gap-small="" col-xs-12="" bg-white"="" scroll-if="isCurrentEditingCritique(critique.id)" class="ng-isolate-scope"> <!-- ngIf: isEditingCritique(critique.id) --> <!-- ngIf: !isEditingCritique(critique.id) --><div class="critique-container ng-scope ng-isolate-scope" critique-view="" critique="critique" editable="editable" edit-clicked="setEditingCritique(critique.id, true)" ng-if="!isEditingCritique(critique.id)"><div class="critique-view-header"> <div class="row result-label"> <div class="col-sm-1"> <div class="result-spacing"> <span class="result-icon passed text-center"></span> </div> </div> <div class="col-xs-12 col-sm-10 critique-description ng-isolate-scope" marked="rubricItem.passed_description"><p>The project gets majority of the translation correctly. The translation doesn’t have to be perfect.</p>
</div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: editable && critiqueLocked() --> </div> <!-- ngIf: !!critique.observation --><div ng-if="!!critique.observation" class="critique-view-body ng-scope"> <div class="row"> <div class="col-xs-12 col-sm-10 col-sm-offset-1"> <div class="p-slim ng-isolate-scope" marked="critique.observation"><p>Perfect translation!</p>
<pre><code><span class="hljs-tag">Input</span>
<span class="hljs-tag">Word</span> <span class="hljs-rule"><span class="hljs-attribute">Ids</span>:<span class="hljs-value"> [<span class="hljs-number">155</span>, <span class="hljs-number">135</span>, <span class="hljs-number">168</span>, <span class="hljs-number">78</span>, <span class="hljs-number">98</span>, <span class="hljs-number">154</span>, <span class="hljs-number">66</span>]
English Words: [<span class="hljs-string">'he'</span>, <span class="hljs-string">'saw'</span>, <span class="hljs-string">'a'</span>, <span class="hljs-string">'old'</span>, <span class="hljs-string">'yellow'</span>, <span class="hljs-string">'truck'</span>, <span class="hljs-string">'.'</span>]
Prediction
Word Ids: [<span class="hljs-number">86</span>, <span class="hljs-number">78</span>, <span class="hljs-number">233</span>, <span class="hljs-number">90</span>, <span class="hljs-number">335</span>, <span class="hljs-number">350</span>, <span class="hljs-number">40</span>, <span class="hljs-number">31</span>, <span class="hljs-number">1</span>]
French Words: il a vu un vieux camion jaune . <EOS></span></span>
</code></pre></div> </div> </div> </div><!-- end ngIf: !!critique.observation --> <!-- ngIf: editable && !critiqueLocked() --> </div><!-- end ngIf: !isEditingCritique(critique.id) --> </div> </div><!-- end ngRepeat: critique in critiques --> </div> </div> </div> </div><!-- end ngRepeat: section in critiquesAccessor.getSections() --> <div class="row"> <!-- ngIf: !editable && submission.general_comment --> </div> <div class="row"> <!-- ngIf: !(state && state.audit) --><ng-form ng-if="!(state && state.audit)" name="general-comment-form" class="ng-pristine ng-valid ng-scope"> <!-- ngIf: editable --> </ng-form><!-- end ngIf: !(state && state.audit) --> </div> <div class="row row-gap-small"></div> </div> <div class="row row-gap-small"></div> <!-- ngIf: isResubmittable() --> <div class="row row-gap-small"> <div class="col-xs-12 text-center"> <!-- ngIf: submission.archive_url --><a class="wide-and-bold ng-binding ng-scope" ng-if="submission.archive_url" href="https://udacity-reviews-uploads.s3.amazonaws.com/_submissions/zipfile/802200/language-translation.zip" download=""> <img src="Translation_files/download-icon.svg" class="icon-medium"> Download Project </a><!-- end ngIf: submission.archive_url --> </div> </div> <!-- ngIf: commentsCount > 0 --> <div class="row row-gap-medium"></div> </section><!-- end ngIf: critiquesAccessor --> <section ng-show="isCurrentTab('audit')" class="ng-hide"> <div audit-tab="" submission="submission" state="auditTabState" class="ng-isolate-scope"><!-- ngIf: auditCritiquesAccessor --> </div> </section> </div> </div> </div> </div> </div> </div> <div ng-show="isCurrentTab('feedback') || isUngradeable()" class="ng-scope ng-hide" style=""> <!-- ngIf: !hasViewedResubmissionVideo() && isResubmittable() --> </div> <!-- ngIf: hasViewedResubmissionVideo() && isResubmittable() || isSubmissionByCurrentUser() --><div ng-if="hasViewedResubmissionVideo() && isResubmittable() || isSubmissionByCurrentUser()" class="row row-gap-medium ng-scope"> <div class="col-md-10 col-md-offset-1 text-center"> <!-- ngIf: hasViewedResubmissionVideo() && isResubmittable() --> </div> </div><!-- end ngIf: hasViewedResubmissionVideo() && isResubmittable() || isSubmissionByCurrentUser() --> <div class="row row-gap-large ng-scope"></div> <!-- ngIf: isSubmissionByCurrentUser() && currentProject.nanodegree_key --><div ng-if="isSubmissionByCurrentUser() && currentProject.nanodegree_key" class="row row-gap-medium ng-scope" style=""> <div class="col-xs-12 text-center"> <a class="btn btn-secondary ng-binding" ng-click="goToPath()">Return to Path</a> </div> </div><!-- end ngIf: isSubmissionByCurrentUser() && currentProject.nanodegree_key --> <div class="visible-xs row row-gap-medium ng-scope"> <div class="col-xs-12"> <div ng-show="!isUngradeable() && showStudentFeedback" class="locked-feedback-footer ng-hide"> <div ng-switch="hoverValue"> <!-- ngSwitchWhen: 1 --> <!-- ngSwitchWhen: 2 --> <!-- ngSwitchWhen: 3 --> <!-- ngSwitchWhen: 4 --> <!-- ngSwitchWhen: 5 --> <!-- ngSwitchDefault: --><span ng-switch-default="" class="ng-binding ng-scope">Rate this review</span><!-- end ngSwitchWhen: --> </div> <div class="star-rating"> <span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0" aria-valuetext="" uib-rating="" state-on="'feedback-star-on'" state-off="'feedback-star-off'" on-leave="hoverValue = null" on-hover="hoverValue = value" ng-model="studentFeedback.rating" class="ng-isolate-scope ng-not-empty ng-valid">
<!-- ngRepeat: r in range track by $index --><span ng-repeat-start="r in range track by $index" class="sr-only ng-binding ng-scope">( )</span>
<i ng-repeat-end="" ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon ng-scope feedback-star-off" ng-class="$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')" ng-attr-title="{{r.title}}" title="one"></i><!-- end ngRepeat: r in range track by $index --><span ng-repeat-start="r in range track by $index" class="sr-only ng-binding ng-scope">( )</span>
<i ng-repeat-end="" ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon ng-scope feedback-star-off" ng-class="$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')" ng-attr-title="{{r.title}}" title="two"></i><!-- end ngRepeat: r in range track by $index --><span ng-repeat-start="r in range track by $index" class="sr-only ng-binding ng-scope">( )</span>
<i ng-repeat-end="" ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon ng-scope feedback-star-off" ng-class="$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')" ng-attr-title="{{r.title}}" title="three"></i><!-- end ngRepeat: r in range track by $index --><span ng-repeat-start="r in range track by $index" class="sr-only ng-binding ng-scope">( )</span>
<i ng-repeat-end="" ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon ng-scope feedback-star-off" ng-class="$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')" ng-attr-title="{{r.title}}" title="four"></i><!-- end ngRepeat: r in range track by $index --><span ng-repeat-start="r in range track by $index" class="sr-only ng-binding ng-scope">( )</span>
<i ng-repeat-end="" ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon ng-scope feedback-star-off" ng-class="$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')" ng-attr-title="{{r.title}}" title="five"></i><!-- end ngRepeat: r in range track by $index -->
</span> </div> </div> </div> </div> <!-- ngIf: shouldShowAssessmentFooter() --> <div class="row row-gap-medium ng-scope"></div> <div id="comment-wrapper" class="ng-scope"></div> </div>
</div> </div> </div>
</div>
<!-- ngInclude: main.pageContext.footerURL --><div ng-include="main.pageContext.footerURL" class="ng-scope"><footer id="footer" ng-controller="FooterCtrl as ctrl" class="ng-scope"> <div class="container"> <ul class="nav nav-pills"> <!-- ngIf: currentUser && currentUser.role !== 'student' --> <!-- ngIf: currentUser && currentUser.role !== 'student' --> <li><a ui-sref="submissions.student-faq" translate="" class="ng-scope" href="#!/submissions/student-faq">Student FAQ</a></li> <!-- ngIf: currentUser && currentUser.role !== 'student' --> </ul> </div> </footer> </div>
<script src="Translation_files/jquery.js"></script>
<script src="Translation_files/materialize.js"></script>
<script type="text/javascript" src="Translation_files/airbrake-shim.js" data-airbrake-project-id="108424" data-airbrake-project-key="585b2c42b7a3ccfb360e6b1461185702" data-airbrake-environment-name="production"></script>
<script data-airbrake-onload="initAirbrake">
function initAirbrake() {
Airbrake.addFilter(function (notice) {
console.log(notice);
return true;
});
}
</script>
<script src="Translation_files/angular.js"></script>
<!-- inject:js -->
<script src="Translation_files/_vendor_ae47bb24.js"></script>
<script src="Translation_files/grading_ae47bb24.js"></script>
<script src="Translation_files/airbrake-shim.js"></script>
<!-- endinject -->
<div class="hiddendiv common"></div></body></html>