onu_map.html.twig 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. {% extends 'SonataAdminBundle:CRUD:base_list.html.twig' %}
  2. {% block stylesheets %}
  3. {{ parent() }}
  4. <style>
  5. #map {
  6. width: 100%;
  7. height: calc(100vh - 157px);
  8. border-top: 0px;
  9. border-bottom: 0px;
  10. border-left: 0px;
  11. border-right: 0px;
  12. border-style: none;
  13. border-color: none;
  14. z-index: 0;
  15. cursor:default;
  16. }
  17. footer {z-index: 1100;}
  18. .container-fluid {padding-left: 0px; padding-right: 0px;}
  19. </style>
  20. {% endblock %}
  21. {% block actions %}
  22. {% endblock %}
  23. {% block tab_menu %}
  24. <ol class="nav navbar-top-links breadcrumb">
  25. <li>
  26. <a href="{{url('sonata_admin_dashboard')}}"><i class="fa fa-home"></i></a>
  27. </li>
  28. <li class="active"><span>{{ 'Mapa ONUs'|trans({}, 'StatsBundle') }}</span></li>
  29. </ol>
  30. {% endblock %}
  31. {% block title %}
  32. {% endblock %}
  33. {% block navbar_title %}
  34. {% endblock %}
  35. {% block list_filters_actions %}
  36. <ul class="nav navbar-nav navbar-right">
  37. <li>
  38. <a class="sonata-action-element" href="{{url('admin_stats_onu_list')}}"><i class="fa fa-list" aria-hidden="true"></i>
  39. {{ 'link_action_list'|trans({}, 'SonataAdminBundle') }}
  40. </a>
  41. </li>
  42. </ul>
  43. {% endblock %}
  44. {% block list_filters %}
  45. {% endblock %}
  46. {% block list_table %}
  47. {% endblock %}
  48. {% block sonata_wrapper %}
  49. {{ parent() }}
  50. <footer class="footer">
  51. <span id="statusBar" class="statusBar">Listo.</span>
  52. </footer>
  53. {% endblock %}
  54. {% block content %}
  55. <div id='wrapper' class="box box-primary">
  56. <div id='page-content-wrapper'>
  57. <div class="cms-block cms-block-element" >
  58. <div id="map"></div>
  59. </div>
  60. </div>
  61. </div>
  62. <!-- Page JS -->
  63. {% include 'LeafletBundle:Leaflet:resources_only_leaflet.html.twig' %}
  64. <!-- twig para reemplazar url por crossbrowser de feature geoserver -->
  65. {% include 'LeafletBundle:Leaflet:leaflet_wms.html.twig' %}
  66. <script>
  67. window.SONATA_CONFIG.USE_ICHECK = false;
  68. /* --------------------- PROGRAMA PRINCIPAL ------------------------- */
  69. initializeMap();
  70. /* ------------------- FIN PROGRAMA PRINCIPAL ----------------------- */
  71. /* --------------------- Carga Mapa -------------------------------- */
  72. function initializeMap() {
  73. window.map = new L.Map('map', { center: new L.LatLng({{map['lat']}}, {{map['lng']}}), zoom: {{map['zoom']}} });
  74. var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
  75. var osmAttrib = '&copy; OpenStreetMap';
  76. var osm = L.tileLayer(osmUrl, { maxZoom: 18, attribution: osmAttrib });
  77. var controlLayers = L.control.layers({
  78. 'OSM': osm.addTo(window.map),
  79. "Google": L.tileLayer('http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}', {zIndex:1, attribution: '&copy; Google'})
  80. }, {}, { position: 'topleft', collapsed: false });
  81. layerGeoRx = L.tileLayer.betterWms('http://{{gsHost}}:{{gsPort}}/geoserver/{{ws}}/wms', {
  82. layers: '{{ws}}:{{layer}}',
  83. transparent:true,
  84. format: 'image/png',
  85. zIndex: 99,
  86. maxZoom: 18,
  87. styles: 'onuRxPowerLabel'
  88. });
  89. layerGeoTx = L.tileLayer.betterWms('http://{{gsHost}}:{{gsPort}}/geoserver/{{ws}}/wms', {
  90. layers: '{{ws}}:{{layer}}',
  91. transparent:true,
  92. format: 'image/png',
  93. zIndex: 99,
  94. maxZoom: 18,
  95. styles: 'onuTxPowerLabel'
  96. });
  97. layerGeoStatus = L.tileLayer.betterWms('http://{{gsHost}}:{{gsPort}}/geoserver/{{ws}}/wms', {
  98. layers: '{{ws}}:{{layer}}',
  99. transparent:true,
  100. format: 'image/png',
  101. zIndex: 99,
  102. maxZoom: 18,
  103. styles: 'onuStatus'
  104. }).addTo(window.map);
  105. var extraLayers = L.control.layers({
  106. "TX": layerGeoTx,
  107. 'RX': layerGeoRx,
  108. "Status": layerGeoStatus
  109. }, {}, { position: 'topleft', collapsed: false });
  110. extraLayers.addTo(window.map);
  111. }
  112. /* --------------------- Carga Mapa -------------------------------- */
  113. /* --------------------- Show Features wms ------------------------- */
  114. function customPopupFeature(latlng, content) {
  115. if(content.hasOwnProperty('id')) {
  116. id = content.id;
  117. if(content.status == 1) {status = "On";} else {status = "Off";}
  118. if(content.rx == 0) {rx = "-";} else {rx = content.rx;}
  119. if(content.tx == 0) {tx = "-";} else {tx = content.tx;}
  120. if(content.volt == 0) {volt = "-";} else {volt = content.volt;}
  121. if(content.temp == 0) {temp = "-";} else {temp = content.temp;}
  122. ponSerialNumber = id.replace("onu.", "").toUpperCase();
  123. link = "{{path('admin_stats_onu_show',{'id':'IDONU'})}}";
  124. url = link.replace("IDONU", content.id_stats);
  125. data = "<a href='" + url + "' target='_blank'><b>" + ponSerialNumber + "</b></a><br /> Tx: <span class='"+txStyle(content.tx)+"'>" + tx +
  126. "</span> dBm<br /> Rx: <span class='"+rxStyle(content.rx)+"'>" + rx +
  127. "</span> dBm<br /> Status: " + status +
  128. "<br /> Voltage: " + volt +
  129. " V<br /> Temperature: " + temp +
  130. " ºC<br /> Muestreo: " + content.muestreo;
  131. popup = L.popup()
  132. .setLatLng(latlng)
  133. .setContent(data)
  134. .openOn(window.map);
  135. }
  136. }
  137. function rxStyle(value) {
  138. style = "rx_ftth_bordo";
  139. if (value >= -30 && value < -28) {
  140. style = "rx_ftth_rojo";
  141. } else if (value >= -28 && value < -26) {
  142. style = "rx_ftth_amarillo";
  143. } else if (value >= -26 && value < -20) {
  144. style = "rx_ftth_verde";
  145. } else if (value >= -20 && value < -15) {
  146. style = "rx_ftth_amarillo";
  147. } else if (value >= -15 && value < -13) {
  148. style = "rx_ftth_rojo";
  149. }
  150. return style;
  151. }
  152. function txStyle(value) {
  153. style = "tx_ftth_bordo";
  154. if (value < 1) {
  155. style = "tx_ftth_bordo";
  156. } else if (value >= 1 && value < 1.5) {
  157. style = "tx_ftth_amarillo";
  158. } else if (value >= 1.5 && value < 3.5) {
  159. style = "tx_ftth_verde";
  160. } else if (value >= 3.5 && value < 4.5) {
  161. style = "tx_ftth_amarillo";
  162. } else if (value >= 4.5 && value < 5) {
  163. style = "tx_ftth_rojo";
  164. }
  165. return style;
  166. }
  167. /* --------------------- Show Features wms ------------------------- */
  168. </script>
  169. {% endblock %}