register = function () { let _noteScrollTop = 0; let linePicUrl = null; let lineBase64Data = null; let customBase64Data = null; let finalase64Data = null; let registerAlert = ""; let registerData = { healthAction: null, healthTopic: null, healthStatus: null, healthAdapt: null, healthThought: null, healthAge: null, healthNickname: null, healthGender: null, headSticker: null, healthGenderRole: null } let userData; //private methods function init() { console.log('register is loaded.'); selectImage(); // 換大頭照點擊 $(".photo__icon-1").on("click", function(){ $("#fileInput1").click(); }); // 多選題選中添加checked樣式 $(".register .form__options__item input[type='checkbox']").change(function(){ if($(this).prop("checked")) { $(this).parents(".form__options__item").addClass("checked"); }else { $(this).parents(".form__options__item").removeClass("checked"); } }); // 單選題選中添加checked樣式 $(".register .form__options__item input[type='radio']").change(function(){ if($(this).prop("checked")) { $(this).parents(".form__options").children(".form__options__item").removeClass("checked"); $(this).parents(".form__options__item").addClass("checked"); } }); // 多選限制複選數 $('.register .form__item-healthThought .form__options__item').click(function() { // console.log("healthThought click") $(".form__item-healthThought .form__options__item input[type=checkbox]").attr('disabled', true); if ($(".form__item-healthThought .form__options__item input[type=checkbox]:checked").length >= 2) { $(".form__item-healthThought .form__options__item input[type=checkbox]:checked").attr('disabled', false); } else { $('.form__item-healthThought .form__options__item input[type=checkbox]').attr('disabled', false); } }); // 點擊資料表單"下一步" $(".register .form-submit").on("click", function(){ // console.log("form-submit click"); $(this).addClass("disable"); $(".form-submit p").text("傳送中..."); if(checkRegister()) { sendRegister(); }else { base.myAlert(registerAlert); $(this).removeClass("disable"); $(".form-submit p").text("下一步"); } }); } // Line大頭貼 function LinePicHandler(url) { linePicUrl = url; $(".photo__img").html(""); $(".photo__img").append(` `); const imageURL = linePicUrl; if(imageURL.trim() !== '') { const img = new Image(); img.src = imageURL; const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); img.crossOrigin = 'Anonymous'; img.onload = function() { canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); // 將圖片轉換為 Base64 lineBase64Data = canvas.toDataURL('image/jpeg') finalase64Data = lineBase64Data; // console.log(finalase64Data) } } } // 選照片 function selectImage() { const fileInputs = document.querySelectorAll('.fileInput'); const imagePreview = $('.photo__img'); // console.log(fileInput.id) var templeteHelper = new photoHelper(); fileInputs.forEach((fileInput)=> { // 當選擇圖片後,顯示圖片的預覽 fileInput.addEventListener("change", function(e){ console.log(fileInput.id) $(".photo .load-wrapp ").show(); const selectedFile = fileInput.files[0]; if(selectedFile) { if(fileInput.id == 'fileInput1') { templeteHelper.loadFile('#fileInput1',function (_photoData) { console.log('fileInput1 has loaded.'); templateData = _photoData; finalase64Data = templateData; // console.log(finalase64Data) const img = new Image(); img.src = templateData; imagePreview.html(""); imagePreview.append(img); // $('.templete_output').attr('src', templateData); $(".photo .load-wrapp ").hide(); }); } if(fileInput.id == 'fileInput2') { templeteHelper.loadFile('#fileInput2',function (_photoData) { console.log('fileInput2 has loaded.'); templateData = _photoData; finalase64Data = templateData; // console.log(finalase64Data) const img = new Image(); img.src = templateData; imagePreview.html(""); imagePreview.append(img); // $('.templete_output').attr('src', templateData); $(".photo .load-wrapp ").hide(); setTimeout(()=>{ // console.log(finalase64Data) sendBase64DataToApi(finalase64Data); }, 200); }); } }else { imagePreview.html(""); imagePreview.append(``); $(".photo .load-wrapp ").hide(); } }); }); } // 送出圖片 function sendBase64DataToApi(finalase64Data) { GameService.getInstanse().userUpdatePhoto(finalase64Data).then(res => { console.log('userUpdatePhoto:', res); // base.myAlert('成功上傳。'); }); } function insertFromData(data) { resetRegister(); let formData = data.filler_content; // console.log(formData) // 健康行動 formData.healthAction.forEach((val)=>{ $(`.form__item-healthAction input[value=${val}]`).prop("checked", true); $(`.form__item-healthAction input[value=${val}]`).parents(".form__options__item").addClass("checked"); }); // 對什麼健康話題有興趣 formData.healthTopic.forEach((val)=>{ $(`.form__item-healthTopic input[value=${val}]`).prop("checked", true); $(`.form__item-healthTopic input[value=${val}]`).parents(".form__options__item").addClass("checked"); }); // 身體狀況如何 $(`input[value=${formData.healthStatus}]`).prop("checked",true); $(`input[value=${formData.healthStatus}]`).parents(".form__options__item").addClass("checked"); // 最符合你的應對 $(`input[value=${formData.healthAdapt}]`).prop("checked",true); $(`input[value=${formData.healthAdapt}]`).parents(".form__options__item").addClass("checked"); // 符合你的想法 formData.healthThought.forEach((val)=>{ $(`.form__item-healthThought input[value=${val}]`).prop("checked", true); $(`.form__item-healthThought input[value=${val}]`).parents(".form__options__item").addClass("checked"); }); // 你的年齡 $(`input[value=${formData.healthAge}]`).prop("checked",true); $(`input[value=${formData.healthAge}]`).parents(".form__options__item").addClass("checked"); // 暱稱 $(`input[id="nickName"]`).val(data.nickname); // 性別 $(`select[id="gender"]`).val(formData.healthGender); // 頭貼 $(".register .photo__img").append(` `); } // 取得選取的checkbox function getCheckboxVal(name) { let vals = $(".register input[type=checkbox][name="+name+"]:checked").map(function() { return $(this).val(); }).get(); return vals; } // 取得選取的radio function getRadioVal(name){ return $("input[name="+name+"]:checked").val(); } // 確認註冊表單 function checkRegister(){ let isComplete = true; registerAlert = ""; if(getCheckboxVal("healthAction").length > 0) { registerData.healthAction = getCheckboxVal("healthAction"); }else { isComplete = false; } if(getCheckboxVal("healthTopic").length > 0) { registerData.healthTopic = getCheckboxVal("healthTopic"); }else { isComplete = false; } if(getRadioVal("healthStatus") !== "" && getRadioVal("healthStatus") !== undefined ) { registerData.healthStatus = getRadioVal("healthStatus"); }else { isComplete = false; } if(getRadioVal("healthAdapt") !== "" && getRadioVal("healthAdapt") !== undefined ) { registerData.healthAdapt = getRadioVal("healthAdapt"); }else { isComplete = false; } if(getCheckboxVal("healthThought").length > 0) { registerData.healthThought = getCheckboxVal("healthThought"); }else { isComplete = false; } if(getRadioVal("healthAge") !== "" && getRadioVal("healthAge") !== undefined ) { registerData.healthAge = getRadioVal("healthAge"); }else { isComplete = false; } if($("#nickName").val().trim() !== "") { registerData.healthNickname = $("#nickName").val().trim(); }else { isComplete = false; } if($("#gender").val() !== "") { registerData.healthGender = $("#gender").val(); if($("#gender").val() === "tag-8HwqQuQ43") { registerData.healthGenderRole = "female" } else if($("#gender").val() === "tag-F8Me8-UGg") { registerData.healthGenderRole = "male" }else { registerData.healthGenderRole = ""; } }else { isComplete = false; } if(!isComplete) { registerAlert = "請確認問題皆已作答"; } if(getCheckboxVal("methodsAgree").length == 0) { registerAlert == "" ? registerAlert = "請勾選'我同意個人資料使用方法'" : registerAlert+="
請勾選'我同意個人資料使用方法'"; isComplete = false; } if(isComplete) { registerData.headSticker = $(".register .photo__img img").attr("src"); console.log(registerData) } return isComplete; } // 送出表單 function sendRegister() { // 測試用 // base.sectionFadeOut(".register"); // base.sectionFadeIn(".passport"); // $(".register .form-submit").removeClass("disable"); // $(".register .form-submit p").text("下一步"); // 正式用 GameService.getInstanse().userRegister(registerData) .then(_res => { console.log(_res); if(_res.result === 'successed') { $(".register .form-submit").removeClass("disable"); $(".register .form-submit p").text("下一步"); // 清除表單 resetRegister(); // 再次載入取得資料 GameService.getInstanse().userLogin().then(_res => { console.log("_res: ",_res); userData = GameService.getInstanse().getUserData(); console.log("userData: ",userData) base.sectionFadeOut(".register"); base.sectionFadeIn(".passport"); passport.buildPassportHandler(userData) GameService.getInstanse().sendCompleteMessage(); }) } }) .catch(_err => { console.log(_err); // let msg = err.message.replaceAll("Error:", ""); base.myAlert(_err); $(".register .form-submit").removeClass("disable"); $(".register .form-submit p").text("下一步"); }) } // 重設表單 function resetRegister() { $('.register .form input[type=checkbox], .register .form input[type=radio]').prop('checked', false); $(".register .form__options__item").removeClass("checked"); $('.register .form input[type=text], .register .form select').val(''); } //constructor { $(document).ready(function () { init(); }); } //public return { LinePicHandler: function(url) { LinePicHandler(url); }, getCheckboxVal: function(name) { return getCheckboxVal(name) }, getRadioVal: function(name) { return getRadioVal(name) }, selectImage: function() { selectImage(); }, insertFromData: function(data) { insertFromData(data); } }; }; var register = new register();