maestrano/mnoe-admin-panel

View on GitHub
src/app/components/mnoe-dashboard-templates-list/mnoe-dashboard-templates-list.coffee

Summary

Maintainability
Test Coverage
#
# Mnoe Dashboard Templates list
#
@App.component('mnoeDashboardTemplatesList', {
  templateUrl: 'app/components/mnoe-dashboard-templates-list/mnoe-dashboard-templates-list.html',
  controller: (toastr, MnoConfirm, MnoeDashboardTemplates, MnoeAdminConfig) ->
    vm = this

    vm.datesFormat = MnoeAdminConfig.dashboardTemplatesDatesFormat()

    vm.dashboardTemplates =
      search: {}
      sort: "name"
      nbItems: 10
      page: 1
      pageChangedCb: (nbItems, page) ->
        vm.dashboardTemplates.nbItems = nbItems
        vm.dashboardTemplates.page = page
        offset = (page  - 1) * nbItems
        fetchDashboardTemplates(nbItems, offset)

    vm.callServer = (tableState) ->
      sort = updateSort(tableState.sort)
      search = updateSearch(tableState.search)
      fetchDashboardTemplates(vm.dashboardTemplates.nbItems, vm.dashboardTemplates.offset, sort, search)

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

      # Update dashboardTemplates sort
      vm.dashboardTemplates.sort = sort

    # Update searching parameters
    updateSearch = (searchingState = {}) ->
      search = {}
      if searchingState.predicateObject
        for attr, value of searchingState.predicateObject
          search[ 'where[' + attr + '.like]' ] = value + '%'

      # Update dashboardTemplates sort
      vm.dashboardTemplates.search = search

    #====================================
    # Dashboard Template deletion Modal
    #====================================
    vm.openDeleteModal = (dashboardTemplateId) ->
      modalOptions =
        type: 'danger'
        closeButtonText: 'mnoe_admin_panel.dashboard.dashboard_templates.modal.cancel'
        actionButtonText: 'mnoe_admin_panel.dashboard.dashboard_templates.modal.delete'
        headerText: 'mnoe_admin_panel.dashboard.dashboard_templates.modal.delete_dashboard'
        bodyText: 'mnoe_admin_panel.dashboard.dashboard_templates.modal.are_you_sure'

      MnoConfirm.showModal(modalOptions).then(
        ->
          MnoeDashboardTemplates.delete(dashboardTemplateId).then(
            (success) ->
              toastr.success('mnoe_admin_panel.dashboard.dashboard_templates.widget.list.toastr.deleted.successfully')
              # Reload the list after deletion
              fetchDashboardTemplates()
            (error) ->
              toastr.error('mnoe_admin_panel.dashboard.dashboard_templates.widget.list.toastr.deleted.error')
          )
        ->
          # Cancelled
      )

    #====================================
    # Retrieve Dashboard Templates
    #====================================
    fetchDashboardTemplates = (limit, offset, sort = vm.dashboardTemplates.sort, search = vm.dashboardTemplates.search) ->
      vm.dashboardTemplates.loading = true
      return MnoeDashboardTemplates.templates(limit, offset, sort, search).then(
        (response) ->
          vm.dashboardTemplates.totalItems = response.headers('x-total-count')
          vm.dashboardTemplates.list = response.data
      ).finally(-> vm.dashboardTemplates.loading = false)


    vm.toggleTemplatePublished = (id) ->
      MnoeDashboardTemplates.toggleTemplatePublished(id)

    return
})