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
}
//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)
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);
});
}
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);
});
}
}else {
LinePicHandler(linePicUrl);
}
if(fileInput.id == 'fileInput2') {
setTimeout(()=>{
console.log(finalase64Data)
sendBase64DataToApi(finalase64Data);
}, 200);
}
});
});
// fileInputs.forEach((fileInput)=> {
// // 當選擇圖片後,顯示圖片的預覽
// fileInput.addEventListener("change", function(e){
// console.log(fileInput.id)
// const selectedFile = fileInput.files[0];
// if(selectedFile) {
// const reader = new FileReader();
// reader.onload = function(e) {
// // 移除 data:image/jpeg;base64,
// // customBase64Data = e.target.result.split(",")[1];
// customBase64Data = e.target.result;
// finalase64Data = customBase64Data;
// // console.log(e.target)
// const img = new Image();
// img.src = e.target.result;
// imagePreview.html("");
// imagePreview.append(img);
// // console.log(finalase64Data)
// }
// reader.readAsDataURL(selectedFile);
// }else {
// LinePicHandler(linePicUrl);
// }
// if(fileInput.id == 'fileInput2') {
// setTimeout(()=>{
// console.log(finalase64Data)
// sendBase64DataToApi(finalase64Data);
// }, 200);
// }
// });
// });
}
// 送出圖片
function sendBase64DataToApi(finalase64Data) {
GameService.getInstanse().userUpdatePhoto(finalase64Data).then(res => {
console.log('userUpdatePhoto:', res);
// base.myAlert('成功上傳。');
});
}
function getCheckboxVal(name) {
let vals = $(".register input[type=checkbox][name="+name+"]:checked").map(function() {
return $(this).val();
}).get();
return vals;
}
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 = finalase64Data;
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 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();
}
};
};
var register = new register();