History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: QB-3555
Type: Improvement Improvement
Status: Open Open
Priority: Major Major
Assignee: Robin Shen
Reporter: Robin Shen
Votes: 2
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
QuickBuild

An option in CKEditor to edit plain content instead of disable html editor for whole site

Created: 24/Apr/20 12:16 AM   Updated: 24/Apr/20 11:21 AM
Component/s: None
Affects Version/s: 10.0.10
Fix Version/s: None

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
File Attachments: None
Image Attachments:

1. builds_list.jpg
(130 kb)


 All   Comments   Work Log   Change History      Sort Order:
Jonasz Wojcik [24/Apr/20 09:14 AM]
Thanks,
That will help a lot with the dashboard gadgets

exp: in CKEEditor ${util.getCalendar().getShortYear()} is not translate to 20.
it was useful for adding custom build list based on system.getBuildManager()


Jonasz Wojcik [24/Apr/20 11:10 AM]
groovy code example:

<pre><br>&dollar;&lcub;groovy:<br><br>configuration_id = 2;<br>number_of_builds = 10;<br>qb_link = &#x27;http://quickbuild.domain.com&#x27;;&lt;br&gt;&lt;br&gt;configuration_path = system.getConfigurationManager().get(configuration_id).getPathName()<br>if (system.getConfiguration(configuration_path) != null) &lcub;<br> def build_list = &#x27;&lt;div class=&quot;round-box build-history&quot;&gt;&lt;table class=&quot;records builds&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;headers&quot;&gt;&#x27;<br> <br> build_list += &#x27;&lt;th class=&quot;id&quot;&gt;&lt;span&gt;Id&lt;/span&gt;&lt;/th&gt;&#x27;<br> build_list += &#x27;&lt;th&gt;&lt;span&gt;Version&lt;/span&gt;&lt;/th&gt;&#x27;<br> build_list += &#x27;&lt;th&gt;&lt;span&gt;Configuration&lt;/span&gt;&lt;/th&gt;&#x27;<br> build_list += &#x27;&lt;th&gt;&lt;span&gt;Begin Date&lt;/span&gt;&lt;/th&gt;&#x27;<br> build_list += &#x27;&lt;th class=&quot;id&quot;&gt;&lt;span&gt;Duration&lt;/span&gt;&lt;/th&gt;&#x27;<br> build_list += &#x27;&lt;th&gt;&lt;span&gt;Triggered By&lt;/span&gt;&lt;/th&gt;&#x27;<br> <br> build_list += &#x27;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#x27;<br> def prev_build = system.getConfiguration(configuration_path).getLatestBuild()<br> def triggered_by = &#x27;&#x27;<br> def image = &#x27;&#x27;<br> def status_class = &#x27;&#x27;<br> def duration = &#x27;&#x27;<br> def i = 0<br> while(i&lt;number_of_builds)&lcub;<br> if(prev_build == null) &lcub;break;\&rcub;<br> if( i % 2) &lcub;<br> build_list += &#x27;&lt;tr class=&quot;odd&quot;&gt;&#x27; \&rcub;<br> else &lcub; <br> build_list += &#x27;&lt;tr class=&quot;even&quot;&gt;&#x27; <br> \&rcub;<br> if(prev_build.isScheduled())&lcub;<br> triggered_by = &#x27;&lt;b&gt;Scheduler&lt;/b&gt;&#x27; \&rcub; <br> else&lcub;<br> triggered_by = prev_build.getRequester().getDisplayName() <br> \&rcub; <br> if(prev_build.isRunning())&lcub; <br> duration = &#x27;&lt;b&gt;running...&lt;/b&gt;&#x27;<br> image = &#x27;spin-ball&#x27;<br> status_class = &#x27;running&#x27; \&rcub; <br> else&lcub; <br> duration = util.formatDuration(prev_build.getDuration()) <br> switch (prev_build.getStatus()) &lcub; <br> case &#x27;SUCCESSFUL&#x27;: <br> image = &#x27;green-ball&#x27;<br> status_class = &#x27;successful&#x27;<br> break <br> case &#x27;FAILED&#x27;: <br> image = &#x27;red-ball&#x27;<br> status_class = &#x27;failed&#x27;<br> break<br> case &#x27;RECOMMENDED&#x27;:<br> image = &#x27;star&#x27;<br> status_class = &#x27;recommended&#x27;<br> break <br> case &#x27;CANCELLED&#x27;:<br> image = &#x27;cancelled&#x27;<br> status_class = &#x27;cancelled&#x27;<br> break<br> case &#x27;TIMEOUT&#x27;:<br> image = &#x27;timeout&#x27;<br> status_class = &#x27;timeout&#x27;<br> break<br> default: <br> result = &#x27;green-ball&#x27;<br> status_class = &#x27;successful&#x27; <br> \&rcub; <br> \&rcub; <br> build_list += &#x27;&lt;td class=&quot;id&quot;&gt;&lt;span&gt;&#x27; + prev_build.getId() + &#x27;&lt;/span&gt;&lt;/td&gt;&#x27; <br> build_list += &#x27;&lt;td&gt;&lt;span&gt;&lt;div class=&quot;build-info&quot;&gt;&lt;img src=&quot;&#x27; + qb_link + &#x27;/images/&#x27; + image + &#x27;.gif&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;&#x27; + qb_link + &#x27;/build/&#x27; + prev_build.getId() + &#x27;&quot; target=&quot;new&quot; class=&quot;build-status &#x27; + status_class + &#x27; maskable&quot;&gt;&#x27; + prev_build.getVersion() +&#x27;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/td&gt;&#x27; <br> build_list += &#x27;&lt;td&gt;&lt;span&gt;&lt;a href=&quot;&#x27; + qb_link + &#x27;/&#x27; + configuration_id + &#x27;&quot; target=&quot;new&quot;&gt;&#x27; + configuration_path + &#x27;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&#x27; <br> build_list += &#x27;&lt;td class=&quot;id&quot;&gt;&lt;span&gt;&#x27; + util.formatDate(prev_build.getBeginDate()) + &#x27;&lt;/span&gt;&lt;/td&gt;&#x27; <br> build_list += &#x27;&lt;td&gt;&lt;span&gt;&#x27; + duration +&#x27;&lt;/span&gt;&lt;/td&gt;&#x27;<br> build_list += &#x27;&lt;td&gt;&lt;span&gt;&#x27; + triggered_by + &#x27;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&#x27; <br> <br> prev_build = system.getBuildManager().getPrevious(prev_build) <br> i = i+1 <br> \&rcub; <br> build_list += &#x27;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#x27; <br> <br> build_list <br>\&rcub;<br>&rcub;<br></pre>

