You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by se...@apache.org on 2018/07/02 15:46:40 UTC
[whimsy] branch master updated: General UI tweaks
This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new 8962630 General UI tweaks
8962630 is described below
commit 8962630c1d363753dca12c058be1e14bd28d917f
Author: Sebb <se...@apache.org>
AuthorDate: Mon Jul 2 16:46:38 2018 +0100
General UI tweaks
Use a single hash for all the data
Use display_name where relevant
Tweak Ponymail URLs
---
www/project/icla/main.rb | 43 +++++++------------
www/project/icla/views/app.html.rb | 2 +-
www/project/icla/views/pages/invite.js.rb | 69 ++++++++++++++++++++-----------
3 files changed, 61 insertions(+), 53 deletions(-)
diff --git a/www/project/icla/main.rb b/www/project/icla/main.rb
index 5229ce2..3b26efd 100755
--- a/www/project/icla/main.rb
+++ b/www/project/icla/main.rb
@@ -18,25 +18,21 @@ disable :logging # suppress log of requests to stderr/error.log
helpers do
def projectsForUser(userName)
- pmcs = ASF::Committee.pmcs.map(&:name).sort
- ppmcs = ASF::Podling.list.
- select {|podling| podling.status == 'current'}.
- map(&:name).sort
user = ASF::Person.find(userName)
committees = user.committees.map(&:name)
- pmcs.select! {|pmc| committees.include?(pmc)}
- ppmcs.select! {|ppmc|
- committees.include?('incubator') |
- committees.include?(ppmc)}
- # mailList is a hash where the key is the name of the PMC/PPMC and
- # the value is the name of the mail list for the committee
- mailList = pmcs.map{|pmc| [pmc, ASF::Committee.find(pmc).mail_list]}.to_h.
- merge(ppmcs.map{|ppmc| [ppmc, ASF::Podling.find(ppmc).mail_list]}.to_h)
- hash = {
- 'pmcs' => pmcs,
- 'ppmcs' => ppmcs,
- 'pmcmail' => mailList
- }
+
+ # allData is a hash where the key is the name of the PMC/PPMC and
+ # the value is a hash of the data for the PMC/PPMC
+ pmcData = ASF::Committee.pmcs. # get PMCs
+ select {|pmc| committees.include?(pmc.name)}. # keep the ones relevant to the user
+ sort_by{|p| p.name}.
+ map{|p| [p.name, {pmc: true, display_name: p.display_name, mail_list: p.mail_list}]}.to_h # convert to hash of data items
+ ppmcData =
+ ASF::Podling.list.select {|podling| podling.status == 'current'}. # get the podlings
+ select {|p| committees.include?('incubator') || committees.include?(p.name)}. # keep the ones relevant to the user
+ sort_by{|p| p.name}.
+ map{|p| [p.name, {pmc: false, display_name: p.display_name, mail_list: p.mail_list}]}.to_h # convert to hash of data items
+ pmcData.merge(ppmcData)
end
def loadProgress(token)
if @token
@@ -99,10 +95,7 @@ get '/invite' do
@user = env.user
@member = getMember(@user)
# get a complete list of PMC and PPMC names and mail lists
- projects = projectsForUser(@member)
- @pmcs = projects['pmcs']
- @ppmcs = projects['ppmcs']
- @pmc_mail = projects['pmcmail']
+ @allData = projectsForUser(@member)
@cssmtime = File.mtime('public/css/icla.css').to_i
@appmtime = Wunderbar::Asset.convert("#{settings.views}/app.js.rb").mtime.to_i
@@ -122,9 +115,7 @@ get '/discuss' do
loadProgress(@token) if @token
# not needed for this form but required for other forms
- @pmcs = []
- @ppmcs = []
- @pmc_mail = {}
+ @allData = {}
@cssmtime = File.mtime('public/css/icla.css').to_i
@appmtime = Wunderbar::Asset.convert("#{settings.views}/app.js.rb").mtime.to_i
@@ -143,9 +134,7 @@ get '/vote' do
loadProgress(@token) if @token
# not needed for this form but required for other forms
- @pmcs = []
- @ppmcs = []
- @pmc_mail = {}
+ @allData = {}
@cssmtime = File.mtime('public/css/icla.css').to_i
@appmtime = Wunderbar::Asset.convert("#{settings.views}/app.js.rb").mtime.to_i
diff --git a/www/project/icla/views/app.html.rb b/www/project/icla/views/app.html.rb
index 8f966ea..c9887ce 100755
--- a/www/project/icla/views/app.html.rb
+++ b/www/project/icla/views/app.html.rb
@@ -373,7 +373,7 @@ _html lang: 'en', _width: '80' do
_script src: "app.js?#{@appmtime}"
_.render '#main' do
- _Main data: {pmcs: @pmcs, ppmcs: @ppmcs, pmc_mail: @pmc_mail,
+ _Main data: {allData: @allData,
token: @token, progress: @progress, user: @user, member: @member,
debug: @debug},
view: @view
diff --git a/www/project/icla/views/pages/invite.js.rb b/www/project/icla/views/pages/invite.js.rb
index 49d3c46..31bfdd1 100644
--- a/www/project/icla/views/pages/invite.js.rb
+++ b/www/project/icla/views/pages/invite.js.rb
@@ -18,7 +18,6 @@ class Invite < Vue
@pmcOrPpmc = ''
@phasePrefix = ''
@member = Server.data.member
- @pmc_mail = Server.data.pmc_mail
@user = Server.data.user
# initialize conditional text
@@ -89,12 +88,12 @@ class Invite < Vue
_label "PMC/PPMC (required)", for: 'pmc'
_select.form_control.pmc! required: true, onChange: self.setPMC, value: @pmc do
_option ''
- Server.data.pmcs.each do |pmc|
- _option pmc
+ Server.data.allData.each_key do |pmc|
+ _option pmc if Server.data.allData[pmc]['pmc']
end
_option '---'
- Server.data.ppmcs.each do |ppmc|
- _option ppmc
+ Server.data.allData.each_key do |ppmc|
+ _option ppmc unless Server.data.allData[ppmc]['pmc']
end
end
end
@@ -130,7 +129,7 @@ class Invite < Vue
end
if @showPMCVoteLink or @showPPMCVoteLink
_ 'Navigate to '
- _a "ponymail", href: "https://lists.apache.org"
+ _a "Ponymail", href: "https://lists.apache.org/list.html?private@#{@mail_list}.apache.org:lte=1M:[VOTE][RESULT]", target: _blank
_ ', select the appropriate message, right-click PermaLink, copy link'
_ ' to the clip-board, and paste the link here.'
_p
@@ -163,6 +162,12 @@ class Invite < Vue
}
end
if @showPMCNoticeLink or @showPPMCNoticeLink
+ _ 'Navigate to '
+ _a "Ponymail", href: "https://lists.apache.org/list.html?board@apache.org:lte=1M:NOTICE%20for%20#{@display_name}", target: _blank
+ _ ', select the appropriate message, right-click PermaLink, copy link'
+ _ ' to the clip-board, and paste the link here.'
+ _p
+
_div.form_group do
_label "NOTICE link", for: 'noticelink'
_input.form_control.noticelink! type: 'url', onChange: self.setNoticeLink,
@@ -181,8 +186,8 @@ class Invite < Vue
onClick: -> {@role = :committer;
@disabled = false
@subject = @subjectPhase + ' Invite ' + @iclaname +
- ' to become a committer for ' + @pmc
- @proposalText = 'I propose to invite ' + @iclaname +
+ ' to become a committer for ' + @display_name
+ @proposalText = 'I propose we invite ' + @iclaname +
' to become a committer.'
@voteProposalText = @proposalText + "\nHere is my +1."
}
@@ -195,8 +200,8 @@ class Invite < Vue
onClick: -> {@role = :pmc
@disabled = false
@subject = @subjectPhase + ' Invite ' + @iclaname +
- ' to become committer and ' + @pmcOrPPMC + ' member for ' + @pmc
- @proposalText = 'I propose to invite ' + @iclaname +
+ ' to become committer and ' + @pmcOrPPMC + ' member for ' + @display_name
+ @proposalText = 'I propose we invite ' + @iclaname +
' to become a committer and ' + @pmcOrPPMC + ' member.'
@voteProposalText = @proposalText + ' Here is my +1.'
}
@@ -210,8 +215,8 @@ class Invite < Vue
onClick: -> {@role = :invite
@disabled = false
@subject = @subjectPhase + ' Invite ' + @iclaname +
- ' to submit an ICLA for ' + @pmc
- @proposalText = 'I propose to invite ' + @iclaname +
+ ' to submit an ICLA for ' + @display_name
+ @proposalText = 'I propose we invite ' + @iclaname +
' to submit an ICLA.'
}
_span @phasePrefix +
@@ -223,7 +228,7 @@ class Invite < Vue
end
if @showDiscussFrame
_div 'From: ' + @member
- _div 'To: private@' + @pmc_mail[@pmc] + '.apache.org'
+ _div 'To: private@' + @mail_list + '.apache.org'
_div 'Subject: ' + @subject
_p
_span @proposalText
@@ -235,7 +240,7 @@ class Invite < Vue
end
if @showVoteFrame
_div 'From: ' + @member
- _div 'To: private@' + @pmc_mail[@pmc] + '.apache.org'
+ _div 'To: private@' + @mail_list + '.apache.org'
_div 'Subject: ' + @subject
_p
_span @voteProposalText
@@ -394,11 +399,25 @@ def setIclaName(event)
def setPMC(event)
@pmc = event.target.value
- @pmcOrPPMC = (Server.data.pmcs.include? @pmc)? 'PMC' : 'PPMC'
- @phase = :discuss
- @subject = ''
- @showPhaseFrame = true
- @showRoleFrame = true
+ if Server.data.allData[@pmc]
+ @isPMC = Server.data.allData[@pmc]['pmc']
+ @pmcOrPPMC = @isPMC ? 'PMC' : 'PPMC'
+ @phase = :discuss
+ @subject = ''
+ @showPhaseFrame = true
+ @showRoleFrame = true
+ @mail_list = Server.data.allData[@pmc]['mail_list']
+ @display_name = Server.data.allData[@pmc]['display_name']
+ else
+ @isPMC = false # true, but not the whole story!
+ @pmcOrPPMC = '---'
+ @phase = :discuss
+ @subject = ''
+ @showPhaseFrame = false
+ @showRoleFrame = false
+ @mail_list = '---'
+ @display_name = '---'
+ end
self.checkValidity()
selectDiscuss()
end
@@ -457,10 +476,10 @@ def setIclaName(event)
@showDiscussFrame = false;
@showVoteFrame = false;
@showRoleFrame = false;
- @showPMCVoteLink = Server.data.pmcs.include? @pmc
- @showPPMCVoteLink = Server.data.ppmcs.include? @pmc
- @showPMCNoticeLink = Server.data.pmcs.include? @pmc
- @showPPMCNoticeLink = Server.data.ppmcs.include? @pmc
+ @showPMCVoteLink = @isPMC
+ @showPPMCVoteLink = @isPMC
+ @showPMCNoticeLink = @isPMC
+ @showPPMCNoticeLink = @isPMC
@showVoteErrorMessage = false;
@showNoticeErrorMessage = false;
checkVoteLink() if document.getElementById('votelink');
@@ -484,7 +503,7 @@ def setIclaName(event)
a message via lists.apache.org"
@showVoteErrorMessage = true;
end
- if not @votelink=~ /.*private\.#{@pmc_mail[@pmc]}(\.incubator)?\.apache\.org.*/
+ if not @votelink=~ /.*private\.#{@mail_list}(\.incubator)?\.apache\.org.*/
@voteErrorMessage = "Error: Please link to\
the [RESULT][VOTE] message sent to the private list."
@showVoteErrorMessage = true;
@@ -511,7 +530,7 @@ def setIclaName(event)
a message via lists.apache.org"
@showNoticeErrorMessage = true;
end
- if @showPMCNoticeLink and not @noticelink=~ /.*board\@apache\.org.*/
+ if @showPMCNoticeLink and not @noticelink=~ /.*board\.apache\.org.*/
@noticeErrorMessage = "Error: please link to\
the NOTICE message sent to the board list."
@showNoticeErrorMessage = true;