Author: jtravis Date: 2007-06-08 15:17:53 -0700 (Fri, 08 Jun 2007) New Revision: 4714 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=4714 Added: trunk/src/org/hyperic/hq/hqu/rendit_sys/html/DojoUtil.groovy Modified: trunk/src/org/hyperic/hq/hqu/rendit_sys/render/RenderFrame.groovy trunk/ui_plugins/alertcenter/app/AlertController.groovy trunk/ui_plugins/alertcenter/views/alert/index.gsp trunk/ui_plugins/alertcenter/views/templates/standard.gsp Log: Add dojo render helpers Added: trunk/src/org/hyperic/hq/hqu/rendit_sys/html/DojoUtil.groovy =================================================================== --- trunk/src/org/hyperic/hq/hqu/rendit_sys/html/DojoUtil.groovy (rev 0) +++ trunk/src/org/hyperic/hq/hqu/rendit_sys/html/DojoUtil.groovy 2007-06-08 22:17:53 UTC (rev 4714) @@ -0,0 +1,94 @@ +package org.hyperic.hq.hqu.rendit.html + +class DojoUtil { + /** + * Output a header which sets up the inclusion of the DOJO javascript + * framework. This must be called before using any other DOJO methods. + */ + static String dojoInit() { + ''' + <script type="text/javascript"> + var djConfig = { + isDebug: true + }; + </script> + + <script src="/js/dojo/dojo.js" type="text/javascript"> + </script> + ''' + } + + /** + * Returns <script> tags which setup the appropriate DOJO libraries + * to include. + * + * @params libs: An array of DOJO libraries to include. + * + * Example: dojoInclude(["dojo.widget.FilteringTable"]) + */ + static String dojoInclude(libs) { + StringBuffer b = new StringBuffer() + + for (l in libs) { + b << "dojo.require(\"${l}\");\n" + } + + b << "dojo.hostenv.writeIncludes();\n" + """ + <script type="text/javascript"> + ${b} + </script> + <script type="text/javascript"> + function getDojo() { + ${b} + } + </script> + """ + } + + /** + * Spit out a table, and appropriate <script> tags to enable AJAXification. + * + * 'params' is a map of key/vals for configuration, which include: + * + * id: The HTML ID for the table + * columns: An array of Strings, containing the column names + * url: URL to contact to get data to populate the table + */ + static String dojoTable(params) { + def idVar = "_hqu_${params.id}" + def res = new StringBuffer(""" + <script type="text/javascript"> + var ${idVar}_columns = [ + """) + for (c in params.columns) { + res << "{ field: \"${c}\"},\n" + } + res << """ + ]; + + dojo.addOnLoad(function() { + ${idVar}_table = dojo.widget.createWidget("dojo:FilteringTable", + {valueField: "id"}, + dojo.byId("${params.id}")); + + for (var x = 0; x<${idVar}_columns.length; x++) { + ${idVar}_table.columns.push(${idVar}_table.createMetaData(${idVar}_columns[x])); + } + var bindArgs = { + url: '${params.url}', + method: "get", + mimetype: "text/json-comment-filtered", + handle: function(type,data,evt) { + AjaxReturn = data; + ${idVar}_table.store.setData(data); + } + }; + dojo.io.bind (bindArgs); + }); + </script> + <table id="${params.id}"></table> + """ + res + } +} Modified: trunk/src/org/hyperic/hq/hqu/rendit_sys/render/RenderFrame.groovy =================================================================== --- trunk/src/org/hyperic/hq/hqu/rendit_sys/render/RenderFrame.groovy 2007-06-08 21:18:52 UTC (rev 4713) +++ trunk/src/org/hyperic/hq/hqu/rendit_sys/render/RenderFrame.groovy 2007-06-08 22:17:53 UTC (rev 4714) @@ -1,5 +1,6 @@ package org.hyperic.hq.hqu.rendit.render +import org.hyperic.hq.hqu.rendit.html.DojoUtil import org.hyperic.hq.hqu.rendit.html.FormGenerator import org.apache.commons.logging.Log import org.apache.commons.logging.LogFactory @@ -67,8 +68,11 @@ } private Map getImplicitLocals() { - [formFor : this.&formFor, - l : controller.localeBundle] + [formFor : this.&formFor, + dojoInit : DojoUtil.&dojoInit, + dojoInclude : DojoUtil.&dojoInclude, + dojoTable : DojoUtil.&dojoTable, + l : controller.localeBundle] } private def formFor(formOpts, formClosure) { Modified: trunk/ui_plugins/alertcenter/app/AlertController.groovy =================================================================== --- trunk/ui_plugins/alertcenter/app/AlertController.groovy 2007-06-08 21:18:52 UTC (rev 4713) +++ trunk/ui_plugins/alertcenter/app/AlertController.groovy 2007-06-08 22:17:53 UTC (rev 4714) @@ -13,13 +13,13 @@ def data(params) { def testData = ''' - /*[{ myId:0, "Date": "5/10/07", "Time": "5:10AM", "Alert": "123", "Resource": "Apache 2", "State": "Fixed", "Severity": "high", "Group": "none" }, - { myId:1, "Date": "5/10/07", "Time": "5:10PM", "Alert": "zsdzdv", "Resource": "Linux box", "State": "Fixed", "Severity": "medium", "Group": "Example 3" }, - { myId:2, "Date": "5/10/07", "Time": "5:10PM", "Alert": ",jk,.", "Resource": "another", "State": "Fixed", "Severity": "medium", "Group": "none" }, - { myId:3, "Date": "5/10/07", "Time": "5:10PM", "Alert": "k,", "Resource": "something", "State": "Fixed", "Severity": "low", "Group": "none" }, - { myId:4, "Date": "5/10/07", "Time": "5:10PM", "Alert": "ewrw3r", "Resource": "Tomcat", "State": "Fixed", "Severity": "medium", "Group": "none" }, - { myId:5, "Date": "5/10/07", "Time": "5:10PM", "Alert": "cv", "Resource": "sql server", "State": "Fixed", "Severity": "medium", "Group": "Example 1" }, - { myId:6, "Date": "5/10/07", "Time": "5:10PM", "Alert": "SDF3wr", "Resource": "Oracle server", "State": "Fixed", "Severity": "medium", "Group": "none" }]*/ + /*[{ id:0, "Date": "5/10/07", "Time": "5:10AM", "Alert": "123", "Resource": "Apache 2", "State": "Fixed", "Severity": "high", "Group": "none" }, + { id:1, "Date": "5/10/07", "Time": "5:10PM", "Alert": "zsdzdv", "Resource": "Linux box", "State": "Fixed", "Severity": "medium", "Group": "Example 3" }, + { id:2, "Date": "5/10/07", "Time": "5:10PM", "Alert": ",jk,.", "Resource": "another", "State": "Fixed", "Severity": "medium", "Group": "none" }, + { id:3, "Date": "5/10/07", "Time": "5:10PM", "Alert": "k,", "Resource": "something", "State": "Fixed", "Severity": "low", "Group": "none" }, + { id:4, "Date": "5/10/07", "Time": "5:10PM", "Alert": "ewrw3r", "Resource": "Tomcat", "State": "Fixed", "Severity": "medium", "Group": "none" }, + { id:5, "Date": "5/10/07", "Time": "5:10PM", "Alert": "cv", "Resource": "sql server", "State": "Fixed", "Severity": "medium", "Group": "Example 1" }, + { id:6, "Date": "5/10/07", "Time": "5:10PM", "Alert": "SDF3wr", "Resource": "Oracle server", "State": "Fixed", "Severity": "medium", "Group": "none" }]*/ ''' render(inline:testData, contentType:'text/json-comment-filtered') } Modified: trunk/ui_plugins/alertcenter/views/alert/index.gsp =================================================================== --- trunk/ui_plugins/alertcenter/views/alert/index.gsp 2007-06-08 21:18:52 UTC (rev 4713) +++ trunk/ui_plugins/alertcenter/views/alert/index.gsp 2007-06-08 22:17:53 UTC (rev 4714) @@ -1,35 +1,7 @@ -<script type="text/javascript"> - var alertColumns = [ - { field: "Date"}, - { field: "Time"}, - { field: "Alert" }, - { field: "Resource" }, - { field: "State" }, - { field: "Severity" }, - { field: "Group" }, - ]; - - dojo.addOnLoad(function() { - filteringTable = dojo.widget.createWidget("dojo:FilteringTable", - {valueField: "myId"}, - dojo.byId("content")); - - for (var x = 0; x<alertColumns.length; x++) { - filteringTable.columns.push(filteringTable.createMetaData(alertColumns[x])); - } - var bindArgs = { - url: 'data.hqu', - method: "get", - mimetype: "text/json-comment-filtered", - handle: function(type,data,evt) { - AjaxReturn = data; - filteringTable.store.setData(data); - } - }; - dojo.io.bind (bindArgs); - }); -</script> - <div id="alert" style="width:98%;margin-left:auto;margin-right:auto;margin-top:20px;margin-bottom:20px;"> - <table id="content"></table> + +<%= dojoTable(id:'content', + columns:['Date', 'Time', 'Alert', 'Resource', 'State', + 'Severity', 'Group'], + url:'data.hqu') %> </div> Modified: trunk/ui_plugins/alertcenter/views/templates/standard.gsp =================================================================== --- trunk/ui_plugins/alertcenter/views/templates/standard.gsp 2007-06-08 21:18:52 UTC (rev 4713) +++ trunk/ui_plugins/alertcenter/views/templates/standard.gsp 2007-06-08 22:17:53 UTC (rev 4714) @@ -2,26 +2,9 @@ <head> <title>HQ Alert Center</title> - <script type="text/javascript"> - var djConfig = { - isDebug: true - }; - </script> + <%= dojoInit %> + <%= dojoInclude(["dojo.widget.FilteringTable"]) %> - <script src="/js/dojo/dojo.js" type="text/javascript"> - </script> - - <script type="text/javascript"> - dojo.require("dojo.widget.FilteringTable"); - dojo.hostenv.writeIncludes(); - </script> - <script type="text/javascript"> - function getDojo() { - dojo.require("dojo.widget.FilteringTable"); - dojo.hostenv.writeIncludes(); - } - </script> - </head> <body> |