diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 114529c..3e106f0 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -26,6 +26,7 @@ jobs: deploy_to_server_dev: needs: [build_and_push_images] runs-on: ubuntu-latest + steps: - uses: actions/checkout@v4 - name: Configure SSH key @@ -42,7 +43,7 @@ jobs: NUXT_PUBLIC_API_BASE: ${{'https://mns.'}}${{ gitea.ref_name == 'dev' && 'dev.' || '' }}kustarshina.ru/kp NUXT_PUBLIC_IMG_BASE: ${{'https://mns.'}}${{ gitea.ref_name == 'dev' && 'dev.' || '' }}kustarshina.ru NUXT_PUBLIC_BASE_URL: ${{'https://kupizabor.'}}${{ gitea.ref_name == 'dev' && 'dev.' || '' }}kustarshina.ru - NUXT_PUBLIC_YANDEX_METRIKA_ID: ${{ secrets.YANDEX_METRIKA_ID }} + NUXT_PUBLIC_YANDEX_METRIKA_ID: ${{ gitea.ref_name == 'dev' && 0 || secrets.YANDEX_METRIKA_ID }} with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USERNAME }} @@ -52,6 +53,7 @@ jobs: script: | cd $HOSTING_PATH git checkout ${{gitea.ref_name}} + git pull echo "NUXT_PUBLIC_API_BASE=$NUXT_PUBLIC_API_BASE NUXT_PUBLIC_IMG_BASE=$NUXT_PUBLIC_IMG_BASE NUXT_PUBLIC_BASE_URL=$NUXT_PUBLIC_BASE_URL diff --git a/assets/LOGO.svg b/assets/LOGO.svg new file mode 100644 index 0000000..33380a6 --- /dev/null +++ b/assets/LOGO.svg @@ -0,0 +1,9 @@ + diff --git a/assets/icons/telegram.svg b/assets/icons/telegram.svg new file mode 100644 index 0000000..3398099 --- /dev/null +++ b/assets/icons/telegram.svg @@ -0,0 +1,3 @@ + diff --git a/assets/icons/vk.svg b/assets/icons/vk.svg new file mode 100644 index 0000000..148494b --- /dev/null +++ b/assets/icons/vk.svg @@ -0,0 +1,3 @@ + diff --git a/assets/icons/youtube.svg b/assets/icons/youtube.svg new file mode 100644 index 0000000..2b93a07 --- /dev/null +++ b/assets/icons/youtube.svg @@ -0,0 +1,3 @@ + diff --git a/assets/main.scss b/assets/main.scss index f8886a2..2f7569d 100644 --- a/assets/main.scss +++ b/assets/main.scss @@ -25,30 +25,77 @@ body { .header { @apply p-2 bg-slate-200; - a:not([target="_blank"]) { - @apply hidden xl:inline-block + .container { + @apply items-center; } } .logo { - @apply text-ioprim font-bold w-20 text-2xl leading-4 py-4 col-span-4 xl:col-span-2; + @apply w-full py-4 col-span-4 xl:col-span-2; + + a { + @apply flex items-center gap-2; + } + + &_text { + @apply leading-4 text-3xl font-semibold; + } + + svg { + @apply text-ioprim inline-block m-0 w-10 h-10; + } } .menu { - @apply col-span-8 flex justify-between; + @apply hidden xl:flex col-span-10 justify-end; a { - @apply underline decoration-0 underline-offset-4 decoration-dotted hover:decoration-transparent transition-all; + @apply text-zinc-800 hover:text-ioprim-900 transition-colors; + + &:before { + content: ''; + @apply inline-block w-[2px] h-5 mx-4 align-middle bg-gradient-to-t from-transparent via-zinc-800 via-50% to-transparent; + } + + &:first-child::before { + content: none; + } } a[href^=http] { - @apply relative no-underline; + @apply relative; &:after { content: '↷'; @apply ml-2; } } + + &.toggle_visible { + @apply max-xl:flex max-xl:flex-col max-xl:text-center; + + a { + @apply max-xl:mb-2; + } + + a:before { + @media screen and (max-width: 1280px) { + content: none; + } + } + } + + &-toggle { + @apply flex xl:hidden col-span-8 justify-end; + + >span { + @apply cursor-pointer text-zinc-600 hover:text-ioprim-900 transition-colors; + + svg { + @apply text-3xl; + } + } + } } a[href^="#"] { @@ -56,31 +103,67 @@ a[href^="#"] { } .footer { - @apply px-2 py-4 bg-slate-200; + @apply px-2 py-4 bg-slate-200 text-zinc-800 pt-12; .container { @apply gap-4 } .k-logo { - @apply col-span-12 xl:col-span-2 row-span-3 text-9xl text-orange-400; + @apply col-span-12 xl:col-span-2 row-span-3 text-9xl text-ioprim; svg { @apply my-0 mx-auto; } + + &:after { + content: ''; + @apply block lg:hidden mr-auto ml-auto mt-5 h-[2px] max-w-44 mx-4 align-middle bg-gradient-to-r from-transparent via-zinc-800 via-50% to-transparent; + + } } &-text { - @apply col-span-12 xl:col-span-5 text-sm prose; + @apply col-span-12 xl:col-span-5 text-sm mb-2; &-small { - @apply col-span-12 xl:col-span-10 text-xs min-w-full prose; + @apply col-span-12 xl:col-span-10 text-xs min-w-full; } &-social { - @apply col-span-12 xl:col-span-10 flex gap-4 + @apply col-span-12 xl:col-span-10 flex gap-4 flex-wrap justify-center; } } + + &-icon { + @apply order-2 flex justify-center items-center gap-2; + + &:hover { + .footer-icon-text { + @apply no-underline; + } + } + + svg { + @apply mb-0; + } + + &-big { + @apply text-3xl order-1 w-full text-center; + + .footer-icon-text { + @apply no-underline; + } + } + + &-text { + @apply underline; + } + } + + &_two { + @apply xl:bg-slate-200 py-16 lg:py-8 text-sm text-zinc-500; + } } .siteblock { @@ -150,9 +233,11 @@ a[href^="#"] { &-status { @apply text-center; + &-icon { @apply text-8xl; } + &-text { @apply text-3xl; } @@ -172,7 +257,11 @@ label { } input { - @apply bg-neutral-200 border border-gray-300 text-gray-900 rounded focus:ring-blue-500 focus:border-blue-500 text-lg p-2.5 disabled:cursor-not-allowed; + @apply bg-neutral-200 border border-gray-300 text-gray-900 rounded focus:ring-blue-500 focus:border-blue-500 text-lg p-2.5 disabled:cursor-not-allowed disabled:text-black; +} + +input[type=checkbox] { + @apply w-4 h-4; } textarea { @@ -258,4 +347,20 @@ button { @apply cursor-not-allowed opacity-50 pointer-events-none; } } +} + +.calc_table { + @apply flex flex-col gap-4 max-w-4xl; + + >.grid { + @apply gap-4 border-solid border-b items-center last:border-b-0; + + >[class*=col] { + @apply p-2; + } + + >[class*=row-span]+[class*=col-span] { + @apply pl-4; + } + } } \ No newline at end of file diff --git a/components/calcModels.vue b/components/calcModels.vue index 7e5d45a..f19a2f5 100644 --- a/components/calcModels.vue +++ b/components/calcModels.vue @@ -23,14 +23,7 @@ const cameraStat = reactive({ }) const pointLight = ref() - -const groundMaterial = ref({ - color: "#555", - roughness: 0.7, - metalness: 0, - side: FrontSide, - precision: 'lowp', -}) +const pointLight2 = ref() const loadAll = async () => { const { scene: light } = await useGLTF('/models_light/zabor_so_svetom.glb') pointLight.value = light.children[2] diff --git a/components/calcValues.vue b/components/calcValues.vue index 3aab477..463c7dd 100644 --- a/components/calcValues.vue +++ b/components/calcValues.vue @@ -78,11 +78,11 @@ const changeParametres = () => { if (auto_length) { let w = parametric.length.min const max_sections = Math.floor((total_length_mm - fence_length) / (parametric.length.min + fence_length)) - const min_sections = Math.ceil((total_length_mm - fence_length) / (parametric.length.max + fence_length)) + const min_sections = Math.floor((total_length_mm - fence_length) / (parametric.length.max + fence_length)) for (let index = min_sections; index <= max_sections; index++) { full_sections = index - w = (total_length_mm - fence_length * (index - 1)) / index + w = (total_length_mm - fence_length - fence_length * index) / index if ( w >= parametric.length.min && w <= parametric.length.max @@ -99,7 +99,7 @@ const changeParametres = () => { } } - if (((full_sections * length) + (full_sections * fence_length) + fence_length) <= total_length_mm) { + if (((full_sections * length) + (full_sections * fence_length) + fence_length) < total_length_mm) { form_state.extra_section = Math.floor((total_length_mm - fence_length) % length) } else { form_state.extra_section = 0 @@ -160,19 +160,6 @@ const goal = (target: string, params: object) => { -
+ Внимание! Дополнительная секция приводит к увеличению стоимости. + Рекомендуем вам изменить длину забора или длину секции! +
+
- Забор общей длиной {{ form_state.total_length }}{{ '\xa0' }}м,
- {{ section_count }}
-
- Всего
+
- Окрашивается по технологии порошковой окраски:
- ламели: {{ getColorNameFromRal(lamelle_color)?.toLowerCase() }};
- столбы: {{ getColorNameFromRal(pillar_color)?.toLowerCase() }}.
-
- Внимание! Дополнительная секция приводит к увеличению стоимости. - Рекомендуем вам изменить длину забора или длину секции! -
-