-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MNOE-551][MNOE-553] Release Task Feature to 1.1 #281
Open
x4d3
wants to merge
80
commits into
1.1
Choose a base branch
from
feature/tasks
base: 1.1
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 43 commits
Commits
Show all changes
80 commits
Select commit
Hold shift + click to select a range
d3e6a0a
[MNOE-551] add messages view
xaun 21f95a2
[MNOE-551] Sidebar and Tasks w/ sortable table UI
xaun 7dab375
[MNOE-551] Add pagination element to tasks (stubbed)
xaun 4ba452a
[MNOE-551] Use @link-color for active menus etc
xaun 8ab3b6e
[MNOE-551] Add create task modal with autocomplete recipients
xaun 078ce82
[MNOE-551] Move create-task-modal to mno-ui-elements
xaun 8598ddf
[MNOE-551] Add show tasks modal
xaun e634301
[MNOE-551] Adjustments for changes to mnoSortableTable
xaun 05df34c
[MNOE-551] Create topbar for compose & filter elements
xaun 8ed4db5
[MNOE-551] Refactor menu buttons & improve for mobile
xaun 958ff9e
[MNOE-551] Use md-primary for Compose button
xaun 0187ed7
[MNOE-551] Add filter selector component
xaun f0dc824
[MNOE-551] mnoe-tasks ctrl fixes & refactors
xaun ef09daa
[MNOE-551] Move tasks menu to ui-elements cmp
xaun 3069856
[MNOE-551] get tasks from api, apply filter queries & i18n
xaun 6f5ec07
[MNOE-551] Fix table header spacing, & improve date format
xaun 0b77362
[MNOE-551] Connect pagination to backend
xaun 20eaac2
[MNOE-551] Add loading for tasks
xaun e8249c7
[MNOE-551] Connect create tasks to backend
xaun d2019c5
[MNOE-551] connect reply & reply and mark done to backend
xaun 9c63555
[MNOE-551] Configure mnoShowTaskModal with a date format
xaun 0440f4e
[MNOE-551] Add delay to fetchTasks loader finish
xaun 20f208b
[MNOE-551] Fix date filter format string
xaun 94ccf9d
[MNOE-551] Config mnoSortableTable with a st-pipe callback
xaun 573ff68
[MNOE-551] Build tasks table columns based on selected menu
xaun 88d38b5
[MNOE-551] improve tasks date formatting
xaun 49d2b34
[MNOE-551] Add refresh tasks
xaun 8c58258
[MNOE-551] configure show-task-modal for setting reminders
xaun 18d8263
[MNOE-551] Fix promises to reject errors for chaining
xaun d8b8c18
[MNOE-551] Add sent & read columns for outbox
xaun 2c6d8a4
[MNOE-551] Update Task as read on show modal
xaun cc5ebbf
[MNOE-551] Enable/disable task via mnoe feature flag
xaun a283ee0
[MNOE-551] Use callback for modal actions
xaun 539c073
[MNOE-551] Sort draft tasks by updated_at
xaun 722f13a
[MNOE-551] Only allow inbox items to be marked as read
xaun 73859f7
[MNOE-551] Open create modal on draft task click
xaun a08ea43
[MNOE-551] Remove mno-tasks-menu less variables
xaun 6531257
[MNOE-551] Uncheck done on failed update & callback refactors
xaun 58f82d1
Merge pull request #278 from xaun/feature/551-tasks
x4d3 4c0c288
Implement Notifications
x4d3 b687cfa
Merge pull request #280 from x4d3/feature/tasks
x4d3 aaff79b
Improve columns
x4d3 a218b4d
Merge pull request #283 from x4d3/feature/tasks
x4d3 ca115fa
Fix drafts appearing in outbox
xaun 8552624
Fix mnoe-tasks component for utc
xaun a9229f6
Merge pull request #285 from xaun/feature/tasks
x4d3 5a74207
Use master branch for mno-ui-elements
x4d3 ee084ee
Move notification.svn to mno-ui-elements
x4d3 f5d67a3
Add Notification Feature flag
x4d3 4a4f97d
Merge pull request #287 from x4d3/feature/tasks
x4d3 73f3310
Apply code review comments
x4d3 fa62ac1
Merge pull request #289 from x4d3/feature/tasks
x4d3 8baf784
Fix issue with done message not shown in Sent
x4d3 723d66f
Merge pull request #290 from x4d3/feature/tasks
x4d3 3837c9d
Fix due tasks filter to exclude done tasks
xaun fe77074
Merge pull request #295 from xaun/feature/tasks
manu-da 166c491
Use asyncronous translations to fix locale loading problems
xaun 5d9362a
Fix to & from field display on task show modal
xaun 5e1c46d
Merge pull request #300 from xaun/feature/tasks
alexnoox 584bf15
Merge remote-tracking branch 'central/1.1' into feature/tasks
cesar-tonnoir 2b3835a
Use new version of notification
x4d3 8a195c2
Merge pull request #314 from x4d3/feature/tasks
x4d3 548932b
Fix Task without due-date should not have status
x4d3 978906f
Merge pull request #317 from x4d3/feature/tasks
cesar-tonnoir 8138989
Add missing task_title
x4d3 fb10504
Merge pull request #319 from x4d3/feature/tasks
x4d3 e28b8dd
Fix issue of modal being opened twice - Rotate refreh icon while loading
x4d3 522b185
Apply code review comments
x4d3 ac669ef
Merge pull request #321 from x4d3/feature/tasks
cesar-tonnoir 3af75a6
Merge remote-tracking branch 'origin/1.1' into merge/1.1
5fe199f
Merge pull request #345 from fgourichon/merge/1.1
alexnoox 057894f
Fix: Notifications shown only if browser is refreshed in the right orga
x4d3 2a19b81
Merge pull request #346 from x4d3/feature/tasks
50f2766
Fix: Task is due "Today" is not appearing
x4d3 f5ae4aa
Merge pull request #354 from x4d3/feature/tasks
x4d3 9ecbdc4
Refresh messages when changing organizations
adamaziz15 65850fa
Reorder controller dependencies
adamaziz15 df4694d
Merge pull request #383 from adamaziz15/bug/795-messages-page-refresh
alexnoox ef0d514
Update styling on messages section and fix ng-animate bug
adamaziz15 530d675
Merge pull request #399 from adamaziz15/feature/57-inbox-tab
ouranos File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Service for managing the users. | ||
angular.module 'mnoEnterpriseAngular' | ||
.service 'MnoeNotifications', (MnoeFullApiSvc, MnoeOrganizations) -> | ||
_self = @ | ||
|
||
@get = (params = {})-> | ||
MnoeOrganizations.get().then(-> | ||
MnoeFullApiSvc | ||
.one('organizations', MnoeOrganizations.getSelectedId()) | ||
.getList('notifications', params) | ||
) | ||
|
||
@notified = (params)-> | ||
MnoeOrganizations.get().then(-> | ||
MnoeFullApiSvc | ||
.one('organizations', MnoeOrganizations.getSelectedId()) | ||
.one('notifications') | ||
.post('/notified', params) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the right syntax:
|
||
) | ||
|
||
return @ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Service for managing the users. | ||
angular.module 'mnoEnterpriseAngular' | ||
.service 'MnoeTasks', (MnoeFullApiSvc, MnoeOrganizations) -> | ||
@get = (params = {})-> | ||
MnoeOrganizations.get().then(-> | ||
MnoeFullApiSvc | ||
.one('organizations', MnoeOrganizations.getSelectedId()) | ||
.getList('tasks', params) | ||
) | ||
|
||
@getRecipients = -> | ||
MnoeFullApiSvc | ||
.all('orga_relations') | ||
.getList() | ||
.then( | ||
(response)-> response.data.plain() | ||
) | ||
|
||
@update = (id, params = {})-> | ||
MnoeOrganizations.get().then(-> | ||
MnoeFullApiSvc | ||
.one('organizations', MnoeOrganizations.getSelectedId()) | ||
.one('tasks', id) | ||
.patch(params) | ||
.then( | ||
(response)-> response.data.plain().task | ||
) | ||
) | ||
|
||
@create = (params = {})-> | ||
MnoeOrganizations.get().then(-> | ||
MnoeFullApiSvc | ||
.one('organizations', MnoeOrganizations.getSelectedId()) | ||
.all('tasks') | ||
.post(params) | ||
.then( | ||
(response)-> response.data.plain() | ||
) | ||
) | ||
|
||
return @ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,236 @@ | ||
angular.module('mnoEnterpriseAngular').component('mnoeTasks', { | ||
bindings: { | ||
}, | ||
templateUrl: 'app/components/mnoe-tasks/mnoe-tasks.html', | ||
controller: ($filter, $uibModal, $log, $translate, $timeout, $q, toastr, MnoeTasks, MnoeCurrentUser)-> | ||
ctrl = this | ||
ctrl.$onInit = -> | ||
ctrl.tasks = { | ||
list: [] | ||
sort: 'send_at.desc' | ||
nbItems: 10 | ||
offset: 0 | ||
page: 1 | ||
loading: false | ||
pageChangedCb: (nbItems, page) -> | ||
ctrl.tasks.nbItems = nbItems | ||
ctrl.tasks.page = page | ||
ctrl.tasks.offset = (page - 1) * nbItems | ||
fetchTasks(limit: nbItems, offset: ctrl.tasks.offset) | ||
} | ||
ctrl.menus = [ | ||
{ label: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.menus.inbox'), name: 'inbox', selected: true } | ||
{ label: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.menus.sent'), name: 'sent', query: { outbox: true } } | ||
{ label: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.menus.draft'), name: 'draft', query: { 'where[status][]': 'draft', outbox: true } } | ||
] | ||
ctrl.tasksFilters = [ | ||
{ name: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks_filters.all_tasks_and_msgs') } | ||
{ name: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks_filters.all_tasks'), query: { 'where[due_date.ne]': '' } } | ||
{ name: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks_filters.all_messages'), query: { 'where[due_date.eq]': '' } } | ||
{ name: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks_filters.due_tasks'), query: { 'where[due_date.lt]': moment().toISOString() } } | ||
{ name: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks_filters.completed_tasks'), query: { 'where[completed_at.ne]': '' } } | ||
] | ||
ctrl.selectedTasksFilter = ctrl.tasksFilters[0] | ||
ctrl.selectedMenu = _.find(ctrl.menus, (m)-> m.selected) | ||
fetchTasks() | ||
|
||
ctrl.onSelectFilter = ({filter})-> | ||
return if filter == ctrl.selectedTasksFilter | ||
ctrl.selectedTasksFilter = filter | ||
fetchTasks() | ||
|
||
ctrl.onSelectMenu = ({menu})-> | ||
return if menu == ctrl.selectedMenu | ||
ctrl.selectedMenu = menu | ||
params = { order_by: 'updated_at.desc' } if menu.name == 'draft' | ||
fetchTasks(params) | ||
|
||
ctrl.onRefreshTasks = -> | ||
fetchTasks() | ||
|
||
ctrl.sortableTableRowOnClick = ({rowItem})-> | ||
if ctrl.selectedMenu.name == 'draft' then ctrl.openCreateTaskModal(rowItem) else ctrl.openShowTaskModal(rowItem) | ||
|
||
ctrl.openCreateTaskModal = (task)-> | ||
$uibModal.open({ | ||
component: 'mnoCreateTaskModal' | ||
resolve: | ||
recipientFormater: () -> recipientFormater | ||
draftTask: -> | ||
angular.copy(task) if task | ||
recipients: MnoeTasks.getRecipients() | ||
createTaskCb: -> | ||
(newTask) -> | ||
createTask(newTask) | ||
updateDraftCb: -> | ||
(draftTask)-> | ||
updateTask(draftTask, draftTask).then( | ||
-> | ||
fetchTasks() | ||
) | ||
}) | ||
|
||
ctrl.openShowTaskModal = (task)-> | ||
$uibModal.open({ | ||
component: 'mnoShowTaskModal' | ||
resolve: | ||
recipientFormater: () -> recipientFormater | ||
task: -> angular.copy(task) | ||
dueDateFormat: -> 'MMMM d' | ||
# $uibModal resolve internally unwraps the promise, applying the result to currentUser. | ||
currentUser: MnoeCurrentUser.get() | ||
setReminderCb: -> | ||
(reminderDate)-> | ||
updateTask(task, reminder_date: reminderDate) | ||
onReadTaskCb: -> | ||
(hasBeenRead)-> | ||
# Only mark inbox items that have no already been read as read. | ||
return $q.resolve() if hasBeenRead || ctrl.selectedMenu.name != 'inbox' | ||
updateTask(task, read_at: moment().toDate()) | ||
markAsDoneCb: -> | ||
(isDone)-> | ||
updateTaskStatus(task, isDone) | ||
sendReplyCb: -> | ||
(reply, markAsDone)-> | ||
promise = if markAsDone then updateTaskStatus(task, markAsDone) else $q.resolve() | ||
promise.then( | ||
-> | ||
ctrl.sendReply(reply, task) | ||
) | ||
}) | ||
|
||
ctrl.sendReply = (reply, task) -> | ||
angular.merge(reply, { title: "RE: #{task.title}", orga_relation_id: task.owner_id, status: 'sent' }) | ||
createTask(reply) | ||
|
||
# Manage sorting for mnoSortableTable with angular-smart-table st-pipe. | ||
ctrl.sortableTableServerPipe = (tableState)-> | ||
ctrl.tasks.sort = updateTableSort(tableState.sort) | ||
fetchTasks(limit: ctrl.tasks.nbItems, offset: ctrl.tasks.offset, order_by: ctrl.tasks.sort) | ||
|
||
# Private | ||
|
||
recipientFormater = (orgaRel) -> | ||
orgaRel.user.name + " " + orgaRel.user.surname | ||
|
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove double empty line |
||
# Update angular-smart-table sorting parameters | ||
updateTableSort = (sortState = {}) -> | ||
sort = ctrl.tasks.sort | ||
if sortState.predicate | ||
sort = sortState.predicate | ||
if sortState.reverse | ||
sort += ".desc" | ||
else | ||
sort += ".asc" | ||
return sort | ||
|
||
fetchTasks = (params = {})-> | ||
ctrl.tasks.loading = true | ||
ctrl.mnoSortableTableFields = buildMnoSortableTable() | ||
baseParams = { limit: ctrl.tasks.nbItems, offset: ctrl.tasks.offset, order_by: ctrl.tasks.sort } | ||
params = angular.merge({}, baseParams, params, ctrl.selectedMenu.query, ctrl.selectedTasksFilter.query) | ||
MnoeTasks.get(params).then( | ||
(response)-> | ||
ctrl.tasks.list = response.data.plain() | ||
ctrl.tasks.totalItems = response.headers('x-total-count') | ||
ctrl.tasks.list | ||
(errors)-> | ||
$log.error(errors) | ||
toastr.error('mno_enterprise.templates.components.mnoe-tasks.toastr_error.get_tasks') | ||
return | ||
).finally(-> | ||
# Add delay to improve UI the rendering appearance while new data is bound. | ||
$timeout(-> | ||
ctrl.tasks.loading = false | ||
, 250) | ||
) | ||
|
||
createTask = (task)-> | ||
MnoeTasks.create(task).then( | ||
-> | ||
fetchTasks() | ||
(errors)-> | ||
$log.error(errors) | ||
toastr.error('mno_enterprise.templates.components.mnoe-tasks.toastr_error.create_task') | ||
return | ||
) | ||
|
||
updateTask = (task, params = {})-> | ||
MnoeTasks.update(task.id, params).then( | ||
(updatedTask)-> | ||
angular.extend(task, updatedTask) | ||
(errors)-> | ||
$log.error(errors) | ||
toastr.error('mno_enterprise.templates.components.mnoe-tasks.toastr_error.update_task') | ||
return | ||
) | ||
|
||
# Update Task status attribute & linked 'done' checkbox ngModel | ||
updateTaskStatus = (task, isDone)-> | ||
task.markedDone = isDone | ||
status = if isDone then 'done' else 'sent' | ||
MnoeTasks.update(task.id, status: status).then( | ||
(response)-> | ||
angular.extend(task, response) | ||
(errors)-> | ||
$log.error(errors) | ||
toastr.error('mno_enterprise.templates.components.mnoe-tasks.toastr_error.update_task') | ||
# Revert to previous state, as unchecked or checked on update fail | ||
task.markedDone = !task.markedDone | ||
return | ||
) | ||
|
||
# Creates mnoSortableTable cmp config API, building the tasks table columns | ||
buildMnoSortableTable = -> | ||
toUserNameColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.user.name'), attr: 'task_recipients[0].user.name'} | ||
toUserSurnameColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.user.surname'), attr: 'task_recipients[0].user.surname'} | ||
fromUserNameColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.user.name'), attr: 'owner.user.name'} | ||
fromUserSurnameColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.user.surname'), attr: 'owner.user.surname'} | ||
titleColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.title'), attr: 'title', class: 'ellipsis' } | ||
messageColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.message'), attr: 'message', class: 'ellipsis' } | ||
receivedAtColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.received'), attr: 'send_at', filter: expandingDateFormat } | ||
sentAtColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.sent'), attr: 'send_at', filter: expandingDateFormat } | ||
readAtColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.read'), attr: 'task_recipients[0].read_at', filter: expandingDateFormat } | ||
updatedAtColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.updated_at'), attr: 'updated_at', filter: expandingDateFormat } | ||
dueDateAtColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.due_date'), attr: 'due_date', filter: simpleDateFormat } | ||
doneColumn = { header: $translate.instant('mno_enterprise.templates.components.mnoe-tasks.tasks.column_label.done'), attr: 'status', render: taskDoneCustomField, stopPropagation: true } | ||
switch ctrl.selectedMenu.name | ||
when 'inbox' | ||
[fromUserNameColumn, fromUserSurnameColumn, titleColumn, messageColumn, receivedAtColumn, dueDateAtColumn, doneColumn] | ||
when 'sent' | ||
[toUserNameColumn, toUserSurnameColumn, titleColumn, messageColumn, sentAtColumn, readAtColumn, dueDateAtColumn, doneColumn] | ||
when 'draft' | ||
[toUserNameColumn, toUserSurnameColumn, titleColumn, messageColumn, updatedAtColumn, dueDateAtColumn] | ||
|
||
# Formats dates yesterday & beyond differently from today | ||
expandingDateFormat = (value)-> | ||
dateFormat = if moment(value) < moment().startOf('day') then 'MMMM d' else 'h:mma' | ||
$filter('date')(value, dateFormat) | ||
|
||
# A format used across multiple tasks columns | ||
simpleDateFormat = (value)-> | ||
$filter('date')(value, 'MMMM d') | ||
|
||
# Callback for building a custom "done" checkbox field in the mnoSortableTable component. | ||
taskDoneCustomField = (rowItem)-> | ||
# If a :completed_at timestamp exist, initialise frontend switch model for checkbox. | ||
rowItem.markedDone = rowItem.completed_at? | ||
switch ctrl.selectedMenu.name | ||
when 'inbox' | ||
htmlTemplate = """ | ||
<input type="checkbox" class="toggle-task-done" ng-if="rowItem.due_date" ng-model="rowItem.markedDone" ng-change="markDone(rowItem)"> | ||
<span ng-if="!rowItem.due_date">-</span> | ||
""" | ||
when 'sent' | ||
label = if rowItem.markedDone then 'completed' else 'open' | ||
htmlTemplate = "<span>#{label}</span>" | ||
{ | ||
scope: | ||
markDone: (task) -> | ||
updateTaskStatus(task, task.markedDone) | ||
template: htmlTemplate | ||
} | ||
|
||
ctrl | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<div class="topbar"> | ||
<div class="flex-row"> | ||
<button class="btn btn-primary compose" ng-click="$ctrl.openCreateTaskModal()"> | ||
<span translate>mno_enterprise.templates.components.mnoe-tasks.compose_button_text</span> | ||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i> | ||
</button> | ||
<mno-dropdown-filter-selector filters="$ctrl.tasksFilters" selected="$ctrl.selectedTasksFilter" on-select="$ctrl.onSelectFilter($event)"></mno-dropdown-filter-selector> | ||
<div class="refresh-tasks" ng-click="$ctrl.onRefreshTasks()"> | ||
<i class="fa fa-refresh fa-2x fa-fw" aria-hidden="true"></i> | ||
</div> | ||
</div> | ||
<div class="hidden-sm hidden-md hidden-lg"> | ||
<mno-tasks-menu menus="$ctrl.menus" on-select="$ctrl.onSelectMenu($event)"></mno-tasks-menu> | ||
</div> | ||
</div> | ||
<div class="main"> | ||
<div class="sidebar hidden-xs"> | ||
<mno-tasks-menu menus="$ctrl.menus" on-select="$ctrl.onSelectMenu($event)"></mno-tasks-menu> | ||
</div> | ||
<div class="tasks"> | ||
<mno-sortable-table row-collection="$ctrl.tasks.list" pipe="$ctrl.sortableTableServerPipe" fields="$ctrl.mnoSortableTableFields" row-on-click="$ctrl.sortableTableRowOnClick($event)" is-loading="$ctrl.tasks.loading"></mno-sortable-table> | ||
|
||
<div class="pagination"> | ||
<mno-pagination | ||
page="$ctrl.tasks.page" | ||
nb-items="$ctrl.tasks.nbItems" | ||
total-items="$ctrl.tasks.totalItems" | ||
on-change-cb="$ctrl.tasks.pageChangedCb(nbItems, page)" | ||
is-loading="$ctrl.tasks.loading"> | ||
</mno-pagination> | ||
</div> | ||
</div> | ||
</div> |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ng-if="isTasksEnabled"
should be on theli
element