angular.module('basicFoodEditor', ['ndbDatabase', 'ngResource']) .factory('BasicFood', ['$resource', '$q', function($resource, $q) { return $resource('food/basic/:id', {id: "@id"}, { 'get': { url: "food/:id", method: 'GET' }, 'query': { url: "food/basic/query/:query", method: 'GET', isArray: true }, 'save': {method: 'PUT'}, 'update': {method: 'POST'}, 'delete': { url: "food/:id", method: 'DELETE' } }); }]) .factory('Recipe', ['$resource', '$q', function($resource, $q) { return $resource('food/recipe/:id', {id: "@id"}, { 'get': { url: "food/:id", method: 'GET' }, 'query': { url: "food/recipe/query/:query", method: 'GET', isArray: true }, 'save': {method: 'PUT'}, 'update': {method: 'POST'}, 'delete': { url: "food/:id", method: 'DELETE' } }); }]) .factory('Food', ['$resource', '$q', function($resource, $q) { return $resource('food/:id', {id: "@id"}, { 'get': {method: 'GET'}, 'query': { url: "food/query/:query/", method: 'GET', isArray: true }, 'delete': {method: 'DELETE'} }); }]) // TODO: Only ever used with editBasicFood template. See if can auto link. .controller('BasicFoodEditorController', ['$scope', '$uibModalInstance', 'NDBList', 'BasicFood', 'foodData', 'ndbKey', function($scope, $uibModalInstance, NDBList, BasicFood, foodData, ndbKey) { if (foodData == null) { console.error("No food data to edit!"); return; } $scope.catagories = NDBList.get({ key: ndbKey, type: "g" }); $scope.food = foodData; $scope.submit = function(food) { food.$save($scope.close, function (err) { // TODO: Proper error handling console.error(err); }); }; $scope.delete = function(food) { food.$delete($scope.close, function (err) { // TODO: Proper error handling console.error(err); }); }; var initSubmit = function() { var submitFnName = foodData.id == null? "$save":"$update"; $scope.submit = function(food) { food[submitFnName]($scope.close, function (err) { // TODO: Proper error handling console.error(err); }); }; }; if (foodData.$promise) { foodData.$promise.then(initSubmit); } else { initSubmit(); } // TODO: // Will this controller ever be used non-modally? // Will it even work as a non-modal? $scope.close = $uibModalInstance != null? $uibModalInstance.close : null; $scope.dismiss = $uibModalInstance != null? $uibModalInstance.dismiss : null; }]);