diff --git a/src/assets/handler.svg b/src/assets/handler.svg
new file mode 100644
index 0000000..dd1cfd5
--- /dev/null
+++ b/src/assets/handler.svg
@@ -0,0 +1,47 @@
+
+
+
+
diff --git a/src/components/FreeSnapStencil.vue b/src/components/FreeSnapStencil.vue
new file mode 100644
index 0000000..68b6dac
--- /dev/null
+++ b/src/components/FreeSnapStencil.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/PhotoCropper.vue b/src/components/PhotoCropper.vue
index 5ee135e..39d34e9 100644
--- a/src/components/PhotoCropper.vue
+++ b/src/components/PhotoCropper.vue
@@ -3,8 +3,9 @@
lock aspect ratio to flip chart size
free transform handles
+ snap to intersections
@@ -34,39 +36,103 @@
\ No newline at end of file
diff --git a/src/views/ManagePhotos.vue b/src/views/ManagePhotos.vue
index 29241f8..21f5e7a 100644
--- a/src/views/ManagePhotos.vue
+++ b/src/views/ManagePhotos.vue
@@ -11,7 +11,10 @@
:name="group.id">
{{ group.date }}
-
loading...
+
+
loading...
+
no photos in group found
+
@@ -148,6 +152,7 @@ export default {
data() {
return {
current_photo: null,
+ current_photo_intersections: null,
showChangeGroupModal: false,
showCropModal: false,
@@ -157,6 +162,8 @@ export default {
new_group: null,
current_ocr_text: '',
current_photo_src: null,
+
+ is_group_loading: new Map(),
}
},
computed: {
@@ -199,8 +206,10 @@ export default {
},
methods: {
loadPhotosInGroup(group_data) {
+ this.is_group_loading.set(group_data.name, true)
if (group_data.expanded)
this.$store.dispatch('loadPhotosInGroup', group_data.name)
+ .finally(() => this.is_group_loading.set(group_data.name, false))
},
getPhotoSrcById(photo_id){
for (const index in this.photos) {
@@ -221,7 +230,9 @@ export default {
change_crop_modal(photo_id) {
this.current_photo = photo_id
this.showCropModal = true
- this.current_photo_src = this.$store.getters.photoById(photo_id).original_image
+ let photo = this.$store.getters.photoById(photo_id)
+ this.current_photo_src = photo.original_image
+ this.current_photo_intersections = photo.intersections
},
change_ocr_modal(photo_id) {
this.current_photo = photo_id