Compare commits

...

21 Commits

Author SHA1 Message Date
Dhaverd d4e8f3b329 Исправления редизайна 2024-06-14 11:16:31 +08:00
Dhaverd 5f210dfd7c Merge pull request 'mini neon redesign' (#8) from neon-mini-redesign into master
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/8
2024-06-13 12:48:22 +03:00
Dhaverd 48c5937b6e mini neon redesign 2024-06-13 17:45:42 +08:00
Dhaverd d5f2690b54 Yandex Metrika 2024-06-06 16:13:33 +08:00
Dhaverd 42aea0d4c3 Merge pull request 'Забацал фичу с отзывами' (#7) from feature-rating into master
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/7
2024-06-03 12:47:17 +03:00
Dhaverd c6c6ddeb3e Забацал фичу с отзывами 2024-06-03 17:46:20 +08:00
Dhaverd 5c79d92fa1 Перенес фото резюме в папку с картинками + картинки для ссылок в расписании стримов есть локально 2024-06-03 13:43:06 +08:00
Dhaverd 300f027a36 Поправил размер шрифта в Резюме 2024-05-27 10:16:07 +08:00
Dhaverd 30afd5eff8 Убрал CI/CD конфиг, все равно не работает 2024-05-27 10:04:20 +08:00
p.belezov 126656d14e В расписании заредизайнил список ссылок
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-05-27 09:59:13 +08:00
Dhaverd 6411058c45 Написал Readme по установке
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-21 14:55:15 +08:00
Dhaverd 7c46d1f9c2 Написал Readme по установке
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-21 14:52:58 +08:00
Dhaverd e6827b7c62 Поправил миграции
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-21 14:38:06 +08:00
Dhaverd 7615ca7605 Merge pull request 'rebase-to-store' (#6) from rebase-to-store into master
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/6
2024-04-20 11:14:03 +03:00
Dhaverd 35a93c343e Перенес запросы на бэк из basya в стор pinia
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-20 16:12:45 +08:00
Dhaverd e04bc5ba98 Запилил стор для расписания стримов 2024-04-20 01:08:18 +08:00
Dhaverd d128e6f90a Запилил стор для расписания стримов 2024-04-20 01:07:52 +08:00
p.belezov 315a0ab0d7 Поправил анимацию кнопки
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-18 13:54:29 +08:00
p.belezov 409faab0f9 Поправил название страницы
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-18 13:48:56 +08:00
p.belezov 803d7a0af6 Поправил день, убрал вывод в консоль
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-18 13:47:20 +08:00
Dhaverd 7c0f2897a2 Merge pull request 'friday-page' (#5) from friday-page into master
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/5
2024-04-18 08:42:56 +03:00
32 changed files with 449 additions and 200 deletions

View File

@ -1,47 +0,0 @@
name: Gitea Actions
run-name: ${{ gitea.actor }} is testing out Gitea Actions ??
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
env:
COMPOSER_AUTH: '{"github-oauth": {"github.com": "${{ secrets.COMPOSER_AUTH }}"}}'
name: Build and deploy
steps:
- name: Migrate env file
run: |
echo "${{ secrets.ENVIRONMENT }}" > ./.env
cat ./.env
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Checkout code
uses: actions/checkout@v3
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: curl, exif, fileinfo, mbstring, mysqli, mysqlnd, openssl, PDO, pdo_mysql
- name: Update npm dependencies
run: |
node -v
npm i --progress=false
- name: Update composer dependencies
uses: "ramsey/composer-install@v3"
with:
dependency-versions: "locked"
- name: Build frontend
run: npm run build
- name: Deploy to Server
uses: https://gitea.com/aquelle1/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
ARGS: "-rlgoDzvc -i --delete"
SOURCE: "./"
REMOTE_HOST: ${{ secrets.SSH_HOST }}
REMOTE_USER: ${{ secrets.SSH_USER }}
TARGET: ${{ secrets.SSH_DIR }}
SCRIPT_BEFORE: systemctl stop resume
SCRIPT_AFTER: systemctl start resume

View File

@ -1,66 +1,44 @@
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>
# Установка
<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## 1. Клонируем проект с гита
## About Laravel
```
git clone http://gitea.dhaverd.ru:3000/Dhaverd/New-site.git
```
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
## 2. Устанавливаем зависимости
```
npm i
composer install
```
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
## 3. Мигрируем бд
```
php artisan migrate
```
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## 4. Устанавливаем Voyager
```
php artisan voyager:install
php artisan voyager:admin your@email.com --create
php artisan vendor:publish --provider="TCG\Voyager\VoyagerServiceProvider"
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"
php artisan migrate
```
## Learning Laravel
## 5. Пишем .env по примеру
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
Главное это настроить подключение к БД:
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
```
You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[WebReinvent](https://webreinvent.com/)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
- **[Jump24](https://jump24.co.uk)**
- **[Redberry](https://redberry.international/laravel/)**
- **[Active Logic](https://activelogic.com)**
- **[byte5](https://byte5.de)**
- **[OP.GG](https://op.gg)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
## 6. Билдим фронт
```
npm run build
```

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Rating;
class RatingController extends Controller
{
public function index(Request $request)
{
$rating = new Rating;
$rating->rate = $request->rate;
$rating->comment = $request->comment;
$rating->save();
return ['code' => $rating->save() ? 200 : 500];
}
}

19
app/Models/Rating.php Normal file
View File

@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class Rating extends Model
{
use HasFactory;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'rating';
}

View File

@ -16,6 +16,7 @@ return new class extends Migration
$table->text("link_name");
$table->text("link");
$table->text("image");
$table->timestamps();
});
}

View File

@ -15,6 +15,7 @@ return new class extends Migration
$table->id("id");
$table->text("weekday_name");
$table->date("current_date");
$table->timestamps();
});
}

View File

@ -14,6 +14,7 @@ return new class extends Migration
Schema::create('games', function (Blueprint $table) {
$table->id("id");
$table->text("name");
$table->timestamps();
});
}

View File

@ -20,6 +20,7 @@ return new class extends Migration
table: "games", column: "id", indexName: "constraint_game_id"
);
$table->text("stream_time");
$table->timestamps();
});
}

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('basya_phrases', function (Blueprint $table) {
$table->id();
$table->string('phrase', 255);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('basya_phrases');
}
};

View File

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('rating', function (Blueprint $table) {
$table->id();
$table->integer('rate')->nullable();
$table->text('comment')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('rating');
}
};

BIN
public/images/gg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 1023 KiB

After

Width:  |  Height:  |  Size: 1023 KiB

BIN
public/images/twitch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
public/images/vk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/images/vkplay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
public/images/youtube.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,5 +1,6 @@
import './js/bootstrap';
import {createApp} from 'vue'
import { createPinia } from 'pinia'
import App from './views/basya/Basya.vue'
import { createVuetify } from 'vuetify'
import { mdi } from "vuetify/iconsets/mdi";
@ -8,9 +9,11 @@ import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
import '@mdi/font/css/materialdesignicons.css'
const pinia = createPinia();
const vuetify = createVuetify({
components,
directives
})
createApp(App).use(vuetify).mount("#app")
createApp(App).use(vuetify).use(pinia).mount("#app")

View File

@ -0,0 +1,39 @@
.box-gradient {
border: 10px solid transparent;
background: linear-gradient(
#ffffff,
#ffffff) padding-box,
linear-gradient(45deg,
#FF52E5,
#F6D242) border-box;
border-radius: 14px;
}
.neon-text {
color: #fff!important;
text-shadow:
0 0 3px #fff,
0 0 5px #fff,
0 0 11px #fff,
0 0 16px #bc13fe,
0 0 20px #bc13fe,
0 0 26px #bc13fe,
0 0 30px #bc13fe,
0 0 34px #bc13fe !important;
}
.neon-border {
border: 0.2rem solid #fff !important;
border-radius: 2rem !important;
box-shadow: 0 0 .2rem #fff,
0 0 .2rem #fff,
0 0 2rem #bc13fe,
0 0 0.8rem #bc13fe,
0 0 2.8rem #bc13fe,
inset 0 0 1.3rem #bc13fe !important;
animation: pulsate 1.5s infinite alternate !important;
}
.white-text {
color: white!important;
}

View File

@ -1,15 +0,0 @@
import {defineStore} from "pinia";
export const useScheduleStore = defineStore('Schedule', {
state: () => ({
fetchingDates: true,
fetchingTable: true,
fetchingLinks: true
}),
getters: {
},
actions: {
},
})

20
resources/stores/basya.js Normal file
View File

@ -0,0 +1,20 @@
import {defineStore} from "pinia";
import axios from "axios";
export const useBasyaStore = defineStore('basya', {
state: () => ({
phrases: Object
}),
getters: {
},
actions: {
async getPhrases(){
await axios
.get('/api/v1/phrases')
.then((response) => {
this.phrases = response.data;
});
}
},
})

View File

@ -0,0 +1,37 @@
import {defineStore} from "pinia";
import axios from "axios";
export const useScheduleStore = defineStore('schedule', {
state: () => ({
dates: Object,
links: Object,
schedules: Object
}),
getters: {
},
actions: {
async getDates(){
await axios
.get('/api/v1/dates')
.then((response) => {
this.dates = response.data;
});
},
async getLinks(){
await axios
.get('/api/v1/links')
.then((response)=>{
this.links = response.data;
})
},
async getSchedules(){
await axios
.get('/api/v1/schedules')
.then((response)=>{
this.schedules = response.data;
})
}
},
})

View File

@ -1,42 +1,54 @@
<template>
<v-sheet class="mt-5 mb-5 rounded-lg w-75">
<p class="text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5 ma-5">Расписание стримов</p>
<v-skeleton-loader v-if="fetching" type="text" />
<p v-else class="ma-5 text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5"> {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}</p>
<ScheduleTable/>
<p class="text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5 ma-5">Ссылочки</p>
<Links/>
<v-sheet class="bg-grey-darken-3 mt-5 mb-5 rounded-lg w-75 pl-3">
<p class="neon-text text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5 ma-5">Расписание стримов</p>
<v-skeleton-loader v-if="fetching" type="text" class="bg-grey-darken-3"/>
<p v-else class="neon-text ma-5 text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5"> {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}</p>
<ScheduleTable :is-wide="isWide"/>
<p class="neon-text text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5 ma-5">Ссылочки</p>
<Links :is-wide="isWide"/>
<AdditionalButtons :is-wide="isWide"/>
</v-sheet>
</template>
<script>
import axios from "axios";
import ScheduleTable from "./Schedule/ScheduleTable.vue";
import Links from "./Schedule/Links.vue";
import AdditionalButtons from "./Schedule/AdditionalButtons.vue";
import {ref} from "vue";
import {useScheduleStore} from '../stores/schedule.js';
export default {
name: "Schedule",
components: {Links, ScheduleTable},
components: {AdditionalButtons, Links, ScheduleTable},
data: () => ({
dates: [],
fetching: true
dates: ref(),
scheduleStore: useScheduleStore(),
fetching: true,
windowHeight: document.documentElement.clientHeight,
windowWidth: document.documentElement.clientWidth,
isWide: window.innerWidth >= 460
}),
methods: {
parseDate(date){
let dateArr = date.split("-");
return dateArr[2] + "." + dateArr[1];
},
async getDates(){
await axios
.get('/api/v1/dates')
.then(response => {
this.dates = response.data;
this.fetching = false;
});
myEventHandler(e) {
this.windowHeight = document.documentElement.clientHeight;
this.windowWidth = document.documentElement.clientWidth;
this.isWide = this.windowWidth >= 460;
}
},
created() {
window.addEventListener("resize", this.myEventHandler);
},
mounted() {
this.getDates();
this.scheduleStore.getDates().then(()=>{
this.dates = this.scheduleStore.dates;
this.fetching = false;
});
this.myEventHandler();
window.addEventListener("resize", this.myEventHandler, { passive: true });
}
}
</script>

View File

@ -0,0 +1,101 @@
<script>
import Links from "./Links.vue";
import ScheduleTable from "./ScheduleTable.vue";
import {ref} from "vue";
import {useScheduleStore} from "../../stores/schedule.js";
export default {
name: "AdditionalButtons",
data: () => ({
showModal: ref(false),
afterModal: ref(false),
afterModalText: '',
rating: 0,
comment: ''
}),
props: {
isWide: Boolean
},
methods:{
onShowModal(){
this.showModal = !this.showModal;
if (!this.showModal){
this.rating = 0;
this.comment = '';
}
},
onShowAfterModal(){
this.afterModal = !this.afterModal;
},
sendRating(){
axios.post(
'/api/v1/rating',
{
rate: this.rating,
comment: this.comment
}
).then((responce)=>{
this.onShowModal();
console.log(responce.data['code']);
if (responce.data['code'] === 200){
this.afterModalText = 'Спасибо за отзыв!';
} else {
this.afterModalText = 'Ошибка: Отзыв не отправился :(';
}
this.onShowAfterModal();
});
}
}
}
</script>
<template>
<div class="w-100 d-flex justify-space-evenly" :class="isWide ? '' : 'flex-column'">
<v-btn
class="bg-grey-darken-3 neon-border pt-3 pb-3 pl-3 pr-3 mt-7 mb-7 mr-5 ml-5 h-auto"
text="Кинуть копеечку"
href="https://www.donationalerts.com/r/dhaverd"
target="_blank"
/>
<v-btn
class="bg-grey-darken-3 neon-border pt-3 pb-3 pl-3 pr-3 mt-7 mb-7 mr-5 ml-5 h-auto"
text="Оставить отзыв"
@click="onShowModal"
/>
</div>
<v-dialog v-model="showModal" class="align-center" :class="isWide ? 'w-50' : 'w-100 h-100'">
<v-sheet class="mt-5 mb-5 pa-5 h-auto rounded-lg bg-grey-darken-3 neon-border d-flex flex-column">
<div class="w-100 d-flex justify-end bg-grey-darken-3">
<v-btn class="bg-grey-darken-3" icon="mdi-window-close" elevation="0" @click="onShowModal"/>
</div>
<v-label class="text-xl-h6 white-text ">Оцените канал:</v-label>
<v-rating v-model="rating" active-color="purple-darken-1">
sss
</v-rating>
<v-label class="text-xl-h6 mb-2 white-text ">Оставьте отзыв:</v-label>
<v-textarea v-model="comment" clearable variant="outlined" label="Что можно улучшить?"/>
<div class="d-flex justify-center">
<v-btn class="bg-grey-darken-3 neon-border pt-3 pb-3 pl-3 pr-3 w-auto h-auto" @click="sendRating">Отправить</v-btn>
</div>
</v-sheet>
</v-dialog>
<v-dialog v-model="afterModal" class="align-center" :class="isWide ? 'w-50' : 'w-100 h-100'">
<v-sheet class="mt-5 mb-5 pa-5 h-auto rounded-lg bg-grey-darken-3 neon-border d-flex flex-column">
<div class="w-100 d-flex justify-end bg-grey-darken-3">
<v-btn class="bg-grey-darken-3" icon="mdi-window-close" elevation="0" @click="onShowAfterModal"/>
</div>
<v-label class="text-xl-h6 white-text justify-center">{{afterModalText}}</v-label>
</v-sheet>
</v-dialog>
</template>
<style scoped>
.v-dialog {
align-items: center;
justify-content: center;
margin: auto;
}
.v-label {
color: #000000;
}
</style>

View File

@ -1,45 +1,33 @@
<script>
import axios from "axios";
import {ref} from "vue";
import {useScheduleStore} from '../../stores/schedule.js';
export default {
name: "Links",
data: () => ({
links: [],
links: ref(),
fetching: true,
windowHeight: document.documentElement.clientHeight,
windowWidth: document.documentElement.clientWidth,
isWide: window.innerWidth >= 460
scheduleStore: useScheduleStore()
}),
props: {
isWide: Boolean
},
mounted() {
axios
.get('/api/v1/links')
.then(response => {
this.links = response.data;
this.fetching = false;
});
this.myEventHandler();
window.addEventListener("resize", this.myEventHandler, { passive: true });
},
created() {
window.addEventListener("resize", this.myEventHandler);
},
methods: {
myEventHandler(e) {
this.windowHeight = document.documentElement.clientHeight;
this.windowWidth = document.documentElement.clientWidth;
this.isWide = this.windowWidth >= 460;
}
this.scheduleStore.getLinks().then(()=>{
this.links = this.scheduleStore.links;
this.fetching = false;
});
}
}
</script>
<template>
<div class="w-100 d-flex justify-center">
<v-list :class="isWide ? 'w-66' : 'w-100'">
<v-skeleton-loader v-if="fetching" type="list-item"/>
<v-list-item v-else class="ma-5 bg-gradient-noh" elevation="6" v-for="link in links" :href="link.link"> <!-- style="background-color: #E57373; color: #FFFFFF" -->
<v-list class="bg-grey-darken-3" :class="isWide ? 'w-66' : 'w-100'">
<v-skeleton-loader v-if="fetching" type="list-item" class="bg-grey-darken-3 ml-1 mr-3"/>
<v-list-item v-else class="bg-grey-darken-3 neon-border mt-6 mb-7 ml-7 mr-7" elevation="0" v-for="link in links" :href="link.link"> <!-- style="background-color: #E57373; color: #FFFFFF" -->
<template v-slot:prepend>
<v-avatar :image="link.image" rounded="0"></v-avatar>
<v-avatar class="mt-1 mb-1 ml-5" :image="link.image" rounded="0"></v-avatar>
</template>
<v-list-item-title>{{ link.link_name }}</v-list-item-title>
</v-list-item>
@ -48,9 +36,5 @@
</template>
<style scoped>
.bg-gradient-noh {
background: linear-gradient(-45deg, #f103b0, #f0a068, #4fdbfeff);
background-size: 200% 200%;
animation: gradient 15s ease infinite;
}
</style>

View File

@ -1,12 +1,17 @@
<script>
import axios from "axios";
import {useScheduleStore} from '../../stores/schedule.js';
import {ref} from "vue";
export default {
name: "ScheduleTable",
data: () => ({
schedules: [],
schedules: ref(),
scheduleStore: useScheduleStore(),
fetching: true
}),
props: {
isWide: Boolean
},
methods: {
parseDate(date){
let dateArr = date.split("-");
@ -14,20 +19,18 @@
}
},
mounted() {
axios
.get('/api/v1/schedules')
.then(response => {
this.schedules = response.data;
this.fetching = false;
});
this.scheduleStore.getSchedules().then(()=>{
this.schedules = this.scheduleStore.schedules;
this.fetching = false;
});
}
}
</script>
<template>
<div class="w-100 d-flex justify-center">
<v-skeleton-loader v-if="fetching" type="table"/>
<v-table v-else class="text-xl-h5 text-lg-h5 text-md-h5 text-sm-h5 text-body-2 w-66">
<div class="w-100 d-flex justify-center mt-6 mb-6">
<v-skeleton-loader v-if="fetching" type="table" class="bg-grey-darken-3 mr-3 ml-1"/>
<v-table v-else class="bg-grey-darken-3 neon-border pa-3 ml-1 mr-3 text-xl-h5 text-lg-h5 text-md-h5 text-sm-h5 text-body-2" :class="isWide ? 'w-66' : 'w-100'">
<tbody>
<tr v-for="schedule in schedules">
<td>{{ parseDate(schedule.current_date) }} {{ schedule.weekday_name }} {{ schedule.stream_time }}</td>

View File

@ -34,7 +34,8 @@
<script>
import {ref} from 'vue';
import axios from "axios";
import {useBasyaStore} from "../../stores/basya.js";
export default {
name: "Basya",
data: () => ({
@ -44,7 +45,8 @@ export default {
currentPhrase: ref(),
winWidth: ref(document.documentElement.clientWidth),
// size: ref(),
isLess: false
isLess: false,
basyaStore: useBasyaStore()
}),
methods: {
reloadPhrase(){
@ -61,13 +63,11 @@ export default {
}
},
mounted() {
axios
.get('/api/v1/phrases')
.then(response => {
this.phrases = response.data;
this.reloadPhrase();
this.fetching = false;
});
this.basyaStore.getPhrases().then(()=>{
this.phrases = this.basyaStore.phrases;
this.reloadPhrase();
this.fetching = false;
})
this.isLess = ref(this.winWidth.value <= 600 ? 'flex-column' : '');
/*
this.size = this.winWidth <= 600 ? 'x-small' :

View File

@ -55,13 +55,12 @@ export default {
methods: {
getCurrentDay(){
let date = new Date();
console.log(date);
return date.getDay();
},
checkFriday(){
this.isFirst = false;
let day = this.getCurrentDay();
this.notFriday = day !== 4;
this.notFriday = day !== 5;
this.day = this.dayList[day];
if (this.notFriday){
let prevPhrase = this.phrase;
@ -135,12 +134,15 @@ export default {
0% {
background-color: red;
}
50% {
25% {
background-color: #00ff00;
}
100% {
75% {
background-color: blue;
}
100% {
background-color: red;
}
}
</style>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Информация о трансляциях</title>
<title>Сегодня пятница?</title>
@vite('resources/friday.js')
@vite('resources/css/app.css')
</head>

View File

@ -1,6 +1,6 @@
<template>
<div class="d-flex justify-end align-center">
<v-table class="main-sheet-bg text-xl-h6 text-lg-body-1 text-md-body-1 text-sm-body-1 text-caption pl-5" :class="[this.isMore700 ? this.isWide ? 'w-25' : 'w-66' : 'w-100']" style="text-align: left">
<v-table class="main-sheet-bg text-xxl-h6 text-xl-body-1 text-lg-body-1 text-md-body-1 text-sm-body-1 text-caption pl-5" :class="[this.isMore700 ? this.isWide ? 'w-25' : 'w-66' : 'w-100']" style="text-align: left">
<tbody>
<tr>
<td><v-icon :icon="`mdi-account`"></v-icon>Возраст</td>
@ -21,7 +21,7 @@
</tbody>
</v-table>
<div v-if="this.isMore700" class="w-33">
<v-img class="image-gradient" src="./resume.png"></v-img>
<v-img class="image-gradient" src="./images/resume.png"></v-img>
</div>
</div>
</template>
@ -38,7 +38,7 @@ export default {
},
windowHeight: document.documentElement.clientHeight,
windowWidth: document.documentElement.clientWidth,
isWide: window.innerWidth > 1750,
isWide: window.innerWidth > 1920,
isMore700: window.innerWidth > 700,
tableClass: 'w-25'
}),

View File

@ -6,6 +6,22 @@
<title>Резюме</title>
@vite('resources/app.js')
@vite('resources/css/app.css')
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(97497664, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/97497664" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body class="antialiased">
<div id="app"></div>

View File

@ -6,6 +6,22 @@
<title>Информация о трансляциях</title>
@vite('resources/welcome.js')
@vite('resources/css/app.css')
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(97497583, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/97497583" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body class="antialiased">
<div id="app"></div>

View File

@ -19,3 +19,4 @@ Route::get('/links', 'App\Http\Controllers\LinksController@index')->name('links'
Route::get('/schedules', 'App\Http\Controllers\SchedulesController@index')->name('schedules');
Route::get('/dates', 'App\Http\Controllers\SchedulesController@mmDate')->name('dates');
Route::get('/phrases', 'App\Http\Controllers\BasyaPhrasesController@index')->name('phrases');
Route::post('/rating', 'App\Http\Controllers\RatingController@index')->name('rating');