bx-865-apps #1
|
@ -366,14 +366,6 @@
|
||||||
"detail": "django.shortcuts",
|
"detail": "django.shortcuts",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"label": "render",
|
|
||||||
"importPath": "django.shortcuts",
|
|
||||||
"description": "django.shortcuts",
|
|
||||||
"isExtraImport": true,
|
|
||||||
"detail": "django.shortcuts",
|
|
||||||
"documentation": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"label": "parse_image",
|
"label": "parse_image",
|
||||||
"importPath": "api.tracer",
|
"importPath": "api.tracer",
|
||||||
|
@ -513,6 +505,14 @@
|
||||||
"detail": "object.models",
|
"detail": "object.models",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"label": "DjangoFilterBackend",
|
||||||
|
"importPath": "django_filters.rest_framework",
|
||||||
|
"description": "django_filters.rest_framework",
|
||||||
|
"isExtraImport": true,
|
||||||
|
"detail": "django_filters.rest_framework",
|
||||||
|
"documentation": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "sys",
|
"label": "sys",
|
||||||
"kind": 6,
|
"kind": 6,
|
||||||
|
@ -761,7 +761,7 @@
|
||||||
"kind": 5,
|
"kind": 5,
|
||||||
"importPath": "back.back.settings",
|
"importPath": "back.back.settings",
|
||||||
"description": "back.back.settings",
|
"description": "back.back.settings",
|
||||||
"peekOfCode": "INSTALLED_APPS = [\n \"django.contrib.admin\",\n \"django.contrib.auth\",\n \"django.contrib.contenttypes\",\n \"django.contrib.sessions\",\n \"django.contrib.messages\",\n \"django.contrib.staticfiles\",\n \"corsheaders\",\n \"api\",\n \"rest_framework\",",
|
"peekOfCode": "INSTALLED_APPS = [\n \"django.contrib.admin\",\n \"django.contrib.auth\",\n \"django.contrib.contenttypes\",\n \"django.contrib.sessions\",\n \"django.contrib.messages\",\n \"django.contrib.staticfiles\",\n \"corsheaders\",\n \"django_filters\",\n \"rest_framework\",",
|
||||||
"detail": "back.back.settings",
|
"detail": "back.back.settings",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -824,7 +824,7 @@
|
||||||
"kind": 5,
|
"kind": 5,
|
||||||
"importPath": "back.back.settings",
|
"importPath": "back.back.settings",
|
||||||
"description": "back.back.settings",
|
"description": "back.back.settings",
|
||||||
"peekOfCode": "LANGUAGE_CODE = \"en-us\"\nTIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"",
|
"peekOfCode": "LANGUAGE_CODE = \"en-us\"\nTIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {",
|
||||||
"detail": "back.back.settings",
|
"detail": "back.back.settings",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -833,7 +833,7 @@
|
||||||
"kind": 5,
|
"kind": 5,
|
||||||
"importPath": "back.back.settings",
|
"importPath": "back.back.settings",
|
||||||
"description": "back.back.settings",
|
"description": "back.back.settings",
|
||||||
"peekOfCode": "TIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {",
|
"peekOfCode": "TIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']",
|
||||||
"detail": "back.back.settings",
|
"detail": "back.back.settings",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -842,7 +842,7 @@
|
||||||
"kind": 5,
|
"kind": 5,
|
||||||
"importPath": "back.back.settings",
|
"importPath": "back.back.settings",
|
||||||
"description": "back.back.settings",
|
"description": "back.back.settings",
|
||||||
"peekOfCode": "USE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,",
|
"peekOfCode": "USE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}",
|
||||||
"detail": "back.back.settings",
|
"detail": "back.back.settings",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -851,7 +851,7 @@
|
||||||
"kind": 5,
|
"kind": 5,
|
||||||
"importPath": "back.back.settings",
|
"importPath": "back.back.settings",
|
||||||
"description": "back.back.settings",
|
"description": "back.back.settings",
|
||||||
"peekOfCode": "USE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,",
|
"peekOfCode": "USE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"",
|
||||||
"detail": "back.back.settings",
|
"detail": "back.back.settings",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -860,7 +860,34 @@
|
||||||
"kind": 5,
|
"kind": 5,
|
||||||
"importPath": "back.back.settings",
|
"importPath": "back.back.settings",
|
||||||
"description": "back.back.settings",
|
"description": "back.back.settings",
|
||||||
"peekOfCode": "STATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",",
|
"peekOfCode": "STATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {",
|
||||||
|
"detail": "back.back.settings",
|
||||||
|
"documentation": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "REST_FRAMEWORK",
|
||||||
|
"kind": 5,
|
||||||
|
"importPath": "back.back.settings",
|
||||||
|
"description": "back.back.settings",
|
||||||
|
"peekOfCode": "REST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {",
|
||||||
|
"detail": "back.back.settings",
|
||||||
|
"documentation": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "CRISPY_ALLOWED_TEMPLATE_PACKS",
|
||||||
|
"kind": 5,
|
||||||
|
"importPath": "back.back.settings",
|
||||||
|
"description": "back.back.settings",
|
||||||
|
"peekOfCode": "CRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",",
|
||||||
|
"detail": "back.back.settings",
|
||||||
|
"documentation": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "CRISPY_TEMPLATE_PACK",
|
||||||
|
"kind": 5,
|
||||||
|
"importPath": "back.back.settings",
|
||||||
|
"description": "back.back.settings",
|
||||||
|
"peekOfCode": "CRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },",
|
||||||
"detail": "back.back.settings",
|
"detail": "back.back.settings",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -1067,7 +1094,7 @@
|
||||||
"kind": 6,
|
"kind": 6,
|
||||||
"importPath": "back.object.views",
|
"importPath": "back.object.views",
|
||||||
"description": "back.object.views",
|
"description": "back.object.views",
|
||||||
"peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\nclass Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer",
|
"peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\nclass Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_fields = ('parent', )\n filter_backends = [DjangoFilterBackend]",
|
||||||
"detail": "back.object.views",
|
"detail": "back.object.views",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
@ -1076,7 +1103,7 @@
|
||||||
"kind": 6,
|
"kind": 6,
|
||||||
"importPath": "back.object.views",
|
"importPath": "back.object.views",
|
||||||
"description": "back.object.views",
|
"description": "back.object.views",
|
||||||
"peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer",
|
"peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_fields = ('parent', )\n filter_backends = [DjangoFilterBackend]",
|
||||||
"detail": "back.object.views",
|
"detail": "back.object.views",
|
||||||
"documentation": {}
|
"documentation": {}
|
||||||
},
|
},
|
||||||
|
|
|
@ -77,8 +77,11 @@ INSTALLED_APPS = [
|
||||||
"django.contrib.messages",
|
"django.contrib.messages",
|
||||||
"django.contrib.staticfiles",
|
"django.contrib.staticfiles",
|
||||||
"corsheaders",
|
"corsheaders",
|
||||||
"api",
|
"django_filters",
|
||||||
"rest_framework",
|
"rest_framework",
|
||||||
|
"crispy_forms",
|
||||||
|
"crispy_bootstrap4",
|
||||||
|
"api",
|
||||||
"frontImages",
|
"frontImages",
|
||||||
"object",
|
"object",
|
||||||
]
|
]
|
||||||
|
@ -172,6 +175,13 @@ STATIC_URL = "static/"
|
||||||
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
||||||
|
|
||||||
|
|
||||||
|
REST_FRAMEWORK = {
|
||||||
|
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
|
||||||
|
}
|
||||||
|
|
||||||
|
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap4"
|
||||||
|
CRISPY_TEMPLATE_PACK = "bootstrap4"
|
||||||
|
|
||||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||||
LOGGING = {
|
LOGGING = {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
|
from django_filters.rest_framework import DjangoFilterBackend
|
||||||
from .models import ClickableArea, Element3D
|
from .models import ClickableArea, Element3D
|
||||||
from .serializers import ClickableAreaSerializer, Element3DSerializer
|
from .serializers import ClickableAreaSerializer, Element3DSerializer
|
||||||
|
|
||||||
|
@ -13,3 +11,6 @@ class ClickableAreaViewSet(viewsets.ModelViewSet):
|
||||||
class Element3DViewSet(viewsets.ModelViewSet):
|
class Element3DViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Element3D.objects.all()
|
queryset = Element3D.objects.all()
|
||||||
serializer_class = Element3DSerializer
|
serializer_class = Element3DSerializer
|
||||||
|
|
||||||
|
filterset_fields = ('parent', )
|
||||||
|
filter_backends = [DjangoFilterBackend]
|
|
@ -8,6 +8,7 @@ export {}
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
copy: typeof import('./src/components/Promo/modelItem copy.vue')['default']
|
copy: typeof import('./src/components/Promo/modelItem copy.vue')['default']
|
||||||
|
Env: typeof import('./src/components/Promo/env.vue')['default']
|
||||||
Floorplan: typeof import('./src/components/Floorplan/index.vue')['default']
|
Floorplan: typeof import('./src/components/Floorplan/index.vue')['default']
|
||||||
Gallery: typeof import('./src/components/Promo/gallery.vue')['default']
|
Gallery: typeof import('./src/components/Promo/gallery.vue')['default']
|
||||||
Game: typeof import('./src/components/Game.vue')['default']
|
Game: typeof import('./src/components/Game.vue')['default']
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fireworks-js/vue": "^2.10.7",
|
"@fireworks-js/vue": "^2.10.7",
|
||||||
|
"@monogrid/gainmap-js": "^3.0.5",
|
||||||
"@tresjs/cientos": "^3.9.0",
|
"@tresjs/cientos": "^3.9.0",
|
||||||
"@tresjs/core": "^3.9.0",
|
"@tresjs/core": "^3.9.0",
|
||||||
"@vueuse/components": "^10.9.0",
|
"@vueuse/components": "^10.9.0",
|
||||||
|
@ -518,6 +519,17 @@
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@monogrid/gainmap-js": {
|
||||||
|
"version": "3.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.0.5.tgz",
|
||||||
|
"integrity": "sha512-53sCTG4FaJBaAq/tcufARtVYDMDGqyBT9i7F453pWGhZ5LqubDHDWtYoHo9VhQqMcHTEexdJqSsR58y+9HVmQA==",
|
||||||
|
"dependencies": {
|
||||||
|
"promise-worker-transferable": "^1.0.4"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"three": ">= 0.159.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@nodelib/fs.scandir": {
|
"node_modules/@nodelib/fs.scandir": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||||
|
@ -1557,12 +1569,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/braces": {
|
"node_modules/braces": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fill-range": "^7.0.1"
|
"fill-range": "^7.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
|
@ -2283,9 +2295,9 @@
|
||||||
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
|
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
|
||||||
},
|
},
|
||||||
"node_modules/fill-range": {
|
"node_modules/fill-range": {
|
||||||
"version": "7.0.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
|
@ -2446,6 +2458,11 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/immediate": {
|
||||||
|
"version": "3.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
|
||||||
|
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
|
||||||
|
},
|
||||||
"node_modules/immutable": {
|
"node_modules/immutable": {
|
||||||
"version": "4.3.5",
|
"version": "4.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
|
||||||
|
@ -2519,6 +2536,11 @@
|
||||||
"node": ">=0.12.0"
|
"node": ">=0.12.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/is-promise": {
|
||||||
|
"version": "2.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
||||||
|
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
||||||
|
},
|
||||||
"node_modules/is-stream": {
|
"node_modules/is-stream": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||||
|
@ -2560,6 +2582,14 @@
|
||||||
"integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
|
"integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/lie": {
|
||||||
|
"version": "3.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
|
||||||
|
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"immediate": "~3.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/local-pkg": {
|
"node_modules/local-pkg": {
|
||||||
"version": "0.5.0",
|
"version": "0.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
|
||||||
|
@ -2953,6 +2983,15 @@
|
||||||
"resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
|
||||||
"integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="
|
"integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/promise-worker-transferable": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==",
|
||||||
|
"dependencies": {
|
||||||
|
"is-promise": "^2.1.0",
|
||||||
|
"lie": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/queue-microtask": {
|
"node_modules/queue-microtask": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fireworks-js/vue": "^2.10.7",
|
"@fireworks-js/vue": "^2.10.7",
|
||||||
|
"@monogrid/gainmap-js": "^3.0.5",
|
||||||
"@tresjs/cientos": "^3.9.0",
|
"@tresjs/cientos": "^3.9.0",
|
||||||
"@tresjs/core": "^3.9.0",
|
"@tresjs/core": "^3.9.0",
|
||||||
"@vueuse/components": "^10.9.0",
|
"@vueuse/components": "^10.9.0",
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"gainMapMax": [
|
||||||
|
-0.08188214896822735,
|
||||||
|
-0.08188214896822735,
|
||||||
|
-0.08188214896822735
|
||||||
|
],
|
||||||
|
"gainMapMin": [
|
||||||
|
-0.08188214896822735,
|
||||||
|
-0.08188214896822735,
|
||||||
|
-0.08188214896822735
|
||||||
|
],
|
||||||
|
"gamma": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"hdrCapacityMax": -0.08188214896822735,
|
||||||
|
"hdrCapacityMin": 0,
|
||||||
|
"offsetHdr": [
|
||||||
|
0.015625,
|
||||||
|
0.015625,
|
||||||
|
0.015625
|
||||||
|
],
|
||||||
|
"offsetSdr": [
|
||||||
|
0.015625,
|
||||||
|
0.015625,
|
||||||
|
0.015625
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
|
@ -0,0 +1,28 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onMounted } from 'vue';
|
||||||
|
|
||||||
|
import { PMREMGenerator } from 'three';
|
||||||
|
import { GainMapLoader } from '@monogrid/gainmap-js'
|
||||||
|
import { useTresContext } from '@tresjs/core';
|
||||||
|
|
||||||
|
import hdr_gainmap from '../../assets/promo/hdr/hdr-gainmap.webp'
|
||||||
|
import hdr_json from '../../assets/promo/hdr/hdr.json'
|
||||||
|
import hdr_webp from '../../assets/promo/hdr/hdr.webp'
|
||||||
|
|
||||||
|
const { renderer, scene } = useTresContext()
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const pmremGenerator = new PMREMGenerator(renderer.value);
|
||||||
|
pmremGenerator.compileEquirectangularShader();
|
||||||
|
|
||||||
|
const loader = new GainMapLoader(renderer.value)
|
||||||
|
const result = await loader.loadAsync([hdr_webp, hdr_gainmap, '/src/assets/promo/hdr/hdr.json',])
|
||||||
|
|
||||||
|
const exrCubeRenderTarget = pmremGenerator.fromEquirectangular(result.renderTarget.texture);
|
||||||
|
const exrBackground = exrCubeRenderTarget.texture;
|
||||||
|
const newEnvMap = exrCubeRenderTarget ? exrCubeRenderTarget.texture : null;
|
||||||
|
scene.value.environment = newEnvMap
|
||||||
|
scene.value.background = exrBackground
|
||||||
|
result.renderTarget.texture.dispose();
|
||||||
|
})
|
||||||
|
</script>
|
|
@ -39,6 +39,7 @@ onMounted(async () => {
|
||||||
x: Math.random() * (width - radius * 2) + radius,
|
x: Math.random() * (width - radius * 2) + radius,
|
||||||
y: Math.random() * (height - radius * 2) + radius,
|
y: Math.random() * (height - radius * 2) + radius,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (document.querySelector('.pin')) {
|
if (document.querySelector('.pin')) {
|
||||||
const rect = (document.querySelector('.pin') as HTMLElement).getBoundingClientRect()
|
const rect = (document.querySelector('.pin') as HTMLElement).getBoundingClientRect()
|
||||||
circles[circles.length - 1] = { x: rect.x + rect.width, y: rect.y + rect.height }
|
circles[circles.length - 1] = { x: rect.x + rect.width, y: rect.y + rect.height }
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref } from 'vue';
|
import { reactive, ref } from 'vue';
|
||||||
import { Object3D, Vector3 } from 'three';
|
import { Color, Vector3 } from 'three';
|
||||||
|
|
||||||
import { TresCanvas, useRenderLoop } from '@tresjs/core';
|
import { TresCanvas, useRenderLoop } from '@tresjs/core';
|
||||||
import { CameraControls, useGLTF, useProgress } from '@tresjs/cientos'
|
import { CameraControls, useGLTF, useProgress } from '@tresjs/cientos'
|
||||||
|
|
||||||
|
import Env from './env.vue'
|
||||||
|
|
||||||
const minPan = new Vector3(-10, 1, -5);
|
const minPan = new Vector3(-10, 1, -5);
|
||||||
const maxPan = new Vector3(5, 1, 5);
|
const maxPan = new Vector3(5, 1, 5);
|
||||||
const _v = new Vector3();
|
const _v = new Vector3();
|
||||||
|
@ -26,56 +29,28 @@ const controlsState = reactive({
|
||||||
})
|
})
|
||||||
|
|
||||||
const { hasFinishLoading, progress } = await useProgress()
|
const { hasFinishLoading, progress } = await useProgress()
|
||||||
const { scene: spot_light } = await useGLTF('/spot_light.glb')
|
|
||||||
const spot_light_item = spot_light.children[0]
|
|
||||||
const spot_light_target = ref()
|
|
||||||
|
|
||||||
const target = new Object3D()
|
const point_light = reactive({
|
||||||
target.translateX(-10)
|
intensity: 10000,
|
||||||
target.translateZ(10)
|
position: new Vector3(-100,5,5),
|
||||||
target.translateY(0)
|
|
||||||
|
|
||||||
const { onLoop } = useRenderLoop()
|
|
||||||
let step = 0.05
|
|
||||||
onLoop(() => {
|
|
||||||
if (spot_light_target.value) {
|
|
||||||
const px = spot_light_target.value.position.x
|
|
||||||
if (px >= 10) {
|
|
||||||
step = -0.05
|
|
||||||
} else if (px <= -10) {
|
|
||||||
step = 0.05
|
|
||||||
}
|
|
||||||
spot_light_target.value.translateX(step)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const audio_played = ref<boolean>(false)
|
|
||||||
const audio = new Audio('/sea.ogg')
|
|
||||||
const playAudio = () => {
|
|
||||||
if (!audio_played.value) {
|
|
||||||
audio_played.value = true
|
|
||||||
audio.play()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div :class="[{ 'invisible': !!hasFinishLoading }, 'loader']">
|
<div :class="[{ 'invisible': !!hasFinishLoading }, 'loader']">
|
||||||
Загрузка {{ progress }}%
|
Загрузка {{ progress }}%
|
||||||
</div>
|
</div>
|
||||||
<div :class="[{ 'invisible': !hasFinishLoading }]" @click="playAudio">
|
<div :class="[{ 'invisible': !hasFinishLoading }]">
|
||||||
<TresCanvas window-size alpha shadows clear-color="#87ceeb">
|
<TresCanvas window-size>
|
||||||
<TresPerspectiveCamera :position="cameraPosition" />
|
<TresPerspectiveCamera :position="cameraPosition" />
|
||||||
<CameraControls v-bind="controlsState" @change="onChange" make-default />
|
<CameraControls v-bind="controlsState" @change="onChange" make-default />
|
||||||
|
|
||||||
<!-- <TresGridHelper :args="[50, 50]" /> -->
|
|
||||||
<Suspense>
|
<Suspense>
|
||||||
<Models />
|
<Env />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
<TresObject3D ref="spot_light_target" :position="[10, 1, 10]"></TresObject3D>
|
<TresMesh>
|
||||||
<TresSpotLight :position="spot_light_item.position" color="pink" :angle="spot_light_item.angle"
|
<TresBoxGeometry :args="[1, 1, 1]" />
|
||||||
:penumbra="spot_light_item.penumbra" :target="spot_light_target || target" :intensity="500"
|
<TresMeshStandardMaterial />
|
||||||
cast-shadow />
|
</TresMesh>
|
||||||
<!-- <TresDirectionalLight :position="lightPosition" :intensity="10" cast-shadow /> -->
|
<TresPointLight v-bind="point_light" />
|
||||||
<TresAmbientLight :intensity="1" />
|
<TresAmbientLight :intensity="1" />
|
||||||
</TresCanvas>
|
</TresCanvas>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -28,6 +28,21 @@ files = [
|
||||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crispy-bootstrap4"
|
||||||
|
version = "2024.1"
|
||||||
|
description = "Bootstrap4 template pack for django-crispy-forms"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "crispy-bootstrap4-2024.1.tar.gz", hash = "sha256:208673bf6a25892a656971af7a00e18ba2f7f06cd4a0d667923bd6134e64d276"},
|
||||||
|
{file = "crispy_bootstrap4-2024.1-py3-none-any.whl", hash = "sha256:46cf98777a28621d240bf71eb36d4a26ff86e9e19be1cfd822645f4043d18c31"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
django = ">=4.2"
|
||||||
|
django-crispy-forms = ">=2.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django"
|
name = "django"
|
||||||
version = "5.0.6"
|
version = "5.0.6"
|
||||||
|
@ -63,6 +78,34 @@ files = [
|
||||||
asgiref = ">=3.6"
|
asgiref = ">=3.6"
|
||||||
Django = ">=3.2"
|
Django = ">=3.2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "django-crispy-forms"
|
||||||
|
version = "2.2"
|
||||||
|
description = "Best way to have Django DRY forms"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "django_crispy_forms-2.2-py3-none-any.whl", hash = "sha256:a681cffd5af270b3082bda02cf8f81bdb5717ed66d2265e87e3df2f4ccf46277"},
|
||||||
|
{file = "django_crispy_forms-2.2.tar.gz", hash = "sha256:92cb7b7786fb82646bad739343fd17a99a04b0b736a09e34f3b91f26cbca7e4a"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
django = ">=4.2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "django-filter"
|
||||||
|
version = "24.2"
|
||||||
|
description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically."
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "django-filter-24.2.tar.gz", hash = "sha256:48e5fc1da3ccd6ca0d5f9bb550973518ce977a4edde9d2a8a154a7f4f0b9f96e"},
|
||||||
|
{file = "django_filter-24.2-py3-none-any.whl", hash = "sha256:df2ee9857e18d38bed203c8745f62a803fa0f31688c9fe6f8e868120b1848e48"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
Django = ">=4.2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "djangorestframework"
|
name = "djangorestframework"
|
||||||
version = "3.15.1"
|
version = "3.15.1"
|
||||||
|
@ -392,4 +435,4 @@ files = [
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10"
|
python-versions = "^3.10"
|
||||||
content-hash = "1c57908ec6786460241b91a63e9b1e30eb78d340264c8e798eaa35041f9bc9f6"
|
content-hash = "93e081c4ed6854ed0592157a7472a8bd4ba0c9e74831fce9e72d9f73c438f0d7"
|
||||||
|
|
|
@ -17,6 +17,9 @@ python-dotenv = "^1.0.1"
|
||||||
psycopg2 = "^2.9.9"
|
psycopg2 = "^2.9.9"
|
||||||
opencv-python = "^4.9.0.80"
|
opencv-python = "^4.9.0.80"
|
||||||
potracer = "^0.0.4"
|
potracer = "^0.0.4"
|
||||||
|
django-filter = "^24.2"
|
||||||
|
django-crispy-forms = "^2.2"
|
||||||
|
crispy-bootstrap4 = "^2024.1"
|
||||||
|
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
|
|
Loading…
Reference in New Issue