Commit 596b9659 by aagusti

perbaikan widget map

1 parent 6649ceb1
import json import json
import logging
from colander import SchemaNode, null, Mapping, Invalid, text_, string_types from colander import SchemaNode, null, Mapping, Invalid, text_, string_types
from deform.widget import Widget, _StrippedString, Select2Widget from deform.widget import Widget, _StrippedString, Select2Widget
_logging = logging.getLogger(__name__)
class DokumenWidget(Widget): class DokumenWidget(Widget):
template = "opensipkd.base:/views/widgets/dokumen.pt" template = "opensipkd.base:/views/widgets/dokumen.pt"
...@@ -351,7 +352,7 @@ class MapWidget(Widget): ...@@ -351,7 +352,7 @@ class MapWidget(Widget):
""" """
template = "opensipkd.base:views/widgets/gmap.pt" template = "opensipkd.base:views/widgets/gmap.pt"
readonly_template = "opensipkd.base:views/widgets/gmap.pt" readonly_template = "opensipkd.base:views/widgets/readonly/gmap.pt"
map_center = [0, 0] map_center = [0, 0]
map_zoom = 12 map_zoom = 12
gmap_key = None gmap_key = None
...@@ -376,6 +377,7 @@ class MapWidget(Widget): ...@@ -376,6 +377,7 @@ class MapWidget(Widget):
def __init__(self, **kw): def __init__(self, **kw):
super().__init__(**kw) super().__init__(**kw)
_logging.info(self.gmap_data_style)
self.gmap_data_style = json.dumps(self.gmap_data_style) self.gmap_data_style = json.dumps(self.gmap_data_style)
def serialize(self, field, cstruct, **kw): def serialize(self, field, cstruct, **kw):
...@@ -383,6 +385,17 @@ class MapWidget(Widget): ...@@ -383,6 +385,17 @@ class MapWidget(Widget):
cstruct = "" cstruct = ""
readonly = kw.get("readonly", self.readonly) readonly = kw.get("readonly", self.readonly)
template = readonly and self.readonly_template or self.template template = readonly and self.readonly_template or self.template
_logging.debug(self.gmap_data_style)
# if readonly:
gmap_data_style = {
"editable": not readonly,
"draggable": not readonly,
"clickable": True,
"removable": not readonly,
}
self.gmap_data_style = json.dumps(gmap_data_style)
_logging.info(self.gmap_data_style)
values = self.get_template_values(field, cstruct, kw) values = self.get_template_values(field, cstruct, kw)
return field.renderer(template, **values) return field.renderer(template, **values)
......
<span tal:define="name name|field.name;
css_class css_class|field.widget.css_class;
oid oid|field.oid;
style style|field.widget.style;
map_zoom map_zoom|field.widget.map_zoom;
map_center map_center|field.widget.map_center;
gmap_key gmap_key|field.widget.gmap_key;
gmap_height gmap_height|field.widget.gmap_height;
gmap_width gmap_width|field.widget.gmap_width;
gmap_control gmap_control|field.widget.gmap_control;
html_info html_info|field.widget.html_info;
gmap_data_style gmap_data_style|field.widget.gmap_data_style;
gmap_edit_url gmap_edit_url|field.widget.gmap_edit_url;
show_options show_options|field.widget.show_options;
"
tal:omit-tag="">
<textarea id="${oid}" name="${name}" readonly
tal:attributes="class string: form-control ${css_class or ''};
style style;
attributes|field.widget.attributes|{};">${cstruct}</textarea>
<div class="row" tal:condition="show_options">
<div id="gmap" class="gmap"></div>
<style>
.gmap {
height: ${gmap_height};
width: ${gmap_width};
}
</style>
<script type="text/javascript">
let map_zoom = ${map_zoom};
let map_center = ${map_center};
let geom = document.getElementById('${oid}');
let contents = ${html_info};
let edit_url = "${gmap_edit_url}";
let gmapDataStyle = ${structure: gmap_data_style};
let gmapControls = ${gmap_control};
//styleControls = document.getElementById("${oid}-options");
//styleControls.value = JSON.stringify(featureStyleOptions);
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?v=3&key=${gmap_key}&libraries=drawing&callback=initMap">
</script>
</span>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!