C_PromptElement.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| BI and PM: prmt
  5. *| (C) Copyright IBM Corp. 2002, 2018
  6. *|
  7. *| US Government Users Restricted Rights - Use, duplication or
  8. *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  9. *|
  10. *+------------------------------------------------------------------------+
  11. */
  12. function C_PromptElement( sTag, oAttr, oParent )
  13. {
  14. this.m_sTag = sTag;
  15. this.m_oAttr = {};
  16. this.m_aChild = [];
  17. if ( oAttr )
  18. {
  19. Object.f_extend( this.m_oAttr, oAttr );
  20. }
  21. if ( oParent )
  22. {
  23. oParent.f_appendChild( this );
  24. }
  25. }
  26. C_PromptElement.prototype.f_appendText = function( v_sText )
  27. {
  28. var v_sLabel = null;
  29. v_sLabel = sDecodeU003(K_PRMT_sEMPTY + v_sText);
  30. var reMarkup = new RegExp("(<|>)");
  31. if ( v_sLabel.match( reMarkup ) ) {
  32. v_sLabel = sHtmlEncode(v_sLabel );
  33. }
  34. this.m_aChild.push( v_sLabel );
  35. };
  36. C_PromptElement.prototype.f_getHTML = function()
  37. {
  38. var s = K_PRMT_sLT + this.m_sTag;
  39. for (var a in this.m_oAttr)
  40. {
  41. if ( this.m_oAttr[a] !== null )
  42. {
  43. var sAttr = K_PRMT_sEMPTY + this.m_oAttr[a];
  44. s += K_PRMT_sSP + a + K_PRMT_sEQ_QU + sAttr.replace(K_PRMT_reQU, K_PRMT_sQU_encoded) + K_PRMT_sQU;
  45. }
  46. }
  47. if ( this.m_aChild.length > 0 )
  48. {
  49. s += K_PRMT_sGT;
  50. var v_aStrings = [];
  51. for (var i = 0; i < this.m_aChild.length; i++)
  52. {
  53. var c = this.m_aChild[i];
  54. if ( c && (typeof c.f_getHTML == K_PRMT_sFUNCTION) )
  55. {
  56. s += c.f_getHTML();
  57. }
  58. else
  59. {
  60. s += c;
  61. }
  62. }
  63. s += K_PRMT_sLT_SL + this.m_sTag;
  64. }
  65. else if ( this.m_sTag != 'img' )
  66. {
  67. s += K_PRMT_sSL;
  68. }
  69. s += K_PRMT_sGT;
  70. return s;
  71. };
  72. C_PromptElement.prototype.f_setStyle = function( v_oElement, v_sStyle )
  73. {
  74. var v_aStyles = PRMTUtils.f_parseStyle( v_sStyle );
  75. for (var i = 0; i < v_aStyles.length; i++)
  76. {
  77. var v_s = v_aStyles[i];
  78. v_oElement.style[ PRMTUtils.f_camelCase(v_s[0]) ] = v_s[1];
  79. }
  80. };
  81. C_PromptElement.prototype.f_create = function() {
  82. var v_oElement = document.createElement( this.m_sTag );
  83. if ( window.ie )
  84. {
  85. for (var a in this.m_oAttr)
  86. {
  87. if ( this.m_oAttr[a] !== null )
  88. {
  89. switch( a )
  90. {
  91. case "class":
  92. v_oElement.className = this.m_oAttr[a];
  93. break;
  94. case "style":
  95. this.f_setStyle( v_oElement, this.m_oAttr[a] );
  96. break;
  97. default:
  98. v_oElement.setAttribute( a, K_PRMT_sEMPTY + this.m_oAttr[a] );
  99. }
  100. }
  101. }
  102. }
  103. else
  104. {
  105. for (var a in this.m_oAttr)
  106. {
  107. v_oElement.setAttribute( a, K_PRMT_sEMPTY + this.m_oAttr[a] );
  108. }
  109. }
  110. if ( this.m_aChild.length > 0 )
  111. {
  112. for (var i = 0; i < this.m_aChild.length; i++)
  113. {
  114. var c = this.m_aChild[i];
  115. if ( c && (typeof c.f_create == K_PRMT_sFUNCTION) )
  116. {
  117. v_oElement.appendChild( c.f_create() );
  118. }
  119. else
  120. {
  121. // add text
  122. v_oElement.innerHTML += ( K_PRMT_sEMPTY + c );
  123. }
  124. }
  125. }
  126. return v_oElement;
  127. };
  128. C_PromptElement.prototype.f_appendChild = function(oP)
  129. {
  130. this.m_aChild.push( oP );
  131. };
  132. C_PromptElement.prototype.f_appendClass = function( v_sNewClass )
  133. {
  134. var v_sClass = this.f_getProperty( "class" );
  135. v_sClass = ( v_sClass ? v_sClass + K_PRMT_sSP : K_PRMT_sEMPTY ) + v_sNewClass;
  136. this.f_setProperty( "class", v_sClass );
  137. };
  138. C_PromptElement.prototype.f_getProperty = function ( v_sName )
  139. {
  140. return ( this.m_oAttr[ v_sName ] );
  141. };
  142. C_PromptElement.prototype.f_setProperty = function ( v_sName, v_sValue )
  143. {
  144. this.m_oAttr[ v_sName ] = v_sValue;
  145. };