blob: e96ec2c56f14358307ebac54875c87c6506bf10f [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
explorer = (json, state) ->
org = json.organisation
h = document.createElement('h2')
if json.tag
org.name += " (Filter: " + json.tag + ")"
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type in ['git', 'svn', 'gerrit', 'github'] and item.noclone != true
slen++
opt.text = "All " + slen + " repositories"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type in ['git', 'svn', 'gerrit', 'github'] and item.noclone != true
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)[\/?]([^\/?]+)$/i)
if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
updateWidgets('mvp', null, { source: source })
updateWidgets('comstat', null, { source: source })
updateWidgets('jsondump', null, { source: source })
)
# Unique commits label
id = Math.floor(Math.random() * 987654321).toString(16)
chk = document.createElement('input')
chk.setAttribute("type", "checkbox")
chk.setAttribute("id", id)
chk.style.marginLeft = '10px'
if globArgs.author and globArgs.author == 'true'
chk.checked = true
chk.addEventListener("change", () ->
unique = null
if this.checked
author = 'true'
globArgs['author'] = 'true'
updateWidgets('donut', null, { author: author })
updateWidgets('gauge', null, { author: author })
updateWidgets('line', null, { author: author })
updateWidgets('contacts', null, { author: author })
updateWidgets('top5', null, { author: author })
updateWidgets('factors', null, { author: author })
updateWidgets('trends', null, { author: author })
updateWidgets('relationship', null, {author: author})
updateWidgets('mvp', null, {author: author})
updateWidgets('comstat', null, { author: author })
updateWidgets('jsondump', null, { author: author })
)
state.widget.inject(chk)
label = document.createElement('label')
label.setAttribute("for", id)
label.setAttribute("title", "Check this box to authorships instead of committerships")
chk.setAttribute("title", "Check this box to authorships instead of committerships")
label.style.paddingLeft = '5px'
label.appendChild(document.createTextNode('Show authors'))
state.widget.inject(label)
sourceexplorer = (json, state) ->
org = json.organisation
h = document.createElement('h4')
if json.tag
org.name += " (Filter: " + json.tag + ")"
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
div = new HTML('div', {class: "form-group"})
list = new HTML('select', { class: "form-control"})
div.inject(list)
state.widget.inject(div)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
slen++
opt.text = "All " + slen + " sources"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if true
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)[\/?]([^\/?]+)$/i)
if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
updateWidgets('mvp', null, { source: source })
updateWidgets('comstat', null, { source: source })
updateWidgets('jsondump', null, { author: author })
)
mailexplorer = (json, state) ->
org = json.organisation
h = document.createElement('h4')
if json.tag
org.name += " (Filter: " + json.tag + ")"
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type in ['mail', 'ponymail', 'pipermail', 'hyperkitty']
slen++
opt.text = "All " + slen + " mailing lists"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type in ['mail', 'ponymail', 'pipermail', 'hyperkitty']
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)[\/?]([^\/?]+)$/i)
if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
updateWidgets('relationship', null, { source: source })
)
logexplorer = (json, state) ->
org = json.organisation
h = document.createElement('h4')
if json.tag
org.name += " (Filter: " + json.tag + ")"
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type == 'stats'
slen++
opt.text = "All " + slen + " log files"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type == 'stats'
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)[\/?]([^\/?]+)$/i)
if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('worldmap', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
)
issueexplorer = (json, state) ->
org = json.organisation
if json.tag
org.name += " (Filter: " + json.tag + ")"
h = document.createElement('h4')
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type in ['jira', 'gerrit', 'github', 'bugzilla']
slen++
opt.text = "All " + slen + " issue tracker(s)"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type in ['jira', 'gerrit', 'github', 'bugzilla']
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
n = item.sourceURL.match(/^([a-z]+:\/\/.+?)\/([-.A-Z0-9]+)$/i)
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)\s(.+)$/i)
if n and n.length == 3
ezURL = "#{n[2]} - (#{n[1]})"
else if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
)
forumexplorer = (json, state) ->
org = json.organisation
if json.tag
org.name += " (Filter: " + json.tag + ")"
h = document.createElement('h4')
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type in ['forum', 'discourse', 'askbot']
slen++
opt.text = "All " + slen + " forum(s)"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type in ['forum', 'discourse', 'askbot']
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
n = item.sourceURL.match(/^([a-z]+:\/\/.+?)\/([-.A-Z0-9]+)$/i)
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)\s(.+)$/i)
if n and n.length == 3
ezURL = "#{n[2]} - (#{n[1]})"
else if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
)
imexplorer = (json, state) ->
org = json.organisation
if json.tag
org.name += " (Filter: " + json.tag + ")"
h = document.createElement('h4')
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type in ['irc','gitter']
slen++
opt.text = "All " + slen + " messaging sources"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type in ['irc', 'gitter']
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
n = item.sourceURL.match(/^([a-z]+:\/\/.+?)\/([#\S+]+)$/i)
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)\s(.+)$/i)
if n and n.length == 3
ezURL = "#{n[2]} - (#{n[1]})"
else if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
, false)
$('select').chosen();
ciexplorer = (json, state) ->
org = json.organisation
if json.tag
org.name += " (Filter: " + json.tag + ")"
h = document.createElement('h4')
h.appendChild(document.createTextNode("Exploring " + org.name + ":"))
state.widget.inject(h, true)
list = document.createElement('select')
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
slen = 0
for item in json.sources
if item.type in ['jenkins','travis','buildbot']
slen++
opt.text = "All " + slen + " CI Services"
list.appendChild(opt)
json.sources.sort((a,b) ->
return if (a.sourceURL == b.sourceURL) then 0 else (if a.sourceURL > b.sourceURL then 1 else -1)
)
for item in json.sources
if item.type in ['jenkins','travis','buildbot']
opt = document.createElement('option')
opt.value = item.sourceID
ezURL = null
n = item.sourceURL.match(/^([a-z]+:\/\/.+?)\/([#\S+]+)$/i)
m = item.sourceURL.match(/^([a-z]+:\/\/.+?)\s(.+)$/i)
if n and n.length == 3
ezURL = "#{n[2]} - (#{n[1]})"
else if m and m.length == 3
ezURL = "#{m[2]} - (#{m[1]})"
opt.text = if ezURL then ezURL else item.sourceURL
if globArgs.source and globArgs.source == item.sourceID
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
globArgs.source = source
updateWidgets('donut', null, { source: source })
updateWidgets('gauge', null, { source: source })
updateWidgets('line', null, { source: source })
updateWidgets('contacts', null, { source: source })
updateWidgets('top5', null, { source: source })
updateWidgets('factors', null, { source: source })
updateWidgets('trends', null, { source: source })
updateWidgets('relationship', null, { source: source })
)
multiviewexplorer = (json, state) ->
org = json.organisation
h = document.createElement('h4')
h.appendChild(document.createTextNode("Select views to compare:"))
state.widget.inject(h, true)
for k in [1..3]
tName = 'tag'+k
list = document.createElement('select')
list.setAttribute("data", tName)
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
opt.text = "(None)"
list.appendChild(opt)
opt = document.createElement('option')
opt.value = "---"
opt.text = "Entire organisation"
if globArgs[tName] and globArgs[tName] == '---'
opt.selected = 'selected'
list.appendChild(opt)
if isArray(json.views)
json.views.sort((a,b) ->
return if (a.name == b.name) then 0 else (if a.name > b.name then 1 else -1)
)
for item in json.views
opt = document.createElement('option')
opt.value = item.id
opt.text = item.name
if globArgs[tName] and globArgs[tName] == item.id
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
tName = this.getAttribute("data")
globArgs[tName] = source
x = {}
x[tName] = source
updateWidgets('donut', null, x)
updateWidgets('gauge', null, x)
updateWidgets('line', null, x)
updateWidgets('contacts', null, x)
updateWidgets('top5', null, x)
updateWidgets('factors', null, x)
updateWidgets('trends', null, x)
updateWidgets('radar', null, x)
)
subFilterGlob = null
subFilter = () ->
source = subFilterGlob
if source == ""
source = null
tName = 'subfilter'
globArgs[tName] = source
x = {}
x[tName] = source
updateWidgets('sourcepicker', null, x)
updateWidgets('repopicker', null, x)
updateWidgets('issuepicker', null, x)
updateWidgets('forumpicker', null, x)
updateWidgets('mailpicker', null, x)
updateWidgets('logpicker', null, x)
updateWidgets('donut', null, x)
updateWidgets('gauge', null, x)
updateWidgets('line', null, x)
updateWidgets('contacts', null, x)
updateWidgets('top5', null, x)
updateWidgets('factors', null, x)
updateWidgets('trends', null, x)
updateWidgets('radar', null, x)
updateWidgets('widget', null, x)
updateWidgets('relationship', null, x)
updateWidgets('treemap', null, x)
updateWidgets('report', null, x)
updateWidgets('mvp', null, x)
updateWidgets('comstat', null, x)
updateWidgets('worldmap', null, x)
updateWidgets('jsondump', null, x)
$( "a" ).each( () ->
url = $(this).attr('href')
if url
m = url.match(/^(.+\?page=[-a-z]+.*?)(?:&subfilter=[^&]+)?(.*)$/)
if m
if source
$(this).attr('href', "#{m[1]}&subfilter=#{source}#{m[2]}")
else
$(this).attr('href', "#{m[1]}#{m[2]}")
)
viewexplorer = (json, state) ->
org = json.organisation
h = document.createElement('h4')
h.appendChild(document.createTextNode("Select a view to use:"))
state.widget.inject(h, true)
tName = 'view'
list = document.createElement('select')
list.setAttribute("data", tName)
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
opt.text = "(None)"
list.appendChild(opt)
opt = document.createElement('option')
opt.value = "---"
opt.text = "Entire organisation"
if globArgs[tName] and globArgs[tName] == '---'
opt.selected = 'selected'
list.appendChild(opt)
if isArray(json.views)
json.views.sort((a,b) ->
return if (a.name == b.name) then 0 else (if a.name > b.name then 1 else -1)
)
for item in json.views
opt = document.createElement('option')
opt.value = item.id
opt.text = item.name
if globArgs[tName] and globArgs[tName] == item.id
opt.selected = 'selected'
list.appendChild(opt)
ID = Math.floor(Math.random() * 987654321).toString(16)
list.setAttribute('id', ID)
$("#"+ID).chosen().change(() ->
source = this.value
if source == ""
source = null
tName = this.getAttribute("data")
globArgs[tName] = source
x = {}
x[tName] = source
updateWidgets('sourcepicker', null, x)
updateWidgets('repopicker', null, x)
updateWidgets('issuepicker', null, x)
updateWidgets('mailpicker', null, x)
updateWidgets('logpicker', null, x)
updateWidgets('donut', null, x)
updateWidgets('gauge', null, x)
updateWidgets('line', null, x)
updateWidgets('contacts', null, x)
updateWidgets('top5', null, x)
updateWidgets('factors', null, x)
updateWidgets('trends', null, x)
updateWidgets('radar', null, x)
updateWidgets('widget', null, x)
updateWidgets('relationship', null, x)
updateWidgets('treemap', null, x)
updateWidgets('report', null, x)
updateWidgets('mvp', null, x)
updateWidgets('comstat', null, x)
updateWidgets('worldmap', null, x)
updateWidgets('jsondump', null, x)
$( "a" ).each( () ->
url = $(this).attr('href')
if url
m = url.match(/^(.+\?page=[-a-z]+)(?:&view=[a-f0-9]+)?(.*)$/)
if m
if source
$(this).attr('href', "#{m[1]}&view=#{source}#{m[2]}")
else
$(this).attr('href', "#{m[1]}#{m[2]}")
)
)
# Quick filter
state.widget.inject(new HTML('br'))
i = new HTML('input', {id:'subfilter', size: 16, type: 'text', value: globArgs.subfilter, onChange: 'subFilterGlob = this.value;', placeholder: 'sub-filter'})
b = new HTML('input', {style: { marginLeft: '10px'}, class: 'btn btn-small btn-success', type: 'button', onClick: 'subFilter();', value: "sub-filter"})
rb = new HTML('input', {style: { marginLeft: '10px'}, class: 'btn btn-small btn-danger', type: 'button', onClick: 'get("subfilter").value=""; subFilterGlob=""; subFilter();', value: "reset"})
state.widget.inject(i)
state.widget.inject(b)
state.widget.inject(rb)
if globArgs.subfilter and globArgs.subfilter.length > 0
source = globArgs.subfilter
$( "a" ).each( () ->
url = $(this).attr('href')
if url
m = url.match(/^(.+\?page=[-a-z]+.*?)(?:&subfilter=[a-f0-9]+)?(.*)$/)
if m
if source
$(this).attr('href', "#{m[1]}&subfilter=#{source}#{m[2]}")
else
$(this).attr('href', "#{m[1]}#{m[2]}")
)
if globArgs.email
div = new HTML('div', {}, "Currently filtering results based on " + globArgs.email + ". - ")
div.inject(new HTML('a', { href: 'javascript:void(filterPerson(null));'}, "Reset filter"))
state.widget.inject(div)
widgetexplorer = (json, state) ->
pwidgets = {
'languages': 'Code: Language breakdown',
'commit-history-year': "Code: Commit history (past year)"
'commit-history-all': "Code: Commit history (all time)"
'commit-top5-year': "Code: top 5 committers (past year)"
'commit-top5-all': "Code: top 5 committers (all time)"
'committer-count-year': "Code: Committers/Authors per month (past year)"
'committer-count-all': "Code: Committers/Authors per month (all time)"
'commit-lines-year': "Code: Lines changed (past year)"
'commit-lines-all': "Code: Lines changed (all time)"
'sloc-map': "Code: Language Treemap"
'repo-size-year': "Repos: top 15 by lines of code"
'repo-commits-year': "Repos: top 15 by number of commits (past year)"
'repo-commits-all': "Repos: top 15 by number of commits (all time)"
'evolution': "Code: Code evolution (all time)"
'evolution-extended': "Code: Code evolution (individual languages, all time)"
'issue-count-year': "Issues: Tickets opened/closed (past year)"
'issue-count-all': "Issues: Tickets opened/closed (all time)"
'issue-operators-year': "Issues: Ticket creators/closers (past year)"
'issue-operators-all': "Issues: Ticket creators/closers (all time)"
'issue-queue-all': "Issue queue size by ticket age"
'email-count-year': "Mail: Emails/threads/authors (past year)"
'email-count-all': "Mail: Emails/threads/authors (all time)"
'im-stats-year': "Online messaging activity (past year)",
'im-stats-all': "Online messaging activity (all time)",
'compare-commits-year': "Commits by Affiliation (past year)",
'compare-commits-all': "Commits by Affiliation (all time)"
'repo-relationship-year': "Repository relationships (past year)"
'repo-relationship-2year': "Repository relationships (past two years)"
'issue-relationship-year': "Issue tracker relationships (past year)"
'issue-relationship-2year': "Issue tracker relationships (past two years)"
'log-stats-year': "Downloads/Visits (past year)"
'log-stats-all': "Downloads/Visits (all time)"
'log-map-month': "Downloads/Visits per country (past month)"
'log-map-year': "Downloads/Visits per country (past year)"
'log-map-all': "Downloads/Visits per country (all time)"
}
org = json.organisation
h = document.createElement('h4')
h.appendChild(document.createTextNode("Select a widget to use:"))
state.widget.inject(h, true)
tName = 'widget'
list = document.createElement('select')
list.setAttribute("data", tName)
state.widget.inject(list)
opt = document.createElement('option')
opt.value = ""
opt.text = "Select a widget type:"
list.appendChild(opt)
for key, value of pwidgets
opt = document.createElement('option')
opt.value = key
opt.text = value
if globArgs[tName] and globArgs[tName] == key
opt.selected = 'selected'
list.appendChild(opt)
list.addEventListener("change", () ->
source = this.value
if source == ""
source = null
tName = this.getAttribute("data")
globArgs[tName] = source
x = {}
x[tName] = source
updateWidgets('widget', null, x)
updateWidgets('donut', null, x)
updateWidgets('gauge', null, x)
updateWidgets('line', null, x)
updateWidgets('contacts', null, x)
updateWidgets('top5', null, x)
updateWidgets('factors', null, x)
updateWidgets('trends', null, x)
updateWidgets('radar', null, x)
, false)