codecombat/app/views/play/level/modal/ProgressView.coffee
Nick Winter d77625bc77 Game dev levels (#3810)
* Tweak API doc behavior and styling

* Instead of moving to the left during active dialogues, just move to the top
* Allow pointer events
* Adjust close button
* Re-enable pinning API docs for game-dev and web-dev levels

* Make sidebar in PlayGameDevLevelView stretch, better layout columns

* Set up content of PlayGameDevLevelView sidebar to scroll

* Add rest of PlayGameDevLevelView sidebar content, rework what loading looks like

* Finish PlayGameDevLevelView

* Add share area below
* Cover the brown background, paint it gray

* Tweak PlayGameDevLevelView

* Have progress bar show everything
* Fix Surface resize handling

* Fix PlayGameDevLevelView resizing incorrectly when playing

* Add GameDevVictoryModal to PlayGameDevLevelView

* Don't show missing-doctype annotation in Ace

* Hook up GameDevVictoryModal copy button

* Fix onChangeAnnotation runtime error

* Fix onLevelLoaded runtime error

* Have CourseVictoryModal link to /courses when course is done

* Trim, update CourseDetailsView

* Remove last vestiges of teacherMode
* Remove giant navigation buttons at top
* Quick switch to flat style

* Add analytics for game-dev

* Update Analytics events for gamedev

* Prefix event names with context
* Send to Mixpanel
* Include more properties

* Mostly set up indefinite play and autocast for game-dev levels

* Set up cast buttons and shortcut for game-dev

* Add rudimentary instructions when students play game-dev levels

* Couple tweaks

* fix a bit of code that expects frames to always stick around
* have PlayGameDevLevelView render a couple frames on load

* API Docs use 'game' instead of 'hero'

* Move tags to head without combining

* Add HTML comment-start string

Fixes missing entry point arrows

* Fix some whitespace
2016-07-28 13:39:58 -07:00

56 lines
1.8 KiB
CoffeeScript

CocoView = require 'views/core/CocoView'
utils = require 'core/utils'
urls = require 'core/urls'
module.exports = class ProgressView extends CocoView
id: 'progress-view'
className: 'modal-content'
template: require 'templates/play/level/modal/progress-view'
events:
'click #done-btn': 'onClickDoneButton'
'click #next-level-btn': 'onClickNextLevelButton'
'click #ladder-btn': 'onClickLadderButton'
'click #share-level-btn': 'onClickShareLevelButton'
initialize: (options) ->
@level = options.level
@course = options.course
@classroom = options.classroom
@nextLevel = options.nextLevel
@levelSessions = options.levelSessions
@session = options.session
# Translate and Markdownify level description, but take out any images (we don't have room for arena banners, etc.).
# Images in Markdown are like ![description](url)
@nextLevel.get('description', true) # Make sure the defaults are available
@nextLevelDescription = marked(utils.i18n(@nextLevel.attributesWithDefaults, 'description').replace(/!\[.*?\]\(.*?\)\n*/g, ''))
if @level.get('shareable') is 'project'
@shareURL = urls.playDevLevel({@level, @session, @course})
onClickDoneButton: ->
@trigger 'done'
onClickNextLevelButton: ->
@trigger 'next-level'
onClickLadderButton: ->
@trigger 'ladder'
onClickShareLevelButton: ->
if _.string.startsWith(@course.get('slug'), 'game-dev')
name = 'Student Game Dev - Copy URL'
category = 'GameDev'
else
name = 'Student Web Dev - Copy URL'
category = 'WebDev'
eventProperties = {
levelID: @level.id
levelSlug: @level.get('slug')
classroomID: @classroom.id
courseID: @course.id
category
}
window.tracker?.trackEvent name, eventProperties, ['MixPanel']
@$('#share-level-input').val(@shareURL).select()
@tryCopy()