Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

mapviewer.js 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Analytics;
  6. (function (Analytics) {
  7. let Viewers;
  8. (function (Viewers) {
  9. class MapViewer extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.reportManager = Analytics.Managers.ReportManager.Instance();
  13. this.viewerManager = Analytics.Managers.ViewerManager.Instance();
  14. this.ViewerSettings = new Analytics.Providers.ViewerSettings();
  15. }
  16. loadView(reportresponse, reportid, MapViewId, page, pageSize, containerid, ViewerSettings, callback, reportwidgetdata) {
  17. var instance = this;
  18. var LatIdColumnName = "", LngIdColumnName = "", Template = "", HeaderTemplate = "", DetailTemplate = "", FooterTemplate = "";
  19. instance.viewerManager.getMapView(MapViewId).then(function (response) {
  20. var res = response.result;
  21. LatIdColumnName = res.LatColumn;
  22. LngIdColumnName = res.LngColumn;
  23. Template = res.TemplateText;
  24. HeaderTemplate = res.HeaderTemplateText;
  25. DetailTemplate = res.DetailTemplateText;
  26. FooterTemplate = res.FooterTemplateText;
  27. let postdata = {
  28. ReportId: reportid,
  29. page: page,
  30. pageSize: 50,
  31. IsJson: true
  32. };
  33. $("#Table_View_" + containerid).removeClass("hidden");
  34. instance.reportManager.getReportViewerData(postdata).then(function (mapresponse) {
  35. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  36. var Lat_columns = [];
  37. var Lng_columns = [];
  38. var finalvalues = [];
  39. var locations = [];
  40. var contentString = [];
  41. var response = JSON.parse(mapresponse.result);
  42. var data = "";
  43. if (response.Data)
  44. data = JSON.parse(response.Data);
  45. $("#ViewerFooter_" + containerid).removeClass("hidden");
  46. if (!data) {
  47. $("#Viewer_" + containerid + "").removeClass("hidden");
  48. $("#Viewer_" + containerid + "").empty().append(`<div class='alert alert-primary text-center mb-0 border-0 w-100 font-14 rounded-0'>No data available</div>`);
  49. return "";
  50. }
  51. data = Unibase.Platform.Analytics.Viewers.MapViewer.Instance().toCamel(data);
  52. let Tmplt_html = "";
  53. let DetailTmplt_html = "";
  54. var templateScript = Handlebars.compile(Template);
  55. for (let i = 0; i < data.length; i++) {
  56. let LatValue = data[i][LatIdColumnName.toLowerCase()];
  57. let LngValue = data[i][LngIdColumnName.toLowerCase()];
  58. let ContactId = data[i]["contactid"];
  59. if ((jQuery.inArray(LatValue, Lat_columns) == -1) && (jQuery.inArray(LngValue, Lng_columns) == -1)) {
  60. finalvalues.push({ LatValue: LatValue, LngValue: LngValue, ContactId: ContactId });
  61. Lat_columns.push(LatValue);
  62. Lng_columns.push(LngValue);
  63. if (Template != "" && Template != null) {
  64. Tmplt_html = templateScript(data[i]);
  65. }
  66. else {
  67. Tmplt_html = "<strong> LatId: " + LatValue + ", LngId: " + LngValue + "</strong>";
  68. }
  69. contentString.push(Tmplt_html);
  70. let html = `<div class="tab-content" id="pills-tabContent">
  71. <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">` + DetailTemplate + `</div> <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">Close Trip </div></div></div></div></div>`;
  72. var DetailTemplateScript = Handlebars.compile(DetailTemplate);
  73. DetailTmplt_html += DetailTemplateScript(data[i]);
  74. }
  75. else {
  76. let index = 0;
  77. for (var k = 0; k < finalvalues.length; k++) {
  78. if ((finalvalues[k].LatValue == LatValue) && (finalvalues[k].LngValue == LngValue)) {
  79. index = k;
  80. }
  81. }
  82. contentString[index] = contentString[index] + templateScript(data[i]);
  83. }
  84. }
  85. for (var f = 0; f < finalvalues.length; f++) {
  86. if (finalvalues[f].LatValue != 0 && finalvalues[f].LngValue != 0) {
  87. locations.push({ LatId: finalvalues[f].LatValue, LngId: finalvalues[f].LngValue, ContactId: finalvalues[f].ContactId });
  88. }
  89. }
  90. let MapSideHtml = `<div class="row"><div class="col-md-12">
  91. <div id="map_canvas_` + containerid + `" class="gmap"></div></div>
  92. <div class="col-md-5 d-none pr-10 pb-10"><div id="map-sidebar"><div class="card mb-0"><div class="card-header" style="height:10vh;" id="map_header">` + HeaderTemplate + `</div><div class="card-body" id="mapside_body" style="overflow-y:scroll; height:71vh"> <div class="tab-content" id="pills-tabContent">
  93. <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">` + DetailTmplt_html + ` </div> <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">Close Trip </div></div></div><div class="card-footer" style="height:10vh;" id="footer_section">` + FooterTemplate + `</div></div></div></div>`;
  94. $("#Viewer_" + containerid + "").html(MapSideHtml).addClass("pa-10");
  95. $(".list-content-section" + containerid + "").removeClass("hidden");
  96. $(".Templateheader").addClass("hidden");
  97. $(".card-footer").addClass("hidden");
  98. $(".btn-list-load-more").addClass("hidden");
  99. $(".list-content-section" + containerid).find("#map_canvas").css('height', $(window).outerHeight() - $(".list-content-section" + containerid).find(".card-header").outerHeight() - 55);
  100. var latd = locations[0].LatId;
  101. var lgtd = locations[0].LngId;
  102. var myLatlng = new google.maps.LatLng(latd, lgtd);
  103. var mIcon = {
  104. path: google.maps.SymbolPath.CIRCLE,
  105. fillOpacity: 1,
  106. fillColor: "green",
  107. strokeOpacity: 1,
  108. strokeWeight: 1,
  109. strokeColor: '#333',
  110. scale: 12,
  111. scaledSize: new google.maps.Size(54, 44)
  112. };
  113. var mapOptions = {
  114. zoom: 5,
  115. center: myLatlng,
  116. };
  117. var mapElement = document.getElementById("map_canvas_" + containerid);
  118. var map = new google.maps.Map(mapElement, mapOptions);
  119. var marker, i;
  120. var infoWindow;
  121. var Lng_Ltd = [];
  122. for (i = 0; i < locations.length; i++) {
  123. marker = new google.maps.Marker({
  124. position: new google.maps.LatLng(locations[i].LatId, locations[i].LngId),
  125. map: map,
  126. icon: mIcon
  127. });
  128. Lng_Ltd[locations[i].LatId + "_" + locations[i].LngId] = contentString[i];
  129. infoWindow = new google.maps.InfoWindow({
  130. content: contentString[i]
  131. });
  132. infoWindow.close();
  133. google.maps.event.addListener(marker, 'click', (function (marker, i) {
  134. var k = i;
  135. return function () {
  136. infoWindow.open(map, marker);
  137. infoWindow.setContent(Lng_Ltd[marker.getPosition().lat() + "_" + marker.getPosition().lng()]);
  138. };
  139. })(marker, i));
  140. google.maps.event.addListener(marker, 'mouseover', (function (marker, i) {
  141. var k = i;
  142. return function () {
  143. infoWindow.open(map, marker);
  144. infoWindow.setContent(Lng_Ltd[marker.getPosition().lat() + "_" + marker.getPosition().lng()]);
  145. };
  146. })(marker, i));
  147. google.maps.event.addListener(marker, 'mouseout', function (e) {
  148. infoWindow.close(map, marker);
  149. });
  150. }
  151. let elem;
  152. elem = $("#mapside_body");
  153. elem.slimscroll({ color: '#d6d9da', disableFadeOut: true, borderRadius: 0, size: '6px', enableKeyNavigation: true, opacity: .8, height: "71vh" });
  154. });
  155. });
  156. }
  157. toCamel(o) {
  158. var newO, origKey, newKey, value;
  159. if (o instanceof Array) {
  160. return o.map(function (value) {
  161. if (typeof value === "object") {
  162. value = Unibase.Platform.Analytics.Viewers.MapViewer.Instance().toCamel(value);
  163. }
  164. return value;
  165. });
  166. }
  167. else {
  168. newO = {};
  169. for (origKey in o) {
  170. if (o.hasOwnProperty(origKey)) {
  171. newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString();
  172. value = o[origKey];
  173. if (value instanceof Array || (value !== null && value.constructor === Object)) {
  174. value = Unibase.Platform.Analytics.Viewers.MapViewer.Instance().toCamel(value);
  175. }
  176. newO[newKey] = value;
  177. }
  178. }
  179. }
  180. return newO;
  181. }
  182. static Instance() {
  183. return new Unibase.Platform.Analytics.Viewers.MapViewer();
  184. }
  185. }
  186. Viewers.MapViewer = MapViewer;
  187. })(Viewers = Analytics.Viewers || (Analytics.Viewers = {}));
  188. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  189. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  190. })(Unibase || (Unibase = {}));