src/UI/WebBundle/Resources/views/Whater/whater_point_map.html.twig line 1

Open in your IDE?
  1. {% extends 'Common/base.html.twig' %}
  2. {% import 'Common/parts/functions.html.twig' as function %}
  3. {% block title %}{{ 'admin.whater_point.map.title'|trans }} | {{ parent() }}{% endblock %}
  4. {% block stylesheets %}
  5. {{ parent() }}
  6. {{ encore_entry_link_tags('select2_styles') }}
  7. {{ encore_entry_link_tags('leaflet_styles') }}
  8. {% endblock stylesheets %}
  9. {% block javascripts %}
  10. {{ parent() }}
  11. {{ encore_entry_script_tags('select2_js') }}
  12. {{ encore_entry_script_tags('leaflet_js') }}
  13. {{ encore_entry_script_tags('wt_whater_point_map') }}
  14. {% endblock javascripts %}
  15. {% block contents %}
  16. <div class="container whater-map" ng-controller="mapWhaterpointsCtrl">
  17. <nav class="mb-2" aria-label="breadcrumb">
  18. <ol class="breadcrumb mb-0">
  19. <li class="breadcrumb-item"><a href="{{path('web_init')}}">Inicio</a></li>
  20. {% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  21. <li class="breadcrumb-item"><a href="{{path('web_app_user_dashboard')}}">Mi cuenta</a></li>
  22. {% endif %}
  23. <li class="breadcrumb-item active" aria-current="page">Mapa</li>
  24. </ol>
  25. </nav>
  26. <div class="mb-2">
  27. <div class="border-bottom mb-3 mx-n3 px-2 mx-lg-n6 px-lg-6">
  28. <div class="row g-3 flex-between-end align-items-center mb-5">
  29. <div class="col-auto me-auto">
  30. <h2 >{{ 'admin.whater_point.map.title'|trans }}</h2>
  31. </div>
  32. <div class="col-auto ms-auto">
  33. {% if is_granted('IS_AUTHENTICATED_FULLY') and (app.user.user.activeRole.type == 'ROLE_ADMIN') %}
  34. <a href="{{ url('web_admin_whater_point_list') }}" class="btn btn-phoenix-secondary mb-2 me-2 mb-sm-0">Listado</a>
  35. {% endif %}
  36. <a href="{{ url('web_app_whater_point_register') }}" class="btn btn-phoenix-secondary mb-2 me-2 mb-sm-0">Nuevo</a>
  37. </div>
  38. </div>
  39. </div>
  40. </div>
  41. {{ function.showFlashes() }}
  42. <ul class="nav nav-links mb-3 mb-lg-2 mx-n3">
  43. <li class="nav-item">
  44. <div class="nav-link active text-decoration-underline" id="link-whaterpoints" aria-current="page" ng-click="clickFilterLinkWhaterpoints()">
  45. Mostrar Whaterpoints
  46. </div>
  47. </li>
  48. <li class="nav-item">
  49. <div class="nav-link" id="link-establishments" ng-click="clickFilterLinkEstablishments()">
  50. Mostrar Establecimientos
  51. </div>
  52. </li>
  53. <li class="nav-item">
  54. <div class="nav-link" id="link-distribution-networks" ng-click="clickFilterLinkDistributionNetworks()">
  55. Mostrar Redes de Distribución
  56. </div>
  57. </li>
  58. </ul>
  59. {% set disable_filters = true %}
  60. {% if is_granted('IS_AUTHENTICATED_FULLY') %}
  61. {% set disable_filters = not (app.user.user.activeRole.type == 'ROLE_ADMIN' or app.user.user.whaterOrganization != NULL) %}
  62. <div ng-init="initActiveLicense(1)"></div>
  63. {% endif %}
  64. <div class="row">
  65. <div class="col-6 col-md-4 col-lg-3 mb-1">
  66. <label class="form-label" for="whater_name">Nombre</label>
  67. <input type="text" id="whater_name" class="form-control mb-3" ng-init="initWhaterName()"/>
  68. </div>
  69. <div class="col-6 col-md-4 col-lg-3 mb-1" ng-init="initSelectCountries()">
  70. <label class="form-label" for="whater_country_select">Pais</label>
  71. <select id="whater_country_select" class="form-select mb-3" >
  72. {% for country in countries %}
  73. <option {{country.isoCode3() == "ESP" ? "selected" : ""}} value="{{ country.isoCode3() }}">{{ country.name() }}</option>
  74. {% endfor %}
  75. </select>
  76. </div>
  77. <div class="col-6 col-md-4 col-lg-3 mb-1" ng-init="initSelectTowns()">
  78. <label class="form-label" for="whater_town_select">Ciudad/Municipio</label>
  79. <select id="whater_town_select" class="form-select mb-3"
  80. data-search-town-url="{{ url('web_api_public_zones_town_list', {'list_town[orderParameter]':'name','list_town[orderValue]':'asc','list_town[filterParameter]':'country_iso3,tablesearch'}) }}">
  81. </select>
  82. </div>
  83. <div class="col-6 col-md-4 col-lg-3 mb-1 " >
  84. <label class="form-label">&nbsp;</label>
  85. <div>
  86. <a class="btn btn-link text-900 fs--1"
  87. data-bs-toggle="collapse" href="#advanced_filters" role="button"
  88. aria-expanded="false" aria-controls="advanced_filters" >Filtros Avanzados</a>
  89. </div>
  90. </div>
  91. </div>
  92. <div class="collapse row" id="advanced_filters">
  93. <div class="col-6 col-md-4 col-lg-3 mb-1" ng-init="initSelectWhaterStatus()">
  94. <label class="form-label" for="whater_status_input">Estado del agua</label>
  95. <select placeholder="Estado"
  96. id="whater_status_input"
  97. class="form-select mb-3"
  98. {% if disable_filters %}disabled="disabled"{% endif %} >
  99. <option selected value="ALL">Todos los estados</option>
  100. <option value="WP_STATUS_SUITABLE">Apta para el consumo</option>
  101. <option value="WP_STATUS_WITH_RESTRICTIONS">Apta con restricciones</option>
  102. <option value="WP_STATUS_NOT_SUITABLE">No apta para el consumo</option>
  103. <option value="WP_STATUS_UNKNOWN">Sin datos</option>
  104. </select>
  105. </div>
  106. <div class="col-6 col-md-4 col-lg-3 mb-1 select-whaterpoint-type" ng-init="initSelectWhaterType()">
  107. <label class="form-label" for="whater_type_input">Tipo de agua</label>
  108. <select placeholder="Estado"
  109. id="whater_type_input"
  110. class="form-select mb-3"
  111. {% if disable_filters %}disabled="disabled"{% endif %} >
  112. <option selected value="ALL">Todos los tipos</option>
  113. <option value="WP_TYPE_FOUNTAIN">{{'whaterpoint.type.WP_TYPE_FOUNTAIN' | trans }}</option>
  114. <option value="WP_TYPE_TAP">{{'whaterpoint.type.WP_TYPE_TAP' | trans }}</option>
  115. <option value="WP_TYPE_DEPOSIT">{{'whaterpoint.type.WP_TYPE_DEPOSIT' | trans }}</option>
  116. <option value="WP_TYPE_BOTTLED">{{'whaterpoint.type.WP_TYPE_BOTTLED' | trans }}</option>
  117. <option value="WP_TYPE_SPRING">{{'whaterpoint.type.WP_TYPE_SPRING' | trans }}</option>
  118. <option value="WP_TYPE_TREATED">{{'whaterpoint.type.WP_TYPE_TREATED' | trans }}</option>
  119. </select>
  120. </div>
  121. <div class="col-6 col-md-4 col-lg-3 mb-1 select-establishment-type" style="display:none;" ng-init="initSelectEstablishmentType()">
  122. <label class="form-label" for="establihment_type_input">Tipo de establecimiento</label>
  123. <select placeholder="Estado"
  124. id="establihment_type_input"
  125. class="form-select mb-3 "
  126. {% if disable_filters %}disabled="disabled"{% endif %} >
  127. <option selected value="ALL">Todos los tipos</option>
  128. <option value="ET_COMMERCIAL_ESTABLISHMENT">{{'admin.establishment.tipology.ET_COMMERCIAL_ESTABLISHMENT' | trans }}</option>
  129. <option value="ET_BAR_RESTAURANT_CAFETERIA">{{'admin.establishment.tipology.ET_BAR_RESTAURANT_CAFETERIA' | trans }}</option>
  130. <option value="ET_RESTAURANT_CHAIN">{{'admin.establishment.tipology.ET_RESTAURANT_CHAIN' | trans }}</option>
  131. <option value="ET_PRIORITIZED_BUILDING">{{'admin.establishment.tipology.ET_PRIORITIZED_BUILDING' | trans }}</option>
  132. <option value="ET_INDIVIDUAL_ACCOMMODATION">{{'admin.establishment.tipology.ET_INDIVIDUAL_ACCOMMODATION' | trans }}</option>
  133. <option value="ET_CENTERS">{{'admin.establishment.tipology.ET_CENTERS' | trans }}</option>
  134. <option value="ET_HOTEL_CHAIN">{{'admin.establishment.tipology.ET_HOTEL_CHAIN' | trans }}</option>
  135. <option value="ET_TOURISM_OFFICES">{{'admin.establishment.tipology.ET_TOURISM_OFFICES' | trans }}</option>
  136. <option value="ET_OTHERS">{{'admin.establishment.tipology.type.ET_OTHERS' | trans }}</option>
  137. </select>
  138. </div>
  139. {% if is_granted('IS_AUTHENTICATED_FULLY') and app.user.user.activeRole.type == 'ROLE_ADMIN' %}
  140. <div class="col-6 col-md-4 col-lg-3 mb-1 select-distribution-network-type" style="display:none;" ng-init="initSelectDistributionNetworkType()">
  141. <label class="form-label" for="distribution_network_type_select_type">Tipo de redes de distribución</label>
  142. <select id="distribution_network_type_select_type"
  143. class="form-select mb-3">
  144. <option value="DN_TYPE_EXTERNAL" selected>Externa</option>
  145. <option value="DN_TYPE_INTERMEDIATE">Intermedia</option>
  146. <option value="DN_TYPE_INTERNAL">Interna</option>
  147. </select>
  148. </div>
  149. <div class="col-6 col-md-4 col-lg-3 mb-1 select-distribution-network" ng-init="initSelectDistributionNetwork()">
  150. <label class="form-label" for="distribution_network_select">Red de distribución</label>
  151. <select id="distribution_network_select"
  152. class="form-select mb-3"
  153. data-search-distr-network-url="{{ url('web_api_admin_list_distribution_network', {'list_distribution_network[page]' : 1,'list_distribution_network[limit]' : 40, 'list_distribution_network[filterParameter]':'country_iso3,distribution_network_name','list_distribution_network[orderParameter]':'name','list_distribution_network[orderValue]':'asc','list_distribution_network[filterValue]':'' }) }}">
  154. </select>
  155. </div>
  156. {% endif %}
  157. <div class="col-6 col-md-4 col-lg-3 mb-1" ng-init="initSelectMaxResults()">
  158. <label class="form-label" for="whater_max_results_input">Número máximo de resultados</label>
  159. <select placeholder="Número máximo de resultados"
  160. id="whater_max_results_input"
  161. class="form-select mb-3"
  162. {% if disable_filters %}disabled="disabled"{% endif %} >
  163. <option selected value="10">10 resultados</option>
  164. <option value="100">100 resultados</option>
  165. <option value="500">500 resultados</option>
  166. <option value="1000">1000 resultados</option>
  167. <option value="2000">2000 resultados</option>
  168. <option value="10000">10000 resultados</option>
  169. <option value="100000000">Todos los resultados</option>
  170. </select>
  171. </div>
  172. </div>
  173. <div class="my-4" id="map_div" ng-init="initLeafletMap('{{defaultTown.id}}', '{{defaultTown.latitude}}','{{defaultTown.longitude}}')">
  174. <div class="alert alert-outline-warning alert-dismissible fade show py-2 d-none" role="alert" id="alert-permission-location">
  175. Debe dar permisos al navegador para poder obtener su posicion!
  176. (Mas información en
  177. <a href="https://support.mozilla.org/es/kb/firefox-comparte-mi-ubicacion-con-sitios-web" target="_blank">Firefox</a>,
  178. <a href="https://support.google.com/chrome/answer/142065?hl=es" target="_blank">Chrome</a>)
  179. </div>
  180. <div class="alert alert-outline-warning alert-dismissible fade show py-2 d-none" role="alert" id="alert-location-unavailable">
  181. No se ha encontrado sensor de ubicación en su equipo para localizar su posicion en el mapa!
  182. (Mas información en
  183. <a href="https://support.mozilla.org/es/kb/firefox-comparte-mi-ubicacion-con-sitios-web" target="_blank">Firefox</a>,
  184. <a href="https://support.google.com/chrome/answer/142065?hl=es" target="_blank">Chrome</a>)
  185. </div>
  186. <div id="whater_map_canvas" style="height:500px;width:100%"></div>
  187. <a href="#" id="refresh_map_button" ng-click="refreshMap()" class="btn btn-link text-900 fs--1 me-1 mb-1 mt-2">Actualizar mapa</a>
  188. </div>
  189. <div class="offcanvas offcanvas-bottom" id="offcanvasBottom" tabindex="-1"
  190. aria-labelledby="offcanvasBottomLabel">
  191. <div class="offcanvas-header pb-1" >
  192. <a class="btn btn-primary btn-sm mb-2"
  193. ng-click="showWhaterpoint()" ng-show="mapResultsType == 'whaterpoints'"
  194. role="button" >Ampliar información</a>
  195. <a class="btn btn-primary btn-sm mb-2"
  196. ng-click="showDistributionNetwork()" ng-show="mapResultsType == 'distribution_networks'"
  197. role="button" >Ampliar información</a>
  198. <button class="btn-close text-reset" type="button" data-bs-dismiss="offcanvas"
  199. aria-label="Close"></button>
  200. </div>
  201. <div class="offcanvas-body py-0">
  202. <div class="row" ng-show="mapResultsType == 'whaterpoints'">
  203. <div class="col-6 col-md-4 col-lg-3 mb-2"">
  204. <div class="mb-0 small">Nombre</div>
  205. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.name"></div>
  206. </div>
  207. <div class="col-6 col-md-4 col-lg-3 mb-2">
  208. <div class="mb-0 small">Tipo</div>
  209. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.type"></div>
  210. </div>
  211. <div class="col-6 col-md-4 col-lg-3 mb-2">
  212. <div class="mb-0 small">Localización</div>
  213. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.location_name"></div>
  214. </div>
  215. <div class="col-6 col-md-4 col-lg-3 mb-2">
  216. <div class="mb-0 small">Dirección (<a href="#" ng-click="requestWhaterpointChange()" class="change-ubication small" target="_blank">¿La localización en el mapa es incorrecta? Pulsa aquí.</a>)</div>
  217. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.address"></div>
  218. </div>
  219. <div class="col-6 col-md-4 col-lg-3 mb-2">
  220. <div class="mb-0 small">Información del agua</div>
  221. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.whater_status_text"></div>
  222. </div>
  223. <div class="col-6 col-md-4 col-lg-3 mb-2">
  224. <div class="mb-0 small">Red de Distribución</div>
  225. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.whater_distribution_network_text"></div>
  226. </div>
  227. <div class="col-6 col-md-4 col-lg-3 mb-2">
  228. <div class="mb-0 small">Actualizado él</div>
  229. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.whater_status_at"></div>
  230. </div>
  231. {% if is_granted('IS_AUTHENTICATED_FULLY') and app.user.user.activeRole.type == 'ROLE_ADMIN' %}
  232. <div class="col-6 col-md-4 col-lg-3 mb-2">
  233. <div class="mb-0 small">ID</div>
  234. <div class="mb-0 fs-0" ng-bind-html="selected_whaterpoint.uuid"></div>
  235. </div>
  236. {% endif %}
  237. </div>
  238. <div class="row ng-hide" ng-show="mapResultsType == 'distribution_networks'">
  239. <div class="col-6 col-md-4 col-lg-3 mb-2"">
  240. <div class="mb-0 small">Nombre</div>
  241. <div class="mb-0 fs-0" ng-bind-html="selected_distribution_network.distribution_network.name"></div>
  242. </div>
  243. <div class="col-6 col-md-4 col-lg-3 mb-2"">
  244. <div class="mb-0 small">Tipo</div>
  245. <div class="mb-0 fs-0" ng-bind-html="selected_distribution_network.distribution_network.type_text" ></div>
  246. </div>
  247. <div class="col-6 col-md-4 col-lg-3 mb-2"">
  248. <div class="mb-0 small">Estado</div>
  249. <div class="mb-0 fs-0" ng-bind-html="selected_distribution_network.distribution_network.status_text" ></div>
  250. </div>
  251. </div>
  252. </div>
  253. </div>
  254. </div>
  255. {% endblock contents %}