你可以覆盖Odoo16中MapRenderer类的createMarkerPopup函数。

huangapple go评论113阅读模式
英文:

How can I override createMarkerPopup function of MapRenderer class in Odoo16

问题

I am trying to add new Send SMS button on map marker as you can check below.
我正在尝试在地图标记上添加新的“发送短信”按钮,如下所示。

I am unable to add on click method, I have tried below code but its not working.
我无法添加点击方法,我尝试了下面的代码,但它不起作用。

你可以覆盖Odoo16中MapRenderer类的createMarkerPopup函数。
你可以覆盖Odoo16中MapRenderer类的createMarkerPopup函数。

  1. import { MapRenderer } from "@web_map/map_view/map_renderer";
  2. export class SmsMapRenderer extends MapRenderer {
  3. setup() {
  4. super.setup();
  5. }
  6. createMarkerPopup(markerInfo, latLongOffset = 0) {
  7. const popup = super.createMarkerPopup(...arguments);
  8. debugger;
  9. // const popup = super.createMarkerPopup(markerInfo, latLongOffset);
  10. const popupFields = popup.getMarkerPopupFields(markerInfo);
  11. const partner = markerInfo.record.partner;
  12. const popupHtml1 = renderToString("renewell.sendsmsPopup", {
  13. fields: popupFields,
  14. hasFormView: this.props.model.metaData.hasFormView,
  15. });
  16. const opensmsBtn = popup
  17. .getElement()
  18. .querySelector("button.o-map-renderer--popup-buttons-send_sms");
  19. const offset = markerInfo.pinInSamePlace * 0.000050;
  20. if (opensmsBtn) {
  21. opensmsBtn.onclick = () => {
  22. const popup = L.popup({ offset: [0, -30] })
  23. .setLatLng([
  24. partner.partner_latitude + latLongOffset,
  25. partner.partner_longitude - latLongOffset,
  26. ])
  27. .setContent(popupHtml1)
  28. .openOn(this.leafletMap);
  29. };
  30. }
  31. return popup;
  32. }
  33. }

Please give me some suggestion or any example.
请给我一些建议或示例。

英文:

I am trying to add new Send SMS button on map marker as you can check below.
I am unable to add on click method, I have tried below code but its not working

你可以覆盖Odoo16中MapRenderer类的createMarkerPopup函数。

  1. import { MapRenderer } from "@web_map/map_view/map_renderer";
  2. export class SmsMapRenderer extends MapRenderer {
  3. setup() {
  4. super.setup();
  5. }
  6. createMarkerPopup(markerInfo, latLongOffset = 0) {
  7. const popup = super.createMarkerPopup(...arguments);
  8. debugger;
  9. // const popup = super.createMarkerPopup(markerInfo, latLongOffset);
  10. const popupFields = popup.getMarkerPopupFields(markerInfo);
  11. const partner = markerInfo.record.partner;
  12. const popupHtml1 = renderToString("renewell.sendsmsPopup", {
  13. fields: popupFields,
  14. hasFormView: this.props.model.metaData.hasFormView,
  15. });
  16. const opensmsBtn = popup
  17. .getElement()
  18. .querySelector("button.o-map-renderer--popup-buttons-send_sms");
  19. const offset = markerInfo.pinInSamePlace * 0.000050;
  20. if (opensmsBtn) {
  21. opensmsBtn.onclick = () => {
  22. const popup = L.popup({ offset: [0, -30] })
  23. .setLatLng([
  24. partner.partner_latitude + latLongOffset,
  25. partner.partner_longitude - latLongOffset,
  26. ])
  27. .setContent(popupHtml1)
  28. .openOn(this.leafletMap);
  29. };
  30. }
  31. return popup;
  32. }
  33. }

Please give me some suggestion or any example.

答案1

得分: 1

I have found a solution and it's working for me. I just needed to add a patch in my code.

  1. import { patch } from "@web/core/utils/patch";
  2. import { MapRenderer } from "@web_map/map_view/map_renderer";
  3. import { renderToString } from "@web/core/utils/render";
  4. import rpc from 'web.rpc';
  5. const { useEffect, useRef } = owl;
  6. patch(MapRenderer.prototype, "ModuleName.SmsPopup", {
  7. setup() {
  8. this._super();
  9. },
  10. createMarkerPopup(markerInfo, latLongOffset = 0) {
  11. debugger;
  12. const popup = this._super(...arguments);
  13. const popupFields = this.getMarkerPopupFields(markerInfo);
  14. debugger;
  15. const partner = markerInfo.record.partner;
  16. const popupHtmlSms = renderToString("ModuleName.sendsmsPopup", {
  17. fields: popupFields,
  18. hasFormView: this.props.model.metaData.hasFormView,
  19. });
  20. const opensmsBtn = popup
  21. .getElement()
  22. .querySelector("button.o-map-renderer--popup-buttons-send_sms");
  23. const offset = markerInfo.pinInSamePlace * 0.000050;
  24. if (opensmsBtn) {
  25. opensmsBtn.onclick = () => {
  26. debugger;
  27. const popup = L.popup({ offset: [0, -30] })
  28. .setLatLng([
  29. partner.partner_latitude + latLongOffset,
  30. partner.partner_longitude - latLongOffset,
  31. ])
  32. .setContent(popupHtmlSms)
  33. .openOn(this.leafletMap);
  34. };
  35. }
  36. return popup;
  37. },
  38. });

(Note: The code within the backticks is not translated, as per your request.)

英文:

I have found solution and its working for me. I was just needed to add patch in my code.

  1. import { patch } from "@web/core/utils/patch";
  2. import { MapRenderer } from "@web_map/map_view/map_renderer";
  3. import { renderToString } from "@web/core/utils/render";
  4. import rpc from 'web.rpc';
  5. const { useEffect, useRef } = owl;
  6. patch(MapRenderer.prototype, "ModuleName.SmsPopup", {
  7. setup() {
  8. this._super();
  9. },
  10. createMarkerPopup(markerInfo, latLongOffset = 0) {
  11. debugger;
  12. const popup = this._super(...arguments);
  13. const popupFields = this.getMarkerPopupFields(markerInfo);
  14. debugger;
  15. const partner = markerInfo.record.partner;
  16. const popupHtmlSms = renderToString("ModuleName.sendsmsPopup", {
  17. fields: popupFields,
  18. hasFormView: this.props.model.metaData.hasFormView,
  19. });
  20. const opensmsBtn = popup
  21. .getElement()
  22. .querySelector("button.o-map-renderer--popup-buttons-send_sms");
  23. const offset = markerInfo.pinInSamePlace * 0.000050;
  24. if (opensmsBtn) {
  25. opensmsBtn.onclick = () => {
  26. debugger;
  27. const popup = L.popup({ offset: [0, -30] })
  28. .setLatLng([
  29. partner.partner_latitude + latLongOffset,
  30. partner.partner_longitude - latLongOffset,
  31. ])
  32. .setContent(popupHtmlSms)
  33. .openOn(this.leafletMap);
  34. };
  35. }
  36. return popup;
  37. },
  38. });

huangapple
  • 本文由 发表于 2023年5月21日 04:35:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/76297253.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定