123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
-
- 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(`
- <img src="${linePicUrl}"/>
- `);
-
- 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);
-
- }
- });
- });
-
- }
-
- // 送出圖片
- 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(`
- <img src=${data.head_sticker} />
- `);
- }
-
-
- // 取得選取的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+="<br>請勾選'我同意個人資料使用方法'";
- 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();
|