You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by cu...@apache.org on 2019/05/08 00:00:53 UTC

[whimsy] branch master updated: Show more whimsy features

This is an automated email from the ASF dual-hosted git repository.

curcuru 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 3e4e2ea  Show more whimsy features
     new 1a41879  Merge branch 'master' of https://github.com/apache/whimsy
3e4e2ea is described below

commit 3e4e2ea6ebb2306bbf39c9de7a2a8d58f025f7c1
Author: Shane Curcuru <as...@shanecurcuru.org>
AuthorDate: Mon May 6 20:01:08 2019 -0400

    Show more whimsy features
---
 www/test/example.cgi | 52 +++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 9 deletions(-)

diff --git a/www/test/example.cgi b/www/test/example.cgi
index 948afdb..4b02fdb 100755
--- a/www/test/example.cgi
+++ b/www/test/example.cgi
@@ -3,20 +3,36 @@ PAGETITLE = "Example Whimsy Script With Styles" # Wvisible:tools Note: PAGETITLE
 
 $LOAD_PATH.unshift '/srv/whimsy/lib'
 require 'json'
-require 'whimsy/asf'
+require 'yaml'
 require 'wunderbar'
 require 'wunderbar/bootstrap'
+require 'wunderbar/jquery'
+require 'wunderbar/markdown'
+require 'whimsy/asf'
+require 'whimsy/public'
+
+# Get data from live whimsy.a.o/public directory
+def get_public_data()
+  return Public.getJSON('public_ldap_authgroups.json')
+end
 
-def get_data(defaults: {})
-  return {
-    "Sample data processing here" => "row 1",
-    "This could come from a file" => "row B"
-  }
+# Get data from a Subversion directory
+# See /repository.yml for list of auto-updated dirs
+def get_svn_data()
+  dir = ASF::SVN['comdevtalks']
+  filename = 'README.yaml'
+  data = YAML.load(File.read(File.join(dir, filename).untaint))
+  return data['title']
 end
 
+# Gather some data beforehand, if you like, but:
+# Note runtime errors here just write to the log, not to user's browser
+talktitle = get_svn_data()
+
+# Produce HTML
 _html do
-  _body? do
-    _whimsy_body(
+  _body? do # The ? traps errors inside this block
+    _whimsy_body( # This emits the entire page shell: header, navbar, basic styles, footer
       title: PAGETITLE,
       subtitle: 'About This Example Script',
       relatedtitle: 'More Useful Links',
@@ -33,6 +49,7 @@ _html do
           Any related whimsy or other (projects.a.o, etc.) links should be in the related: listing on the top right to help users find other useful things.
           This provides a consistent user experience.
         }
+        _p "You can output data previously processed as well like: #{talktitle}"
       },
       breadcrumbs: {
         dataflow: '/test/dataflow.cgi',
@@ -49,7 +66,7 @@ _html do
         # Gather or process your data **here**, so if an error is raised, the _body? 
         #   scope will trap it - and will then display the above help information 
         #   to the user before emitting a polite error traceback.
-        datums = get_data()
+        datums = {'one' => 1, 'two' => 2 }
         _table.table.table_hover.table_striped do
           _thead_ do
             _tr do
@@ -71,6 +88,7 @@ _html do
           end
         end
       end
+
       # IF YOUR SCRIPT ONLY EMITS SIMPLE DATA
       _h2 "Simple Data Can Just Use A List"
       _ul do
@@ -78,6 +96,22 @@ _html do
           _li "This is row number #{row}."
         end
       end
+
+      # NIFTY ACCORDION EXPAND-O LISTING: the _whimsy_accordion_item does most of the work
+      _h2 'Lists of Complex Data Can Use An Accordion'
+      accordionid = 'accordion'
+      officers = get_public_data()
+      _div.panel_group id: accordionid, role: 'tablist', aria_multiselectable: 'true' do
+        officers['auth'].each_with_index do |(listname, rosters), n|
+          _whimsy_accordion_item(listid: accordionid, itemid: listname, itemtitle: "#{listname}", n: n, itemclass: 'panel-primary') do
+            _ul do
+              rosters['roster'].each do |usr|
+                _li usr
+              end
+            end
+          end
+        end
+      end
     end
   end
 end