UntilDot commited on
Commit
a5baa63
·
verified ·
1 Parent(s): 7a12633

Update static/script.js

Browse files
Files changed (1) hide show
  1. static/script.js +57 -15
static/script.js CHANGED
@@ -1,3 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  // === Theme Toggle ===
2
  const themeToggle = document.getElementById("themeToggle");
3
  const toggleConfig = document.getElementById("toggleConfig");
@@ -11,9 +58,7 @@ function setInitialTheme() {
11
  } else if (savedTheme === "light") {
12
  html.classList.remove("dark");
13
  } else {
14
- const prefersDark = window.matchMedia(
15
- "(prefers-color-scheme: dark)",
16
- ).matches;
17
  if (prefersDark) html.classList.add("dark");
18
  else html.classList.remove("dark");
19
  }
@@ -35,9 +80,9 @@ const chatForm = document.getElementById("chatForm");
35
  const userInput = document.getElementById("userInput");
36
  const chatContainer = document.getElementById("chatContainer");
37
 
38
- const modelA = document.getElementById("modelA");
39
- const modelB = document.getElementById("modelB");
40
- const modelC = document.getElementById("modelC");
41
 
42
  function appendMessage(role, text) {
43
  const div = document.createElement("div");
@@ -59,16 +104,16 @@ chatForm.addEventListener("submit", async (e) => {
59
 
60
  const settings = {
61
  models: {
62
- "LLM-A": modelA.value,
63
- "LLM-B": modelB.value,
64
- "LLM-C": modelC.value,
65
- },
66
  };
67
 
68
  const response = await fetch("/chat", {
69
  method: "POST",
70
  headers: { "Content-Type": "application/json" },
71
- body: JSON.stringify({ prompt, settings }),
72
  });
73
 
74
  chatContainer.lastChild.remove(); // remove 'Thinking...'
@@ -77,9 +122,6 @@ chatForm.addEventListener("submit", async (e) => {
77
  const data = await response.json();
78
  appendMessage("bot", data.response);
79
  } else {
80
- appendMessage(
81
- "bot",
82
- "An error occurred. Please check your model selections.",
83
- );
84
  }
85
  });
 
1
+ // === Global Model List ===
2
+ const MODEL_LIST = [
3
+ { id: "deepseek/deepseek-chat-v3-0324:free", name: "DeepSeek Chat v3" },
4
+ { id: "google/gemini-2.0-flash-exp:free", name: "Gemini 2.0 Flash" },
5
+ { id: "meta-llama/llama-4-maverick:free", name: "LLaMA 4 Maverick" },
6
+ { id: "microsoft/mai-ds-r1:free", name: "MAI DS R1" },
7
+ { id: "meta-llama/llama-4-scout:free", name: "LLaMA 4 Scout" },
8
+ { id: "google/gemma-3-27b-it:free", name: "Gemma 3 27B" },
9
+ { id: "qwen/qwq-32b:free", name: "Qwen QWQ 32B" },
10
+ { id: "qwen/qwen2.5-vl-72b-instruct:free", name: "Qwen2.5 VL 72B" },
11
+ { id: "qwen/qwen-2.5-72b-instruct:free", name: "Qwen 2.5 72B" },
12
+ { id: "google/gemini-2.5-pro-exp-03-25:free", name: "Gemini 2.5 Pro" },
13
+ { id: "deepseek/deepseek-r1:free", name: "DeepSeek R1" }
14
+ ];
15
+
16
+ // === Populate Custom Dropdowns ===
17
+ function createDropdown(dropdownId) {
18
+ const dropdown = document.getElementById(dropdownId);
19
+ const selected = dropdown.querySelector(".selected");
20
+ const options = dropdown.querySelector(".options");
21
+
22
+ MODEL_LIST.forEach(model => {
23
+ const option = document.createElement("div");
24
+ option.className = "p-2 hover:bg-visual_green rounded cursor-pointer";
25
+ option.textContent = model.name;
26
+ option.dataset.value = model.id;
27
+ options.appendChild(option);
28
+
29
+ option.addEventListener("click", (e) => {
30
+ e.stopPropagation();
31
+ selected.textContent = model.name;
32
+ dropdown.dataset.value = model.id;
33
+ options.classList.add("hidden");
34
+ });
35
+ });
36
+
37
+ selected.addEventListener("click", (e) => {
38
+ e.stopPropagation();
39
+ options.classList.toggle("hidden");
40
+ });
41
+
42
+ // Close dropdowns if clicking outside
43
+ document.addEventListener("click", () => {
44
+ options.classList.add("hidden");
45
+ });
46
+ }
47
+
48
  // === Theme Toggle ===
49
  const themeToggle = document.getElementById("themeToggle");
50
  const toggleConfig = document.getElementById("toggleConfig");
 
58
  } else if (savedTheme === "light") {
59
  html.classList.remove("dark");
60
  } else {
61
+ const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
 
 
62
  if (prefersDark) html.classList.add("dark");
63
  else html.classList.remove("dark");
64
  }
 
80
  const userInput = document.getElementById("userInput");
81
  const chatContainer = document.getElementById("chatContainer");
82
 
83
+ createDropdown("modelA");
84
+ createDropdown("modelB");
85
+ createDropdown("modelC");
86
 
87
  function appendMessage(role, text) {
88
  const div = document.createElement("div");
 
104
 
105
  const settings = {
106
  models: {
107
+ "LLM-A": document.getElementById("modelA").dataset.value,
108
+ "LLM-B": document.getElementById("modelB").dataset.value,
109
+ "LLM-C": document.getElementById("modelC").dataset.value,
110
+ }
111
  };
112
 
113
  const response = await fetch("/chat", {
114
  method: "POST",
115
  headers: { "Content-Type": "application/json" },
116
+ body: JSON.stringify({ prompt, settings })
117
  });
118
 
119
  chatContainer.lastChild.remove(); // remove 'Thinking...'
 
122
  const data = await response.json();
123
  appendMessage("bot", data.response);
124
  } else {
125
+ appendMessage("bot", "An error occurred. Please check your model selections.");
 
 
 
126
  }
127
  });