feat: language switch reloads page (fixes chat), fun loading phrases
- Language switch now does full page reload so chat reinitializes - Replaced boring "Initializing AI model..." with 14 fun random phrases - Phrases are bilingual (ES/EN), CV-themed, with emojis
This commit is contained in:
@@ -22,21 +22,13 @@
|
|||||||
<div class="language-selector" id="language-selector">
|
<div class="language-selector" id="language-selector">
|
||||||
<button class="selector-btn {{if eq .Lang "en"}}active{{end}}"
|
<button class="selector-btn {{if eq .Lang "en"}}active{{end}}"
|
||||||
data-short="EN"
|
data-short="EN"
|
||||||
hx-get="/switch-language?lang=en"
|
onclick="window.location.href='/?lang=en'"
|
||||||
hx-target="#language-selector"
|
|
||||||
hx-swap="outerHTML swap:250ms settle:250ms"
|
|
||||||
hx-indicator="#lang-indicator-en"
|
|
||||||
hx-push-url="/?lang=en"
|
|
||||||
aria-label="English">
|
aria-label="English">
|
||||||
<span>English</span>
|
<span>English</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="selector-btn {{if eq .Lang "es"}}active{{end}}"
|
<button class="selector-btn {{if eq .Lang "es"}}active{{end}}"
|
||||||
data-short="ES"
|
data-short="ES"
|
||||||
hx-get="/switch-language?lang=es"
|
onclick="window.location.href='/?lang=es'"
|
||||||
hx-target="#language-selector"
|
|
||||||
hx-swap="outerHTML swap:250ms settle:250ms"
|
|
||||||
hx-indicator="#lang-indicator-es"
|
|
||||||
hx-push-url="/?lang=es"
|
|
||||||
aria-label="Español">
|
aria-label="Español">
|
||||||
<span>Español</span>
|
<span>Español</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -118,6 +118,42 @@
|
|||||||
var chatModelReady = false;
|
var chatModelReady = false;
|
||||||
var chatWarmedUp = false;
|
var chatWarmedUp = false;
|
||||||
|
|
||||||
|
// Fun loading phrases — random per request
|
||||||
|
var chatLoadingPhrases = {{if eq .Lang "es"}}[
|
||||||
|
'Repasando mi currículum… 📄',
|
||||||
|
'Recordando mis proyectos… 🧠',
|
||||||
|
'Calentando neuronas… ⚡',
|
||||||
|
'Preparando mi mejor versión… 💪',
|
||||||
|
'Buscando en mis recuerdos… 🔍',
|
||||||
|
'Consultando mi experiencia… 💼',
|
||||||
|
'Un momento, que me concentro… 🎯',
|
||||||
|
'Revisando 21 años de código… ⏳',
|
||||||
|
'Encendiendo el cerebro digital… 🤖',
|
||||||
|
'Organizando ideas… 💡',
|
||||||
|
'Dame un segundo… ☕',
|
||||||
|
'Casi listo, paciencia… 🏗️',
|
||||||
|
'Activando modo profesional… 👨💻',
|
||||||
|
'Conectando con mi yo digital… 🔌'
|
||||||
|
]{{else}}[
|
||||||
|
'Reviewing my CV… 📄',
|
||||||
|
'Remembering my projects… 🧠',
|
||||||
|
'Warming up neurons… ⚡',
|
||||||
|
'Preparing my best self… 💪',
|
||||||
|
'Searching my memories… 🔍',
|
||||||
|
'Consulting my experience… 💼',
|
||||||
|
'One moment, focusing… 🎯',
|
||||||
|
'Scanning 21 years of code… ⏳',
|
||||||
|
'Booting up the digital brain… 🤖',
|
||||||
|
'Organizing thoughts… 💡',
|
||||||
|
'Give me a second… ☕',
|
||||||
|
'Almost there, hang tight… 🏗️',
|
||||||
|
'Activating professional mode… 👨💻',
|
||||||
|
'Connecting to my digital self… 🔌'
|
||||||
|
]{{end}};
|
||||||
|
function chatLoadingPhrase() {
|
||||||
|
return chatLoadingPhrases[Math.floor(Math.random() * chatLoadingPhrases.length)];
|
||||||
|
}
|
||||||
|
|
||||||
// Poll model status until ready
|
// Poll model status until ready
|
||||||
function pollChatStatus() {
|
function pollChatStatus() {
|
||||||
fetch('/api/chat/status').then(function(r) { return r.json(); }).then(function(data) {
|
fetch('/api/chat/status').then(function(r) { return r.json(); }).then(function(data) {
|
||||||
@@ -217,7 +253,7 @@ document.addEventListener('htmx:beforeRequest', function(event) {
|
|||||||
var statusEl = document.getElementById('chat-status-text');
|
var statusEl = document.getElementById('chat-status-text');
|
||||||
var dotsEl = document.querySelector('.chat-typing-dots');
|
var dotsEl = document.querySelector('.chat-typing-dots');
|
||||||
if (!chatModelReady && statusEl && dotsEl) {
|
if (!chatModelReady && statusEl && dotsEl) {
|
||||||
statusEl.textContent = '{{if eq .Lang "es"}}Inicializando modelo IA…{{else}}Initializing AI model…{{end}}';
|
statusEl.textContent = chatLoadingPhrase();
|
||||||
statusEl.style.display = 'inline';
|
statusEl.style.display = 'inline';
|
||||||
dotsEl.style.display = 'none';
|
dotsEl.style.display = 'none';
|
||||||
} else if (statusEl && dotsEl) {
|
} else if (statusEl && dotsEl) {
|
||||||
|
|||||||
Reference in New Issue
Block a user