incubator-bloodhound-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From g..@apache.org
Subject svn commit: r1307989 - in /incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard: layouts/bootstrap.py layouts/htdocs/bootstrap-tab.js layouts/templates/bs_btnbar.html web_ui.py
Date Sun, 01 Apr 2012 01:40:11 GMT
Author: gjm
Date: Sun Apr  1 01:40:11 2012
New Revision: 1307989

URL: http://svn.apache.org/viewvc?rev=1307989&view=rev
Log:
Dashboard code import: BH_Dashnoard: Adding tabs behavior and widgets in Bootstrap button
toolbar

Added:
    incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js
  (with props)
Modified:
    incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/bootstrap.py
    incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/templates/bs_btnbar.html
    incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/web_ui.py

Modified: incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/bootstrap.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/bootstrap.py?rev=1307989&r1=1307988&r2=1307989&view=diff
==============================================================================
--- incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/bootstrap.py (original)
+++ incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/bootstrap.py Sun Apr
 1 01:40:11 2012
@@ -24,6 +24,8 @@ r"""Project dashboard for Apache(TM) Blo
 Widgets displaying ticket data.
 """
 
+from uuid import uuid4
+
 from trac.core import Component, implements, TracError
 from trac.web.chrome import add_stylesheet, add_script
 
@@ -80,6 +82,7 @@ class BootstrapLayout(Component):
         """Determine toolbar groups
         """
         add_script(req, 'layouts/bootstrap-button.js')
+        add_script(req, 'layouts/bootstrap-tab.js')
         layout_data = options['schema']
         orig_tb = layout_data.get('toolbar', [])
         ready = layout_data.get('ready')
@@ -91,6 +94,8 @@ class BootstrapLayout(Component):
                     last_group = []
                     tb.append(last_group)
                 else:
-                    last_group.append({ 'caption' : caption, 'widget' :idx })
+                    last_group.append(
+                            { 'caption' : caption, 'widget' :idx, 
+                              'id' : uuid4().hex })
         layout_data['ready'] = True
 

Added: incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js
URL: http://svn.apache.org/viewvc/incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js?rev=1307989&view=auto
==============================================================================
--- incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js
(added)
+++ incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js
Sun Apr  1 01:40:11 2012
@@ -0,0 +1,130 @@
+/* ========================================================
+ * bootstrap-tab.js v2.0.1
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed 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.
+ * ======================================================== */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* TAB CLASS DEFINITION
+  * ==================== */
+
+  var Tab = function ( element ) {
+    this.element = $(element)
+  }
+
+  Tab.prototype = {
+
+    constructor: Tab
+
+  , show: function () {
+      var $this = this.element
+        , $ul = $this.closest('ul:not(.dropdown-menu)')
+        , selector = $this.attr('data-target')
+        , previous
+        , $target
+
+      if (!selector) {
+        selector = $this.attr('href')
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for
ie7
+      }
+
+      if ( $this.parent('li').hasClass('active') ) return
+
+      previous = $ul.find('.active a').last()[0]
+
+      $this.trigger({
+        type: 'show'
+      , relatedTarget: previous
+      })
+
+      $target = $(selector)
+
+      this.activate($this.parent('li'), $ul)
+      this.activate($target, $target.parent(), function () {
+        $this.trigger({
+          type: 'shown'
+        , relatedTarget: previous
+        })
+      })
+    }
+
+  , activate: function ( element, container, callback) {
+      var $active = container.find('> .active')
+        , transition = callback
+            && $.support.transition
+            && $active.hasClass('fade')
+
+      function next() {
+        $active
+          .removeClass('active')
+          .find('> .dropdown-menu > .active')
+          .removeClass('active')
+
+        element.addClass('active')
+
+        if (transition) {
+          element[0].offsetWidth // reflow for transition
+          element.addClass('in')
+        } else {
+          element.removeClass('fade')
+        }
+
+        if ( element.parent('.dropdown-menu') ) {
+          element.closest('li.dropdown').addClass('active')
+        }
+
+        callback && callback()
+      }
+
+      transition ?
+        $active.one($.support.transition.end, next) :
+        next()
+
+      $active.removeClass('in')
+    }
+  }
+
+
+ /* TAB PLUGIN DEFINITION
+  * ===================== */
+
+  $.fn.tab = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('tab')
+      if (!data) $this.data('tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+  * ============ */
+
+  $(function () {
+    $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function
(e) {
+      e.preventDefault()
+      $(this).tab('show')
+    })
+  })
+
+}( window.jQuery );
\ No newline at end of file

Propchange: incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/htdocs/bootstrap-tab.js
------------------------------------------------------------------------------
    svn:mime-type = text/javascript

Modified: incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/templates/bs_btnbar.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/templates/bs_btnbar.html?rev=1307989&r1=1307988&r2=1307989&view=diff
==============================================================================
--- incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/templates/bs_btnbar.html
(original)
+++ incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/layouts/templates/bs_btnbar.html
Sun Apr  1 01:40:11 2012
@@ -9,12 +9,21 @@
   <div class="btn-toolbar" data-toggle="buttons-radio">
     <div class="btn-group offset1"
         py:for="g in layout.toolbar" >
-      <button href="#" disabled="${tb_item.widget is None and 'true' or None}" 
+      <button data-target="#tb-item-${tb_item.id}" data-toggle="tab" 
+          disabled="${tb_item.widget is None and 'true' or None}" 
           class="btn ${tb_item.widget is None and 'disabled' or None}" 
           py:for="tb_item in g">
         ${tb_item.caption}
       </button>
     </div>
   </div>
+  <div class="tab-content">
+    <py:for each="g in layout.toolbar">
+      <div py:for="tb_item in g" py:if="tb_item.widget is not None"
+          class="tab-pane" id="tb-item-${tb_item.id}">
+        ${widget_container(widgets[tb_item.widget])}
+      </div>
+    </py:for>
+  </div>
 </html>
 

Modified: incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/web_ui.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/web_ui.py?rev=1307989&r1=1307988&r2=1307989&view=diff
==============================================================================
--- incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/web_ui.py (original)
+++ incubator/bloodhound/trunk/bloodhound_dashboard/bhdashboard/web_ui.py Sun Apr  1 01:40:11
2012
@@ -180,6 +180,14 @@ class DashboardModule(Component):
                                                       "TicketFieldCloud", 
                                                       null, 
                                                       {"args" : {
+                                                          "field" : "milestone",
+                                                          "verbose" : false}}]
+                                                },
+                                                {
+                                                  "args" : [
+                                                      "TicketFieldCloud", 
+                                                      null, 
+                                                      {"args" : {
                                                           "field" : "type",
                                                           "verbose" : true}}]
                                                 }



Mime
View raw message