From 286490ac1b25000ec5a32a8d2d94f8fb3db76524 Mon Sep 17 00:00:00 2001 From: Kseninia Mikhaylova Date: Thu, 27 Jun 2024 14:59:19 +0300 Subject: [PATCH] distance scene --- .vscode/PythonImportHelper-v2-Completion.json | 29 +++++++++++++++++-- back/object/models.py | 2 +- front/src/components/Promo/load_models.vue | 18 ++++-------- front/src/index.d.ts | 6 ++-- 4 files changed, 38 insertions(+), 17 deletions(-) diff --git a/.vscode/PythonImportHelper-v2-Completion.json b/.vscode/PythonImportHelper-v2-Completion.json index 579beb2..ff1a015 100644 --- a/.vscode/PythonImportHelper-v2-Completion.json +++ b/.vscode/PythonImportHelper-v2-Completion.json @@ -208,6 +208,22 @@ "detail": "django.db", "documentation": {} }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, { "label": "models", "importPath": "django.db", @@ -1219,6 +1235,15 @@ "detail": "back.object.migrations.0010_alter_clickablearea_target", "documentation": {} }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.object.migrations.0011_remove_element3d_max_distance_and_more", + "description": "back.object.migrations.0011_remove_element3d_max_distance_and_more", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('object', '0010_alter_clickablearea_target'),\n ]\n operations = [\n migrations.RemoveField(\n model_name='element3d',\n name='max_distance',\n ),\n migrations.RemoveField(", + "detail": "back.object.migrations.0011_remove_element3d_max_distance_and_more", + "documentation": {} + }, { "label": "ObjectConfig", "kind": 6, @@ -1233,7 +1258,7 @@ "kind": 6, "importPath": "back.object.models", "description": "back.object.models", - "peekOfCode": "class Element3D(models.Model):\n parent = models.ForeignKey(\"self\", on_delete=models.PROTECT, blank=True, null=True)\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()\n min_distance = models.IntegerField(\n validators=[MinValueValidator(1), MaxValueValidator(200)], blank=True, null=True\n )\n max_distance = models.IntegerField(\n validators=[MinValueValidator(2), MaxValueValidator(200)], blank=True, null=True", + "peekOfCode": "class Element3D(models.Model):\n parent = models.ForeignKey(\"self\", on_delete=models.PROTECT, blank=True, null=True)\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()\n def __str__(self):\n return self.name\nclass Scene3D(models.Model):\n name = models.CharField(\n max_length=120,", "detail": "back.object.models", "documentation": {} }, @@ -1242,7 +1267,7 @@ "kind": 6, "importPath": "back.object.models", "description": "back.object.models", - "peekOfCode": "class Scene3D(models.Model):\n name = models.CharField(\n max_length=120,\n )\n elements = models.ManyToManyField(Element3D)\nclass ClickableArea(models.Model):\n name = models.CharField(\"название\", max_length=255)\n description = models.TextField(\"описание\")\n object_name = models.CharField(\"название объекта\", max_length=255)\n target = models.ForeignKey(", + "peekOfCode": "class Scene3D(models.Model):\n name = models.CharField(\n max_length=120,\n )\n elements = models.ManyToManyField(Element3D)\n min_distance = models.IntegerField(\n validators=[MinValueValidator(1), MaxValueValidator(200)], blank=True, null=True\n )\n max_distance = models.IntegerField(\n validators=[MinValueValidator(2), MaxValueValidator(200)], blank=True, null=True", "detail": "back.object.models", "documentation": {} }, diff --git a/back/object/models.py b/back/object/models.py index 3b1d36f..a1ea696 100644 --- a/back/object/models.py +++ b/back/object/models.py @@ -17,7 +17,6 @@ class Element3D(models.Model): model_file = models.FileField(upload_to=group_based_upload_to) name = models.CharField(max_length=255) description = models.TextField() - def __str__(self): return self.name @@ -39,6 +38,7 @@ class Scene3D(models.Model): def __str__(self): return self.name + class ClickableArea(models.Model): name = models.CharField("название", max_length=255) description = models.TextField("описание") diff --git a/front/src/components/Promo/load_models.vue b/front/src/components/Promo/load_models.vue index bb64bcb..2e9ba22 100644 --- a/front/src/components/Promo/load_models.vue +++ b/front/src/components/Promo/load_models.vue @@ -33,11 +33,12 @@ const loadModels = async () => { const raw_data = await res.json() as scene3D const data = raw_data.elements if (!controls.value) return - const c = (controls.value as any) - const distance = { - min: c.minDistance, - max: c.maxDistance == Infinity ? 1 : c.maxDistance, - }; + + (controls.value as any).minDistance = raw_data.min_distance; + (controls.value as any).maxDistance = raw_data.max_distance; + (controls.value as any)._needsUpdate = true; + (controls.value as any).update(1) + for (let index = 0; index < data.length; index++) { const element = data[index]; const item = {} as model3DType @@ -51,9 +52,6 @@ const loadModels = async () => { models.value.push(item) - if (element.min_distance && element.min_distance > distance.min) distance.min = element.min_distance - if (element.max_distance && element.max_distance > distance.max) distance.max = element.max_distance - const box = new Box3(); box.expandByObject(loaded_scene.children[0]); const box_size = new Vector3(); @@ -66,10 +64,6 @@ const loadModels = async () => { const clickable_areas = await res.json() clickable.value.push(...clickable_areas) } - (controls.value as any).maxDistance = distance.max; - (controls.value as any).minDistance = distance.min; - (controls.value as any)._needsUpdate = true; - (controls.value as any).update(1) for (let index = 0; index < clickable.value.length; index++) { const element = clickable.value[index]; diff --git a/front/src/index.d.ts b/front/src/index.d.ts index 8a75194..6bfb44c 100644 --- a/front/src/index.d.ts +++ b/front/src/index.d.ts @@ -10,8 +10,10 @@ interface ProductInfo { } interface scene3D { - id: number, - name: string, + id: number + name: string + min_distance: number + max_distance: number elements: element3DType[] } interface element3DType {