angular.module('flashy.FlashcardDirective', []). directive('flashcard', ['$http', '$state', '$window', function($http, $state, $window) { return { templateUrl: '/app/templates/flashcard.html', restrict: 'E', scope: { flashcard: '=flashcardObj', // flashcard-obj in parent html refresh: '&' // eval refresh in parent html }, link: function(scope, element) { /* Handles width of the card */ function refresh_width() { avail = $window.innerWidth - 17; width = Math.floor(avail / Math.floor(avail / 250) - 12); element.children().css({ width: width + 'px', height: (width * 3 / 5) + 'px', 'font-size': 100 * width / 250 + '%' }); }; angular.element($window).bind('resize', refresh_width); refresh_width(); scope.textPieces = []; scope.flashcard.mask.sort(function(a, b) { return a[0] - b[0]; }); var i = 0; scope.flashcard.mask.forEach(function(blank) { scope.textPieces.push({text: scope.flashcard.text.slice(i, blank[0])}); scope.textPieces.push({text: scope.flashcard.text.slice(blank[0], blank[1]), blank: true}); i = blank[1]; }); scope.textPieces.push({text: scope.flashcard.text.slice(i)}); /* Pulls card from feed into deck */ scope.pullCard = function(flashcard) { if ($state.current.name == 'feed') { $http.post('/api/flashcards/' + flashcard.id + '/pull/', flashcard). success(function(data) { console.log('pulled flashcard #' + flashcard.id); scope.startShrink = true; scope.refresh(); }). error(function(data) { console.log('failed to pull flashcard #' + flashcard.id); }); } }; /* Unpulls card from deck */ scope.unpullCard = function(flashcard) { if ($state.current.name == 'deck') { console.log('unpulling card...'); $http.post('/api/flashcards/' + flashcard.id + '/unpull/', flashcard). success(function(data) { console.log('card unpull success'); scope.startShrink = true; scope.refresh(); }). error(function(data) { console.log('card unpull FAILURE'); }); } }; /* Hides card from feed */ scope.hideCard = function(flashcard) { if ($state.current.name == 'feed') { $http.post('/api/flashcards/' + flashcard.id + '/hide/', flashcard). success(function(data) { console.log('card hide success'); scope.startShrink = true; scope.refresh(); }). error(function(data) { console.log('card hide FAILURE'); }); } }; } }; }]);