Merge pull request #23 from teresita-guerrero/issue20

Dead stores should be removed on userStory.js
Fixes #20
This commit is contained in:
Arturo Nunez 2017-02-17 10:37:04 -06:00 committed by GitHub
commit dbafcfc7e2
1 changed files with 97 additions and 110 deletions

View File

@ -2,11 +2,8 @@ module.exports = function(UserStory) {
var fs = require("fs");
var route = '../tracker';
var app = require('../../server/server');
var http = require("http");
var https = require('https');
var markdown = require("markdown").markdown;
var async = require("async");
var htmlparser = require("htmlparser");
var cheerio = require('cheerio');
var xssFilters = require("xss-filters");
const SPEC_URL = "http://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/";
@ -30,7 +27,6 @@ module.exports = function(UserStory) {
//filter by Id
var file = userStories.filter(function(item){
// VALIDATE IF A VALID ID IS COMING!
console.log("my id",xssFilters.inHTMLData(id));
return item.id == xssFilters.inHTMLData(id);
})
@ -46,20 +42,16 @@ module.exports = function(UserStory) {
total: 0
}
userStory.tasks.forEach(function (taskName, index, array) {
userStory.tasks.forEach(function (taskName) {
var task = userStory.tasks_status[taskName];
console.log("La tarea es:", task);
task.projects.forEach(function (projectName, index, array) {
console.log("The project name is, ", projectName);
task.projects.forEach(function (projectName) {
//VALIDATE projectName EXISTS
var blueprints = task.projects_status[xssFilters.inHTMLData(projectName)].blueprints;
var blueprintNames = Object.keys(blueprints);
blueprintNames.forEach(function (blueprintName, index, array) {
console.log("single blueprint: ",blueprintName);
console.log("el nombre del blue print es: ", blueprints[blueprintName]);
blueprintNames.forEach(function (blueprintName) {
// VALIDATE PROPERLY if this statement is not true
if (blueprints[xssFilters.inHTMLData(blueprintName)] == 'completed')
blueprintsResume.completed = blueprintsResume.completed + 1;
@ -82,7 +74,7 @@ module.exports = function(UserStory) {
var Patch = app.models.Patch;
var lastUpdate = '';
Patch.latestUpdate(userStory.source, function (err, response, next) {
Patch.latestUpdate(userStory.source, function (err, response) {
response = JSON.parse(response.substring(5));
if(response.length > 0){
@ -100,99 +92,7 @@ module.exports = function(UserStory) {
}
// Parse data from userStory
var parseUserStory = function(userStory, callback){
async.waterfall([function(cb){
getLastUpdated(userStory, cb)
},function(lastUpdated, cb){
userStory.updatedOn = lastUpdated;
userStory.showDetailedUri = SPEC_URL + userStory.source + '.html';
userStory.createdOn = userStory.date;
userStory.completed = getbluePrintResume(userStory);
cb(null, userStory);
},function(userStory, cb){
var tasksName = userStory.tasks;
var tasks = userStory.tasks_status;
parseTasks(userStory, tasksName, tasks, cb)
}],function(err,userStory){
callback(null, userStory);
})
}
//??
var parseTasks = function(userStory, tasksNames, tasks, callback) { //get tasks
var tmpTasks = {};
async.each(tasksNames, function(taskName, callbackInner) {
parseTask(tasks[taskName], function(err, parsedTask){
tmpTasks[taskName] = parsedTask;
var tmpProjects = {};
async.each(tmpTasks[taskName].projects, function(projectName, callbackInner2) {
parseProject(tmpTasks[taskName].projects_status[projectName], function(err, parsedProject){
tmpProjects[projectName] = parsedProject;
//Bluprints
var blueprintNames = Object.keys(tmpProjects[projectName].blueprints);
async.map(blueprintNames, function(blueprintName, callbackInner3) {
parseBlueprint(tmpProjects[projectName].blueprints[blueprintName], blueprintName, projectName, function(err, parsedBlueprint){
// tmpProjects[projectName].blueprints[blueprintName] = parsedBlueprint
callbackInner3(null, parsedBlueprint)
})
}, function(err, blueprints) {
tmpProjects[projectName].blueprints = blueprints;
var project = {};
project[projectName] = tmpProjects[projectName];
callbackInner2(null)
});
//fin blueprints
})
}, function(err) {
tmpTasks[taskName].projects_status = tmpProjects;
callbackInner(null)
});
})
}, function(err) {
userStory.tasks = tasksNames;
userStory.tasks_status = tmpTasks;
//userStory.percentageComplete = getPercentage(blueprintsResume)
callback(null, userStory);
});
}
//?
//getting task description
var getTaskDescription = function(task, callback){
var Rst = app.models.Rst;
@ -204,8 +104,9 @@ module.exports = function(UserStory) {
var $ = cheerio.load(html_content);
var index = null;
var description;
//Find the title
var description = $('h1').each(function(i, elem) {
$('h1').each(function(i, elem) {
if(elem.children[0].data == 'Problem description'){
index = i;
}
@ -223,13 +124,14 @@ module.exports = function(UserStory) {
})
}
//?
var getUriTask = function(spec){
var base = 'https://github.com/openstack/openstack-specs/blob/master/specs/';
return base + spec + '.rst';
}
//?
//parsing task
var parseTask = function(originalTask, callback){
getTaskDescription(originalTask, function(err, description){
@ -239,8 +141,8 @@ module.exports = function(UserStory) {
})
}
//?
//parsing project
var parseProject = function(originalProject, callback){
var urlArray = originalProject.spec.split('/');
@ -250,7 +152,7 @@ module.exports = function(UserStory) {
callback(null, originalProject)
}
//?
//parsing blueprints
var parseBlueprint = function(originalBlueprint, blueprintName, projectName, callback){
var Blueprint = app.models.Blueprint;
var Patch = app.models.Patch;
@ -292,8 +194,93 @@ module.exports = function(UserStory) {
}
//parsing tasks
var parseTasks = function(userStory, tasksNames, tasks, callback) { //get tasks
var tmpTasks = {};
async.each(tasksNames, function(taskName, callbackInner) {
parseTask(tasks[taskName], function(err, parsedTask){
tmpTasks[taskName] = parsedTask;
var tmpProjects = {};
async.each(tmpTasks[taskName].projects, function(projectName, callbackInner2) {
parseProject(tmpTasks[taskName].projects_status[projectName], function(err, parsedProject){
tmpProjects[projectName] = parsedProject;
//Bluprints
var blueprintNames = Object.keys(tmpProjects[projectName].blueprints);
async.map(blueprintNames, function(blueprintName, callbackInner3) {
parseBlueprint(tmpProjects[projectName].blueprints[blueprintName], blueprintName, projectName, function(err, parsedBlueprint){
// tmpProjects[projectName].blueprints[blueprintName] = parsedBlueprint
callbackInner3(null, parsedBlueprint)
})
}, function(err, blueprints) {
tmpProjects[projectName].blueprints = blueprints;
var project = {};
project[projectName] = tmpProjects[projectName];
callbackInner2(null)
});
//fin blueprints
})
}, function() {
tmpTasks[taskName].projects_status = tmpProjects;
callbackInner(null)
});
})
}, function() {
userStory.tasks = tasksNames;
userStory.tasks_status = tmpTasks;
//userStory.percentageComplete = getPercentage(blueprintsResume)
callback(null, userStory);
});
}
// Parse data from userStory
var parseUserStory = function(userStory, callback){
async.waterfall([function(cb){
getLastUpdated(userStory, cb)
},function(lastUpdated, cb){
userStory.updatedOn = lastUpdated;
userStory.showDetailedUri = SPEC_URL + userStory.source + '.html';
userStory.createdOn = userStory.date;
userStory.completed = getbluePrintResume(userStory);
cb(null, userStory);
},function(userStory, cb){
var tasksName = userStory.tasks;
var tasks = userStory.tasks_status;
parseTasks(userStory, tasksName, tasks, cb)
}],function(err,userStory){
callback(null, userStory);
})
}
//?
UserStory.on('attached',function(){
UserStory.findById = function(id, params, cb){