module = angular.module("mb.controllers") # TODO clenup this controller, see DatabasesController class DocumentsController constructor: (@$scope, @$routeParams, @$http, @Document, @confirmationDialog, @alerts) -> @$scope.dbName = @$routeParams.dbName @$scope.collectionName = @$routeParams.collectionName @$scope.isLoading = => @$scope.loading _onLoadComplete = (data) => @$scope.loading = false @$scope.documents = data.documents @$scope.page = data.page @$scope.totalPages = data.totalPages @$scope.size = data.size @$scope.fetchDocuments = (page = 1) => return if @$scope.isLoading() # TODO workaround for doule request @$scope.loading = true params = dbName: @$scope.dbName, collectionName: @$scope.collectionName, page: page @Document.query(params, _onLoadComplete) @$scope.page = 1 @$scope.fetchDocuments() @$scope.$watch "page", (page) => @$scope.fetchDocuments(page) # TODO create resource for this call @$http.get("/api/databases/#{@$scope.dbName}/collections/#{@$scope.collectionName}/stats.json").success (data) => @$scope.collectionStats = data @$scope.delete = (document) => @confirmationDialog message: "Are you sure?" onOk: => resource = new @Document() params = dbName: @$scope.dbName, collectionName: @$scope.collectionName, id: document.id resource.$delete params, => @alerts.info("Document #{document.id} has been deleted.") @$scope.fetchDocuments() DocumentsController.$inject = ["$scope", "$routeParams", "$http", "Document", "confirmationDialog", "alerts"] module.controller "documents", DocumentsController