DataStoreViewer.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. define( function() {
  2. "use strict";
  3. var g_aDataStores = [];
  4. function C_DataStoreViewer()
  5. {
  6. };
  7. C_DataStoreViewer.prototype.draw = function( oControlHost )
  8. {
  9. var aDataStores = g_aDataStores;
  10. var o = oControlHost.configuration;
  11. if ( o && o["Control name"] )
  12. {
  13. var oControl = oControlHost.page.getControlByName( o["Control name"] );
  14. aDataStores = o["Data store name"] ? [oControl.getDataStore( o["Data store name"] )] : oControl.dataStores;
  15. }
  16. var aHtml = [];
  17. aHtml.push( '<table style="border-spacing:2px;"><tr style="vertical-align:top;">' );
  18. for ( var i = 0; i < aDataStores.length; i++ )
  19. {
  20. aHtml.push( '<td>' );
  21. this.drawDataStore( aDataStores[i], aHtml );
  22. aHtml.push( '</td>' );
  23. }
  24. aHtml.push( '</tr></table>' );
  25. var el = oControlHost.container;
  26. el.innerHTML = aHtml.join( "" );
  27. var nl = el.querySelectorAll( ".DataStoreViewerScrollableDiv" );
  28. for ( var i = 0; i < nl.length; i++ )
  29. {
  30. var div = nl.item( i );
  31. if ( div.offsetHeight > 400 )
  32. {
  33. div.style.height = "400px";
  34. }
  35. }
  36. };
  37. C_DataStoreViewer.prototype.drawDataStore = function( oDataStore, aHtml )
  38. {
  39. var iColCount = oDataStore.columnCount;
  40. var iRowCount = oDataStore.rowCount;
  41. aHtml.push( '<table><tr><td style="background-color:#6793CB; padding:4px;">' );
  42. aHtml.push( '<table style="color:#EAEAEA; font-size:14pt; width:100%">' );
  43. aHtml.push( '<tr><td style="width:100%;"><span style="font-weight:bold">' + ( this.F_HTMLEncode( oDataStore.name ) || 'DataStore' ) + '</span></td><td>[' + oDataStore.index + ']</td></tr>' );
  44. aHtml.push( '</table>' );
  45. aHtml.push( '<div style="padding:0px 0px 6px 6px;"><span style="font-size:10pt; vertical-align:middle; color:#CCCCCC;"> # of rows:' + iRowCount + '</span></div>' );
  46. aHtml.push( '<div class="DataStoreViewerScrollableDiv" style="width:100%; overflow-y:auto; overflow-x:hidden;">' );
  47. aHtml.push( '<table class="ls" style="border-collapse:collapse; background-color:white;">' );
  48. var aDataTypes = [];
  49. var bHasDataTypes = false;
  50. for ( var iCol = 0; iCol < iColCount; iCol++ )
  51. {
  52. var sDataType = oDataStore.dataTypes[iCol];
  53. aDataTypes.push( sDataType );
  54. if ( sDataType )
  55. {
  56. bHasDataTypes = true;
  57. }
  58. }
  59. if ( bHasDataTypes )
  60. {
  61. aHtml.push( '<tr>' );
  62. for ( var iCol = 0; iCol < iColCount; iCol++ )
  63. {
  64. aHtml.push( '<td class="lt" style="color:#CCCCCC; background-color:#6793CB; font-weight:bold; border-left-style:none; border-top-style:none; border-right-style:none;">' + aDataTypes[iCol] + '</td>' );
  65. }
  66. aHtml.push( '</tr>' );
  67. }
  68. aHtml.push( '<tr style="font-weight:bold;">' );
  69. for ( var iCol = 0; iCol < iColCount; iCol++ )
  70. {
  71. aHtml.push( '<td class="lt">' + this.F_HTMLEncode( oDataStore.columnNames[iCol] ) + '</td>' );
  72. }
  73. aHtml.push( '</tr>' );
  74. for ( var iRow = 0; iRow < iRowCount; iRow++ )
  75. {
  76. aHtml.push( '<tr>' );
  77. for ( var iCol = 0; iCol < iColCount; iCol++ )
  78. {
  79. var sValue = oDataStore.getCellValue( iRow, iCol );
  80. var sFormattedValue = oDataStore.getFormattedCellValue( iRow, iCol );
  81. var sDataType = oDataStore.dataTypes[iCol];
  82. aHtml.push( '<td class="' + ( ( sDataType == "number" ) ? 'lm' : 'lc' ) + '">' );
  83. aHtml.push( this.F_HTMLEncode( sFormattedValue ) );
  84. if ( sFormattedValue != sValue )
  85. {
  86. aHtml.push( ' (' + this.F_HTMLEncode( sValue ) + ')' );
  87. }
  88. aHtml.push( '</td>' );
  89. }
  90. aHtml.push( '</tr>' );
  91. }
  92. aHtml.push( '</table>' );
  93. aHtml.push( '</div>' );
  94. aHtml.push( '</td></tr></table>' );
  95. };
  96. C_DataStoreViewer.prototype.setData = function( oControlHost, oDataStore )
  97. {
  98. g_aDataStores[oDataStore.index] = oDataStore;
  99. };
  100. C_DataStoreViewer.prototype.F_HTMLEncode = function( s )
  101. {
  102. return String( s ).replace( /&/g, "&amp;" ).replace( /</g, "&lt;" ).replace( />/g, "&gt;" );
  103. };
  104. return C_DataStoreViewer;
  105. });