progress.service.js 1.59 KB
(function () {
    'use strict';

    angular.module('wikilibras.progress').service("progressService", ['$http', function ($http) {
        var PROJECT_CONF_URL = 'conf/app-conf.json';
        var PROJECTS_PROGRESS_ENDPOINT = '/api/projects_progress';

        function accessGoalsData(goals, projectName, param) {
            var projectGoals = goals[projectName];
            if (!projectGoals || typeof projectGoals === 'undefined') return '';
            var goal = projectGoals[param];
            if (!goal || typeof goal === 'undefined') return '';
            return goal;
        }

        return {
            getProjectsProgressData: function() {
                return $http.get(PROJECT_CONF_URL).then(function(response) {
                    var baseApiUrl = response.data.pybossa_url;
                    var responseGoals = response.data.goals;

                    return $http.get(baseApiUrl + PROJECTS_PROGRESS_ENDPOINT).then(function(response) {
                        var responseProgress = response.data;
                        angular.forEach(responseProgress, function(progress) {
                            progress['goal_n_tasks'] = accessGoalsData(responseGoals, progress.short_name,'goal_n_tasks');
                            progress['goal_deadline'] = moment(accessGoalsData(responseGoals, progress.short_name,'goal_deadline'), "DD/MM/YYYY");
                            progress['last_activity'] = moment(progress['last_activity']);
                        });
                        return responseProgress;
                    });
                });
            }
        };
    }]);
}());