aviatorpre / index.html
timoon811's picture
Add 3 files
19e4cbf verified
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Авитор: AI-прогноз фаз игры Авиатор</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.pulse-animation {
animation: pulse 2s infinite;
}
.phase-chart {
height: 200px;
}
.tooltip {
position: relative;
display: inline-block;
}
.tooltip .tooltip-text {
visibility: hidden;
width: 200px;
background-color: #1F2937;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 0.3s;
}
.tooltip:hover .tooltip-text {
visibility: visible;
opacity: 1;
}
.slide-fade-enter-active {
transition: all 0.3s ease;
}
.slide-fade-leave-active {
transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
}
.slide-fade-enter, .slide-fade-leave-to {
transform: translateY(10px);
opacity: 0;
}
</style>
</head>
<body class="bg-gray-900 text-gray-100 font-sans">
<div class="container mx-auto px-4 py-8 max-w-4xl" id="app">
<!-- Header -->
<header class="flex justify-between items-center mb-8">
<div class="flex items-center">
<div class="bg-blue-600 text-white p-3 rounded-lg mr-3">
<i class="fas fa-chart-line text-xl"></i>
</div>
<div>
<h1 class="text-2xl font-bold">Авитор</h1>
<p class="text-gray-400 text-sm">AI-прогноз фаз игры Авиатор</p>
</div>
</div>
<div>
<button v-if="!user" @click="showAuthModal = true" class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg transition">
Войти / Регистрация
</button>
<div v-else class="flex items-center">
<span class="mr-3">Баланс: ${{ user.balance.toFixed(2) }}</span>
<button @click="showSubModal = true" class="bg-green-600 hover:bg-green-700 text-white px-3 py-1 rounded-lg text-sm transition">
Подписка
</button>
</div>
</div>
</header>
<!-- Main Content -->
<main>
<!-- Game Info -->
<div class="bg-gray-800 rounded-xl p-6 mb-6">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-semibold flex items-center">
<i class="fas fa-plane mr-2"></i> Авиатор
</h2>
<div class="flex items-center">
<span class="text-sm mr-2">Статус:</span>
<span class="px-2 py-1 rounded text-xs" :class="{
'bg-green-900 text-green-300': gameStatus === 'active',
'bg-gray-700 text-gray-300': gameStatus !== 'active'
}">
{{ gameStatus === 'active' ? 'Игра активна' : 'Ожидание' }}
</span>
</div>
</div>
<!-- Current Phase -->
<div class="bg-gray-700 rounded-lg p-4 mb-6">
<div class="flex justify-between items-center mb-3">
<div class="flex items-center">
<div class="w-8 h-8 rounded-full flex items-center justify-center mr-3" :class="{
'bg-green-500': currentPhase.type === 'hot',
'bg-yellow-500': currentPhase.type === 'neutral',
'bg-red-500': currentPhase.type === 'drain'
}">
<i v-if="currentPhase.type === 'hot'" class="fas fa-fire text-white"></i>
<i v-if="currentPhase.type === 'neutral'" class="fas fa-pause text-white"></i>
<i v-if="currentPhase.type === 'drain'" class="fas fa-tint text-white"></i>
</div>
<h3 class="font-medium">{{ currentPhase.title }}</h3>
</div>
<div class="flex items-center">
<span class="text-sm mr-2">AI Уверенность:</span>
<span class="font-bold" :class="{
'text-green-400': currentPhase.confidence >= 70,
'text-yellow-400': currentPhase.confidence >= 30 && currentPhase.confidence < 70,
'text-red-400': currentPhase.confidence < 30
}">{{ currentPhase.confidence }}%</span>
</div>
</div>
<p class="text-gray-300 mb-4">{{ currentPhase.description }}</p>
<div class="flex flex-wrap gap-3 mb-4">
<div class="bg-gray-600 rounded px-3 py-1 text-sm">
<span class="text-gray-400">Прогноз:</span> {{ currentPhase.prediction }}
</div>
<div class="bg-gray-600 rounded px-3 py-1 text-sm">
<span class="text-gray-400">Вероятность x20+:</span> {{ currentPhase.probability }}%
</div>
<div class="bg-gray-600 rounded px-3 py-1 text-sm">
<span class="text-gray-400">Длительность фазы:</span> {{ currentPhase.duration }} игр
</div>
</div>
<!-- Action Button -->
<button @click="showExplanation = !showExplanation" class="w-full bg-blue-600 hover:bg-blue-700 text-white py-3 rounded-lg font-medium mb-3 transition flex items-center justify-center">
<span v-if="currentPhase.recommendation === 'bet'">🔥 Ставь сейчас!</span>
<span v-else>⏳ Подожди — фаза нестабильна</span>
</button>
<!-- Explanation -->
<div v-if="showExplanation" class="bg-gray-600 rounded-lg p-4 mt-3">
<h4 class="font-medium mb-2">Почему {{ currentPhase.recommendation === 'bet' ? 'выгодно ставить' : 'лучше подождать' }}?</h4>
<p class="text-gray-300 text-sm">{{ currentPhase.explanation }}</p>
<div v-if="currentPhase.similarCase" class="mt-3 bg-gray-700 rounded p-3 text-sm">
<p class="text-yellow-400 mb-1">Похожая ситуация была {{ currentPhase.similarCase.date }}:</p>
<p>{{ currentPhase.similarCase.description }}</p>
</div>
</div>
</div>
<!-- Phase Chart -->
<div class="bg-gray-700 rounded-lg p-4 mb-6">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium">График фаз за последние 30 игр</h3>
<div class="flex">
<button @click="changeTimeFrame('30')" class="px-3 py-1 text-sm rounded-l" :class="{
'bg-blue-600 text-white': timeFrame === '30',
'bg-gray-600 text-gray-300': timeFrame !== '30'
}">30</button>
<button @click="changeTimeFrame('50')" class="px-3 py-1 text-sm border-l border-r border-gray-600" :class="{
'bg-blue-600 text-white': timeFrame === '50',
'bg-gray-600 text-gray-300': timeFrame !== '50'
}">50</button>
<button @click="changeTimeFrame('100')" class="px-3 py-1 text-sm rounded-r" :class="{
'bg-blue-600 text-white': timeFrame === '100',
'bg-gray-600 text-gray-300': timeFrame !== '100'
}">100</button>
</div>
</div>
<div class="phase-chart bg-gray-800 rounded p-2">
<canvas id="phaseChart"></canvas>
</div>
</div>
<!-- Notifications -->
<div class="bg-gray-700 rounded-lg p-4">
<h3 class="font-medium mb-3">Уведомления о фазах</h3>
<div class="flex flex-col sm:flex-row gap-3">
<button @click="toggleNotification('hot')" class="flex-1 bg-gray-600 hover:bg-gray-500 rounded-lg p-3 transition flex items-center justify-between">
<div class="flex items-center">
<div class="w-6 h-6 rounded-full bg-green-500 mr-3 flex items-center justify-center">
<i class="fas fa-fire text-white text-xs"></i>
</div>
<span>Горячие фазы</span>
</div>
<i class="fas" :class="{
'fa-toggle-on text-green-400': notifications.hot,
'fa-toggle-off text-gray-400': !notifications.hot
}"></i>
</button>
<button @click="toggleNotification('drain')" class="flex-1 bg-gray-600 hover:bg-gray-500 rounded-lg p-3 transition flex items-center justify-between">
<div class="flex items-center">
<div class="w-6 h-6 rounded-full bg-red-500 mr-3 flex items-center justify-center">
<i class="fas fa-tint text-white text-xs"></i>
</div>
<span>Сливные фазы</span>
</div>
<i class="fas" :class="{
'fa-toggle-on text-green-400': notifications.drain,
'fa-toggle-off text-gray-400': !notifications.drain
}"></i>
</button>
<button @click="toggleNotification('anomaly')" class="flex-1 bg-gray-600 hover:bg-gray-500 rounded-lg p-3 transition flex items-center justify-between">
<div class="flex items-center">
<div class="w-6 h-6 rounded-full bg-purple-500 mr-3 flex items-center justify-center">
<i class="fas fa-bolt text-white text-xs"></i>
</div>
<span>Аномалии</span>
</div>
<i class="fas" :class="{
'fa-toggle-on text-green-400': notifications.anomaly,
'fa-toggle-off text-gray-400': !notifications.anomaly
}"></i>
</button>
</div>
<div class="mt-4">
<button @click="showTelegramConnect = true" class="w-full bg-blue-600 hover:bg-blue-700 text-white py-2 rounded-lg transition flex items-center justify-center">
<i class="fab fa-telegram mr-2"></i> Подключить Telegram-уведомления
</button>
</div>
</div>
</div>
<!-- History & Community -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<!-- Phase History -->
<div class="bg-gray-800 rounded-xl p-6">
<h3 class="font-medium mb-4 flex items-center">
<i class="fas fa-history mr-2"></i> История фаз
</h3>
<div class="space-y-3">
<div v-for="(phase, index) in phaseHistory" :key="index" class="bg-gray-700 rounded-lg p-3">
<div class="flex justify-between items-center mb-1">
<div class="flex items-center">
<div class="w-5 h-5 rounded-full mr-2" :class="{
'bg-green-500': phase.type === 'hot',
'bg-yellow-500': phase.type === 'neutral',
'bg-red-500': phase.type === 'drain'
}"></div>
<span class="text-sm">{{ phase.time }}</span>
</div>
<span class="text-xs bg-gray-600 px-2 py-1 rounded">{{ phase.duration }} игр</span>
</div>
<p class="text-sm text-gray-300">{{ phase.description }}</p>
<div v-if="phase.result" class="mt-2 text-xs">
<span class="font-medium" :class="{
'text-green-400': phase.result === 'success',
'text-red-400': phase.result === 'fail'
}">
{{ phase.result === 'success' ? '✅ Успешный прогноз' : '❌ Прогноз не сработал' }}
</span>
<span v-if="phase.resultValue" class="ml-2 text-gray-400">({{ phase.resultValue }})</span>
</div>
</div>
</div>
<button class="w-full mt-4 bg-gray-700 hover:bg-gray-600 text-gray-300 py-2 rounded-lg transition text-sm">
Показать больше
</button>
</div>
<!-- Community Trust -->
<div class="bg-gray-800 rounded-xl p-6">
<h3 class="font-medium mb-4 flex items-center">
<i class="fas fa-users mr-2"></i> Рейтинг доверия
</h3>
<div class="space-y-4">
<div>
<div class="flex justify-between text-sm mb-1">
<span>Горячие фазы</span>
<span class="font-medium">87%</span>
</div>
<div class="w-full bg-gray-700 rounded-full h-2">
<div class="bg-green-500 h-2 rounded-full" style="width: 87%"></div>
</div>
</div>
<div>
<div class="flex justify-between text-sm mb-1">
<span>Сливные фазы</span>
<span class="font-medium">76%</span>
</div>
<div class="w-full bg-gray-700 rounded-full h-2">
<div class="bg-red-500 h-2 rounded-full" style="width: 76%"></div>
</div>
</div>
<div>
<div class="flex justify-between text-sm mb-1">
<span>Аномалии</span>
<span class="font-medium">68%</span>
</div>
<div class="w-full bg-gray-700 rounded-full h-2">
<div class="bg-purple-500 h-2 rounded-full" style="width: 68%"></div>
</div>
</div>
</div>
<div class="mt-6">
<h4 class="text-sm font-medium mb-2">Последние успешные прогнозы</h4>
<div class="space-y-3">
<div v-for="(success, index) in successStories" :key="index" class="bg-gray-700 rounded-lg p-3 text-sm">
<div class="flex justify-between items-start mb-1">
<span class="font-medium">{{ success.user }}</span>
<span class="bg-green-900 text-green-300 px-2 py-1 rounded text-xs">+{{ success.amount }}</span>
</div>
<p class="text-gray-300">{{ success.story }}</p>
<div class="flex justify-between items-center mt-2 text-xs text-gray-400">
<span>{{ success.time }}</span>
<div class="flex items-center">
<i class="fas fa-thumbs-up mr-1"></i>
<span>{{ success.likes }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Demo Warning -->
<div v-if="!user" class="bg-yellow-900 bg-opacity-30 border border-yellow-700 rounded-xl p-6 mb-6">
<div class="flex items-start">
<div class="bg-yellow-600 text-white p-2 rounded-full mr-4">
<i class="fas fa-exclamation-circle"></i>
</div>
<div>
<h3 class="font-medium mb-2">Вы используете демо-режим</h3>
<p class="text-gray-300 mb-4">Этот прогноз обновляется только 1 раз в день. Для доступа к реальным данным и мгновенным уведомлениям о фазах, зарегистрируйтесь или купите подписку.</p>
<button @click="showAuthModal = true" class="bg-yellow-600 hover:bg-yellow-700 text-white px-4 py-2 rounded-lg transition">
Получить полный доступ
</button>
</div>
</div>
</div>
</main>
<!-- Modals -->
<!-- Auth Modal -->
<div v-if="showAuthModal" class="fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-50 p-4">
<div class="bg-gray-800 rounded-xl p-6 w-full max-w-md">
<div class="flex justify-between items-center mb-4">
<h3 class="text-xl font-medium">Вход / Регистрация</h3>
<button @click="showAuthModal = false" class="text-gray-400 hover:text-white">
<i class="fas fa-times"></i>
</button>
</div>
<div class="mb-4">
<label class="block text-gray-400 text-sm mb-2">Email</label>
<input type="email" class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<div class="mb-6">
<label class="block text-gray-400 text-sm mb-2">Пароль</label>
<input type="password" class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
</div>
<button @click="loginUser" class="w-full bg-blue-600 hover:bg-blue-700 text-white py-3 rounded-lg font-medium mb-3 transition">
Войти
</button>
<div class="text-center text-sm text-gray-400">
Нет аккаунта? <a href="#" class="text-blue-400 hover:text-blue-300">Зарегистрироваться</a>
</div>
<div class="mt-4 pt-4 border-t border-gray-700">
<button class="w-full bg-gray-700 hover:bg-gray-600 text-white py-2 rounded-lg transition flex items-center justify-center">
<i class="fab fa-google mr-2"></i> Продолжить с Google
</button>
</div>
</div>
</div>
<!-- Subscription Modal -->
<div v-if="showSubModal" class="fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-50 p-4">
<div class="bg-gray-800 rounded-xl p-6 w-full max-w-md">
<div class="flex justify-between items-center mb-4">
<h3 class="text-xl font-medium">Подписка на Авитор</h3>
<button @click="showSubModal = false" class="text-gray-400 hover:text-white">
<i class="fas fa-times"></i>
</button>
</div>
<div class="mb-6">
<div class="bg-gray-700 rounded-lg p-4 mb-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium">Премиум доступ</h4>
<span class="bg-blue-600 text-white px-2 py-1 rounded text-xs">Популярный</span>
</div>
<p class="text-gray-300 text-sm mb-4">Полный доступ ко всем функциям прогнозирования и уведомлениям</p>
<div class="flex justify-between items-end">
<div>
<span class="text-2xl font-bold">$29.90</span>
<span class="text-gray-400 text-sm">/ месяц</span>
</div>
<span class="text-green-400 text-sm">Экономия 50%</span>
</div>
</div>
<div class="bg-gray-700 rounded-lg p-4 mb-2">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium">Тестовый день</h4>
</div>
<p class="text-gray-300 text-sm mb-4">Попробуйте все функции на 24 часа</p>
<div class="flex justify-between items-end">
<div>
<span class="text-2xl font-bold">$1.00</span>
<span class="text-gray-400 text-sm">/ 1 день</span>
</div>
</div>
</div>
</div>
<button @click="buySubscription('premium')" class="w-full bg-blue-600 hover:bg-blue-700 text-white py-3 rounded-lg font-medium mb-3 transition">
Купить премиум доступ
</button>
<button @click="buySubscription('trial')" class="w-full bg-gray-700 hover:bg-gray-600 text-white py-2 rounded-lg transition">
Попробовать за $1
</button>
<div class="mt-4 pt-4 border-t border-gray-700">
<div class="flex items-start mb-2">
<i class="fas fa-check text-green-400 mt-1 mr-2"></i>
<span class="text-sm text-gray-300">90% пользователей получили 1+ вывод за первый день</span>
</div>
<div class="flex items-start mb-2">
<i class="fas fa-check text-green-400 mt-1 mr-2"></i>
<span class="text-sm text-gray-300">AI фиксирует горячие фазы точнее, чем ты угадаешь</span>
</div>
<div class="flex items-start">
<i class="fas fa-check text-green-400 mt-1 mr-2"></i>
<span class="text-sm text-gray-300">Секретные фазы, которые видны только с подпиской</span>
</div>
</div>
</div>
</div>
<!-- Telegram Connect Modal -->
<div v-if="showTelegramConnect" class="fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-50 p-4">
<div class="bg-gray-800 rounded-xl p-6 w-full max-w-md">
<div class="flex justify-between items-center mb-4">
<h3 class="text-xl font-medium">Telegram-уведомления</h3>
<button @click="showTelegramConnect = false" class="text-gray-400 hover:text-white">
<i class="fas fa-times"></i>
</button>
</div>
<div class="mb-6">
<p class="text-gray-300 mb-4">Подключите Telegram-бота, чтобы получать мгновенные уведомления о важных фазах игры прямо в мессенджер.</p>
<div class="bg-gray-700 rounded-lg p-4 mb-4">
<div class="flex items-center mb-3">
<i class="fas fa-bell text-yellow-400 mr-3"></i>
<span class="font-medium">Пример уведомления:</span>
</div>
<div class="bg-gray-800 rounded-lg p-3 text-sm">
<div class="flex items-center mb-2">
<span class="bg-green-500 text-white px-2 py-1 rounded-full text-xs mr-2">🔥</span>
<span class="font-medium">Горячая фаза!</span>
</div>
<p class="text-gray-300">AI обнаружил накопление — вероятность x20+ в течение 3 игр составляет 72%</p>
<div class="mt-2 text-xs text-gray-400">Нажмите для быстрой ставки →</div>
</div>
</div>
<div class="flex items-center bg-gray-700 rounded-lg p-4">
<div class="bg-blue-500 text-white p-3 rounded-full mr-4">
<i class="fab fa-telegram text-xl"></i>
</div>
<div>
<h4 class="font-medium mb-1">Avitor Alerts Bot</h4>
<p class="text-gray-300 text-sm">@AvitorAlertsBot</p>
</div>
</div>
</div>
<button class="w-full bg-blue-500 hover:bg-blue-600 text-white py-3 rounded-lg font-medium transition flex items-center justify-center">
<i class="fab fa-telegram mr-2"></i> Перейти в Telegram
</button>
<button class="w-full mt-3 bg-gray-700 hover:bg-gray-600 text-white py-2 rounded-lg transition">
Скопировать ссылку
</button>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.47/dist/vue.global.min.js"></script>
<script>
const { createApp, ref, onMounted } = Vue;
createApp({
setup() {
// User state
const user = ref(null);
const gameStatus = ref('active');
const showAuthModal = ref(false);
const showSubModal = ref(false);
const showTelegramConnect = ref(false);
const showExplanation = ref(false);
const timeFrame = ref('30');
const notifications = ref({
hot: false,
drain: false,
anomaly: false
});
// Current phase data
const currentPhase = ref({
type: 'hot',
title: 'Горячая фаза',
description: 'Последние 8 игр слились. Высока вероятность отскока!',
confidence: 81,
prediction: 'Вероятность крупного кэфа в течение 3 игр — 72%',
probability: '72',
duration: '8',
recommendation: 'bet',
explanation: 'После длительного слива (8 игр подряд с коэффициентом ниже 1.5x) система фиксирует накопление для отскока. Исторические данные показывают, что в 72% случаев после такого паттерна в течение 3 игр выпадает коэффициент выше 20x.',
similarCase: {
date: '2 дня назад',
description: 'После 7 сливных игр выпал коэффициент 47x на 3-й игре новой фазы.'
}
});
// Phase history
const phaseHistory = ref([
{
time: '5 минут назад',
type: 'hot',
duration: '5',
description: 'Горячая фаза с вероятностью x20+ 68%',
result: 'success',
resultValue: 'x34 на 2-й игре'
},
{
time: '27 минут назад',
type: 'neutral',
duration: '12',
description: 'Нейтральная фаза без явных паттернов',
result: 'fail',
resultValue: 'макс. x8'
},
{
time: '1 час назад',
type: 'drain',
duration: '9',
description: 'Сливная фаза с низкими коэффициентами',
result: 'success',
resultValue: 'макс. x3.2'
},
{
time: '2 часа назад',
type: 'hot',
duration: '4',
description: 'Короткая горячая фаза',
result: 'success',
resultValue: 'x52 на 4-й игре'
}
]);
// Success stories
const successStories = ref([
{
user: 'Алексей К.',
amount: '17.400 ₽',
story: 'Поставил 500 ₽ на прогноз горячей фазы — выпал x34.8',
time: '15 минут назад',
likes: '24'
},
{
user: 'Мария С.',
amount: '8.900 ₽',
story: 'Использовала сигнал о сливной фазе — не ставила 7 игр, затем на 8-й поймала x21',
time: '1 час назад',
likes: '18'
},
{
user: 'Дмитрий П.',
amount: '23.100 ₽',
story: 'Дождался аномалии по прогнозу AI — поставил 1000 ₽ и получил x23.1',
time: '3 часа назад',
likes: '42'
}
]);
// Chart reference
let phaseChart = null;
// Methods
const loginUser = () => {
user.value = {
email: 'demo@user.com',
balance: 100.00,
subscription: null
};
showAuthModal.value = false;
};
const buySubscription = (type) => {
if (!user.value) {
showAuthModal.value = true;
showSubModal.value = false;
return;
}
if (type === 'premium') {
user.value.subscription = 'premium';
user.value.balance -= 29.90;
} else {
user.value.subscription = 'trial';
user.value.balance -= 1.00;
}
showSubModal.value = false;
// Update current phase with premium data
currentPhase.value = {
type: 'hot',
title: 'Горячая фаза (премиум)',
description: 'Система обнаружила паттерн "Тройной отскок" — последние 8 игр слились, но 3 из них имели аномальные показатели.',
confidence: 89,
prediction: 'Вероятность крупного кэфа в течение 2 игр — 82%',
probability: '82',
duration: '8',
recommendation: 'bet',
explanation: 'Премиум-анализ показывает комбинацию двух факторов: 1) накопление после слива, 2) аномальные значения в 3 из 8 игр (что указывает на подготовку системы к крупному выигрышу). Исторически такие комбинации дают x50+ в 82% случаев.',
similarCase: {
date: 'вчера',
description: 'Аналогичный паттерн дал x63 на 2-й игре новой фазы.'
}
};
};
const toggleNotification = (type) => {
notifications.value[type] = !notifications.value[type];
};
const changeTimeFrame = (tf) => {
timeFrame.value = tf;
updateChart();
};
const updateChart = () => {
const ctx = document.getElementById('phaseChart').getContext('2d');
// Destroy previous chart if exists
if (phaseChart) {
phaseChart.destroy();
}
// Sample data for chart
const labels = Array.from({length: parseInt(timeFrame.value)}, (_, i) => `Игра ${i+1}`);
const data = Array.from({length: parseInt(timeFrame.value)}, () => Math.floor(Math.random() * 100) + 1);
// Create gradient
const gradient = ctx.createLinearGradient(0, 0, 0, 200);
gradient.addColorStop(0, 'rgba(59, 130, 246, 0.8)');
gradient.addColorStop(1, 'rgba(59, 130, 246, 0.1)');
phaseChart = new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [
{
label: 'Коэффициент',
data: data,
borderColor: '#3B82F6',
backgroundColor: gradient,
fill: true,
tension: 0.4,
pointRadius: 0
},
{
label: 'Среднее',
data: Array(parseInt(timeFrame.value)).fill(50),
borderColor: '#6B7280',
borderWidth: 1,
borderDash: [5, 5],
pointRadius: 0
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
},
tooltip: {
mode: 'index',
intersect: false
}
},
scales: {
x: {
grid: {
display: false
},
ticks: {
maxRotation: 0,
autoSkip: true,
maxTicksLimit: 10
}
},
y: {
min: 0,
max: 100,
ticks: {
callback: function(value) {
return value + 'x';
}
}
}
}
}
});
};
// Lifecycle hooks
onMounted(() => {
updateChart();
// Simulate game status changes
setInterval(() => {
gameStatus.value = gameStatus.value === 'active' ? 'waiting' : 'active';
}, 10000);
});
return {
user,
gameStatus,
currentPhase,
phaseHistory,
successStories,
showAuthModal,
showSubModal,
showTelegramConnect,
showExplanation,
timeFrame,
notifications,
loginUser,
buySubscription,
toggleNotification,
changeTimeFrame
};
}
}).mount('#app');
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=timoon811/aviatorpre" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>