asset_new.html 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. {% extends "base.html" %}
  2. {% set active_page = "assets" %}
  3. {% block title %} New asset {% endblock %}
  4. {% block divs %}
  5. <div class="container-fluid">
  6. <div class="row">
  7. <div class="col-md-12">
  8. <button class="btn btn-sm btn-responsive btn-info" type="submit">
  9. <a href="../../assets">Go to asset overview</a>
  10. </button>
  11. </div>
  12. <div class="col-md-10">
  13. </div>
  14. </div>
  15. <form class="new-asset-form form-horizontal" method="POST" action="/assets/create">
  16. {{ asset_form.csrf_token }}
  17. {{ asset_form.hidden_tag() }}
  18. <fieldset>
  19. <div class="row">
  20. <div class="col-md-6">
  21. <h2>Creating a new asset {% if parent_asset_name %} for {{ parent_asset_name }} {% endif %}</h2>
  22. <input type="hidden" name="parent_asset_id" value="{{ parent_asset_id }}">
  23. <div class="form-group">
  24. {{ asset_form.name.label(class="col-md-6 control-label") }}
  25. <div class="col-md-6">
  26. {{ asset_form.name(class_="form-control") }}
  27. {% for error in asset_form.errors.name %}
  28. <span style="color: red;">[{{error}}]</span>
  29. {% endfor %}
  30. </div>
  31. </div>
  32. <div class="form-group">
  33. {{ asset_form.generic_asset_type_id.label(class="col-md-6 control-label")}}
  34. <div class="col-md-6">
  35. {{ asset_form.generic_asset_type_id(class_="form-control") }}
  36. {% for error in asset_form.errors.generic_asset_type_id%}
  37. <span style="color: red;">[{{error}}]</span>
  38. {% endfor %}
  39. </div>
  40. </div>
  41. <div class="form-group">
  42. {{ asset_form.account_id.label(class="col-md-6 control-label") }}
  43. <div class="col-md-6">
  44. {{ asset_form.account_id(class_="form-control") }}
  45. {% if account %}
  46. <script>
  47. document.addEventListener("DOMContentLoaded", function() {
  48. var accountID = document.querySelector("select[name='account_id']");
  49. accountID.value = "{{ account }}";
  50. accountID.style.pointerEvents = "none";
  51. accountID.style.backgroundColor = "#f0f0f0";
  52. });
  53. </script>
  54. {% endif %}
  55. {% for error in asset_form.errors.account_id %}
  56. <span style="color: red;">[{{ error }}]</span>
  57. {% endfor %}
  58. </div>
  59. </div>
  60. <div class="form-group">
  61. {{ asset_form.latitude.label(class="col-md-6 control-label") }}
  62. <div class="col-md-6">
  63. {{ asset_form.latitude(class_="form-control") }}
  64. {% for error in asset_form.errors.latitude %}
  65. <span style="color: red;">[{{error}}]</span>
  66. {% endfor %}
  67. </div>
  68. </div>
  69. <div class="form-group">
  70. {{ asset_form.longitude.label(class="col-md-6 control-label") }}
  71. <div class="col-md-6">
  72. {{ asset_form.longitude(class_="form-control") }}
  73. {% for error in asset_form.errors.longitude %}
  74. <span style="color: red;">[{{error}}]</span>
  75. {% endfor %}
  76. </div>
  77. </div>
  78. <div class="form-group">
  79. {{ asset_form.attributes.label(class="col-md-6 control-label") }}
  80. <div class="col-md-6">
  81. {{ asset_form.attributes(class_="form-control") }}
  82. {% for error in asset_form.errors.attributes %}
  83. <span style="color: red;">[{{error}}]</span>
  84. {% endfor %}
  85. </div>
  86. </div>
  87. <div class="col-md-6"></div>
  88. <div class="col-md-6">
  89. <input type="submit" value="Create">
  90. </div>
  91. </div>
  92. <div class="col-md-6">
  93. <h3>Location</h3>
  94. <small>(Click map to edit latitude and longitude in form)</small>
  95. <div id="mapid"></div>
  96. </div>
  97. </div>
  98. </fieldset>
  99. </form>
  100. </div>
  101. <!-- Initialise the map -->
  102. <script src="https://cdn.jsdelivr.net/npm/leaflet@1.7.1/dist/leaflet-src.min.js"></script>
  103. <script src="{{ url_for('flexmeasures_ui.static', filename='js/map-init.js') }}"></script>
  104. <script type="text/javascript">
  105. // create map
  106. var assetMap = L
  107. .map('mapid', { center: [{{ map_center[0] }}, {{ map_center[1] }}], zoom: 10})
  108. .on('popupopen', function () {
  109. $(function () {
  110. $('[data-toggle="tooltip"]').tooltip();
  111. });
  112. });
  113. addTileLayer(assetMap, '{{ mapboxAccessToken }}');
  114. var location_icon = new L.DivIcon({
  115. className: 'map-icon',
  116. html: '<i class="icon-empty-marker center-icon supersize"></i>',
  117. iconSize: [100, 100], // size of the icon
  118. iconAnchor: [50, 50], // point of the icon which will correspond to marker's location
  119. popupAnchor: [0, -50] // point from which the popup should open relative to the iconAnchor
  120. });
  121. // dummy location somewhere else
  122. var newMarker = new L.marker([100, 100], { icon: location_icon }).addTo(assetMap);
  123. assetMap.on('click', function (e) {
  124. $("#latitude").val(e.latlng.lat.toFixed(4));
  125. $("#longitude").val(e.latlng.lng.toFixed(4));
  126. newMarker.setLatLng(e.latlng);
  127. });
  128. </script>
  129. {% endblock %}