<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MHT测量页面</title>
    <style>
        #questionSection {
            display: none; /* Initially hide question section */
        }
    </style>
</head>
<body>
<!-- 用户个人信息部分 -->
<div id="userInfoSection">
    <form id="userInfoForm" onsubmit="submitUserInfo(event)">
        <!-- app_id 和 app_name 是隐藏的,不在页面上显示,但请求中需要 -->
       <!-- <input type="hidden" id="app_id" name="app_id" value="YOUR_APP_ID" required>
        <input type="hidden" id="app_name" name="app_name" value="YOUR_APP_NAME" required>-->
        <div>
            <label for="app_id">App ID:</label>
            <input type="text" id="app_id" name="app_id" required>
        </div>
        <div>
            <label for="app_name">App Name:</label>
            <input type="text" id="app_name" name="app_name" required>
        </div>
        <div>
            <label for="userName">姓名:</label>
            <input type="text" id="userName" name="userName" required>
        </div>
        <div>
            <label for="sex">性别:</label>
            <input type="text" id="sex" name="sex" required>
        </div>
  <!--      <div>
            <label for="phone">手机号:</label>
            <input type="text" id="phone" name="phone" required>
        </div>-->
        <div>
            <label for="birthday">生日:</label>
            <input type="date" id="birthday" name="birthday" required>
        </div>
        <div>
            <label for="height">身高(cm):</label>
            <input type="text" id="height" name="height" required>
        </div>
        <div>
            <label for="weight">体重(kg):</label>
            <input type="text" id="weight" name="weight" required>
        </div>
        <div>
            <label for="stuNo">学号:</label>
            <input type="text" id="stuNo" name="stuNo" required>
        </div>
        <div>
            <label for="SchoolName">学校:</label>
            <input type="text" id="SchoolName" name="SchoolName" required>
        </div>
        <div>
            <label for="IsUpdate">更新信息:</label>
            <select id="IsUpdate" name="IsUpdate" required>
                <option value="true">是</option>
                <option value="false">否</option>
            </select>
        </div>
        <button type="submit">提交个人信息</button>
    </form>
</div>


<!-- MHT问卷部分 -->
<div id="questionSection">
    <h2 id="question"></h2>
    <button onclick="choose('yes')">是</button>
    <button onclick="choose('no')">否</button>
    <button id="submitBtn" onclick="submitAnswersAndScores()">提交问卷</button> <!-- 提交按钮 -->
</div>

