From 3be0a8c4e8dcc5fa845541667848b7528a596a65 Mon Sep 17 00:00:00 2001 From: A1Gard Date: Fri, 5 Jul 2024 11:35:03 +0330 Subject: [PATCH] added up-down button to areea --- app/Http/Controllers/Admin/AreaController.php | 4 +- resources/js/client.js | 1 + resources/js/components/AreaDesginer.vue | 76 +++++++++++++------ resources/sass/client.scss | 1 + 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/app/Http/Controllers/Admin/AreaController.php b/app/Http/Controllers/Admin/AreaController.php index ce89744..185fb78 100644 --- a/app/Http/Controllers/Admin/AreaController.php +++ b/app/Http/Controllers/Admin/AreaController.php @@ -50,7 +50,7 @@ class AreaController extends Controller public function update(Request $request, Area $area) { // return $request->all(); - foreach ($request->input('parts',[]) as $item) { + foreach ($request->input('parts',[]) as $i => $item) { $data = json_decode($item); if ($data == null){ continue; @@ -61,11 +61,13 @@ class AreaController extends Controller $part->area_id = $area->id; $part->segment = $data->segment; $part->part = $data->part; + $part->sort = $i; $part->save(); }else{ $part = Part::whereId($data->id)->first(); $part->segment = $data->segment; $part->part = $data->part; + $part->sort = $i; $part->save(); } } diff --git a/resources/js/client.js b/resources/js/client.js index e601f19..05c90d0 100644 --- a/resources/js/client.js +++ b/resources/js/client.js @@ -5,3 +5,4 @@ import "./client-custom/confirm.js"; import "../views/segments/preloader/PreloaderCircle/PreloaderCircle.js"; import "../views/segments/top/TopSimple/TopSimple.js"; import "../views/segments/slider/SliderSimple/SliderSimple.js"; +import "../views/segments/top/TopSimple/TopSimple.js"; diff --git a/resources/js/components/AreaDesginer.vue b/resources/js/components/AreaDesginer.vue index 40393d0..3620bee 100644 --- a/resources/js/components/AreaDesginer.vue +++ b/resources/js/components/AreaDesginer.vue @@ -2,21 +2,29 @@
- Part {{p+1}} + Part {{ p + 1 }} + + + + + +
@@ -36,24 +44,24 @@ export default { components: {}, data: () => { return { - partsData:[], - removed:[], + partsData: [], + removed: [], } }, props: { - valids:{ - default:[], + valids: { + default: [], type: Array, }, - parts:{ - default:[], + parts: { + default: [], type: Array, }, - area:{ + area: { required: true, type: Object, }, - imageLink:{ + imageLink: { required: true, } }, @@ -62,25 +70,45 @@ export default { }, computed: {}, methods: { - changePart(p,segment,part){ + changePart(p, segment, part) { this.partsData[p].segment = segment; this.partsData[p].part = part; }, - addPart(){ + addPart() { this.partsData.push({ id: null, segment: this.valids[0].segment, part: this.valids[0].part, }); }, - rem(i){ - if (!confirm('Are sure to remove?')){ - return ; + rem(i) { + if (!confirm('Are sure to remove?')) { + return; } this.removed.push(this.partsData[i].id); - this.partsData.splice(i,1); + this.partsData.splice(i, 1); + }, + shiftArray(index, offset) { + console.log(index,offset); + if (index < 0 || index >= this.partsData.length) { + return "Index out of bounds"; + } + + const removed = this.partsData.splice(index, 1)[0]; + const newIndex = index + offset; + + if (newIndex < 0) { + this.partsData.unshift(removed); + } else if (newIndex >= this.partsData.length) { + this.partsData.push(removed); + } else { + this.partsData.splice(newIndex, 0, removed); + } + } - } + + + }, } @@ -88,10 +116,12 @@ export default { #area-designer { } -.selected-part{ + +.selected-part { background: #32CD3233; } -.can-select{ + +.can-select { cursor: pointer; } diff --git a/resources/sass/client.scss b/resources/sass/client.scss index 134a89c..cbd6be6 100644 --- a/resources/sass/client.scss +++ b/resources/sass/client.scss @@ -15,3 +15,4 @@ @import "../views/segments/preloader/PreloaderCircle/PreloaderCircle"; @import "../views/segments/top/TopSimple/TopSimple"; @import "../views/segments/slider/SliderSimple/SliderSimple"; +@import "../views/segments/top/TopSimple/TopSimple";