mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-07 18:44:29 -04:00
Bug fixes and style fixes.
This commit is contained in:
parent
c28720c640
commit
ab93dc8564
5 changed files with 89 additions and 74 deletions
app
styles/editor/level
templates/editor/level
views/editor
|
@ -1,17 +1,19 @@
|
|||
#editor-level-tasks-tab-view
|
||||
td
|
||||
cursor: pointer
|
||||
.taskCheck
|
||||
.task-check
|
||||
width: 5em
|
||||
.editCell
|
||||
width: 5em
|
||||
.taskCheck *
|
||||
.task-check, .task-check *
|
||||
margin: auto
|
||||
text-align: center
|
||||
.edit-cell
|
||||
width: 5em
|
||||
.edit-cell, .edit-cell *
|
||||
margin: auto
|
||||
.checkbox
|
||||
text-align: center
|
||||
.task-name
|
||||
margin: auto
|
||||
.startEdit
|
||||
.start-edit
|
||||
cursor: pointer
|
||||
text-align:center
|
||||
.noArticle
|
||||
.no-article
|
||||
color: rgba(160, 0, 0, 1)
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
mixin task-row(task)
|
||||
mixin task-row(cid)
|
||||
- var task = view.getTaskByCID(cid)
|
||||
- var taskName = task.get('name');
|
||||
- var isComplete = task.get('complete')
|
||||
- var taskLink = view.defaultTaskLinks[taskName]
|
||||
tr.taskRow(data-task=task)
|
||||
td.taskCheck
|
||||
tr.task-row(data-task-cid=cid)
|
||||
td.task-check
|
||||
div.checkbox
|
||||
input(type='checkbox', checked=(isComplete || false)).taskInput
|
||||
if task.get('curEdit') === true
|
||||
td.editCell
|
||||
td
|
||||
input(type="input", value=taskName)#curEdit
|
||||
input(type='checkbox', checked=(isComplete || false)).task-input
|
||||
if task.get('curEdit') == true
|
||||
td.edit-cell
|
||||
td.task-name
|
||||
input(type="input", value=taskName)#cur-edit
|
||||
else
|
||||
td.editCell
|
||||
span.startEdit ✎
|
||||
td
|
||||
td.edit-cell
|
||||
span.glyphicon.glyphicon-edit.start-edit
|
||||
td.task-name
|
||||
if taskLink
|
||||
if taskLink === './'
|
||||
a.noArticle(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', target='blank')= taskName
|
||||
a.no-article(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', target='blank')= taskName
|
||||
else
|
||||
a(href=taskLink, target='_blank')= taskName
|
||||
else
|
||||
|
@ -25,17 +26,17 @@ mixin task-row(task)
|
|||
block
|
||||
table.table.table-striped.table-hover
|
||||
tr
|
||||
th.taskCheck Complete
|
||||
th Edit
|
||||
th.task-check Complete
|
||||
th.edit-cell Edit
|
||||
th Incomplete Tasks
|
||||
for task in (view.taskArray() || [])
|
||||
if task.get('revert').complete !== true
|
||||
+task-row(task)
|
||||
+task-row(task.cid)
|
||||
tr
|
||||
th
|
||||
th
|
||||
th.task-check
|
||||
th.edit-cell
|
||||
th Completed Tasks
|
||||
for task in (view.taskArray() || [])
|
||||
if task.get('revert').complete === true
|
||||
+task-row(task)
|
||||
button#createTask.btn.btn-default Add Task
|
||||
+task-row(task.cid)
|
||||
button#create-task.btn.btn-default Add Task
|
||||
|
|
|
@ -221,7 +221,7 @@ module.exports = class LevelEditView extends RootView
|
|||
++@levelBuildTime
|
||||
|
||||
getTaskCompletionRatio: ->
|
||||
if !@level.get('tasks')?
|
||||
return {}
|
||||
if not @level.get('tasks')?
|
||||
return []
|
||||
else
|
||||
return _.filter(@level.get('tasks'), (_elem) -> return _elem.complete).length + "/" + @level.get('tasks').length
|
||||
|
|
|
@ -7,11 +7,12 @@ module.exports = class TasksTabView extends CocoView
|
|||
className: 'tab-pane'
|
||||
template: template
|
||||
events:
|
||||
'click .taskRow': 'onClickTaskRow'
|
||||
'click .taskInput': 'onClickTaskInput'
|
||||
'click .startEdit': 'onClickStartEdit'
|
||||
'click #createTask': 'onClickCreateTask'
|
||||
'keydown #curEdit': 'onKeyDownCurEdit'
|
||||
'click .task-row': 'onClickTaskRow'
|
||||
'click .task-input': 'onClickTaskInput'
|
||||
'click .start-edit': 'onClickStartEdit'
|
||||
'click #create-task': 'onClickCreateTask'
|
||||
'keydown #cur-edit': 'onKeyDownCurEdit'
|
||||
'blur #cur-edit': 'onBlurCurEdit'
|
||||
|
||||
subscriptions:
|
||||
'editor:level-loaded': 'onLevelLoaded'
|
||||
|
@ -54,20 +55,48 @@ module.exports = class TasksTabView extends CocoView
|
|||
'Do thorough set decoration.':'./'
|
||||
'Add a walkthrough video.':'./'
|
||||
|
||||
applyTaskName: (_task, _input) ->
|
||||
name = _input.value
|
||||
potentialTask = @findTask(name)
|
||||
if potentialTask and potentialTask isnt _task
|
||||
noty
|
||||
timeout: 5000
|
||||
text: 'Task with name already exists!'
|
||||
type: 'error'
|
||||
layout: 'topCenter'
|
||||
_input.focus()
|
||||
else if name is ''
|
||||
@tasks.remove _task
|
||||
@pushTasks()
|
||||
@render()
|
||||
else
|
||||
_task.set 'name', name
|
||||
_task.set 'curEdit', false
|
||||
@pushTasks()
|
||||
@render()
|
||||
|
||||
focusEditInput: ->
|
||||
editInput = $('cur-edit')[0]
|
||||
editInput.focus()
|
||||
len = editInput.value.length * 2
|
||||
editInput.setSelectionRange len, len
|
||||
|
||||
getTaskByCID: (_cid) ->
|
||||
return @tasks.get _cid
|
||||
|
||||
taskMap: ->
|
||||
return @tasks?.map((_obj) -> return (name: _obj.get('name'), complete: (_obj.get('complete') || false)))
|
||||
|
||||
taskArray: ->
|
||||
return @tasks?.toArray()
|
||||
|
||||
findTask: (_name) ->
|
||||
return @tasks.findWhere(name:_name)
|
||||
|
||||
onLoaded: ->
|
||||
onLevelLoaded: (e) ->
|
||||
@level = e.level
|
||||
Task = Backbone.Model.extend({
|
||||
initialize: ->
|
||||
# We want to keep track of the revertAttributes easily without digging back into the level every time.
|
||||
# So per TaskModel we check to see if there is a revertAttribute associated with the task's name.
|
||||
# If there is a reversion available, we use it, otherwise (e.g. new tasks without a reversion) we just use the Task's current name/completion status.
|
||||
if e?.level?._revertAttributes?.tasks?
|
||||
if _.find(e.level._revertAttributes.tasks, {name:arguments[0].name})
|
||||
@set 'revert', _.find(e.level._revertAttributes.tasks, {name:arguments[0].name})
|
||||
|
@ -82,14 +111,13 @@ module.exports = class TasksTabView extends CocoView
|
|||
@tasks = new TaskList(@level.get 'tasks')
|
||||
@render()
|
||||
|
||||
|
||||
pushTasks: ->
|
||||
@level.set 'tasks', @taskMap()
|
||||
|
||||
onClickTaskRow: (e) ->
|
||||
if not $(e.target).is('input') and not $(e.target).is('a') and not $(e.target).hasClass('startEdit')
|
||||
task = @findTask($(e.target).closest('tr').data('task').name)
|
||||
checkbox = $(e.currentTarget).find('.taskInput')[0]
|
||||
if not $(e.target).is('input') and not $(e.target).is('a') and not $(e.target).hasClass('start-edit') and $('#cur-edit').length is 0
|
||||
task = @tasks.get $(e.target).closest('tr').data('task-cid')
|
||||
checkbox = $(e.currentTarget).find('.task-input')[0]
|
||||
if task.get 'complete'
|
||||
task.set 'complete', false
|
||||
else
|
||||
|
@ -98,43 +126,31 @@ module.exports = class TasksTabView extends CocoView
|
|||
@pushTasks()
|
||||
|
||||
onClickTaskInput: (e) ->
|
||||
task = @findTask($(e.target).closest('tr').data('task').name)
|
||||
task = @tasks.get $(e.target).closest('tr').data('task-cid')
|
||||
task.set 'complete', e.currentTarget.checked
|
||||
@pushTasks()
|
||||
|
||||
|
||||
|
||||
onClickStartEdit: (e) ->
|
||||
if $('#curEdit').length is 0
|
||||
task = @findTask($(e.target).closest('tr').data('task').name)
|
||||
if $('#cur-edit').length is 0
|
||||
task = @tasks.get $(e.target).closest('tr').data('task-cid')
|
||||
task.set 'curEdit', true
|
||||
@render()
|
||||
editDiv = $('#curEdit')[0]
|
||||
editDiv.focus()
|
||||
len = editDiv.value.length * 2
|
||||
editDiv.setSelectionRange len, len
|
||||
@focusEditInput()
|
||||
|
||||
onKeyDownCurEdit: (e) ->
|
||||
if e.keyCode is 13
|
||||
editDiv = $('#curEdit')[0]
|
||||
task = @findTask($(e.target).closest('tr').data('task').name)
|
||||
potentialTask = @findTask(editDiv.value)
|
||||
if potentialTask and potentialTask isnt task
|
||||
noty
|
||||
timeout: 5000
|
||||
text: 'Task with name already exists!'
|
||||
type: 'error'
|
||||
layout: 'topCenter'
|
||||
else if editDiv.value is ''
|
||||
@tasks.remove task
|
||||
@pushTasks()
|
||||
@render()
|
||||
else
|
||||
task.set 'name', editDiv.value
|
||||
task.set 'curEdit', false
|
||||
@pushTasks()
|
||||
@render()
|
||||
editInput = $('#cur-edit')[0]
|
||||
editInput.blur()
|
||||
|
||||
onBlurCurEdit: (e) ->
|
||||
editInput = $('#cur-edit')[0]
|
||||
task = @tasks.get $(e.target).closest('tr').data('task-cid')
|
||||
@applyTaskName(task, editInput)
|
||||
|
||||
onClickCreateTask: (e) ->
|
||||
if $('#curEdit').length is 0
|
||||
if $('#cur-edit').length is 0
|
||||
@tasks.add
|
||||
name: ''
|
||||
complete: false
|
||||
|
@ -143,7 +159,4 @@ module.exports = class TasksTabView extends CocoView
|
|||
name: 'null'
|
||||
complete: false
|
||||
@render()
|
||||
editDiv = $('#curEdit')[0]
|
||||
editDiv.focus()
|
||||
len = editDiv.value.length * 2
|
||||
editDiv.setSelectionRange len, len
|
||||
@focusEditInput()
|
||||
|
|
|
@ -12,7 +12,6 @@ module.exports = class NewModelModal extends ModalView
|
|||
'submit form': 'onModelSubmitted'
|
||||
|
||||
constructor: (options) ->
|
||||
console.log options.model.schema
|
||||
super options
|
||||
@modelClass = options.model
|
||||
@modelLabel = options.modelLabel
|
||||
|
@ -23,7 +22,7 @@ module.exports = class NewModelModal extends ModalView
|
|||
model = new @modelClass
|
||||
name = @$el.find('#name').val()
|
||||
model.set('name', name)
|
||||
if @modelClass.schema.default?
|
||||
if @modelClass.name is 'Level'
|
||||
model.set('tasks', @modelClass.schema.default.tasks)
|
||||
if model.schema().properties.permissions
|
||||
model.set 'permissions', [{access: 'owner', target: me.id}]
|
||||
|
|
Loading…
Add table
Reference in a new issue