From 64e592ba3cf5c67e7b16d0f39d748f882109ecf9 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sun, 5 Sep 2021 23:45:39 +0200 Subject: [PATCH] New polygon field --- resources/js/components/fields/Polygon.vue | 96 ++++++++++++++++++++++ resources/js/field.js | 1 + src/Polygon.php | 40 +++++++++ 3 files changed, 137 insertions(+) create mode 100644 resources/js/components/fields/Polygon.vue create mode 100644 src/Polygon.php diff --git a/resources/js/components/fields/Polygon.vue b/resources/js/components/fields/Polygon.vue new file mode 100644 index 0000000..9f42c14 --- /dev/null +++ b/resources/js/components/fields/Polygon.vue @@ -0,0 +1,96 @@ + + + diff --git a/resources/js/field.js b/resources/js/field.js index b79122e..8d7ebc3 100755 --- a/resources/js/field.js +++ b/resources/js/field.js @@ -6,6 +6,7 @@ Nova.booting((Vue, router) => { Vue.component('field-map', require('./components/FieldMap')); Vue.component('field-marker', require('./components/fields/Marker')); Vue.component('field-polyline', require('./components/fields/Polyline')); + Vue.component('field-polygon', require('./components/fields/Polygon')); // Config leaflet images to load images from CDN L.Icon.Default.imagePath = 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.4/images/'; diff --git a/src/Polygon.php b/src/Polygon.php new file mode 100644 index 0000000..1676ba8 --- /dev/null +++ b/src/Polygon.php @@ -0,0 +1,40 @@ +help('Click on the map to create a new point. Drag a marker to change the point. When the map is selected, you can press [backspace] to remove markers.'); + + parent::__construct($name, $attribute = null, $resolveCallback); + } + + /** + * Resolve the attribute before sending to frontend. + * + * @param mixed $resource + * @param mixed|null $attribute + * + * @return array + */ + public function resolveAttribute($resource, $attribute = null) + { + $value = $resource->{$attribute}; + + if (is_array($value)) { + return $value; + } + + return json_decode($value); + } +}