G_QanDBQuery.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /****************************************************************************************************************************
  2. Licensed Materials - Property of IBM
  3. BI and PM: QFW
  4. © Copyright IBM Corp. 2005, 2010
  5. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  6. *****************************************************************************************************************************/
  7. G_QanDBQuery = {};
  8. G_QanDBQuery.F_Init = function( divContainer )
  9. {
  10. this.m_doc = document;
  11. this.m_divContainer = divContainer;
  12. }
  13. G_QanDBQuery.F_Show = function()
  14. {
  15. var v_divHeader = this.m_doc.createElement( "div" );
  16. this.m_divContainer.innerHTML = "";
  17. v_divHeader.className = "planDetailHeader";
  18. this.m_divContainer.appendChild( v_divHeader );
  19. var v_tblPropTitles = this.m_doc.createElement("table");
  20. v_tblPropTitles.className = "planPropTable";
  21. v_tblPropTitles.cellPadding = 0;
  22. v_tblPropTitles.cellSpacing = 0;
  23. //v_tblPropTitles.width = "100%";
  24. v_divHeader.appendChild( v_tblPropTitles );
  25. this.m_trPropTitles = v_tblPropTitles.insertRow();
  26. var v_tdLang = this.m_trPropTitles.insertCell();
  27. v_tdLang.innerHTML = '&nbsp;<b> Query type: </b>&nbsp;';
  28. v_tdLang.noWrap = "true";
  29. var v_tdSpacer = this.m_trPropTitles.insertCell();
  30. v_tdSpacer.innerText = " ";
  31. v_tdSpacer.width = "3px";
  32. var v_tdSQL = this.m_trPropTitles.insertCell();
  33. v_tdSQL.innerText = "SQL";
  34. v_tdSQL.noWrap = "true";
  35. v_tdSQL.onclick = this.f_title_onclick.F_CreateMethodCallback( this );
  36. v_tdSpacer = this.m_trPropTitles.insertCell();
  37. v_tdSpacer.innerText = " ";
  38. v_tdSpacer.width = "3px";
  39. var v_tdMDX = this.m_trPropTitles.insertCell();
  40. v_tdMDX.innerText = "MDX";
  41. v_tdMDX.noWrap = "true";
  42. v_tdMDX.onclick = this.f_title_onclick.F_CreateMethodCallback( this );
  43. var v_tdRemainder = this.m_trPropTitles.insertCell();
  44. v_tdRemainder.width = "100%";
  45. v_tdRemainder.innerText = " ";
  46. G_QanDBQuery.f_showPropertyValue( v_tdSQL );
  47. this.m_divMenu = this.m_doc.createElement( "div" );
  48. this.m_divMenu.className = "menu";
  49. this.m_divContainer.appendChild( this.m_divMenu );
  50. this.m_divMenu.innerHTML = '<u class="menuitem">Formatted</u><u class="menuitem">Text</u>'
  51. var v_divMenu = this.m_doc.createElement( "div" );
  52. this.m_divContainer.appendChild( v_divMenu );
  53. v_divMenu.innerText = " ";
  54. this.m_divMenu.onclick = this.f_menu_onclick.F_CreateMethodCallback( this );
  55. this.m_divValueContainer = this.m_doc.createElement( "textArea" );
  56. this.m_divValueContainer.className = "planPropValue";
  57. this.m_divContainer.appendChild( this.m_divValueContainer );
  58. this.m_divValueContainer.style.width = "100%";
  59. this.m_divValueContainer.style.height = document.body.offsetHeight -
  60. (this.m_divMenu.offsetTop + this.m_divMenu.offsetHeight + 5);
  61. this.m_divValueContainer.style.border = "none";
  62. this.m_divValueContainer.style.marginRight = "3px";
  63. this.m_divValueContainer.style.border = "solid 1px #DDDDDD";
  64. this.m_divValueContainer.style.backgroundColor = "white";
  65. this.m_divValueContainer.style.fontFamily = "arial";
  66. this.m_divValueContainer.style.fontSize = "1em";
  67. this.m_divFormatted = this.m_doc.createElement( "div" );
  68. this.m_divContainer.appendChild( this.m_divFormatted );
  69. this.m_divFormatted.className = "formatted";
  70. this.m_divFormatted.style.display = "none";
  71. this.m_divFormatted.style.border = "solid 1px #DDDDDD";
  72. this.m_divFormatted.style.overflow = "auto";
  73. this.m_divFormatted.style.height = document.body.offsetHeight -
  74. (this.m_divMenu.offsetTop + this.m_divMenu.offsetHeight + 5);
  75. this.m_divFormatted.onclick =
  76. function() { G_QanPrettyPrint.F_OnClick(event.srcElement); };
  77. document.body.onresize = this.f_content_onresize.F_CreateMethodCallback( this );
  78. this.m_oSQLParser = new C_QanParser();
  79. // this.m_divValueContainer.contentEditable = "true";
  80. // this.m_divValueContainer.canHaveHTML = "false";
  81. }
  82. G_QanDBQuery.f_showPropertyValue = function( tdProp )
  83. {
  84. this.m_sActiveLang = tdProp.innerText;
  85. tdProp.className = "planActiveProperty";
  86. for( var i = 2; i < this.m_trPropTitles.children.length - 1; i += 2 )
  87. if( this.m_trPropTitles.children[i] != tdProp )
  88. this.m_trPropTitles.children[i].className = "planProperty";
  89. }
  90. G_QanDBQuery.f_content_onresize = function()
  91. {
  92. this.m_divValueContainer.style.height = document.body.offsetHeight -
  93. (this.m_divMenu.offsetTop + this.m_divMenu.offsetHeight + 5);
  94. this.m_divFormatted.style.height = document.body.offsetHeight -
  95. (this.m_divMenu.offsetTop + this.m_divMenu.offsetHeight + 5);
  96. }
  97. G_QanDBQuery.f_title_onclick = function()
  98. {
  99. this.f_showPropertyValue( event.srcElement );
  100. }
  101. G_QanDBQuery.f_menu_onclick = function()
  102. {
  103. if( event.srcElement.innerText == "Text" )
  104. {
  105. this.m_divValueContainer.style.display = "";
  106. this.m_divFormatted.style.display = "none";
  107. }
  108. else
  109. if( event.srcElement.innerText == "Formatted" )
  110. {
  111. this.m_divValueContainer.style.display = "none";
  112. this.m_divFormatted.style.display = "block";
  113. var v_xmlResult = this.m_oSQLParser.F_TransformToXML( this.m_divValueContainer.innerText );
  114. if( v_xmlResult )
  115. this.m_divFormatted.innerHTML = this.m_oSQLParser.F_TransformBlockToHTML( v_xmlResult );
  116. }
  117. }