mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
Working on task kanban
This commit is contained in:
parent
2740c529ec
commit
0b768cb7ef
@ -4,6 +4,7 @@
|
|||||||
@parent
|
@parent
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
.kanban {
|
.kanban {
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -182,16 +183,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.startAddStatus = function() {
|
self.startNewStatus = function() {
|
||||||
self.is_adding_status(true);
|
self.is_adding_status(true);
|
||||||
$('.kanban-column-last .kanban-column-row.editing textarea').focus();
|
$('.kanban-column-last .kanban-column-row.editing textarea').focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.cancelAddStatus = function() {
|
self.cancelNewStatus = function() {
|
||||||
self.is_adding_status(false);
|
self.is_adding_status(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.completeAddStatus = function() {
|
self.saveNewStatus = function() {
|
||||||
var statusModel = new StatusModel({
|
var statusModel = new StatusModel({
|
||||||
name: self.new_status()
|
name: self.new_status()
|
||||||
})
|
})
|
||||||
@ -251,11 +252,19 @@
|
|||||||
self.is_header_hovered(false);
|
self.is_header_hovered(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.startStatusEdit = function() {
|
self.startEditStatus = function() {
|
||||||
self.is_editing_status(true);
|
self.is_editing_status(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.endStatusEdit = function() {
|
self.saveEditStatus = function() {
|
||||||
|
var url = '{{ url('/task_statuses') }}/' + self.public_id();
|
||||||
|
var data = 'name=' + encodeURIComponent(self.name());
|
||||||
|
model.ajax('put', url, data, function(response) {
|
||||||
|
self.is_editing_status(false);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
self.cancelEditStatus = function() {
|
||||||
self.is_editing_status(false);
|
self.is_editing_status(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +306,6 @@
|
|||||||
task.public_id(response.public_id);
|
task.public_id(response.public_id);
|
||||||
self.tasks.push(task);
|
self.tasks.push(task);
|
||||||
self.new_task.reset();
|
self.new_task.reset();
|
||||||
self.endStatusEdit();
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,21 +481,15 @@
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- <div data-bind="text: ko.toJSON(model)"></div> -->
|
|
||||||
<script id="itemTmpl" type="text/html">
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="kanban" style="display: none">
|
<div class="kanban" style="display: none">
|
||||||
<div data-bind="sortable: { data: statuses, as: 'status', afterMove: onDragged, allowDrop: true, connectClass: 'connect-column' }" style="float:left">
|
<div data-bind="sortable: { data: statuses, as: 'status', afterMove: onDragged, allowDrop: true, connectClass: 'connect-column' }" style="float:left">
|
||||||
<div class="well kanban-column">
|
<div class="well kanban-column">
|
||||||
|
|
||||||
<div class="kanban-column-header" data-bind="css: { editing: is_editing_status }, event: { mouseover: onHeaderMouseOver, mouseout: onHeaderMouseOut }">
|
<div class="kanban-column-header" data-bind="css: { editing: is_editing_status }, event: { mouseover: onHeaderMouseOver, mouseout: onHeaderMouseOut }">
|
||||||
<div class="pull-left" data-bind="event: { click: startStatusEdit }">
|
<div class="pull-left" data-bind="event: { click: startEditStatus }">
|
||||||
<div class="view" data-bind="text: name"></div>
|
<div class="view" data-bind="text: name"></div>
|
||||||
<input class="edit" type="text" data-bind="value: name, hasfocus: is_editing_status, selected: is_editing_status,
|
<input class="edit" type="text" data-bind="value: name, valueUpdate: 'afterkeydown', hasfocus: is_editing_status, selected: is_editing_status,
|
||||||
event: { blur: endStatusEdit }, enterkey: endStatusEdit"/>
|
event: { blur: cancelEditStatus }, enterkey: saveEditStatus"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right" data-bind="click: archiveStatus, visible: is_header_hovered">
|
<div class="pull-right" data-bind="click: archiveStatus, visible: is_header_hovered">
|
||||||
<i class="fa fa-times" title="{{ trans('texts.archive') }}"></i>
|
<i class="fa fa-times" title="{{ trans('texts.archive') }}"></i>
|
||||||
@ -521,7 +523,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="kanban-column-row" data-bind="css: { editing: new_task.is_editing_task }, with: new_task">
|
<div class="kanban-column-row" data-bind="css: { editing: new_task.is_editing_task }, with: new_task">
|
||||||
<div data-bind="event: { click: startEditTask }" style="padding-bottom:6px">
|
<div data-bind="event: { click: startTaskEdit }" style="padding-bottom:6px">
|
||||||
<a href="#" class="view text-muted" style="font-size:13px" data-bind="visible: is_blank">
|
<a href="#" class="view text-muted" style="font-size:13px" data-bind="visible: is_blank">
|
||||||
{{ trans('texts.new_task') }}...
|
{{ trans('texts.new_task') }}...
|
||||||
</a>
|
</a>
|
||||||
@ -544,19 +546,19 @@
|
|||||||
|
|
||||||
<div class="kanban-column kanban-column-last well">
|
<div class="kanban-column kanban-column-last well">
|
||||||
<div class="kanban-column-row" data-bind="css: { editing: is_adding_status }">
|
<div class="kanban-column-row" data-bind="css: { editing: is_adding_status }">
|
||||||
<div class="view" data-bind="event: { click: startAddStatus }" style="padding-bottom: 8px;">
|
<div class="view" data-bind="event: { click: startNewStatus }" style="padding-bottom: 8px;">
|
||||||
<a href="#" class="text-muted" style="font-size:13px">
|
<a href="#" class="text-muted" style="font-size:13px">
|
||||||
{{ trans('texts.new_status') }}...
|
{{ trans('texts.new_status') }}...
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="edit">
|
<div class="edit">
|
||||||
<input data-bind="value: new_status, valueUpdate: 'afterkeydown',
|
<input data-bind="value: new_status, valueUpdate: 'afterkeydown',
|
||||||
hasfocus: is_adding_status, selected: is_adding_status, enterkey: completeAddStatus"></textarea>
|
hasfocus: is_adding_status, selected: is_adding_status, enterkey: saveNewStatus"></textarea>
|
||||||
<div class="pull-right" style="padding-top:6px">
|
<div class="pull-right" style="padding-top:6px">
|
||||||
<button type='button' class='btn btn-default btn-sm' data-bind="click: cancelAddStatus">
|
<button type='button' class='btn btn-default btn-sm' data-bind="click: cancelNewStatus">
|
||||||
{{ trans('texts.cancel') }}
|
{{ trans('texts.cancel') }}
|
||||||
</button>
|
</button>
|
||||||
<button type='button' class='btn btn-success btn-sm' data-bind="click: completeAddStatus">
|
<button type='button' class='btn btn-success btn-sm' data-bind="click: saveNewStatus">
|
||||||
{{ trans('texts.save') }}
|
{{ trans('texts.save') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user