Jonasz Wojcik [24/Apr/20 11:11 AM]
${groovy:

configuration_id = 2;
number_of_builds = 10;
qb_link = 'http://quickbuild.comain.com';

configuration_path = system.getConfigurationManager().get(configuration_id).getPathName()
if (system.getConfiguration(configuration_path) != null) {
  def build_list = '<div class="round-box build-history"><table class="records builds"><thead><tr class="headers">'
  
  build_list += '<th class="id"><span>Id</span></th>'
  build_list += '<th><span>Version</span></th>'
  build_list += '<th><span>Configuration</span></th>'
  build_list += '<th><span>Begin Date</span></th>'
  build_list += '<th class="id"><span>Duration</span></th>'
  build_list += '<th><span>Triggered By</span></th>'
  
  build_list += '</tr></thead><tbody>'
  def prev_build = system.getConfiguration(configuration_path).getLatestBuild()
  def triggered_by = ''
  def image = ''
  def status_class = ''
  def duration = ''
  def i = 0
  while(i<number_of_builds){
   if(prev_build == null) {break;\}
   if( i % 2) {
    build_list += '<tr class="odd">' \}
   else {
    build_list += '<tr class="even">'
   \}
   if(prev_build.isScheduled()){
    triggered_by = '<b>Scheduler</b>' \}
   else{
    triggered_by = prev_build.getRequester().getDisplayName()
   \}
   if(prev_build.isRunning()){
    duration = '<b>running...</b>'
    image = 'spin-ball'
    status_class = 'running' \}
   else{
    duration = util.formatDuration(prev_build.getDuration())
    switch (prev_build.getStatus()) {
     case 'SUCCESSFUL':
      image = 'green-ball'
      status_class = 'successful'
      break
     case 'FAILED':
      image = 'red-ball'
      status_class = 'failed'
      break
     case 'RECOMMENDED':
      image = 'star'
      status_class = 'recommended'
      break
     case 'CANCELLED':
      image = 'cancelled'
      status_class = 'cancelled'
      break
     case 'TIMEOUT':
      image = 'timeout'
      status_class = 'timeout'
      break
     default:
      result = 'green-ball'
      status_class = 'successful'
    \}
   \}
   build_list += '<td class="id"><span>' + prev_build.getId() + '</span></td>'
   build_list += '<td><span><div class="build-info"><img src="' + qb_link + '/images/' + image + '.gif">&nbsp;&nbsp;<a href="' + qb_link + '/build/' + prev_build.getId() + '" target="new" class="build-status ' + status_class + ' maskable">' + prev_build.getVersion() +'</a></div></span></td>'
   build_list += '<td><span><a href="' + qb_link + '/' + configuration_id + '" target="new">' + configuration_path + '</a></span></td>'
   build_list += '<td class="id"><span>' + util.formatDate(prev_build.getBeginDate()) + '</span></td>'
   build_list += '<td><span>' + duration +'</span></td>'
   build_list += '<td><span>' + triggered_by + '</span></td></tr>'
   
   prev_build = system.getBuildManager().getPrevious(prev_build)
   i = i+1
  \}
   build_list += '</tbody></table></div>'
   
  build_list
\}
}

Jonasz Wojcik [24/Apr/20 11:21 AM]
this is how it looks like