fast72 commited on
Commit
1bb525a
·
verified ·
1 Parent(s): 75d34d9

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +27 -15
index.js CHANGED
@@ -64,8 +64,9 @@ function calcValue(name, weight, rarity = "Normal", mutations = []) {
64
  }
65
 
66
  app.get("/", (req, res) => {
67
- const fruitOptions = fruits.map(f => f[0]).sort().map(name => `<option>${name}</option>`).join("")
68
- const mutationOptions = Object.keys(mutationMultiplier).map(m => `<option>${m}</option>`).join("")
 
69
  res.send(`
70
  <!DOCTYPE html>
71
  <html lang='en'>
@@ -77,21 +78,30 @@ app.get("/", (req, res) => {
77
  <style>
78
  .fade-in { animation: fadeIn 0.6s ease-in-out; }
79
  @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
 
80
  </style>
81
  </head>
82
  <body class="bg-gradient-to-br from-[#0f0f1a] to-[#0c1b2a] text-white flex items-center justify-center min-h-screen px-4">
83
  <div class="w-full max-w-lg fade-in">
84
  <h1 class="text-3xl font-bold text-center mb-4 text-blue-300">Grow a Garden</h1>
85
- <h2 class="text-lg text-center text-blue-400 mb-6">Calculate your fruit's price based on weight, rarity, and mutations</h2>
86
  <form id="form" class="bg-[#1a1d2c] p-6 rounded-2xl shadow-xl space-y-4">
87
- <select name="fruit" required class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">
88
- <option disabled selected>Select Fruit</option>${fruitOptions}
89
- </select>
90
- <input name="weight" type="number" step="0.01" placeholder="Weight (kg)" required class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">
91
- <select name="rarity" class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">
92
- <option>Normal</option><option>Gold</option><option>Rainbow</option>
93
- </select>
94
- <select name="mutations" multiple size="6" class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">${mutationOptions}</select>
 
 
 
 
 
 
 
 
95
  <button type="submit" class="w-full bg-blue-500 hover:bg-blue-600 p-3 rounded font-bold transition-all">Calculate</button>
96
  <div id="result" class="text-center text-blue-300 font-semibold"></div>
97
  </form>
@@ -102,11 +112,12 @@ app.get("/", (req, res) => {
102
  const form = e.target
103
  const data = new URLSearchParams()
104
  const fruit = form.fruit.value
 
105
  data.append("fruit", fruit)
106
  data.append("weight", form.weight.value)
107
- data.append("rarity", form.rarity.value)
108
- let selected = Array.from(form.mutations.selectedOptions).map(o => o.value)
109
 
 
110
  if (selected.includes("Frozen") || (selected.includes("Wet") && selected.includes("Chilled"))) {
111
  selected = selected.filter(m => !["Wet", "Chilled"].includes(m))
112
  if (!selected.includes("Frozen")) selected.push("Frozen")
@@ -129,9 +140,10 @@ app.get("/", (req, res) => {
129
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
130
  body: data
131
  })
 
132
  const json = await res.json()
133
- document.getElementById("result").innerHTML = \`
134
- <p>Total: <span class='text-blue-400'>\${json.value}</span></p>\`
135
  }
136
  </script>
137
  </body>
 
64
  }
65
 
66
  app.get("/", (req, res) => {
67
+ const fruitOptions = fruits.map(f => f[0]).sort().map(name => `<option value="${name}">${name}</option>`).join("")
68
+ const mutationOptions = Object.keys(mutationMultiplier).map(m => `<option value="${m}">${m}</option>`).join("")
69
+ const rarityOptions = ["Normal", "Gold", "Rainbow"].map(r => `<option value="${r}">${r}</option>`).join("")
70
  res.send(`
71
  <!DOCTYPE html>
72
  <html lang='en'>
 
78
  <style>
79
  .fade-in { animation: fadeIn 0.6s ease-in-out; }
80
  @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
81
+ select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg fill='white' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 12l-4-4h8l-4 4z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 1rem; }
82
  </style>
83
  </head>
84
  <body class="bg-gradient-to-br from-[#0f0f1a] to-[#0c1b2a] text-white flex items-center justify-center min-h-screen px-4">
85
  <div class="w-full max-w-lg fade-in">
86
  <h1 class="text-3xl font-bold text-center mb-4 text-blue-300">Grow a Garden</h1>
87
+ <h2 class="text-lg text-center text-blue-400 mb-6">Calculate your fruit's price</h2>
88
  <form id="form" class="bg-[#1a1d2c] p-6 rounded-2xl shadow-xl space-y-4">
89
+ <div>
90
+ <label class="block mb-1 text-sm">Fruit</label>
91
+ <select name="fruit" id="fruit" required class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">${fruitOptions}</select>
92
+ </div>
93
+ <div>
94
+ <label class="block mb-1 text-sm">Weight (kg)</label>
95
+ <input name="weight" type="number" step="0.01" placeholder="0.00" required class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">
96
+ </div>
97
+ <div>
98
+ <label class="block mb-1 text-sm">Rarity</label>
99
+ <select name="rarity" id="rarity" required class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">${rarityOptions}</select>
100
+ </div>
101
+ <div>
102
+ <label class="block mb-1 text-sm">Mutations</label>
103
+ <select name="mutations" id="mutations" multiple size="6" class="w-full p-3 rounded bg-[#2c3144] text-white focus:outline-none focus:ring-2 focus:ring-blue-400">${mutationOptions}</select>
104
+ </div>
105
  <button type="submit" class="w-full bg-blue-500 hover:bg-blue-600 p-3 rounded font-bold transition-all">Calculate</button>
106
  <div id="result" class="text-center text-blue-300 font-semibold"></div>
107
  </form>
 
112
  const form = e.target
113
  const data = new URLSearchParams()
114
  const fruit = form.fruit.value
115
+ const rarity = form.rarity.value.trim()
116
  data.append("fruit", fruit)
117
  data.append("weight", form.weight.value)
118
+ data.append("rarity", rarity)
 
119
 
120
+ let selected = Array.from(form.mutations.selectedOptions).map(o => o.value)
121
  if (selected.includes("Frozen") || (selected.includes("Wet") && selected.includes("Chilled"))) {
122
  selected = selected.filter(m => !["Wet", "Chilled"].includes(m))
123
  if (!selected.includes("Frozen")) selected.push("Frozen")
 
140
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
141
  body: data
142
  })
143
+
144
  const json = await res.json()
145
+ const output = json.value ? \`<p>Total: <span class='text-blue-400'>\${json.value}</span></p>\` : \`<p class='text-red-400'>Invalid input</p>\`
146
+ document.getElementById("result").innerHTML = output
147
  }
148
  </script>
149
  </body>