demo.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /*global SyntaxHighlighter*/
  2. SyntaxHighlighter.config.tagName = 'code';
  3. if ( window.$ ) {
  4. $(document).ready( function () {
  5. if ( ! $.fn.dataTable ) {
  6. return;
  7. }
  8. var dt110 = $.fn.dataTable.Api ? true : false;
  9. // Work around for WebKit bug 55740
  10. var info = $('div.info');
  11. if ( info.height() < 115 ) {
  12. info.css( 'min-height', '8em' );
  13. }
  14. var escapeHtml = function ( str ) {
  15. return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  16. };
  17. // css
  18. var cssContainer = $('div.tabs div.css');
  19. if ( $.trim( cssContainer.find('code').text() ) === '' ) {
  20. cssContainer.find('code, p:eq(0), div').css('display', 'none');
  21. }
  22. // init html
  23. var table = $('<p/>').append( $('table').clone() ).html();
  24. var demoHtml = $.trim( $('div.demo-html').html() );
  25. if ( demoHtml ) {
  26. demoHtml = demoHtml+'\n\n';
  27. }
  28. $('div.tabs div.table').append(
  29. '<code class="multiline language-html">\t\t\t'+
  30. escapeHtml( demoHtml + table )+
  31. '</code>'
  32. );
  33. //SyntaxHighlighter.highlight({}, $('#display-init-html')[0]);
  34. // Allow the demo code to run if DT 1.9 is used
  35. if ( dt110 ) {
  36. // json
  37. var ajaxTab = $('ul.tabs li').eq(3).css('display', 'none');
  38. $(document).on( 'init.dt', function ( e, settings ) {
  39. if ( e.namespace !== 'dt' ) {
  40. return;
  41. }
  42. var api = new $.fn.dataTable.Api( settings );
  43. var show = function ( str ) {
  44. ajaxTab.css( 'display', 'block' );
  45. $('div.tabs div.ajax code').remove();
  46. $('div.tabs div.ajax div.syntaxhighlighter').remove();
  47. // Old IE :-|
  48. try {
  49. str = JSON.stringify( str, null, 2 );
  50. } catch ( e ) {}
  51. $('div.tabs div.ajax').append(
  52. $('<code class="multiline language-js"/>').text( str )
  53. );
  54. // This can be really slow for large builds
  55. setTimeout( function () {
  56. SyntaxHighlighter.highlight( {}, $('div.tabs div.ajax code')[0] );
  57. }, 500 );
  58. };
  59. // First draw
  60. var json = api.ajax.json();
  61. if ( json ) {
  62. show( json );
  63. }
  64. // Subsequent draws
  65. api.on( 'xhr.dt', function ( e, settings, json ) {
  66. show( json );
  67. } );
  68. } );
  69. // php
  70. var phpTab = $('ul.tabs li').eq(4).css('display', 'none');
  71. $(document).on( 'init.dt.demoSSP', function ( e, settings ) {
  72. if ( e.namespace !== 'dt' ) {
  73. return;
  74. }
  75. if ( settings.oFeatures.bServerSide ) {
  76. if ( $.isFunction( settings.ajax ) ) {
  77. return;
  78. }
  79. $.ajax( {
  80. url: '../resources/examples.php',
  81. data: {
  82. src: settings.sAjaxSource || settings.ajax.url || settings.ajax
  83. },
  84. dataType: 'text',
  85. type: 'post',
  86. success: function ( txt ) {
  87. phpTab.css( 'display', 'block' );
  88. $('div.tabs div.php').append(
  89. '<code class="multiline language-php">'+txt+'</code>'
  90. );
  91. SyntaxHighlighter.highlight( {}, $('div.tabs div.php code')[0] );
  92. }
  93. } );
  94. }
  95. } );
  96. }
  97. else {
  98. $('ul.tabs li').eq(3).css('display', 'none');
  99. $('ul.tabs li').eq(4).css('display', 'none');
  100. }
  101. // Tabs
  102. $('ul.tabs').on( 'click', 'li', function () {
  103. $('ul.tabs li.active').removeClass('active');
  104. $(this).addClass('active');
  105. $('div.tabs>div')
  106. .css('display', 'none')
  107. .eq( $(this).index() ).css('display', 'block');
  108. } );
  109. $('ul.tabs li.active').click();
  110. } );
  111. }