Created
January 19, 2017 17:59
-
-
Save klappy/86ea3bee3fa431a0377d700905a169c2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var assignments = { | |
"Hindi-ULB" : { | |
"Matthew": { | |
"Milestone 1": { | |
"assigned": [1,2,3,4,5,6,7,8,9,10,11,12,13], | |
"completed": [1,2,3,4,5] | |
}, | |
"Milestone 2": { | |
"assigned": [1,2,3,4,5], | |
"completed": [1,2] | |
}, | |
"Milestone 3": { | |
"assigned": [1,2,3], | |
"completed": [1] | |
} | |
}, | |
"Mark": { | |
"Milestone 1": { | |
"assigned": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], | |
"completed": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] | |
}, | |
"Milestone 2": { | |
"assigned": [1,2,3,4,5,6,7,8,9,10], | |
"completed": [1,2,3,4,5,6,7,8,9] | |
}, | |
"Milestone 3": { | |
"assigned": [1,2,3,4,5,6], | |
"completed": [1,2,3,4] | |
} | |
} | |
} | |
} | |
var bible = { | |
"Matthew": 28, | |
"Mark": 16 | |
} | |
function assigned(project, book, milestone) { | |
var percent = 0 | |
var assigned = assignments[project][book][milestone].assigned.length | |
var total = bible[book] | |
percent = assigned / total | |
return percent | |
} | |
function completed(project, book, milestone) { | |
var percent = 0 | |
var completed = assignments[project][book][milestone].completed.length | |
var total = bible[book] | |
percent = completed / total | |
return percent | |
} | |
function projectAssigned(project, milestone) { | |
var percent = 0, completed = 0, totalChaptersInBible = 1189 | |
var projectData = assignments[project] | |
var projectBooks = Object.keys(projectData) | |
projectBooks.forEach(function(book) { | |
completed += projectData[book][milestone].assigned.length | |
}) | |
percent = completed / totalChaptersInBible | |
return percent | |
} | |
function projectCompleted(project, milestone) { | |
var percent = 0, completed = 0, totalChaptersInBible = 1189 | |
var projectData = assignments[project] | |
var projectBooks = Object.keys(projectData) | |
projectBooks.forEach(function(book) { | |
completed += projectData[book][milestone].completed.length | |
}) | |
percent = completed / totalChaptersInBible | |
return percent | |
} | |
function status() { | |
var projects = ["Hindi-ULB"] | |
var books = Object.keys(bible) | |
var milestones = ["Milestone 1", "Milestone 2", "Milestone 3"] | |
projects.forEach(function(project) { | |
console.log("-------------------------\n","Project: ", project) | |
console.log("-------------------------") | |
milestones.forEach(function(milestone) { | |
console.log("\tMilestone: ", milestone) | |
console.log("\tAssigned: ", projectAssigned(project, milestone)) | |
console.log("\tCompleted: ", projectCompleted(project, milestone)) | |
books.forEach(function(book) { | |
console.log("\t\tBook: ", book) | |
console.log("\t\tAssigned:", assigned(project, book, milestone)) | |
console.log("\t\tCompleted:", completed(project, book, milestone)) | |
}) | |
}) | |
}) | |
} | |
status() | |
// OUTPUT: | |
// ------------------------- | |
// Project: Hindi-ULB | |
// ------------------------- | |
// Milestone: Milestone 1 | |
// Assigned: 0.024390243902439025 | |
// Completed: 0.017661900756938603 | |
// Book: Matthew | |
// Assigned: 0.4642857142857143 | |
// Completed: 0.17857142857142858 | |
// Book: Mark | |
// Assigned: 1 | |
// Completed: 1 | |
// Milestone: Milestone 2 | |
// Assigned: 0.012615643397813289 | |
// Completed: 0.009251471825063078 | |
// Book: Matthew | |
// Assigned: 0.17857142857142858 | |
// Completed: 0.07142857142857142 | |
// Book: Mark | |
// Assigned: 0.625 | |
// Completed: 0.5625 | |
// Milestone: Milestone 3 | |
// Assigned: 0.007569386038687973 | |
// Completed: 0.004205214465937763 | |
// Book: Matthew | |
// Assigned: 0.10714285714285714 | |
// Completed: 0.03571428571428571 | |
// Book: Mark | |
// Assigned: 0.375 | |
// Completed: 0.25 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I've worked the data and functions to change the nesting of project/milestone/book to project/book/milestone and have found no advantages one way or another, I could see either making sense for the data structure. It's easy to swap them out if needed.