fhemweb_readingsGroup.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. FW_version["fhemweb_readingsGroup.js"] = "$Id: fhemweb_readingsGroup.js 15189 2017-10-03 17:53:27Z justme1968 $";
  2. //$(document).ready(FW_readingsGroupReadyFn);
  3. $(FW_readingsGroupReadyFn);
  4. function
  5. FW_readingsGroupReadyFn() {
  6. // replace all informIds of the form devName-readingName with rgName-devName.readingName
  7. $(".readingsGroup").each(function() {
  8. if( this.className.search(/\bsortable\b/) ) {
  9. loadScript( 'pgm2/sorttable.js', function() {
  10. setTimeout( function() {
  11. $(".readingsGroup").each(function() {
  12. var sort = parseInt($(this).attr('sortColumn'));
  13. if( sort )
  14. sorttable.doSort(this, Math.abs(sort)-1, sort<0?true:false );
  15. } );
  16. }, 100 );
  17. } );
  18. }
  19. var name = $(this).attr('id').split("-")[1];
  20. $(this).find("[informId]").each(function() {
  21. var informId = $(this).attr('informId');
  22. var parts = informId.split("-");
  23. if( parts[0] != name ) {
  24. informId = name+'-'+informId.replace('-','.');
  25. $(this).attr('informId', informId);
  26. }
  27. });
  28. $(this).find("[rg-fhemWidget-label]").each(function() {
  29. var txt = $(this).attr('rg-fhemWidget-label');
  30. var contents = $(this).find('div').first().contents();
  31. if( contents.size() == 2 )
  32. contents.first().replaceWith(txt);
  33. });
  34. });
  35. }
  36. function
  37. FW_readingsGroupToggle(d) {
  38. var rg = document.getElementById( 'readingsGroup-'+d );
  39. if( rg ) {
  40. s=rg.style;
  41. s.display = s.display=='none' ? 'table' : 'none';
  42. var group = rg.getAttribute('groupId');
  43. if( group ) {
  44. var elArr = document.querySelectorAll( '[groupId='+group+']' );
  45. for( var k=0; k<elArr.length; k++ ){
  46. el = elArr[k];
  47. if( el != rg ) {
  48. el.style.display = 'none';
  49. }
  50. }
  51. }
  52. }
  53. }
  54. function
  55. FW_readingsGroupShow(d,v) {
  56. var rg = document.getElementById( 'readingsGroup-'+d );
  57. if( rg ) {
  58. s=rg.style;
  59. if( s.display=='none' && v )
  60. FW_readingsGroupToggle(d);
  61. else if( s.display!='none' && !v )
  62. FW_readingsGroupToggle(d);
  63. }
  64. }
  65. function
  66. FW_readingsGroupToggle2(d) {
  67. var rg = document.getElementById( 'readingsGroup-'+d );
  68. if( rg ) {
  69. s=rg.style;
  70. s.width = rg.scrollWidth+'px';
  71. var rows = rg.childNodes[0].childNodes;
  72. for(var r=0; r<rows.length; r++){
  73. var row = rows[r];
  74. var pm = row.querySelectorAll('[id=plusminus]');
  75. if( pm.length ) {
  76. for(var i=0; i<pm.length; i++){
  77. if( pm[i].innerHTML == '+' )
  78. pm[i].innerHTML = '-';
  79. else if( pm[i].innerHTML == '-' )
  80. pm[i].innerHTML = '+';
  81. }
  82. } else {
  83. row.style.display = row.style.display=='none' ? '' : 'none';
  84. }
  85. }
  86. var group = rg.getAttribute('groupId');
  87. if( group ) {
  88. var elArr = document.querySelectorAll('[groupId='+group+']');
  89. for(var k=0; k<elArr.length; k++){
  90. el = elArr[k];
  91. s=el.style;
  92. s.width = rg.scrollWidth+'px';
  93. if( el != rg ) {
  94. var rows = el.childNodes[0].childNodes;
  95. for(var r=0; r<rows.length; r++){
  96. var row = rows[r];
  97. var pm = row.querySelectorAll('[id=plusminus]');
  98. if( pm.length ) {
  99. for(var i=0; i<pm.length; i++){
  100. pm[i].innerHTML = '+';
  101. }
  102. } else {
  103. row.style.display = (r==0 ? '' : 'none');
  104. }
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111. function
  112. FW_readingsGroupUpdateLine(d){
  113. var dd = d[0].split("-", 3);
  114. if(dd.length != 2)
  115. return;
  116. if( dd[1] === 'sort' ) {
  117. var rg = document.getElementById( 'readingsGroup-'+dd[0] );
  118. if( sorttable )
  119. sorttable.doSort( rg );
  120. } else if( dd[1] != "visibility" )
  121. return
  122. if( d[1] == 'toggle' ) FW_readingsGroupToggle( dd[0] );
  123. if( d[1] == 'toggle2' ) FW_readingsGroupToggle2( dd[0] );
  124. if( d[1] == 'show' ) FW_readingsGroupShow( dd[0], 1 );
  125. if( d[1] == 'hide' ) FW_readingsGroupShow( dd[0], 0 );
  126. //console.log("xxx: "+d[1]);
  127. }
  128. function FW_readingsGroupCreate(elName, devName, vArr, currVal, set, params, cmd)
  129. {
  130. }
  131. FW_widgets['readingsGroup'] = {
  132. createFn:FW_readingsGroupCreate,
  133. updateLine:FW_readingsGroupUpdateLine
  134. };
  135. /*
  136. =pod
  137. =cut
  138. */