render-agentUserTaskRenderings.xslt 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: HTS
  5. (C) Copyright IBM Corp. 2005, 2010
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:xts="http://developer.cognos.com/schemas/xts/">
  9. <xsl:import href="../../common/render-outputs.xslt"/>
  10. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
  11. <xsl:template match="/">
  12. <xsl:choose>
  13. <xsl:when test="/root/input[@name='dep']/queryResponse/*[local-name()='output']">
  14. <xsl:apply-templates select="/root/input[@name='dep']/queryResponse/*[local-name()='output']"/>
  15. </xsl:when>
  16. <xsl:when test="/root/input[@name='dep']/queryResponse/hideRendering">
  17. <xsl:call-template name="renderUI">
  18. <xsl:with-param name="path" select="/root/input/queryResponse/*[local-name()='manualTask']/*[local-name()='preview']/*[local-name()='tsePreview']/*[local-name()='agentPreview']"/>
  19. </xsl:call-template>
  20. </xsl:when>
  21. <xsl:otherwise>
  22. <xsl:apply-templates select="/root/input/queryResponse/*[local-name()='manualTask']/*[local-name()='preview']/*[local-name()='tsePreview']/*[local-name()='agentPreview']"/>
  23. </xsl:otherwise>
  24. </xsl:choose>
  25. </xsl:template>
  26. <xsl:template match="*[local-name()='output']">
  27. <xsl:call-template name="renderUI">
  28. <xsl:with-param name="path" select="/root/input/queryResponse/*[local-name()='manualTask']/*[local-name()='preview']/*[local-name()='tsePreview']/*[local-name()='agentPreview']"/>
  29. </xsl:call-template>
  30. <div>
  31. <table border="0">
  32. <tr>
  33. <td tabindex="0" class="taskMainSubTitle">
  34. <xts:string id="IDS_FRAG_APPROVE_STATUS"/>
  35. </td>
  36. </tr>
  37. <tr>
  38. <td tabindex="0">
  39. <xsl:value-of select="./*[local-name()='outcome']"/>
  40. </td>
  41. </tr>
  42. </table>
  43. </div>
  44. </xsl:template>
  45. <xsl:template match="*[local-name()='agentPreview']">
  46. <xsl:variable name="submitText">
  47. <xsl:value-of select="/root/input[@name='dep']/*[local-name()='queryResponse']/*[local-name()='manualTask']/*[local-name()='submitText']"/>
  48. </xsl:variable>
  49. <script type="text/javascript">
  50. _THIS_.addEventListener('fragment.unload','_THIS_unload', false);
  51. _THIS_.addEventListener("fragment.load", "_THIS_init");
  52. /*
  53. This function is called when the subfrag is loaded to alter to style of the fragment if
  54. we're not the owner
  55. */
  56. function _THIS_init(evt)
  57. {
  58. dojo.require("dijit.form.Button");
  59. //check if we have the button
  60. var btnSubmit = dijit.byId('_THIS_buttonSubmit');
  61. //destroy the old ones
  62. if (btnSubmit) {
  63. btnSubmit.destroy();
  64. }
  65. //create a dojo button
  66. var btnSubmit = hts_createButton('<xsl:value-of select="/root/input[@name='dep']/*[local-name()='queryResponse']/*[local-name()='manualTask']/*[local-name()='submitText']"/>', _THIS_submitClicked, '_THIS_buttonSubmit');
  67. //if(_THIS_isDisabled()){
  68. // _THIS_disableAll();
  69. // }
  70. //Distribute to children. Pass it down further.
  71. //Parent is explicitly passing the event here,
  72. //so cascade it further down.
  73. var _THIS_distList = new Array();
  74. var _THIS_children = _THIS_.getChildren();
  75. var i, l = _THIS_children.length;
  76. for (i = 0; i &lt; l; i++) {
  77. _THIS_distList[i] = _THIS_children[i].id;
  78. }
  79. _F_Event.distribute(_THIS_distList,evt);
  80. }
  81. function _THIS_submitClicked(btn) {
  82. _THIS_buildOutputXML();
  83. }
  84. /**
  85. * Just pass it on to children.
  86. */
  87. function _THIS_unload(evt){
  88. var _THIS_distList = new Array();
  89. var _THIS_children = _THIS_.getChildren();
  90. var i, l = _THIS_children.length;
  91. for (i = 0; i &lt; l; i++) {
  92. _THIS_distList[i] = _THIS_children[i].id;
  93. }
  94. //do not bubble.
  95. evt.bubbles = false;
  96. _F_Event.distribute(_THIS_distList,evt);
  97. }
  98. var _THIS_add_comma = false;
  99. function _THIS_buildOutputXML() {
  100. var _THIS_outputXML = '&lt;output&gt;';
  101. var _THIS_outcome = 'Selected: ';
  102. <!-- build the output xml for each preview that does not have a status -->
  103. <xsl:for-each select="./*[local-name()='agentTaskPreview']/*[local-name()='taskRunPreview'][@status='PENDING']">
  104. _THIS_outputXML = _THIS_buildItemXML(_THIS_outputXML,'<xsl:value-of select="xtsext:javascriptencode(string(@eventId))"/>', '<xsl:value-of select="xtsext:javascriptencode(string(translate(../@name,'?','_')))"/>');
  105. </xsl:for-each>
  106. <xsl:for-each select="/root/input[@name='dep']/queryResponse/*[local-name()='manualTask']/*[local-name()='futureTaskList']/*[local-name()='futureTask']">
  107. <!-- get the task id -->
  108. <xsl:variable name="taskid" select="*[local-name()='id']"/>
  109. <xsl:variable name="display" select="*[local-name()='display']"/>
  110. <xsl:if test="count(/root/input/queryResponse/*[local-name()='manualTask']/*[local-name()='preview']/*[local-name()='tsePreview']/*[local-name()='agentPreview']/*[local-name()='agentTaskPreview'][@name=$taskid])>0">
  111. _THIS_outcome += _THIS_buildOutcomeXML('<xsl:value-of select="xtsext:javascriptencode(string(translate($taskid,'?','_')))"/>', '<xsl:value-of select="xtsext:javascriptencode(string($display))"/>');
  112. </xsl:if>
  113. </xsl:for-each>
  114. _THIS_outputXML += "&lt;outcome&gt;"+_THIS_outcome+"&lt;/outcome&gt;";
  115. _THIS_outputXML += '&lt;/output&gt;';
  116. _THIS_.retrieve("action=complete&amp;output="+_F_Strings.urlEncode(_THIS_outputXML),null,true);
  117. //update the viewer
  118. _THIS_.transientUpdate("display_id", "");
  119. _THIS_.transientUpdate('cognosTaskChanged',new Date().toUTCString());
  120. }
  121. function _THIS_buildOutcomeXML(name, display) {
  122. var xml = "";
  123. var comma = "";
  124. var cb = $('_THIS_cb_'+name);
  125. if (cb != null &amp;&amp; cb.checked) {
  126. if(_THIS_add_comma){
  127. comma = ", ";
  128. }else{
  129. _THIS_add_comma = true;
  130. }
  131. xml = comma + _F_Strings.xmlEncode(display) ;
  132. }
  133. return xml;
  134. }
  135. function _THIS_buildItemXML(xml,eventID,name) {
  136. var cb = $('_THIS_cb_'+name);
  137. // two cases here
  138. // case 1 : we have a checkbox in which case we need to use the value of the checkbox
  139. // to determine if we're going to run the task
  140. // case 2 : we don't have a checkbox (this task wasn't one you could pick) in which case
  141. // we run the task regardless
  142. if (cb == null || cb != null &amp;&amp; cb.checked) {
  143. xml += "&lt;item id='"+eventID+"'/&gt;" ;
  144. }
  145. return xml;
  146. }
  147. </script>
  148. <!-- render the reports -->
  149. <xsl:call-template name="renderUI">
  150. <xsl:with-param name="path" select="."/>
  151. </xsl:call-template>
  152. <div class="actions">
  153. <xsl:for-each select="/root/input[@name='dep']/queryResponse/*[local-name()='manualTask']/*[local-name()='futureTaskList']/*[local-name()='futureTask']">
  154. <!-- get the task id -->
  155. <xsl:variable name="taskid" select="*[local-name()='id']"/>
  156. <xsl:variable name="display" select="*[local-name()='display']"/>
  157. <xsl:if test="count(/root/input/queryResponse/*[local-name()='manualTask']/*[local-name()='preview']/*[local-name()='tsePreview']/*[local-name()='agentPreview']/*[local-name()='agentTaskPreview'][@name=$taskid])>0">
  158. <xsl:call-template name="renderTask">
  159. <xsl:with-param name="preview" select="/root/input/queryResponse/*[local-name()='manualTask']/*[local-name()='preview']/*[local-name()='tsePreview']/*[local-name()='agentPreview']/*[local-name()='agentTaskPreview'][@name=$taskid]"/>
  160. <xsl:with-param name="display" select="$display"/>
  161. <xsl:with-param name="taskid" select="$taskid"/>
  162. </xsl:call-template>
  163. </xsl:if>
  164. </xsl:for-each>
  165. </div>
  166. <!-- div for submit button -->
  167. <div id="_THIS_buttonSubmit"> </div>
  168. <!--div class="viewer" id="_THIS_viewercontent">_THIS?frag-subfragment=viewer/THIS_</div-->
  169. </xsl:template>
  170. <xsl:template name="renderTask">
  171. <xsl:param name="preview"/>
  172. <xsl:param name="display"/>
  173. <xsl:param name="taskid"/>
  174. <!-- only render tasks that are not 'complete'.-->
  175. <xsl:if test="$preview/taskRunPreview[@status='PENDING']">
  176. <input id="_THIS_cb_{translate($taskid,'?','_')}" type="checkbox">
  177. <xsl:value-of select="xtsext:javascriptencode(string($display))"/>
  178. </input>
  179. <br/>
  180. </xsl:if>
  181. </xsl:template>
  182. </xsl:stylesheet>