{"version":3,"file":"js/38276-c69dfe02a36f96c1fa82.js","mappings":"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","sources":["webpack://assistant/./frontend/packs/models/FormField.ts"],"sourcesContent":["import { DateTime, Interval } from \"luxon\"\nimport { zeroPadding, Logger, funcName } from \"packs/common\"\nimport axios from \"axios\"\nimport Util from \"packs/utils/Util\"\nimport Notice from \"./Notice\"\nimport Room from \"./Room\"\nimport RoomMember from \"./RoomMember\"\nimport NotificationControl from \"packs/utils/NotificationControl\"\nimport { gtagEvent } from \"packs/GoogleTagManager\"\nimport PossibleDatesManager from \"packs/models/PossibleDatesManager\"\nimport RoomSetting from \"./RoomSetting\"\nimport AvailableScheduleTag from \"./AvailableScheduleTag\"\nimport FormFieldCreator from \"packs/utils/FormFieldCreator\"\nimport UserFile from \"./UserFile\"\nimport lodash from \"lodash\"\nimport FormUtil from \"packs/utils/FormUtil\"\n\nexport default class FormField {\n static readonly RELATIVE_TIME_RANGE = `relative_time_range`\n static readonly ABSOLUTE_TIME_RANGE = `absolute_time_range`\n\n constructor(\n public index_num,\n public field_id,\n public field_type,\n public field_name,\n public description,\n public name_attr,\n public class_attr,\n public placeholder_attr,\n public value_attr,\n public is_required,\n public max_length,\n public minimum_length,\n public selected_values: string[],\n public selectable_values: any[],\n public default_selected_values: string[],\n public param_key: string,\n public is_special: boolean,\n public special_name: string,\n public did_answer: boolean,\n public answered_value: any, // stringまたはstring[]\n\n // その他に入力があった場合、その入力値はvalue_attrに入る\n public allow_free_text: boolean,\n public canDelete: boolean,\n public hideField: boolean,\n // normal, same_ug_only, same_ug_admin_only\n public display_type: string,\n public change_location_name: boolean,\n // ファイルアップロードしたファイルを一時的に保存.\n public userFile: UserFile,\n\n public isValid: boolean,\n public invalidText: string,\n public isDisabled: boolean,\n public public_id: string,\n public option_hash: any\n ) {}\n\n static copy(o: FormField): FormField {\n // let newO = lodash.cloneDeep(o)\n // return newO\n return JSON.parse(JSON.stringify(o))\n }\n\n static fetchFromJson(groupsJson: any): FormField[] {\n let fields = []\n // let indexnum = 0\n for (const _ff of groupsJson) {\n let indexnum = _ff.index_num\n let ff = this.createDefault(indexnum)\n let newFf = _ff as FormField\n if (Util.isPresent(newFf.default_selected_values)) {\n newFf.selected_values = [...newFf.default_selected_values]\n }\n if (newFf.field_type == `select`) {\n if (newFf.allow_free_text) {\n if (!(newFf.selectable_values || []).includes(`その他`)) {\n newFf.selectable_values.push({ value: `その他`, image_url: null })\n }\n }\n // else {\n // newFf.selectable_values = (newFf.selectable_values || []).filter(s => s != `その他`)\n // }\n }\n const returnedFF = Object.assign(ff, newFf)\n fields.push(returnedFF)\n }\n return fields\n }\n\n static readonly selectableTypes: string[] = [`radio`, `select`, `checkbox`]\n static readonly selectableWithImageTypes: string[] = [`radio_image`, `checkbox_image`]\n static readonly specialParamKeys: string[] = [\n `attendee1_name`,\n `attendee1_email`,\n `attendee1_company_name`,\n `attendee1_cc_emails`,\n ]\n\n /**\n * field_name: '会社名', \n name_attr: 'company_name',\n field_type: FieldType::INPUT,\n placeholder_attr: 'waaq株式会社'\n * @param indexNum \n */\n static createDefault(indexNum = 0): FormField {\n let publicId = FormUtil.generateRamdom()\n return new FormField(\n indexNum,\n null,\n `input`,\n ``,\n null,\n null,\n null,\n ``,\n ``,\n false,\n -1,\n -1,\n [],\n [],\n [],\n null,\n false,\n null,\n false,\n null,\n false,\n true,\n false,\n `normal`,\n false,\n null,\n true,\n ``,\n false,\n publicId,\n {}\n )\n }\n\n static createNameField(indexNum = 0) {\n let _f = this.createDefault(indexNum)\n _f.canDelete = false\n _f.field_name = `お名前`\n _f.placeholder_attr = `山田 太郎`\n _f.name_attr = `attendee1_name`\n _f.param_key = `attendee1_name`\n _f.is_required = true\n _f.is_special = true\n _f.special_name = `お名前`\n return _f\n }\n\n static createCompanyField(indexNum = 0) {\n let _f = this.createDefault(indexNum)\n _f.canDelete = true\n _f.field_name = `会社名`\n _f.placeholder_attr = `waaq株式会社`\n _f.name_attr = `attendee1_company_name`\n _f.param_key = `attendee1_company_name`\n _f.is_required = false\n _f.is_special = true\n _f.special_name = `会社名`\n return _f\n }\n\n static createCCEmailsField(indexNum = 0) {\n let _f = this.createDefault(indexNum)\n _f.canDelete = true\n _f.field_name = `CCメールアドレス`\n _f.placeholder_attr = `yamada@example.com, taro@example.com`\n _f.name_attr = `attendee1_cc_emails`\n _f.param_key = `attendee1_cc_emails`\n _f.is_required = false\n _f.is_special = true\n _f.special_name = `CCメールアドレス`\n _f.description = `追加で通知したいメールアドレスがありましたらご指定ください。(カンマ区切りで複数入力可)`\n return _f\n }\n\n static createEmailField(indexNum = 0) {\n let _f = this.createDefault(indexNum)\n _f.canDelete = false\n _f.field_name = `メールアドレス`\n _f.placeholder_attr = `yamada@example.com`\n _f.name_attr = `attendee1_email`\n _f.param_key = `attendee1_email`\n _f.is_required = true\n _f.is_special = true\n _f.special_name = `メールアドレス`\n return _f\n }\n\n static createTelField(indexNum = 0) {\n let _f = this.createDefault(indexNum)\n _f.canDelete = true\n _f.field_name = `電話番号`\n _f.placeholder_attr = `07022222222`\n _f.name_attr = `attendee1_tel`\n _f.param_key = `attendee1_tel`\n _f.is_required = false\n _f.is_special = true\n _f.special_name = `電話番号`\n _f.description = `電話番号を入力ください。-(ハイフン)不要`\n return _f\n }\n\n static createOpenScheduleMemoField(indexNum = 0) {\n let _f = this.createDefault(indexNum)\n _f.canDelete = true\n _f.field_name = `連絡事項`\n _f.name_attr = `open_schedule_memo`\n _f.param_key = `open_schedule_memo`\n _f.is_special = true\n _f.is_required = false\n _f.special_name = `連絡事項`\n _f.field_type = `textarea`\n _f.description = `当日の持ち物など調整相手に伝えたい連絡事項があれば、こちらに入力してください。`\n return _f\n }\n\n /**\n * チャットする際に必要な項目を返します.\n * @return FormField[]\n */\n static createChatFields(): FormField[] {\n return [this.createNameField(0), this.createEmailField(1)]\n }\n\n /**\n * 設定時に最初に表示する項目を返します.\n * @return FormField[]\n */\n static createDefaultFields(): FormField[] {\n return [this.createNameField(0), this.createEmailField(1), this.createCompanyField(2)]\n }\n\n static updateIndexNum(formFields: FormField[]): FormField[] {\n let num = 0\n let ffs = Util.isPresent(formFields) ? [...formFields] : []\n for (let _f of ffs) {\n _f.index_num = num\n num += 1\n }\n return ffs\n }\n\n static isValidField(field: FormField): boolean {\n let _f = field\n if (!_f.is_required) return true\n Logger(`${funcName()} ${Util.output(_f)}`)\n\n let isInvalid = false\n if ([`input`, `textarea`].includes(_f.field_type)) {\n isInvalid = Util.isBlank(_f.value_attr) ? true : false\n if (Util.isPresent(_f.name_attr) && _f.name_attr.includes(`attendee1_email`)) {\n // email\n let isValid = Util.validateEmail(_f.value_attr)\n isInvalid = !isValid\n } else if (Util.isPresent(_f.name_attr) && _f.name_attr.includes(`attendee1_tel`)) {\n // email\n let isValid = FormUtil.validateTel(_f.value_attr)\n isInvalid = !isValid\n if (isInvalid) {\n _f.invalidText = `電話番号を正しく入力してください。`\n }\n }\n } else if (\n FormField.selectableTypes.includes(_f.field_type) ||\n FormField.selectableWithImageTypes.includes(_f.field_type)\n ) {\n isInvalid = Util.isBlank(_f.selected_values) ? true : false\n if (Util.isPresent(_f.selected_values) && _f.selected_values.includes(`その他`) && _f.allow_free_text) {\n isInvalid = Util.isPresent(_f.value_attr) ? false : true\n _f.invalidText = `「その他」を選択した場合、詳細な理由を入力してください。`\n }\n } else if (_f.field_type == `birthdate`) {\n // isInvalid = Util.isBlank(_f.selected_values) ? true : false\n if ((_f.selected_values || []).length < 3) {\n isInvalid = true\n } else {\n let year = _f.selected_values[0]\n let month = _f.selected_values[1]\n let day = _f.selected_values[2]\n let birthdateOption = (_f?.option_hash?.field_setting_options || []).find(o =>\n [FormField.ABSOLUTE_TIME_RANGE, FormField.RELATIVE_TIME_RANGE].includes(o.type)\n )\n\n Logger(`FormField.isValidField birthdate year:${year}, month:${month}, day:${day}, isInvalid:${isInvalid}`)\n if (Util.isBlank(year) || Util.isBlank(month) || Util.isBlank(day)) {\n isInvalid = true\n } else if ([`4`, `6`, `9`, `11`].includes(month) && Number(day) >= 31) {\n isInvalid = true\n } else if (month == `2` && Number(day) >= 30) {\n isInvalid = true\n } else {\n isInvalid = false\n }\n if (birthdateOption) {\n let { st, et } = FormField.birthdateStartToEnd(birthdateOption)\n let birthdate = DateTime.fromObject({\n year: Number(year),\n month: Number(month),\n day: Number(day),\n })\n if (birthdateOption.restrict_date) {\n if (st > birthdate || birthdate > et) {\n isInvalid = true\n }\n }\n }\n }\n if (isInvalid) {\n _f.invalidText = `正しく入力してください。`\n }\n } else if (_f.field_type == `address`) {\n if ((_f.selected_values || []).length < 4) {\n isInvalid = true\n } else {\n let prefec = _f.selected_values[1]\n let address1 = _f.selected_values[2]\n\n if (Util.isBlank(prefec) || Util.isBlank(address1)) {\n isInvalid = true\n } else {\n isInvalid = false\n }\n }\n if (isInvalid) {\n _f.invalidText = `正しく入力してください。`\n }\n } else if (_f.field_type.includes(`upload_file`)) {\n if (Util.isBlank(_f.value_attr)) {\n isInvalid = true\n _f.invalidText = `ファイルをアップロードしてください。`\n }\n }\n if (!isInvalid) {\n _f.invalidText = null\n }\n Logger(`isValidField: ${!isInvalid}, ${_f.field_name}`)\n return !isInvalid\n }\n\n static toSendParams(ffs: FormField[], keyType: string = \"param_key\") {\n let form_params = {}\n if (!ffs) return form_params\n\n ffs.forEach(_field => {\n let key = _field.param_key\n if (keyType == \"public_id\") {\n key = _field.public_id\n }\n\n if (\n FormField.selectableTypes.includes(_field.field_type) ||\n FormField.selectableWithImageTypes.includes(_field.field_type)\n ) {\n if ([`checkbox`, `checkbox_image`].includes(_field.field_type)) {\n // arrayで送信.\n if (_field.selected_values.includes(`その他`)) {\n let index = _field.selected_values.indexOf(`その他`)\n let val = Util.isPresent(_field.value_attr) ? _field.value_attr : \"その他\"\n _field.selected_values.splice(index, 1, val)\n }\n\n form_params[`${key}`] = _field.selected_values\n } else {\n // strで送信.\n let val = _field.selected_values[0] || []\n if (val == `その他`) {\n val = Util.isPresent(_field.value_attr) ? _field.value_attr : \"その他\"\n }\n form_params[`${key}`] = val\n }\n } else if (_field.field_type == `birthdate`) {\n let val = _field.selected_values.join(\"-\")\n form_params[`${key}`] = val\n } else if (_field.field_type == `address`) {\n let val = _field.selected_values.join(\"\\n\")\n form_params[`${key}`] = val\n } else {\n form_params[`${key}`] = _field.value_attr\n }\n })\n return form_params\n }\n\n /**\n * 送信して内容を完了させます。\n * @param room\n * @param startTime\n * @param startTimes\n * @param pdm\n * @param nextstep\n * @param isForce 予定が入っていても強制確定したい場合\n * @param isFixThroughReschedule リスケして確定をワンステップで行います.\n * @param message\n * @returns\n */\n static send(\n room: Room,\n startTime: number,\n startTimes: number[],\n pdm: typeof PossibleDatesManager,\n nextstep,\n isForce = false,\n isFixThroughReschedule = false,\n userMessage = null,\n onlineAccs = null,\n registrableAttendees = null,\n tzDic = null,\n rdlog_id = null,\n accessParams = {}\n ) {\n Logger(`送信するform_fields情報: ${Util.output(room.form_fields)}`)\n let form_params = FormField.toSendParams(room.form_fields)\n\n let params = {\n id: room.id,\n start_time: startTime,\n start_times: startTimes,\n form: form_params,\n is_force: isForce,\n is_fix_through_reschedule: isFixThroughReschedule,\n user_message: userMessage,\n registrable_attendees: registrableAttendees,\n rdlog_id: rdlog_id,\n access_params: accessParams,\n room_type: room.room_type,\n }\n if (tzDic) {\n params[`timezone_value`] = tzDic.value\n }\n\n // 場所を指定.\n if (Util.isPresent(room.current_appointment)) {\n let _appo = room.current_appointment\n if (Util.isPresent(_appo.location_tag_id)) {\n params[`location_tag_id`] = _appo.location_tag_id\n } else if (Util.isPresent(_appo.location_name)) {\n params[`location_name`] = _appo.location_name\n }\n\n if (_appo.duration) {\n params[`duration`] = _appo.duration\n }\n }\n\n if (Util.isPresent(pdm.selectedMag)) {\n params[`group_id`] = pdm.selectedMag.id\n }\n\n if (Util.isPresent(onlineAccs)) {\n params[`force_online_accounts`] = onlineAccs\n }\n\n let endpoint = `public_rooms/fix_or_share`\n // if (room && room.room_setting && room.room_setting.is_instant_room) {\n // endpoint = `instant_rooms`\n // }\n if (!Util.isPublic()) {\n endpoint = `rooms/fix_or_share`\n }\n\n Logger(`FormField.send 送信するparams:${Util.output(params)}, endpoint: ${endpoint}`)\n gtagEvent(`fix_or_share`, `${endpoint}`, `${Util.output(params)}`)\n\n return axios({\n method: `post`,\n url: `${Util.prefixUrl}/${endpoint}`,\n data: params,\n })\n .then(res => {\n Logger(`FormField.send res.message:${res.data.message}, res.data:${Util.output(res.data)}`)\n if (nextstep == `complete` && res.data.message) {\n Notice.message = `${res.data.message}`\n }\n const userInfo: RoomMember = RoomMember.fetchFromJson([res.data.user_info])[0]\n const res_room: Room = Room.fetchFromJson([res.data.room], userInfo.user_id)[0]\n\n // 停止に変更してリダイレクト先がある場合、もろもろ変更する前にリダイレクト.\n if (res_room.progress_status == `stay`) {\n if (RoomSetting.isRedirectUrl(res_room)) {\n let url = res_room.room_setting.thanks_page.redirect_url_after_send\n location.href = Util.getUrl(url)\n\n return false\n }\n }\n const roomLink: string = res.data.room_link\n let guestKey = null\n if (roomLink) {\n if (Util.isEmbeds()) {\n guestKey = roomLink.split(`/s/`)[1]\n } else {\n history.replaceState(\"\", \"\", `${roomLink}`)\n }\n }\n let astag: AvailableScheduleTag = null\n if (Util.isPresent(res.data.astag)) {\n astag = AvailableScheduleTag.fetchFromJson([res.data.astag])[0]\n }\n\n let registered_attendees = []\n\n if (Util.isPresent(res.data.registered_attendees)) {\n registered_attendees = res.data.registered_attendees\n }\n\n let show_attendees_modal = res.data.show_attendees_modal\n let next_action = res.data.next_action\n let type = res.data.type\n return {\n userInfo,\n room: res_room,\n astag,\n registered_attendees,\n show_attendees_modal,\n next_action,\n type,\n guestKey,\n }\n })\n .catch(err => {\n Logger(`err: ${err.message} ${Util.output(err.response)}`)\n NotificationControl.showErrorMessage(err)\n return null\n })\n }\n\n static fillUserInfo(userInfo: RoomMember, _fields: FormField[], changeHideIfExist = true): any {\n Logger(`${funcName()}`)\n if (Util.isBlank(_fields)) return []\n // フィールド内に特殊フィールドがあるかを確認.\n let specialFields = []\n for (let _f of _fields) {\n if (_f.is_special) {\n specialFields.push(_f)\n }\n }\n let loggedinFields = []\n\n if (Util.isPresent(specialFields)) {\n for (let sf of specialFields) {\n if (sf.param_key == `attendee1_name`) {\n if (Util.isPresent(userInfo.name)) {\n let _f = FormField.createNameField()\n _f.value_attr = userInfo.name\n _f.isDisabled = true\n loggedinFields.push(_f)\n }\n }\n\n if (sf.param_key == `attendee1_email`) {\n if (Util.isPresent(userInfo.email)) {\n let _f = FormField.createEmailField()\n _f.value_attr = userInfo.email\n _f.isDisabled = true\n loggedinFields.push(_f)\n }\n }\n\n if (sf.param_key == `attendee1_company_name`) {\n if (Util.isPresent(userInfo.company_name)) {\n let _f = FormField.createCompanyField()\n _f.value_attr = userInfo.company_name\n _f.isDisabled = true\n loggedinFields.push(_f)\n }\n }\n }\n }\n\n if (changeHideIfExist) {\n for (let _f of loggedinFields) {\n let _fi = _fields.find(f => _f.param_key == f.param_key)\n if (_fi) {\n _fi.value_attr = _fi.value_attr\n _fi.hideField = true\n }\n }\n }\n\n return loggedinFields\n }\n\n static birthdateStartToEnd(birthdateOption: any) {\n if (birthdateOption.type == FormField.RELATIVE_TIME_RANGE) {\n let st = DateTime.local().plus({ days: birthdateOption.start_day })\n let et = DateTime.local().plus({ days: birthdateOption.end_day })\n return { st, et }\n } else if (birthdateOption.type == FormField.ABSOLUTE_TIME_RANGE) {\n let st = DateTime.fromSeconds(birthdateOption.start_at)\n let et = DateTime.fromSeconds(birthdateOption.end_at)\n return { st, et }\n }\n return { st: null, et: null }\n }\n}\n"],"names":["FormField","index_num","field_id","field_type","field_name","description","name_attr","class_attr","placeholder_attr","value_attr","is_required","max_length","minimum_length","selected_values","selectable_values","default_selected_values","param_key","is_special","special_name","did_answer","answered_value","allow_free_text","canDelete","hideField","display_type","change_location_name","userFile","isValid","invalidText","isDisabled","public_id","option_hash","copy","o","JSON","parse","stringify","fetchFromJson","groupsJson","fields","_i","groupsJson_1","length","_ff","indexnum","ff","this","createDefault","newFf","Util","isPresent","__spreadArray","includes","push","value","image_url","returnedFF","Object","assign","indexNum","FormUtil","generateRamdom","createNameField","_f","createCompanyField","createCCEmailsField","createEmailField","createTelField","createOpenScheduleMemoField","createChatFields","createDefaultFields","updateIndexNum","formFields","num","ffs","ffs_1","isValidField","field","Logger","concat","funcName","output","isInvalid","isBlank","validateEmail","validateTel","selectableTypes","selectableWithImageTypes","year","month","day","birthdateOption","_a","field_setting_options","find","ABSOLUTE_TIME_RANGE","RELATIVE_TIME_RANGE","type","Number","_b","birthdateStartToEnd","st","et","birthdate","DateTime","fromObject","restrict_date","prefec","address1","toSendParams","keyType","form_params","forEach","_field","key","index","indexOf","val","splice","join","send","room","startTime","startTimes","pdm","nextstep","isForce","isFixThroughReschedule","userMessage","onlineAccs","registrableAttendees","tzDic","rdlog_id","accessParams","form_fields","params","id","start_time","start_times","form","is_force","is_fix_through_reschedule","user_message","registrable_attendees","access_params","room_type","current_appointment","_appo","location_tag_id","location_name","duration","selectedMag","endpoint","isPublic","gtagEvent","axios","method","url","prefixUrl","data","then","res","message","Notice","userInfo","RoomMember","user_info","res_room","Room","user_id","progress_status","RoomSetting","isRedirectUrl","room_setting","thanks_page","redirect_url_after_send","location","href","getUrl","roomLink","room_link","guestKey","isEmbeds","split","history","replaceState","astag","AvailableScheduleTag","registered_attendees","show_attendees_modal","next_action","err","response","NotificationControl","showErrorMessage","fillUserInfo","_fields","changeHideIfExist","specialFields","_fields_1","loggedinFields","specialFields_1","sf","name","email","company_name","_fi","f","loggedinFields_1","local","plus","days","start_day","end_day","fromSeconds","start_at","end_at","specialParamKeys"],"sourceRoot":""}