);\r\n },\r\n\r\n _assessmentClickHandler(assessmentId){\r\n if (!this.props.onSelectAssessment) {\r\n return;\r\n }\r\n this.props.onSelectAssessment(assessmentId);\r\n }\r\n});\r\n\r\nmodule.exports = LearnerAssessmentWidget;\r\n","import { assign } from 'lodash';\r\n\r\nvar DateFormatted = require('component/layout').DateFormatted,\r\n BookIcon = require('component/layout').BookIcon,\r\n Bootstrap = require('helper').Bootstrap;\r\n\r\nvar LearnerChartOptions = assign({}, require('../pieChart').LearnerMiscueChartOptions),\r\n LearnerMiscuesDataMixin = require('../pieChart').LearnerMiscuesDataMixin;\r\nvar defaultLearnerAvatar = require('../../../../../img/avatars/male.png');\r\n\r\nvar LearnerAssessmentWidgetItem = React.createClass({\r\n\r\n mixins: [LearnerMiscuesDataMixin],\r\n\r\n propTypes: {\r\n assessment: React.PropTypes.object.isRequired,\r\n isSelected: React.PropTypes.bool,\r\n highlightText: React.PropTypes.string\r\n },\r\n\r\n getDefaultProps(){\r\n return {\r\n isSelected: false\r\n }\r\n },\r\n\r\n getAvatarUrl: function () {\r\n var {avatarUrl} = this.props.assessment;\r\n return avatarUrl ? avatarUrl : defaultLearnerAvatar;\r\n },\r\n\r\n render: function () {\r\n var {assessment, isSelected, highlightText} = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Miscue session\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n {Esk.Helper.highlightText(assessment.bookTitle, highlightText)}\r\n\t\t\t\t\t\t\r\n
\r\n \r\n {this._getLearnerMiscueChart(assessment, LearnerChartOptions)}\r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n});\r\n\r\nmodule.exports = LearnerAssessmentWidgetItem;\r\n","exports.AssessmentWidget = require('./assessmentWidget');","import MiscueSessionsStore from 'store/miscueSessionStore';\r\n\r\nvar JarvisWidget = require('component/layout/widget').JarvisWidget,\r\n JarvisWidgetHeader = require('component/layout/widget').JarvisWidgetHeader,\r\n JarvisWidgetBody = require('component/layout/widget').JarvisWidgetBody;\r\n\r\nvar Miscue = require('../miscue').MiscueWidget,\r\n AssessmentItemInfo = require('./assessmentItemInfo'),\r\n AssessmentItemPlayer = require('./assessmentItemPlayer'),\r\n AssessmentItemNote = require('./assessmentItemNote'),\r\n AssessmentItemLearnerDetails = require('./assessmentItemLearnerDetails'),\r\n AssessmentItemMiscuesLegend = require('./assessmentItemMiscuesLegend');\r\n\r\nvar Bootstrap = require('helper').Bootstrap;\r\n\r\nvar GridId = Esk.Constants.WidgetGridId;\r\n\r\nvar MiscueTextMixin = require('utils/mixins').MiscueText;\r\n\r\nvar translate = ReactI18n.translate;\r\n\r\n/**\r\n * Assessment Details widget\r\n * @prop {object}assessmentDetails assessment data\r\n * @prop {object}learner learner object\r\n * @prop {function}onMiscueDelete\r\n * @prop {function}onMiscueSave\r\n */\r\nvar MiscueWidget = React.createClass({\r\n\r\n mixins: [MiscueTextMixin],\r\n\r\n parsedTitle: [],\r\n parsedContent: [],\r\n\r\n propTypes: {\r\n assessmentDetails: React.PropTypes.object,\r\n learner: React.PropTypes.object,\r\n onMiscueDelete: React.PropTypes.func,\r\n onMiscueSave: React.PropTypes.func,\r\n onSaveAssessmentNote: React.PropTypes.func,\r\n onDeleteAssessment: React.PropTypes.func,\r\n },\r\n\r\n componentWillUpdate(newProps){\r\n\r\n var {assessmentDetails} = newProps;\r\n\r\n if (assessmentDetails) {\r\n this.parsedTitle = this._parseAssessmentContent(assessmentDetails.bookTitle, assessmentDetails.miscues);\r\n this.parsedContent = this._parseAssessmentContent(assessmentDetails.content, assessmentDetails.miscues);\r\n }\r\n },\r\n\r\n getDefaultProps(){\r\n return {\r\n learner: {}\r\n }\r\n },\r\n\r\n render() {\r\n var {t} = this.props;\r\n return (\r\n \r\n\r\n \r\n\r\n \r\n {this._getWidgetContent()}\r\n \r\n\r\n \r\n );\r\n },\r\n\r\n _getWidgetTitle(){\r\n var {t} = this.props;\r\n return t(\"Session / Observation Detail\");\r\n },\r\n\r\n _getWidgetContent(){\r\n var {assessmentDetails, learner} = this.props;\r\n if (!assessmentDetails) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {this._getAssessmentContent(this.parsedTitle, this._getMiscueItem)}\r\n
\r\n \r\n {this._getAssessmentContent(this.parsedContent, this._getMiscueItem)}\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n );\r\n },\r\n\r\n _getMiscueItem(miscueData){\r\n return \r\n },\r\n\r\n _miscueDeleteHandler(miscueId){\r\n if (typeof this.props.onMiscueDelete === \"function\") {\r\n this.props.onMiscueDelete(this.props.assessmentDetails.id, miscueId);\r\n }\r\n },\r\n\r\n _miscueSaveHandler(miscueData){\r\n if (typeof this.props.onMiscueSave === \"function\") {\r\n this.props.onMiscueSave(this.props.assessmentDetails.id, miscueData);\r\n }\r\n },\r\n\r\n _noteSaveHandler(noteText){\r\n if (this.props.onSaveAssessmentNote) {\r\n this.props.onSaveAssessmentNote(this.props.assessmentDetails.id, noteText);\r\n }\r\n }\r\n\r\n});\r\n\r\nmodule.exports = translate(['ra'], {withRef: false, wait: false})(MiscueWidget);\r\n","var SessionFormats = Esk.Constants.ConstantsHelper.DisplayFormats.Session;\r\n\r\nvar translate = ReactI18n.translate;\r\n\r\nvar AssessmentItemInfo = React.createClass({\r\n\r\n propTypes: {\r\n assessmentDetails: React.PropTypes.object.isRequired\r\n },\r\n\r\n render(){\r\n var {assessmentDetails, t} = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n {t(\"Reading Rate:\")} | \r\n {this._displayParameter(assessmentDetails.readingRate, SessionFormats.readingRate)} | \r\n
\r\n \r\n {t(\"Duration:\")} | \r\n {this._displayParameter(assessmentDetails.duration, SessionFormats.duration)} | \r\n
\r\n \r\n {t(\"Comprehension:\")} | \r\n {this._displayParameter(assessmentDetails.comprehension, SessionFormats.percent)} | \r\n
\r\n \r\n {t(\"Accuracy:\")} | \r\n {this._displayParameter(assessmentDetails.miscueScore, SessionFormats.percent)} | \r\n
\r\n \r\n
\r\n );\r\n },\r\n\r\n _displayParameter: function (value, unit) {\r\n return value === undefined ? \"-\" : value + (unit || \"\");\r\n }\r\n});\r\n\r\nmodule.exports = translate(['ra'], {\r\n withRef: false,\r\n wait: true\r\n})(AssessmentItemInfo);\r\n","var AssessmentItemPlayer = React.createClass({\r\n\r\n propTypes: {\r\n src: React.PropTypes.string\r\n },\r\n\r\n render(){\r\n var {src} = this.props;\r\n\r\n if (!src) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n});\r\n\r\nmodule.exports = AssessmentItemPlayer;\r\n","var translate = ReactI18n.translate;\r\n\r\nvar AssessmentItemNote = React.createClass({\r\n\r\n ASSESSMENT_NOTE_FIELD_REF: \"AssessmentNoteField\",\r\n\r\n propTypes: {\r\n assessmentDetails: React.PropTypes.object.isRequired,\r\n onSaveAssessmentNote: React.PropTypes.func,\r\n onDeleteAssessment: React.PropTypes.func\r\n },\r\n\r\n componentWillReceiveProps(nextProps){\r\n if (nextProps.assessmentDetails) {\r\n this.refs[this.ASSESSMENT_NOTE_FIELD_REF].value = nextProps.assessmentDetails.notes || \"\";\r\n }\r\n },\r\n\r\n render(){\r\n var {assessmentDetails, onDeleteAssessment, t} = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n {onDeleteAssessment &&\r\n \r\n }\r\n
\r\n );\r\n },\r\n\r\n onSaveAssessmentNote(){\r\n var {onSaveAssessmentNote} = this.props;\r\n if (typeof onSaveAssessmentNote !== \"function\") return;\r\n onSaveAssessmentNote(this.refs[this.ASSESSMENT_NOTE_FIELD_REF].value);\r\n }\r\n\r\n});\r\n\r\nmodule.exports = translate(['ra'], {\r\n withRef: false,\r\n wait: true\r\n})(AssessmentItemNote);\r\n","import { LearnerAvatar } from '../../LearnerAvatar/LearnerAvatar';\r\nimport React from 'react';\r\n\r\nvar AssessmentItemLearnerDetails = React.createClass({\r\n\r\n propTypes: {\r\n learner: React.PropTypes.object\r\n },\r\n\r\n render(){\r\n var {learner} = this.props;\r\n\r\n if (!learner) return null;\r\n\r\n return (\r\n \r\n \r\n {learner.displayName}\r\n
\r\n )\r\n }\r\n\r\n});\r\n\r\n\r\nmodule.exports = AssessmentItemLearnerDetails;\r\n","var AssessmentItemMiscuesLegend = React.createClass({\r\n\r\n propTypes: {\r\n miscues: React.PropTypes.array\r\n },\r\n\r\n getDefaultProps(){\r\n return {\r\n miscues: []\r\n };\r\n },\r\n\r\n render(){\r\n var {className} = this.props;\r\n\r\n return (\r\n \r\n { this.props.miscues.map(this._getLegendItem) }\r\n
\r\n );\r\n },\r\n\r\n _getLegendItem(miscueItem, index){\r\n return (\r\n \r\n \r\n {miscueItem.displayName}\r\n
\r\n )\r\n }\r\n});\r\n\r\nmodule.exports = AssessmentItemMiscuesLegend;\r\n","exports.LatestAssessmentWidget = require('./newsWidget');\r\nexports.WidgetWrapper = require('./newsWidgetWrapper');\r\nexports.Type = Esk.Constants.WidgetType.NEWS;","var NewsWidget = require('./newsWidget');\r\n\r\nvar Mixins = Esk.Utils.Mixins;\r\n\r\nvar NewsWidgetWrapper = React.createClass({\r\n\r\n mixins: [Mixins.WidgetWrapper],\r\n\r\n propTypes: {\r\n widgetData: React.PropTypes.object.isRequired,\r\n options: React.PropTypes.object\r\n },\r\n\r\n getInitialState(){\r\n return {\r\n newsUrl: null\r\n };\r\n },\r\n\r\n componentWillMount() {\r\n var self = this;\r\n Esk.Config.configPromise.then(function (config) {\r\n self.setState({\r\n newsUrl: config.latestNoticesUrl\r\n });\r\n });\r\n\r\n },\r\n\r\n render(){\r\n var {className, widgetData} = this.props;\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n});\r\n\r\n\r\nmodule.exports = NewsWidgetWrapper;\r\n","\"use strict\";\r\n\r\nexports.ModuleWidget = require('./moduleWidget');\r\n","\"use strict\";\r\n\r\nvar Link = ReactRouter.Link;\r\n\r\nvar JarvisWidget = require('component/layout/widget').JarvisWidget,\r\n JarvisWidgetHeader = require('component/layout/widget').JarvisWidgetHeader,\r\n JarvisWidgetBody = require('component/layout/widget').JarvisWidgetBody,\r\n Ui = require('helper').Ui;\r\n\r\nvar ModuleItem = require('./moduleItem');\r\n\r\nvar GridId = Esk.Constants.WidgetGridId;\r\n\r\n/**\r\n * Module widget\r\n */\r\nvar ModuleWidget = React.createClass({\r\n\r\n propTypes: {\r\n isBlocked: React.PropTypes.bool,\r\n title: React.PropTypes.string,\r\n moduleList: React.PropTypes.array.isRequired,\r\n options: React.PropTypes.object\r\n },\r\n\r\n getDefaultProps(){\r\n return {\r\n title: null,\r\n options: {\r\n colorbutton: false,\r\n editbutton: false,\r\n togglebutton: true,\r\n deletebutton: false,\r\n fullscreenbutton: true,\r\n custombutton: false,\r\n refresh: true\r\n }\r\n }\r\n },\r\n\r\n render(){\r\n var {moduleList, title, t} = this.props;\r\n title = title || t(\"Modules\");\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n {this._getTableHeader()}\r\n \r\n {moduleList.map((item, id) => {\r\n return \r\n })}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n );\r\n },\r\n\r\n _getTableHeader: function () {\r\n var {t} = this.props;\r\n return (\r\n \r\n \r\n {t(\"Name\", {context: \"Modules\"})} | \r\n
\r\n \r\n );\r\n },\r\n\r\n _sortBy: function (sortField) {\r\n /*TODO: temporarily unavailable method*/\r\n }\r\n\r\n});\r\n\r\nmodule.exports = ReactI18n.translate(['admin'], {\r\n withRef: false,\r\n wait: false\r\n})(ModuleWidget);\r\n","\"use strict\";\r\n\r\nvar Link = ReactRouter.Link;\r\n\r\nvar Config = Esk.Config;\r\n\r\nvar Bootstrap = Esk.Helper.Bootstrap;\r\n\r\n/**\r\n * Item of module widget\r\n */\r\nvar ModuleItem = React.createClass({\r\n\r\n propTypes: {\r\n module: React.PropTypes.object.isRequired\r\n },\r\n\r\n\r\n render: function () {\r\n var {module} = this.props;\r\n\r\n return (\r\n \r\n \r\n {module.description}\r\n | \r\n
\r\n );\r\n }\r\n});\r\n\r\nmodule.exports = ModuleItem;\r\n"],"sourceRoot":""}