calc_theme.xsl 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. BI and PM: qs
  5. (C) Copyright IBM Corp. 2001, 2017
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. -->
  12. <xsl:stylesheet version="1.0"
  13. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  14. xmlns:xts="http://developer.cognos.com/schemas/xts/"
  15. xmlns:clcdlg="test_calculationDlg"
  16. xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/"
  17. xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/"
  18. xmlns:out="dummy-uri"
  19. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt">
  20. <xsl:output method="xml" encoding="UTF-8" indent="no"/>
  21. <xsl:namespace-alias stylesheet-prefix="out" result-prefix="xsl"/>
  22. <xsl:template match="clcdlg:jvs">
  23. var calcList;
  24. var sizeofCalcListItem = 2;
  25. function populateCalculationList (calcType, validCalcs, calcNumberType) {
  26. <out:choose>
  27. <out:when test="/root/system/param[@name='enablePercentageOfFooter']='true'">
  28. var calcNumberBreaks = new Array(0, 9, 13, 21, 22);
  29. </out:when>
  30. <out:otherwise>
  31. var calcNumberBreaks = new Array(0, 9, 12, 20, 21);
  32. </out:otherwise>
  33. </out:choose>
  34. var calcNumberList = false;
  35. switch (calcType)
  36. {
  37. case "number":
  38. calcNumberList = new Array(
  39. "<xts:string id="CALCULATION_NUMERIC_ARITHMETIC" encode="javascript"/>",
  40. "<xts:string id="CALCULATION_NUMERIC_PERCENTAGE" encode="javascript"/>",
  41. "<xts:string id="CALCULATION_NUMERIC_ANALYTIC" encode="javascript"/>"
  42. /***** TEMPORARY *****/
  43. //,
  44. //"<xts:string id="CALCULATION_NUMERIC_TEXT" encode="javascript"/>"
  45. /***** TEMPORARY *****/
  46. );
  47. calcList = new Array(
  48. //Arithmetic
  49. "<xts:string id="CALCULATION_SUM" encode="javascript"/>", "+",
  50. "<xts:string id="CALCULATION_DIFFERENCE" encode="javascript"/>", "-",
  51. "<xts:string id="CALCULATION_PRODUCT" encode="javascript"/>", "*",
  52. "<xts:string id="CALCULATION_DIVISION" encode="javascript"/>", "/",
  53. "<xts:string id="CALCULATION_POWER" encode="javascript"/>", "power",
  54. "<xts:string id="CALCULATION_ABSOLUTE" encode="javascript"/>", "absolute",
  55. "<xts:string id="CALCULATION_ROUND" encode="javascript"/>", "round",
  56. "<xts:string id="CALCULATION_ROUND_DOWN" encode="javascript"/>", "round down",
  57. "<xts:string id="CALCULATION_SQUARE_ROOT" encode="javascript"/>", "sqrt",
  58. //Percentage
  59. "<xts:string id="CALCULATION_PERCENTAGE" encode="javascript"/>", "%",
  60. "<xts:string id="CALCULATION_PERCENT_TOTAL" encode="javascript"/>", "% total Percentage",
  61. <out:if test="/root/system/param[@name='enablePercentageOfFooter']='true'">
  62. "<xts:string id="CALCULATION_PERCENT_FOOTER" encode="javascript"/>", "% footer Percentage",
  63. </out:if>
  64. "<xts:string id="CALCULATION_PERCENT_DIFFERENCE" encode="javascript"/>", "% difference",
  65. //Analytic
  66. "<xts:string id="CALCULATION_AVERAGE" encode="javascript"/>", "average",
  67. "<xts:string id="CALCULATION_MAXIMUM" encode="javascript"/>", "maximum",
  68. "<xts:string id="CALCULATION_MINIMUM" encode="javascript"/>", "minimum",
  69. "<xts:string id="CALCULATION_RANK" encode="javascript"/>", "rank",
  70. "<xts:string id="CALCULATION_PERCENT_TOTAL" encode="javascript"/>", "% total Analytic",
  71. "<xts:string id="CALCULATION_PERCENTILE" encode="javascript"/>", "percentile",
  72. "<xts:string id="CALCULATION_QUARTILE" encode="javascript"/>", "quartile",
  73. "<xts:string id="CALCULATION_QUANTILE" encode="javascript"/>", "quantile"
  74. /***** TEMPORARY *****/
  75. //,
  76. //"<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat"
  77. /***** TEMPORARY *****/
  78. );
  79. break;
  80. case "string":
  81. calcList = new Array(
  82. "<xts:string id="CALCULATION_LEFT" encode="javascript"/>", "left",
  83. "<xts:string id="CALCULATION_RIGHT" encode="javascript"/>", "right",
  84. "<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat",
  85. "<xts:string id="CALCULATION_TRIM" encode="javascript"/>", "trim"
  86. );
  87. break;
  88. case "date":
  89. calcList = new Array(
  90. "<xts:string id="CALCULATION_DIFFERENCE" encode="javascript"/>", "-",
  91. "<xts:string id="CALCULATION_DAYS_BETWEEN" encode="javascript"/>", "daysBetween",
  92. "<xts:string id="CALCULATION_MONTHS_BETWEEN" encode="javascript"/>", "monthsBetween",
  93. "<xts:string id="CALCULATION_YEARS_BETWEEN" encode="javascript"/>", "yearsBetween",
  94. "<xts:string id="CALCULATION_ADD_DAYS" encode="javascript"/>", "addDays",
  95. "<xts:string id="CALCULATION_ADD_MONTHS" encode="javascript"/>", "addMonths",
  96. "<xts:string id="CALCULATION_ADD_YEARS" encode="javascript"/>", "addYears",
  97. "<xts:string id="CALCULATION_EARLIEST" encode="javascript"/>", "min",
  98. "<xts:string id="CALCULATION_LATEST" encode="javascript"/>", "max",
  99. "<xts:string id="CALCULATION_YEAR" encode="javascript"/>", "year",
  100. "<xts:string id="CALCULATION_MONTH" encode="javascript"/>", "month",
  101. "<xts:string id="CALCULATION_WEEK" encode="javascript"/>", "week",
  102. "<xts:string id="CALCULATION_DAY" encode="javascript"/>", "day"
  103. /***** TEMPORARY *****/
  104. //,
  105. //"<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat"
  106. /***** TEMPORARY *****/
  107. );
  108. break;
  109. case "time":
  110. calcList = new Array(
  111. "<xts:string id="CALCULATION_DIFFERENCE" encode="javascript"/>", "-",
  112. "<xts:string id="CALCULATION_EARLIEST" encode="javascript"/>", "min",
  113. "<xts:string id="CALCULATION_LATEST" encode="javascript"/>", "max",
  114. "<xts:string id="CALCULATION_HOUR" encode="javascript"/>", "hour",
  115. "<xts:string id="CALCULATION_MINUTE" encode="javascript"/>", "minute",
  116. "<xts:string id="CALCULATION_SECOND" encode="javascript"/>", "second"
  117. /***** TEMPORARY *****/
  118. //,
  119. //"<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat"
  120. /***** TEMPORARY *****/
  121. );
  122. break;
  123. case "datetime":
  124. calcList = new Array(
  125. "<xts:string id="CALCULATION_DIFFERENCE" encode="javascript"/>", "-",
  126. "<xts:string id="CALCULATION_DAYS_BETWEEN" encode="javascript"/>", "daysBetween",
  127. "<xts:string id="CALCULATION_MONTHS_BETWEEN" encode="javascript"/>", "monthsBetween",
  128. "<xts:string id="CALCULATION_YEARS_BETWEEN" encode="javascript"/>", "yearsBetween",
  129. "<xts:string id="CALCULATION_ADD_DAYS" encode="javascript"/>", "addDays",
  130. "<xts:string id="CALCULATION_ADD_MONTHS" encode="javascript"/>", "addMonths",
  131. "<xts:string id="CALCULATION_ADD_YEARS" encode="javascript"/>", "addYears",
  132. "<xts:string id="CALCULATION_EARLIEST" encode="javascript"/>", "min",
  133. "<xts:string id="CALCULATION_LATEST" encode="javascript"/>", "max",
  134. "<xts:string id="CALCULATION_YEAR" encode="javascript"/>", "year",
  135. "<xts:string id="CALCULATION_MONTH" encode="javascript"/>", "month",
  136. "<xts:string id="CALCULATION_WEEK" encode="javascript"/>", "week",
  137. "<xts:string id="CALCULATION_DAY" encode="javascript"/>", "day",
  138. "<xts:string id="CALCULATION_HOUR" encode="javascript"/>", "hour",
  139. "<xts:string id="CALCULATION_MINUTE" encode="javascript"/>", "minute",
  140. "<xts:string id="CALCULATION_SECOND" encode="javascript"/>", "second"
  141. /***** TEMPORARY *****/
  142. //,
  143. //"<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat"
  144. /***** TEMPORARY *****/
  145. );
  146. break;
  147. case "interval":
  148. calcList = new Array(
  149. "<xts:string id="CALCULATION_SUM" encode="javascript"/>", "+",
  150. "<xts:string id="CALCULATION_DIFFERENCE" encode="javascript"/>", "-",
  151. "<xts:string id="CALCULATION_DAYS" encode="javascript"/>", "days",
  152. "<xts:string id="CALCULATION_MAXIMUM" encode="javascript"/>", "max",
  153. "<xts:string id="CALCULATION_MINIMUM" encode="javascript"/>", "min",
  154. "<xts:string id="CALCULATION_RANK" encode="javascript"/>", "rank"
  155. /***** TEMPORARY *****/
  156. //,
  157. //"<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat"
  158. /***** TEMPORARY *****/
  159. );
  160. break;
  161. default:
  162. calcList = new Array(
  163. "<xts:string id="CALCULATION_CONCATENATION" encode="javascript"/>", "concat"
  164. );
  165. break;
  166. }
  167. if (calcNumberList)
  168. {
  169. var ii, iiEnd;
  170. // populate calculation list
  171. switch (calcNumberType)
  172. {
  173. case "arithmetic":
  174. ii = 0;
  175. iiEnd = calcNumberBreaks[1];
  176. break;
  177. case "percentage":
  178. ii = calcNumberBreaks[1];
  179. iiEnd = calcNumberBreaks[2];
  180. break;
  181. case "analytic":
  182. ii = calcNumberBreaks[2];
  183. iiEnd = calcNumberBreaks[3];
  184. break;
  185. default:
  186. ii = calcNumberBreaks[3];
  187. iiEnd = calcNumberBreaks[4];
  188. break;
  189. }
  190. for (var i = 0; i &lt; validCalcs.length; i++)
  191. {
  192. if ((validCalcs[i] >= ii) &amp;&amp; (validCalcs[i] &lt; iiEnd))
  193. {
  194. // calcList load
  195. var o = new Option();
  196. o.name = calcList[validCalcs[i] * sizeofCalcListItem];
  197. o.text = calcList[validCalcs[i] * sizeofCalcListItem];
  198. o.value = calcList[validCalcs[i] * sizeofCalcListItem + 1];
  199. document.f.calcList.options[document.f.calcList.options.length] = o;
  200. }
  201. }
  202. for (ii = 0; ii &lt; calcNumberList.length; ii++)
  203. {
  204. // calcNumberList load
  205. var o = new Option();
  206. o.name = calcNumberList[ii];
  207. o.text = calcNumberList[ii];
  208. o.value = calcNumberBreaks[ii];
  209. document.f.calcNumberList.options[document.f.calcNumberList.options.length] = o;
  210. }
  211. }
  212. else
  213. {
  214. // populate calculation list
  215. for (var i = 0; i &lt; validCalcs.length; i++)
  216. {
  217. // calcList load
  218. var o = new Option();
  219. o.name = calcList[validCalcs[i] * sizeofCalcListItem];
  220. o.text = calcList[validCalcs[i] * sizeofCalcListItem];
  221. o.value = calcList[validCalcs[i] * sizeofCalcListItem + 1];
  222. document.f.calcList.options[document.f.calcList.options.length] = o;
  223. }
  224. }
  225. getConfigFrame().cfgRemove("CALCULATION_REFRESH");
  226. }
  227. function loadHint() {
  228. if (document.f.calc_hint != null)
  229. document.f.calc_hint.value = generateName(true);
  230. else
  231. setTimeout("loadHint()", 10);
  232. }
  233. function onSelOperation() {
  234. if (typeof load == "function")
  235. load ();
  236. setGlobals(calcType, false);
  237. if (!getConfigFrame().refreshNewCalculation(calcType, getConfigFrame().cfgGet("CALCULATION_REFRESH")))
  238. loadHint ();
  239. }
  240. function setGlobals(calcType, bClear) {
  241. var cf = getConfigFrame();
  242. // keep previous selection
  243. var _calcIndex = cf.cfgGet("CALCULATION_INDEX_" + calcType.toUpperCase());
  244. if (_calcIndex != null)
  245. cf.cfgSet("CALCULATION_PREVIOUS_INDEX_" + calcType.toUpperCase(), _calcIndex);
  246. if (bClear)
  247. {
  248. cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase());
  249. cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER");
  250. }
  251. else
  252. {
  253. if (document.f.calcNumberList)
  254. {
  255. cf.cfgSet("CALCULATION_INDEX_NUMERIC_TYPE", document.f.calcNumberList.selectedIndex);
  256. cf.cfgSet("CALCULATION_INDEX_NUMERIC_TYPE_VALUE", document.f.calcNumberList[document.f.calcNumberList.selectedIndex].value);
  257. var indexToUse = -1;
  258. for (var i = 0; i &lt; calcList.length; i++)
  259. {
  260. if (document.f.calcList.value == calcList[i])
  261. {
  262. indexToUse = (i - 1) / sizeofCalcListItem;
  263. indexToUse -= document.f.calcNumberList[document.f.calcNumberList.selectedIndex].value;
  264. break;
  265. }
  266. }
  267. if (indexToUse >= 0)
  268. cf.cfgSet("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER", indexToUse);
  269. else
  270. cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER");
  271. }
  272. else
  273. cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER");
  274. cf.cfgSet("CALCULATION_INDEX_" + calcType.toUpperCase(), document.f.calcList.selectedIndex);
  275. }
  276. if (cf &amp;&amp; cf.showDialogFrame)
  277. <out:choose>
  278. <out:when test="/root/env/param[@name='xxSubstVar']='true'">
  279. cf.showDialogFrame(475);
  280. </out:when>
  281. <out:otherwise>
  282. cf.showDialogFrame(410);
  283. </out:otherwise>
  284. </out:choose>
  285. }
  286. function removeInsert() {
  287. document.getElementById("calcInsert").removeAttribute("href");
  288. }
  289. function addInsert() {
  290. document.getElementById("calcInsert").setAttribute("href", "javascript:doInsert(null)");
  291. }
  292. function doInsert(evt) {
  293. if(goDialogManager.isSpaceOrEnterKeyEvent(evt))
  294. {
  295. setGlobals(calcType, true);
  296. execute();
  297. }
  298. }
  299. function cancelDialog(evt) {
  300. if(goDialogManager.isSpaceOrEnterKeyEvent(evt))
  301. {
  302. setGlobals(calcType, true);
  303. getConfigFrame().hideDialogFrame();
  304. }
  305. }
  306. function stringReplace(origString, valToReplace, newString) {
  307. var strRegExp = new RegExp();
  308. strRegExp.compile(valToReplace, "g");
  309. //if we have $ in string then replace $ lteral with $$ literal as $ carries special meaning of "End of String"
  310. var repNewString = new String(newString);
  311. repNewString = repNewString.replace(/\$/g,"$$$$");
  312. return origString.replace(strRegExp, repNewString);
  313. }
  314. function catchSubmit(iKeyCode) {
  315. //catch the Enter key code
  316. <out:if test="/root/system/param[@name='disableEnterKeyAutoSubmit'] = 'false'">
  317. if (iKeyCode == 13)
  318. {
  319. execute();
  320. }
  321. </out:if>
  322. }
  323. function updateValueField(substString, substValue)
  324. {
  325. //the case where text boxes need to be seamlessley hidden and shown depending on the type of data
  326. if (document.getElementById("textBoxNumeric"))
  327. {
  328. if (substString == null)
  329. {
  330. if (getDisplayStyle("textBoxNumeric") != "none" &amp;&amp; textBoxnumberValue &amp;&amp; textBoxnumberValue.isValid())
  331. {
  332. textBoxnumberValue.m_oForm.select();
  333. }
  334. else
  335. {
  336. if (textBoxstringValue) {
  337. textBoxstringValue.clear();
  338. }
  339. setDisplayStyle("textBoxString", "none");
  340. if (document.all)
  341. setDisplayStyle("textBoxNumeric", "inline");
  342. else
  343. setDisplayStyle("textBoxNumeric", "table-cell");
  344. if (textBoxnumberValue &amp;&amp; textBoxnumberValue.m_oForm) {
  345. textBoxnumberValue.m_oForm.select();
  346. }
  347. redrawHint();
  348. }
  349. }
  350. else
  351. {
  352. if (textBoxnumberValue) {
  353. textBoxnumberValue.clear();
  354. }
  355. setDisplayStyle("textBoxNumeric", "none");
  356. if (document.all)
  357. setDisplayStyle("textBoxString", "inline");
  358. else
  359. setDisplayStyle("textBoxString", "table-cell");
  360. if (textBoxstringValue &amp;&amp; textBoxstringValue.m_oForm) {
  361. textBoxstringValue.m_oForm.value=substString;
  362. }
  363. substVarValue = substValue;
  364. redrawHint();
  365. }
  366. }
  367. //the case where the textbox does not need to be hidden since a radio button is provided
  368. else
  369. {
  370. document.f.inputValueRadio[1].checked = true;
  371. if (textBoxstringValue &amp;&amp; textBoxstringValue.m_oForm) {
  372. textBoxstringValue.m_oForm.value = substString;
  373. }
  374. substVarValue = substValue;
  375. redrawHint();
  376. }
  377. }
  378. function setDisplayStyle(id, styleValue)
  379. {
  380. var obj = document.getElementById(id);
  381. if (obj &amp;&amp; obj.style &amp;&amp; obj.style) {
  382. obj.style.display = styleValue;
  383. }
  384. }
  385. function getDisplayStyle(id)
  386. {
  387. var obj = document.getElementById(id);
  388. if (obj &amp;&amp; obj.style &amp;&amp; obj.style.display) {
  389. return obj.style.display;
  390. }
  391. return null;
  392. }
  393. function checkOverflowOnSelect(selectObj)
  394. {
  395. var minimumWidth = 260;
  396. selectObj.style.width = "auto";
  397. if (selectObj.offsetWidth &lt;= minimumWidth)
  398. selectObj.style.width = minimumWidth + "px";
  399. }
  400. function getCalcName()
  401. {
  402. var calcName = "";
  403. if (document.f.calc_label[1].checked == true)
  404. {
  405. calcName = document.f.calc_label_text.value;
  406. if (calcName == "")
  407. {
  408. calcName = generateName();
  409. }
  410. }
  411. else
  412. {
  413. calcName = generateName();
  414. }
  415. return calcName;
  416. }
  417. </xsl:template>
  418. <xsl:template match="clcdlg:basic_header">
  419. <!-- dialog header -->
  420. <dp:header help="false">
  421. <!-- header titles -->
  422. <dp:title>
  423. <xts:string id="CALCULATE_CREATE_BASIC_TITLE"/>
  424. </dp:title>
  425. <!-- close link for the header -->
  426. <dp:close>
  427. <a href="javascript:setGlobals(calcType, true);getConfigFrame().hideDialogFrame()">
  428. <dp:closeMarker/>
  429. </a>
  430. </dp:close>
  431. <!-- description (hint text) -->
  432. <dp:description>
  433. <xts:string id="CALCULATE_CREATE_BASIC_DESCRIPTION"/>
  434. </dp:description>
  435. </dp:header>
  436. </xsl:template>
  437. <xsl:template match="clcdlg:calculationsType">
  438. <dp:input>
  439. <dp:section1><xts:string id="CALCULATION_OPERATION_TYPE"/></dp:section1>
  440. <dp:section2>
  441. <select name="calcNumberList" size="0" onChange="javascript:removeInsert();onSelOperation();">
  442. <out:attribute name="style">width:260px;</out:attribute>
  443. </select>
  444. </dp:section2>
  445. </dp:input>
  446. </xsl:template>
  447. <xsl:template match="clcdlg:calculations">
  448. <dp:input>
  449. <dp:section1><xts:string id="CALCULATION_OPERATION"/></dp:section1>
  450. <dp:section2>
  451. <select name="calcList" size="0" onChange="javascript:removeInsert();onSelOperation();if (typeof setTextBoxFocus == 'function') setTextBoxFocus();">
  452. <out:attribute name="style">width:260px;</out:attribute>
  453. </select>
  454. </dp:section2>
  455. </dp:input>
  456. </xsl:template>
  457. <xsl:template match="clcdlg:calc_hint">
  458. <dp:input>
  459. <dp:section1><xts:string id="CALCULATION_EXPRESSION"/></dp:section1>
  460. <dp:section2>
  461. <textarea name="calc_hint" readOnly="true" rows="5" cols="30">
  462. <out:attribute name="style">border: gray 1px solid; overflow: auto; font-family: Tahoma, arial, geneva, helvetica, sans-serif;</out:attribute>
  463. </textarea>
  464. </dp:section2>
  465. </dp:input>
  466. <dp:section1>
  467. <div class="formLabel"><xts:string id="CALCULATION_LABEL_NAME"/></div>
  468. </dp:section1>
  469. <dp:section2>
  470. <dp:choice>
  471. <dp:section1><input type="radio" name="calc_label" checked="true"/></dp:section1>
  472. <dp:section2><xts:string id="CALCULATION_DEFAULT_NAME"/></dp:section2>
  473. <dp:section1><input type="radio" name="calc_label"/></dp:section1>
  474. <dp:section2>
  475. <input type="text" name="calc_label_text" onClick="javascript:document.f.calc_label[1].checked = true;" onKeyDown="javascript:setTimeout('document.f.calc_label[1].checked = true;', 10);" style="width:300px;">
  476. <out:if test="/root/system/param[@name='disableEnterKeyAutoSubmit'] != 'true'">
  477. <out:attribute name="onKeyUp">javascript:if (event.keyCode == 13) execute();</out:attribute>
  478. </out:if>
  479. </input>
  480. </dp:section2>
  481. </dp:choice>
  482. </dp:section2>
  483. </xsl:template>
  484. <xsl:template match="clcdlg:buttons">
  485. <dp:footer>
  486. <span id="calcInsert">
  487. <df:button df:id="DIALOG_INSERT_BUTTON" df:style="href" onkeypress="javascript:doInsert(event);" df:href="javascript:doInsert(null);" df:defaultKey="active"/>
  488. </span>
  489. <df:button df:id="DIALOG_CANCEL_BUTTON" df:style="href" onkeypress="javascript:cancelDialog(event);" df:href="javascript:cancelDialog(null);"/>
  490. </dp:footer>
  491. </xsl:template>
  492. <xsl:template match="clcdlg:subst_var">
  493. var buttonContainerStyle = new CUIStyle('mainHeader3', '', '', '', '');
  494. var buttonStyle = new CUIStyle('dialogButton', 'dialogButtonOver', '', '', '');
  495. var menuItemStyle = new CUIStyle('menuItem_normal', 'menuItem_hover', '', '', 'menuItem_disabled');
  496. var menuStyle = new CUIStyle('clsMenu', '', '', '', '');
  497. var substButtonContainer = new CBar('buttonContainer', buttonContainerStyle, null, '<out:value-of select="$webRoot"/>/common/images/toolbar/');
  498. var bHideMenuButton = true;
  499. var substButton = new CToolbarButton(substButtonContainer, '', '<out:value-of select="$webRoot"/>/qs/images/substitution_variables.gif', '', buttonStyle, true, null, null, '<out:value-of select="$webRoot"/>');
  500. var substButtonDropDown = substButton.createDropDownMenu(menuStyle);
  501. <xsl:if test="@numeric='true'">
  502. new CMenuItem(substButtonDropDown, '<xts:string id="CALCULATION_NUMBER_SUBST_VAR" encode="javascript"/>', 'javascript:updateValueField(null, null);', '', menuItemStyle, '<out:value-of select="$webRoot"/>', '<out:value-of select="$skin_root"/>');
  503. </xsl:if>
  504. var numConstants = cf.dlgGlobalSize("xxSubstVarPair");
  505. for (var i = 0; i &lt; numConstants; i++)
  506. {
  507. var substVarPair = cf.dlgGlobalGetParmAt('xxSubstVarPair', i)
  508. new CMenuItem(substButtonDropDown, substVarPair[0], 'javascript:updateValueField("' + substVarPair[0] + '", "' + substVarPair[1] + '");', '', menuItemStyle, '<out:value-of select="$webRoot"/>', '<out:value-of select="$skin_root"/>');
  509. }
  510. substButtonContainer.setMenuType(cHorizonalBar);
  511. substButtonContainer.setAlign('left');
  512. substButtonContainer.draw();
  513. </xsl:template>
  514. <!-- the main engine -->
  515. <xsl:template match="*">
  516. <xsl:copy>
  517. <xsl:copy-of select="@*"/>
  518. <xsl:apply-templates/>
  519. </xsl:copy>
  520. </xsl:template>
  521. </xsl:stylesheet>