<script>
    function login() {
        // 用户名和密码设置为 "admin"
        let username = 'admin';
        let password = 'admin';

        // 创建 URLSearchParams 对象并添加参数
        let params = new URLSearchParams();
        params.append('username', username);
        params.append('password', password);

        // 设置请求头
        let headers = {
            'Content-Type': 'application/x-www-form-urlencoded'
        };

        // 发送 POST 请求
        fetch('https://localhost:8089/login', {
            method: 'POST',
            headers: headers,
            body: params.toString()  // 将 URLSearchParams 对象转换为字符串
        })
            .then(response => {
                if (response.ok) {
                    return response.json();  // 如果响应状态码为 2xx,解析响应体为 JSON
                } else {
                    throw new Error('Network response was not ok');
                }
            })
            .then(data => {
                console.log('登录成功:', data);  // 处理响应数据
            })
            .catch(error => {
                console.error('登录失败:', error);  // 处理错误
            });
    }
    console.log("========== login(); ==========")
    // 调用 login 函数
    login();

    // 题目数组
    let questions = [
        "你晚上要睡觉时,是否总想着明天的功课?",
        "老师向全班提问时,你是否会觉得是在问自己而感到不安?",
        "你是否一听说“要考试”心里就紧张。",
        "你考试成绩不好时,心里是否感到很不快?",
        "你学习成绩不好时,是否总是提心吊胆?",
        "你考试时,想不起原先掌握的知识时,是否会感到紧张不安?",
        "你考试后,在没有知道成绩之前,是否总是放心不下?",
        "你是否一遇到考试,就担心会考坏?",
        "你是否希望每次考试都能顺利?",
        "你在没有完成任务之前,是否总担心完不成任务?",
        "你当着大家面朗读课文时,是否总是怕读错?",
        "你是否认为学校里得到的学习成绩总是不大可靠?",
        "你是否认为你比别人更担心学习?",
        "你是否做过考试考坏了的梦?",
        "你是否做过学习成绩不好时,受到爸爸妈妈或老师训斥的梦?",
        "你是否经常觉得有同学在背后说你的坏话?",
        "你受到父母批评后,是否总是想不开,放在心上?",
        "你在游戏或与别人的竞争中输给了对方,是否就不想再干了?",
        "人家在背后议论你,你是否感到讨厌?",
        "你在大家面前或被老师提问时,是否会脸红?",
        "你是否很担心叫你担任班级工作?",
        "你是否总是觉得好像有人在注意你?",
        "你在工作或学习时,如果有人在注意你,你心里是否会紧张?",
        "你受到批评时,心情是否不愉快?",
        "你受到老师批评时,心里是否总是不安?",
        "同学们在笑时,你是否也不大会笑?",
        "你是否觉得到同学家里去玩时不如在自己家里玩?",
        "你和大家在一起时,是否也觉得自己是孤单的一个人?",
        "你是否觉得和同学一起玩,不如自己—个人玩?",
        "同学们在交谈时,你是否不想加入?",
        "你和大家在—起时,是否觉得自己是多余的人?",
        "你是否讨厌参加运动会和文艺演出?",
        "你的朋友是否很少?",
        "你是否不喜欢同别人谈话?",
        "在人多的地方,你是否觉得很怕?",
        "你在参加排球、篮球等集体比赛输了时,心里是否一直 认为自己没做好?",
        "你受到批评后,是否总认为是自己不好?",
        "别人笑你的时候,你是否会认为是自己做错了什么事?",
        "你学习成绩不好时,是否总是认为是自己不用功的缘故?",
        "你做事失败的时候,是否总是认为是自己的责任?",
        "大家受到责备时,你是否认为主要是自己的过错?",
        "你参加乒乓球、羽毛球、广播操等体育比赛时, 是否一出错就特别留神?",
        "碰到为难的事情时,你是否认为自己难以应付?",
        "你是否有时会后悔:“那件事不做就好了”?",
        "你和同学吵架以后,是否总是认为是自己的错?",
        "你心里是否总想为班级做点好事?",
        "你学习的时候,思想是否经常开小差?",
        "你把东西借给别人时,是否担心别人会把东西弄坏?",
        "碰到不顺利的事情时,你心里是否很烦躁?",
        "你是否非常担心家里有人生病或死去?",
        "你是否在梦里见到过死去的人?",
        "你对收音机和汽车的声音是否特别敏感?",
        "你心里是否总觉得好像有什么事没有做好?",
        "你是否总担心会发生什么意外的事?",
        "你在决定要做什么事时,是否总是犹豫不决?",
        "你手上是否经常出汗?",
        "你害羞时是否会脸红?",
        "你是否经常头痛?",
        "你被老师提问时,心里是否总是很紧张?",
        "你没有参加运动,心脏是否经常扑腾扑腾地跳?",
        "你是否很容易疲劳?",
        "你是否很不愿吃药?",
        "夜里你是否很难入睡?",
        "你是否总觉得身体好像有什么毛病?",
        "你是否经常认为自己的体型和面孔比别人难看?",
        "你是否经常觉得肠胃不好?",
        "你是否经常咬指甲?",
        "你是否经常舔手指头?",
        "你是否经常感到呼吸困难?",
        "你去厕所的次数是否比别人多?",
        "你是否很怕到高的地方去?",
        "你是否害怕很多东西?",
        "你是否经常做噩梦?",
        "你胆子是否很小?",
        "夜里,你是否很怕一个人在房间里睡觉?",
        "你乘车穿过隧道或路过高桥时,是否很怕?",
        "你是否喜欢整夜开着灯睡觉?",
        "你听到打雷声是否非常害怕?",
        "你是否非常害怕黑暗?",
        "你是否经常感到后面有人跟着你?",
        "你是否经常生气?",
        "你是否不想得到好的成绩?",
        "你是否经常会突然想哭?",
        "你以前是否说过谎话?",
        "你有时是否会觉得,还是死了好?",
        "你是否一次也没有失约过?",
        "你是否经常想大声喊叫?",
        "你是否能保密别人不让说的事?",
        "你有时是否想过自己一个人到远的地方去?",
        "你是否总是很有礼貌?",
        "你被人说了坏话,是否想立即采取报复行动?",
        "老师或父母说的话,你是否都照办?",
        "你心里不开心,是否会乱丢、乱砸东西?",
        "你是否发过怒?",
        "你想要的东西,是否就—定要拿到手?",
        "你不喜欢的功课老师提前下课,你是否会感到特别高兴?",
        "你是否经常想从高的地方跳下来?",
        "你是否无论对谁都很亲热?",
        "你是否会经常急躁得坐立不安?",
        "对不认识的人,你是否会都喜欢?"
    ];// 填入题目
    // 存储用户答案的数组,yes对应1,no对应0
    var answers = [];
    var currentQuestion = 0;
    var scores = { "学习焦虑": 0, "对人焦虑": 0, "孤独倾向": 0, "自责倾向": 0, "过敏倾向": 0, "身体症状": 0, "恐怖倾向": 0, "冲动倾向": 0 };
    var scoring = {
        "学习焦虑": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
        "对人焦虑": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
        "孤独倾向": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35],
        "自责倾向": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45],
        "过敏倾向": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55],
        "身体症状": [56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70],
        "恐怖倾向": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80],
        "冲动倾向": [81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
    };
    // 初始化显示第一个问题
    displayQuestion();

    function displayQuestion() {
        document.getElementById("question").innerText = questions[currentQuestion];
        document.getElementById("submitBtn").style.display = 'none'; // Hide the submit button
    }

    function choose(answer) {
        // 根据答案将1或0保存到answers数组中
        answers[currentQuestion] = answer === 'yes' ? 1 : 0;

        // 更新分数,这里仅当答案为'yes'时增加分数
        for (var category in scoring) {
            if (scoring[category].includes(currentQuestion + 1)) {
                scores[category] += answers[currentQuestion];
            }
        }

        currentQuestion++;
        if (currentQuestion < questions.length) {
            displayQuestion();
        } else {
            // 若是最后一道题,显示提交按钮
            document.getElementById("submitBtn").style.display = 'block';
        }
    }


    //提交个人信息部分
    function submitUserInfo(event) {
        event.preventDefault(); // Prevent default form submission behavior
        let userInfoForm = document.getElementById('userInfoForm');
        let userInfo = new FormData(userInfoForm);

        // 请求URL改成用户信息录入的接口
        let submitUrl = 'https://localhost:8089/MentalClinic/quickMHTMentalClinic';

        // 使用 AJAX 方式发送用户信息数据
        fetch(submitUrl, {
            method: 'POST',
            body: userInfo
        })
            .then(response => response.json())
            .then(responseData => {
                // 根据响应处理结果
                if (responseData.code === 1) {
                    // 存储返回的UUID和IDs
                    MHT_UUID = responseData.MHT_UUID;
                    console.log("MHT_UUID: ",MHT_UUID)
                    UserId = responseData.UserId;
                    AppId = responseData.appId;
                    console.log("UserId: ",UserId)
                    console.log("AppId: ",AppId)

                    // 隐藏个人信息的div
                    document.getElementById('userInfoSection').style.display = 'none';

                    // 显示问题部分
                    document.getElementById('questionSection').style.display = 'block';
                    displayQuestion(); // 显示第一个问题
                } else {
                    alert("用户信息提交失败:" + responseData.message);
                }
            })
            .catch((error) => {
                console.error('Error:', error);
            });
    }


    //提交答案和评分
  /*  function submitAnswersAndScores() {
        //收集答案评分
        console.log("提交答案和评分 MHT_UUID: ",MHT_UUID)
        let answerData = {
            // 通过上文函数保存的UUID
            MHT_UUID: MHT_UUID,
            AnswerArr: answers.join(','),
            // 各维度的得分
            LearningAnxiety: scores["学习焦虑"].toString(),
            AnxietyPeople: scores["对人焦虑"].toString(),
            LonelinessTendency: scores["孤独倾向"].toString(),
            SelfBlameTendency: scores["自责倾向"].toString(),
            AllergicTendency: scores["过敏倾向"].toString(),
            PhysicalSign: scores["身体症状"].toString(),
            PhobicTendency: scores["恐怖倾向"].toString(),
            ImpulsiveTendency: scores["冲动倾向"].toString()
        };
        // 定义后端,提交问卷结果的接口
        let submitUrl = 'https://localhost:8089/MentalClinic/evaluateMHTMentalClinic';

        // 使用 AJAX 方式发送问卷结果
        fetch(submitUrl, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(answerData)
        })
            .then(response => response.json())
            .then(responseData => {
                if (responseData.code === 1) {
                    // 进行聊天连接等后续操作
                    console.log("问卷评分数据提交成功: ", responseData);
                    // 连接聊天WebSocket
                    let chatUrl = `wss://localhost:8089/chat/ws?id=${UserId}&DpId=25&app_id=${AppId}&uuid=${MHT_UUID}`;
                    openWebSocket(chatUrl);
                } else {
                    alert("问卷评分数据提交失败:" + responseData.message);
                }
            })
            .catch((error) => {
                console.error('Error:', error);
            });
    }*/

    function submitAnswersAndScores() {
        // 创建 FormData 对象收集答案和评分
        let formData = new FormData();
        formData.append('MHT_UUID', MHT_UUID);
        formData.append('AnswerArr', answers.join(','));
        formData.append('LearningAnxiety', scores["学习焦虑"]);
        formData.append('AnxietyPeople', scores["对人焦虑"]);
        formData.append('LonelinessTendency', scores["孤独倾向"]);
        formData.append('SelfBlameTendency', scores["自责倾向"]);
        formData.append('AllergicTendency', scores["过敏倾向"]);
        formData.append('PhysicalSign', scores["身体症状"]);
        formData.append('PhobicTendency', scores["恐怖倾向"]);
        formData.append('ImpulsiveTendency', scores["冲动倾向"]);

        // 定义后端接口 URL
        let submitUrl = 'https://localhost:8089/MentalClinic/evaluateMHTMentalClinic';

        // 使用 AJAX 方式发送问卷结果
        // 注意:使用 FormData 时,不需要设置 Content-Type 头,浏览器会自动设置
        fetch(submitUrl, {
            method: 'POST',
            body: formData
        })
            .then(response => response.json())
            .then(responseData => {
                if (responseData.code === 1) {
                    // 问卷评分数据提交成功
                    console.log("问卷评分数据提交成功: ", responseData);
                    // 连接聊天WebSocket
                    let chatUrl = `wss://localhost:8089/chat/ws?id=${UserId}&DpId=25&app_id=${AppId}&uuid=${MHT_UUID}`;
                    openWebSocket(chatUrl);
                } else {
                    // 问卷评分数据提交失败
                    alert("问卷评分数据提交失败:" + responseData.message);
                }
            })
            .catch((error) => {
                console.error('Error:', error);
            });
    }

    function openWebSocket(url) {
        // 连接 WebSocket 的逻辑
        let ws = new WebSocket(url);
        ws.onopen = function (event) {
            console.log("Connected to WebSocket");

            // 构建要发送的消息对象
            let message = {
                type: 0,
                content: "你知道我的名字,身高和体重,以及我的测量结果怎么样?"
            };

            // 发送消息到服务器
            ws.send(JSON.stringify(message));
        };

        // 其他事件处理,例如接收消息
        ws.onmessage = function (event) {
            console.log("Received message: " + event.data);
        };

        // 错误处理
        ws.onerror = function (event) {
            console.error("WebSocket error observed:", event);
        };

        // 连接关闭处理
        ws.onclose = function (event) {
            if (event.wasClean) {
                console.log(`Closed cleanly, code=${event.code}, reason=${event.reason}`);
            } else {
                // 例如,由服务器进程杀死或因网络问题无法到达等
                console.log('WebSocket connection closed unexpectedly');
            }
        };
    }

</script>
</body>
</html>