ui/js/coffee/widget_report.coffee (141 lines of code) (raw):

rcollate = (list) -> out = "" while list.length > 2 line = list.shift() out += line + ", " if list.length > 1 out += list[0] + " and " + list[1] else return list[0] return out report = (json, state) -> div = document.createElement('div') state.widget.inject(div, true) # Get + write the age of the project, if possible if json.projectAge == 0 app(div, mk('h3', {}, "We were unable to determine the age of this project, sorry!")) return ageInMonths = parseInt(json.projectAge / (86400*30.3)) ageInYears = parseInt(json.projectAge / (86400*365.25)) age = mk('h3', {}, "Estimated age of project: #{ageInMonths} months (#{ageInYears} years)") app(div, age) # Commit rate trends if ageInYears >= 1 title = mk('h2', {}, "Long range trends:") app(div, title) # Commits stitle = mk('h3', {}, "Commits:") carr = [] # 5 year commit trend if ageInYears >= 5 pct = json.commits['5'].angle rtext = "a rapid decline in commits in the long term (5+ years)" if pct > -50 rtext = "a moderate decline in commits in the long term (5+ years)" if pct > -30 rtext = "a slow decline in commits in the long term (5+ years)" if pct > -10 rtext = "a steady rate of commits in the long term (5+ years)" if pct > 10 rtext = "a slow increase in commits in the long term (5+ years)" if pct > 30 rtext = "a moderate increase in commits in the long term (5+ years)" if pct > 50 rtext = "a strong increase in commits in the long term (5+ years)" carr.push(rtext) # 2 year commit trend if ageInYears >= 2 pct = json.commits['2'].angle rtext = "a rapid decline in commits in the medium term (2 years)" if pct > -50 rtext = "a moderate decline in commits in the medium term (2 years)" if pct > -30 rtext = "a slow decline in commits in the medium term (2 years)" if pct > -10 rtext = "a steady rate of commits in the medium term (2 years)" if pct > 10 rtext = "a slow increase in commits in the medium term (2 years)" if pct > 30 rtext = "a moderate increase in commits in the medium term (2 years)" if pct > 50 rtext = "a strong increase in commits in the medium term (2 years)" carr.push(rtext) # 1 year commit trend if ageInYears >= 1 pct = json.commits['1'].angle rtext = "a rapid decline in commits in the short term (past year)" if pct > -50 rtext = "a moderate decline in commits in the short term (past year)" if pct > -30 rtext = "a slow decline in commits in the short term (past year)" if pct > -10 rtext = "a steady rate of commits in the short term (past year)" if pct > 10 rtext = "a slow increase in commits in the short term (past year)" if pct > 30 rtext = "a moderate increase in commits in the short term (past year)" if pct > 50 rtext = "a strong increase in commits in the short term (past year)" carr.push(rtext) p = mk('p', {}, "This project has experienced " + rcollate(carr) + ".") app(div, stitle) app(div, p) # Contributors stitle = mk('h3', {}, "Contributors:") carr = [] # 5 year commit trend if ageInYears >= 5 pct = json.authors['5'].authors.angle rtext = "a rapid decline in contributors in the long term (5+ years)" if pct > -50 rtext = "a moderate decline in contributors in the long term (5+ years)" if pct > -30 rtext = "a slow decline in contributors in the long term (5+ years)" if pct > -10 rtext = "a steady rate of contributors in the long term (5+ years)" if pct > 10 rtext = "a slow increase in contributors in the long term (5+ years)" if pct > 30 rtext = "a moderate increase in contributors in the long term (5+ years)" if pct > 50 rtext = "a strong increase in contributors in the long term (5+ years)" carr.push(rtext) # 2 year commit trend if ageInYears >= 2 pct = json.authors['2'].authors.angle rtext = "a rapid decline in contributors in the medium term (2 years)" if pct > -50 rtext = "a moderate decline in contributors in the medium term (2 years)" if pct > -30 rtext = "a slow decline in contributors in the medium term (2 years)" if pct > -10 rtext = "a steady rate of contributors in the medium term (2 years)" if pct > 10 rtext = "a slow increase in contributors in the medium term (2 years)" if pct > 30 rtext = "a moderate increase in contributors in the medium term (2 years)" if pct > 50 rtext = "a strong increase in contributors in the medium term (2 years)" carr.push(rtext) # 1 year commit trend if ageInYears >= 1 pct = json.authors['1'].authors.angle rtext = "a rapid decline in contributors in the short term (past year)" if pct > -50 rtext = "a moderate decline in contributors in the short term (past year)" if pct > -30 rtext = "a slow decline in contributors in the short term (past year)" if pct > -10 rtext = "a steady rate of contributors in the short term (past year)" if pct > 10 rtext = "a slow increase in contributors in the short term (past year)" if pct > 30 rtext = "a moderate increase in contributors in the short term (past year)" if pct > 50 rtext = "a strong increase in contributors in the short term (past year)" carr.push(rtext) active = parseInt(json.authors['1'].authors.average) carr.push("currently has #{active} active contributors") p = mk('p', {}, "The project has had " + rcollate(carr) + ".") app(div, stitle) app(div, p)