Sha256: d565967254c9e7fb743ffe298d59613a01f3850062eee80805356c6893617b55

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

class DocumentsIndexCtrl
  @$inject = ["$scope", "$routeParams", "$location",
              "Document", "confirmationDialog", "alerts"]
  constructor: (@$scope, $routeParams, $location, @Document, @confirmationDialog, @alerts) ->
    @loading = false
    { @dbName, @collectionName } = $routeParams

    # Scope variables
    @$scope.dbName = @dbName
    @$scope.collectionName = @collectionName

    @$scope.page = parseInt($location.search().page || 1)

    # Scope methods
    @$scope.delete = (document) => @deleteWithConfirmation(document)
    @$scope.isLoading = => @loading
    @$scope.showDocuments = => @$scope.size > 0

    @$scope.$watch "page", (page) =>
      if page > 1
        $location.search("page", page)
      else
        $location.search("page", null)

      @fetchDocuments(page)

  fetchDocuments: (page = 1) ->
    @loading = true

    params = dbName: @dbName, collectionName: @collectionName, page: page
    @Document.query(params, @onLoadComplete)

  onLoadComplete: (data) =>
    @$scope.documents = data.documents
    @$scope.page = data.page
    @$scope.totalPages = data.totalPages
    @$scope.size = data.size

    @loading = false

  deleteWithConfirmation: (document) ->
    @confirmationDialog
      message: "Are you sure?"
      onOk: => @delete(document)

  delete: (data) ->
    params = dbName: @dbName, collectionName: @collectionName, id: data.id
    document = new @Document(params)
    document.$delete =>
      @alerts.info("Document #{data.id} has been deleted.")
      @fetchDocuments()

angular.module("mb")
  .controller("documents.index", DocumentsIndexCtrl)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongo_browser-0.2.5 app/assets/javascripts/app/controllers/documents/index_controller.js.coffee