/***************************************
* Wix Velo: Body Type Quiz (Somatotype)
* - Counts answers across 3 columns:
* ECTOMORPH / MESOMORPH / ENDOMORPH
* - Shows a result box + recommended CTA
* - (Optional) Saves submission to a collection
*
* HOW TO USE (quick):
* 1) Add 8 RadioGroup elements to your page:
* #q1, #q2, #q3, #q4, #q5, #q6, #q7, #q8
* Each must have 3 options in the same order:
* 1st = Ectomorph, 2nd = Mesomorph, 3rd = Endomorph
*
* 2) Add:
* Button: #submitBtn
* Text: #resultTitle
* Text: #resultSubtitle
* Box: #resultBox
* Button: #bookBtn (optional, link to booking)
*
* 3) (Optional) Create a collection "BodyTypeQuizSubmissions"
* fields (suggested):
* name (text), email (text),
* ectoScore (number), mesoScore (number), endoScore (number),
* resultType (text), isHybrid (boolean),
* createdAt (date/time) [Wix adds _createdDate automatically]
*
* 4) Turn ON Dev Mode and paste this into the page code.
***************************************/
import wixData from "wix-data";
import wixLocation from "wix-location";
const QUESTIONS = [
{ id: "#q1", label: "Frame" },
{ id: "#q2", label: "Weight gain area" },
{ id: "#q3", label: "Metabolism" },
{ id: "#q4", label: "Muscle building" },
{ id: "#q5", label: "Muscle tone" },
{ id: "#q6", label: "Energy" },
{ id: "#q7", label: "Treatment response" },
{ id: "#q8", label: "Stress response" }
];
// Map option index -> type
// 0 = ecto, 1 = meso, 2 = endo
const TYPE_BY_INDEX = ["ECTOMORPH", "MESOMORPH", "ENDOMORPH"];
$w.onReady(function () {
// Hide result area on load
$w("#resultBox").collapse();
$w("#submitBtn").onClick(() => {
try {
const { scores, answers } = scoreQuiz();
const result = resolveResult(scores);
renderResult(result, scores);
// OPTIONAL: Save to collection (uncomment + ensure collection exists)
// saveSubmission({ scores, result, answers });
// OPTIONAL: Scroll to result
$w("#resultBox").expand();
$w("#resultBox").scrollTo();
} catch (err) {
// Friendly validation message
wixLocation.to(wixLocation.url); // removes any weird state; optional
// Or just show a text warning if you have one
// $w("#errorText").text = err.message;
// $w("#errorText").show();
console.error(err);
}
});
// OPTIONAL: booking button handler
// Make sure #bookBtn has a link OR set it here
// $w("#bookBtn").onClick(() => wixLocation.to("/book-now"));
});
/**
* Reads all radio groups, validates completion, and counts each type.
*/
function scoreQuiz() {
const scores = { ECTOMORPH: 0, MESOMORPH: 0, ENDOMORPH: 0 };
const answers = [];
for (const q of QUESTIONS) {
const rg = $w(q.id);
// Validate: must select something
if (!rg.value) {
// If you prefer, you can highlight the unanswered input
throw new Error("Please answer every question to see your results.");
}
// Wix RadioGroup value is the "value" of option, not index.
// We’ll derive index by finding it in options.
const idx = rg.options.findIndex((opt) => opt.value === rg.value);
if (idx < 0 || idx > 2) {
throw new Error(`Invalid selection detected for ${q.label}.`);
}
const type = TYPE_BY_INDEX[idx];
scores[type] += 1;
answers.push({
question: q.label,
selectedValue: rg.value,
selectedIndex: idx,
type
});
}
return { scores, answers };
}
/**
* Determines dominant type and hybrid flag.
* Hybrid logic:
* - If top score ties with another, it’s a hybrid.
* - If top score is only 1 higher than second place, call it “leaning hybrid.”
*/
function resolveResult(scores) {
const entries = Object.entries(scores).sort((a, b) => b[1] - a[1]);
const [topType, topScore] = entries[0];
const [secondType, secondScore] = entries[1];
const isTie = topScore === secondScore;
const isLeaningHybrid = !isTie && (topScore - secondScore === 1);
let resultType = topType;
let hybridWith = null;
if (isTie) {
// True hybrid: show both types in a clean way
resultType = `${topType} + ${secondType}`;
hybridWith = secondType;
} else if (isLeaningHybrid) {
// Leaning hybrid: still show a dominant type but note the runner-up
hybridWith = secondType;
}
return {
dominant: topType,
resultType,
hybridWith,
isHybrid: isTie || isLeaningHybrid
};
}
/**
* Updates your page UI with the result.
* Make sure you created:
* #resultTitle (Text)
* #resultSubtitle (Text)
* #resultBox (Box)
*/
function renderResult(result, scores) {
const { dominant, resultType, hybridWith, isHybrid } = result;
$w("#resultTitle").text = `Your Body Type: ${resultType}`;
// Short, client-friendly lines you can tweak
const blurbs = {
ECTOMORPH:
"Naturally lean with a faster metabolism. Your focus is nervous system balance, nourishment, and muscle tone support.",
MESOMORPH:
"Naturally athletic and responsive. Your focus is consistency, inflammation control, and sculpting maintenance.",
ENDOMORPH:
"Stores fat more easily and thrives with structure. Your focus is detox pathways, water retention, and hormone-friendly habits."
};
const serviceRecs = {
ECTOMORPH: [
"Magnesium Lymphatic Massage",
"Cranial Massage",
"Red Light Sessions"
],
MESOMORPH: [
"Lymphatic Drainage",
"Wood Therapy",
"Fat Cavitation"
],
ENDOMORPH: [
"Lymphatic Drainage",
"Yeso Therapy Wraps",
"Hot Stones + Steam"
]
};
// If hybrid, blend messaging
let subtitle = blurbs[dominant];
let recs = serviceRecs[dominant];
if (isHybrid && hybridWith) {
subtitle = `${blurbs[dominant]} You also show strong ${hybridWith.toLowerCase()} traits—so your plan should be customized.`;
// Merge & de-dupe recs
recs = Array.from(new Set([...serviceRecs[dominant], ...serviceRecs[hybridWith]]));
}
const scoreLine = `Scores — Ecto: ${scores.ECTOMORPH}, Meso: ${scores.MESOMORPH}, Endo: ${scores.ENDOMORPH}`;
const recLine = `Best matches for you: ${recs.join(" • ")}`;
$w("#resultSubtitle").text = `${subtitle}\n\n${recLine}\n${scoreLine}`;
}
/**
* OPTIONAL: Save to a collection (requires permission rules set properly).
* Create a collection named "BodyTypeQuizSubmissions" and update field keys as needed.
*/
async function saveSubmission({ scores, result, answers }) {
const item = {
// If you also collect name/email on the page, add:
// name: $w("#nameInput").value,
// email: $w("#emailInput").value,
ectoScore: scores.ECTOMORPH,
mesoScore: scores.MESOMORPH,
endoScore: scores.ENDOMORPH,
resultType: result.resultType,
isHybrid: result.isHybrid,
// Storing raw answers is optional—best practice is to store a summary only,
// but you can store as JSON string if you want:
answersJson: JSON.stringify(answers)
};
await wixData.insert("BodyTypeQuizSubmissions", item);
}
Maintaining a balanced blood sugar level isessentialfor your heart and overall health, regardless of your age.†
Nutra Moment Blood Sugar Support is here to help.†
Clinical trials on humans have demonstrated that the herbal extract of Blood Sugar Support helps lower blood sugar andmaintaincardiovascular health.When your blood sugar levels are in control, food cravings and weight loss become less of an issue.†
To achieve the greatest effects, combine ourBlood Sugar Support with healthy eating habits and frequent exercise.†
Help Regulate Blood Sugar Level †
Blood Sugar Support's powerful herbal extracts, vitamins, and minerals mayhelp control high blood sugar. It can boost insulin synthesis and improves insulin sensitivity in the cells simultaneously. It aids in glucose homeostasis by enhancing glucose metabolism. Glucagon and insulin, two key hormones in this system, control blood glucose levels. It also reduces hunger pangs and provides the necessary energy for everyday tasks.†
Cardiovascular Health †
Cholesterol levelsmaybe better controlled with the use of our product. Cardiovascular health may also be improved. Chromium, an antioxidant found in this supplement, helps protect kidneys, eyes, and other organs from the damage caused by diabetes.†
Immune Function support †
You may boost your immune system with the help of Nutra Moment BloodSugar Support.The fundamental cause of oxidative stress is the production of harmful free radicals in cells. Something happens every time you take a breath. The antioxidants in our Blood Sugar Support Capsules areamazinglypotent. The complete herbal recipe contains natural cleansing and metabolism-boosting herbs.†
Essential Ingredients
Banaba Leaf
Lagerstroemia speciosa L. is another name for banaba. In Southeast Asia, this ingredient has traditionally been used to regulate blood sugar levels. The majority of their composition is made up of ellagic acid and corosolic acid, which aid in glucose management.†
Guggul
This plant has been used for a long time in India. This herb has the ability to lower blood sugar levels and restore them to normal. Blood pressure and cholesterol levels are also monitored. Gymnema Sylvestre is beneficial for both fasting and post-meal blood sugar levels. It also reduces the desire for sweets.†
Gymnema Sylvestre
Eating vanadium has a variety of health benefits. As a result, it aids in the reduction of blood sugar levels and the maintenance of a healthy range. Chromium aids in the conversion of glucose to cellular energy by increasing insulin sensitivity in metabolic cells. Sugar rust which is detrimental to the kidneys and the heart can also be oxidized by chromium.†
How To Use
As per dietary supplement, take two (2) veggie capsules once a day. For best results, take 20-30 minutes before a meal or as directed by your health care professional.