Skip to content

Instantly share code, notes, and snippets.

@klappy
Created January 19, 2017 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save klappy/86ea3bee3fa431a0377d700905a169c2 to your computer and use it in GitHub Desktop.
Save klappy/86ea3bee3fa431a0377d700905a169c2 to your computer and use it in GitHub Desktop.
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
@klappy
Copy link
Author

klappy commented Jan 19, 2017

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment