maestrano/mnoe-admin-panel

View on GitHub
src/app/components/mnoe-audit-events-list/mnoe-audit-events-list.coffee

Summary

Maintainability
Test Coverage
#
# Mnoe Audit Events list
#
@App.component('mnoeAuditEventsList', {
  templateUrl: 'app/components/mnoe-audit-events-list/mnoe-audit-events-list.html',
  bindings: {}
  controller: ($log, MnoeAuditEvents) ->
    vm = this

    vm.events =
      search: {}
      sort: "created_at.desc"
      nbItems: 20
      offset: 0
      page: 1
      list: []
      pageChangedCb: (nbItems, page) ->
        vm.events.nbItems = nbItems
        vm.events.page = page
        vm.events.offset = (page  - 1) * nbItems
        fetchEvents(nbItems, vm.events.offset)

    # Manage sorting, search and pagination
    vm.callServer = (tableState) ->
      vm.events.sort = updateSort(tableState.sort)
      fetchEvents(vm.events.nbItems, vm.events.offset, vm.events.sort)

    # Update sorting parameters
    updateSort = (sortState = {}) ->
      sort = "created_at.desc"
      if sortState.predicate
        sort = sortState.predicate
        if sortState.reverse
          sort += ".desc"
        else
          sort += ".asc"

      return sort

    # Fetch events
    fetchEvents = (limit, offset, sort = vm.events.sort) ->
      vm.events.loading = true
      # TODO: search
      return MnoeAuditEvents.list(limit, offset, sort).then(
        (response) ->
          vm.events.totalItems = response.headers('x-total-count')
          vm.events.list = response.data
      ).finally(-> vm.events.loading = false)

    return
})