diff --git a/public/index.html b/public/index.html index 6d1e0d8..86a73c8 100644 --- a/public/index.html +++ b/public/index.html @@ -157,31 +157,40 @@

3 Hours

Quick fixes and small automation improvements.

$450 - Choose Plan + +

10 Hours

Perfect for large projects and advanced automation.

$1.200 - Choose Plan +
-

ODOO & N8N Bundle

-

Perfect for taking conrtol over your company automation installation.

- $395 per Year - Choose Plan +

N8N Installation and Maintainance

+

We install N8N on your Container and maintain it for one year.

+ $75 per Year +
diff --git a/public/widget/widget.js b/public/widget/widget.js index d958395..571bd37 100644 --- a/public/widget/widget.js +++ b/public/widget/widget.js @@ -1,11 +1,10 @@ document.addEventListener('DOMContentLoaded', async () => { try { - let id = window.location.hostname || "localhost"; - console.log("Detected domain ID:", id); - + const id = window.location.hostname || "localhost"; + console.log("Detected domain ID:", id); const configUrl = `http://localhost:8000/widget/custom/${id}.json`; - console.log(configUrl) + console.log(configUrl); const response = await fetch(configUrl); if (!response.ok) throw new Error(`Config not found at ${configUrl}`); @@ -17,10 +16,10 @@ document.addEventListener('DOMContentLoaded', async () => { return; } - // Step 3: Inject HTML into page + // Inject HTML document.body.insertAdjacentHTML('beforeend', widgetHTML); - // Step 4: Select DOM elements + // DOM references const chatToggle = document.getElementById('cw-chatToggle'); const chatWidget = document.getElementById('cw-chatWidget'); const chatForm = document.getElementById('cw-chatForm'); @@ -31,7 +30,7 @@ document.addEventListener('DOMContentLoaded', async () => { const sessionId = crypto.randomUUID(); let chatOpened = false; - // Step 5: Utility to append message + // Append a message to the chat function appendMessage(text, sender) { const msg = document.createElement('div'); msg.classList.add('cw-message', sender === 'user' ? 'user' : 'bot'); @@ -40,24 +39,11 @@ document.addEventListener('DOMContentLoaded', async () => { chatMessages.scrollTop = chatMessages.scrollHeight; } - // Step 6: Toggle chat visibility - chatToggle.addEventListener('click', () => { - const isVisible = chatWidget.style.display === 'block'; - chatWidget.style.display = isVisible ? 'none' : 'block'; - - if (!isVisible && !chatOpened) { - appendMessage(preamble, 'bot'); - chatOpened = true; - } - }); - - // Step 7: Handle form submission - chatForm.addEventListener('submit', async (e) => { - e.preventDefault(); - const input = chatInput.value.trim(); - if (!input) return; - - appendMessage(input, 'user'); + // Centralized function to send a message + async function sendMessageToBot(messageText) { + console.log(messageText) + chatWidget.style.display = 'block'; + appendMessage(messageText, 'user'); chatInput.value = ''; chatInput.focus(); @@ -68,10 +54,10 @@ document.addEventListener('DOMContentLoaded', async () => { body: JSON.stringify({ action: 'sendMessage', sessionId, - chatInput: input + chatInput: messageText }) }); - console.log(res) + const data = await res.json(); if (data.status) { @@ -90,52 +76,34 @@ document.addEventListener('DOMContentLoaded', async () => { appendMessage('Fehler beim Verbinden mit dem Server. Bitte versuchen Sie es später erneut.', 'bot'); console.error(error); } - }); - - // Step 8: Attach pricing buttons if they exist - function handleBuyClick(buttonId, message) { - const btn = document.getElementById(buttonId); - if (!btn) return; - - btn.addEventListener('click', (e) => { - e.preventDefault(); - - if (chatWidget.style.display !== 'block') { - chatWidget.style.display = 'block'; - if (!chatOpened) { - appendMessage(preamble, 'bot'); - chatOpened = true; - } - } - - appendMessage(message, 'user'); - - fetch(api, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - action: 'sendMessage', - sessionId, - chatInput: message - }) - }) - .then(res => res.json()) - .then(data => { - appendMessage(data.output, 'bot'); - }) - .catch(err => { - appendMessage('Fehler beim Verbinden mit dem Server. Bitte versuchen Sie es später erneut.', 'bot'); - console.error(err); - }); - }); } - handleBuyClick('buy-3h', 'I want to buy the 3 Hours pack for $450.'); - handleBuyClick('buy-5h', 'I want to buy the 5 Hours pack for $675.'); - handleBuyClick('buy-10h', 'I want to buy the 10 Hours pack for $1200.'); - handleBuyClick('buy-bundle', 'I want to buy the ODOO and N8N bundle for $395 per year.'); + window.sendMessageToBot = sendMessageToBot; + // Toggle chat widget + chatToggle.addEventListener('click', () => { + const isVisible = chatWidget.style.display === 'block'; + chatWidget.style.display = isVisible ? 'none' : 'block'; + + if (!isVisible && !chatOpened) { + appendMessage(preamble, 'bot'); + chatOpened = true; + } + }); + + // Form submission + chatForm.addEventListener('submit', (e) => { + e.preventDefault(); + const input = chatInput.value.trim(); + if (input) { + sendMessageToBot(input); + } + }); + + // Attach buy button listeners + } catch (err) { console.error('Failed to initialize chat widget:', err); } + });