// グリース阻集器選定フォーム ver 1.0.3 // Last update 2024-07-31 (function ($) { $(function () { let mode = 'area'; let modeSelect = $('.modeSelect .button'); let conditionSettings = $('.conditionSetting'); let conditionNames = { area: ['cond_A', 'cond_Wm', 'cond_t', 'cond_k', 'cond_gu', 'cond_gb', 'cond_iu', 'cond_ib', 'cond_n', 'cond_n0', 'cond_C2'], users: ['cond_N', 'cond_Wm', 'cond_t', 'cond_k', 'cond_gu', 'cond_gb', 'cond_iu', 'cond_ib', 'cond_C2'] }; let conditionTable = { area: {}, users: {} }; conditionTable['area']['中国(中華)料理'] = ['130', '720', '3.5', '18.0', '8.0', '5.0']; conditionTable['area']['洋食'] = ['95', '720', '3.5', '9.5', '3.5', '4.5']; conditionTable['area']['和食'] = ['100', '720', '3.5', '7.0', '2.5', '5.0']; conditionTable['area']['ラーメン'] = ['150', '720', '3.5', '19.5', '7.5', '5.0']; conditionTable['area']['そば・うどん'] = ['150', '720', '3.5', '9.0', '3.0', '5.0']; conditionTable['area']['軽食'] = ['90', '720', '3.5', '6.0', '2.0', '7.0']; conditionTable['area']['喫茶'] = ['85', '720', '3.5', '3.5', '1.5', '8.0']; conditionTable['area']['ファーストフード'] = ['20', '720', '3.5', '3.0', '1.0', '8.0']; conditionTable['area']['社員・従業員食堂'] = ['90', '600', '3.5', '6.5', '3.0', '4.0']; conditionTable['area']['学生食堂'] = ['45', '600', '3.5', '3.0', '1.0', '4.0']; conditionTable['users']['中国(中華)料理'] = ['80', '720', '3.5', '11.0', '5.0']; conditionTable['users']['洋食'] = ['80', '720', '3.5', '8.0', '3.0']; conditionTable['users']['和食'] = ['80', '720', '3.5', '5.5', '2.0']; conditionTable['users']['ラーメン'] = ['50', '720', '3.5', '6.5', '2.5']; conditionTable['users']['そば・うどん'] = ['50', '720', '3.5', '3.0', '1.0']; conditionTable['users']['軽食'] = ['45', '720', '3.5', '3.0', '1.0']; conditionTable['users']['喫茶'] = ['25', '720', '3.5', '1.0', '0.5']; conditionTable['users']['ファーストフード'] = ['10', '720', '3.5', '1.5', '0.5']; conditionTable['users']['社員・従業員食堂'] = ['50', '600', '3.5', '3.5', '1.5']; conditionTable['users']['学生食堂'] = ['25', '600', '3.5', '1.5', '0.5']; conditionTable['users']['学校給食'] = ['15', '480', '3.5', '0.7', '0.3']; let calculationFrmulas = { area: { inflow: '= A・Wm × (n / n0) × (1 / t) k', massGu: '= A・gu × (n / n0) × iu・C2', massGb: '= A・gb × (n / n0) × ib・C2', }, users: { inflow: "= N・Wm' × (1 / t) k", massGu: "= N・gu' × iu・C2", massGb: "= N・gb' × ib・C2", } }; /* モード選択ボタン */ $('.conditionSetting.users input').prop('disabled', true); $('.conditionSetting.users select').prop('disabled', true); modeSelect.on('click', function () { modeSelect.removeClass('active'); $(this).addClass('active'); mode = $(this).data('mode'); conditionSettings.removeClass('active'); $('.conditionSetting input').prop('disabled', true); $('.conditionSetting select').prop('disabled', true); $('.conditionSetting.' + mode).addClass('active'); $('.conditionSetting.active input').prop('disabled', false); $('.conditionSetting.active select').prop('disabled', false); resultAllReset(); }); /* 条件設定表 */ //食種変更 $('[name=inset_category]').on('change', function () { //表示をリセット resultAllReset(); let conditionData = conditionTable[mode][$(this).val()]; let tbody = $(this).parent().parent().parent(); //値初期化 tbody.find('.value.cond_Wm .num').html(conditionData[0]); tbody.find('.value.cond_t .num').html(conditionData[1]); tbody.find('.value.cond_t input').val(conditionData[1]); tbody.find('.value.cond_k .num').html(conditionData[2]); tbody.find('.value.cond_gu .num').html(conditionData[3]); tbody.find('.value.cond_gb .num').html(conditionData[4]); tbody.find('.value.cond_iu input').val('7'); tbody.find('.value.cond_ib input').val('30'); if (mode == 'area') { tbody.find('.value.cond_n .num').html(conditionData[5]); tbody.find('.value.cond_n input').val(conditionData[5]); } //根拠初期化 tbody.find('.grounds').removeClass('change'); tbody.find('.grounds.cond_t .num').data('num', conditionData[1]).html('[' + conditionData[1] + ']'); if (mode == 'area') { tbody.find('.grounds.cond_n .num').data('num', conditionData[5]).html('[' + conditionData[5] + ']'); } //n0の値を取得 get_cond_n0(); //条件式から計算 // calculateConditions(); }); //店舗全面積/利用人数変更 $('[name=inset_cond_A],[name=inset_cond_N]').on('change', function () { if (Number($(this).val()) <= 0 || isNaN(Number($(this).val()))) { $(this).addClass('error'); } else { $(this).removeClass('error'); } //表示をリセット resultCalculationReset(); //n0の値を取得 get_cond_n0(); //条件式から計算 // calculateConditions(); }); //値変更可能項目 $('.conditionSetting .changeValue').on('click', function () { let cell = $(this); if (!cell.hasClass('active')) { console.log('changeValue'); cell.find('input').val(''); cell.addClass('active'); cell.parent().find('.grounds').addClass('change'); resultCalculationReset(); } }); //値変更 $('.conditionSetting .changeMark').on('change', function () { if (Number($(this).val()) <= 0 || isNaN(Number($(this).val()))) { $(this).addClass('error'); //表示をリセット resultCalculationReset(); } else { $(this).removeClass('error'); } }); //.change 設定時にクリックで規定値に戻す $('.conditionSetting .grounds .base').on('click', function () { if ($(this).parent().hasClass('change')) { let num = $(this).find('.num').data('num'); $(this).parent().removeClass('change'); $(this).parent().parent().find('input').val(num).removeClass('error'); $(this).parent().parent().find('.changeValue').removeClass('active'); resultCalculationReset(); } }); //条件式を計算ボタン $('#recalculateConditions').on('click', function () { if (!issetMustInput()) { $('.recalculateConditionsMsg').html('必須項目を選択・入力してください'); return; } let is_error = false; $('.conditionSetting.active input').each(function () { console.log($(this).attr('name') + ' : ' + $(this).val()); if (Number($(this).val()) <= 0 || isNaN(Number($(this).val()))) { $(this).addClass('error'); is_error = true; } }); if (is_error) { $('.recalculateConditionsMsg').html('選定条件をすべて入力してください'); return; } calculateConditions(); }); //条件式から計算 function calculateConditions() { if (issetMustInput()) { $('.recalculateConditionsMsg').html(''); calculationNumbers(); } else { $('.recalculateConditionsMsg').html('必須項目を選択・入力してください'); } } //必須入力判定 function issetMustInput() { let category = $('.' + mode + '.conditionSetting .category select').val(); let cond_A = ''; if (mode == 'area') { cond_A = $('.' + mode + '.conditionSetting .cond_A input').val(); } else if (mode == 'users') { cond_A = $('.' + mode + '.conditionSetting .cond_N input').val(); } if ( category == '' || Number(cond_A) <= 0 || isNaN(Number(cond_A)) ) { return false; } return true; } /* 算出式 */ function calculationNumbers() { $('.calculation_inflow .formula.inflow.chars').html(calculationFrmulas[mode]['inflow']); $('.calculation_mass .formula.massGu.chars').html(calculationFrmulas[mode]['massGu']); $('.calculation_mass .formula.massGb.chars').html(calculationFrmulas[mode]['massGb']); let cond_A = 1; if (mode == 'area') { cond_A = $('.' + mode + '.conditionSetting .cond_A input').val(); } else if (mode == 'users') { cond_A = $('.' + mode + '.conditionSetting .cond_N input').val(); } let cond_Wm = $('.' + mode + '.conditionSetting .cond_Wm .num').html(); let cond_t = $('.' + mode + '.conditionSetting .cond_t input').val(); let cond_k = $('.' + mode + '.conditionSetting .cond_k .num').html(); let cond_gu = $('.' + mode + '.conditionSetting .cond_gu .num').html(); let cond_gb = $('.' + mode + '.conditionSetting .cond_gb .num').html(); let cond_iu = $('.' + mode + '.conditionSetting .cond_iu input').val(); let cond_ib = $('.' + mode + '.conditionSetting .cond_ib input').val(); let cond_n = 1; let cond_n0 = 1; if (mode == 'area') { cond_n = $('.' + mode + '.conditionSetting .cond_n input').val(); cond_n0 = $('.' + mode + '.conditionSetting .cond_n0 .num').html(); } let formula = ''; let answer = ''; //Q 流入流量 if (mode == 'area') { formula = cond_A + ' × ' + cond_Wm + ' × (' + cond_n + ' ÷ ' + cond_n0 + ') × (1 ÷ ' + cond_t + ') × ' + cond_k; } else if (mode == 'users') { formula = cond_A + ' × ' + cond_Wm + ' × (1 ÷ ' + cond_t + ') × ' + cond_k; } answer = cond_A * cond_Wm * (cond_n / cond_n0) * (1 / cond_t) * cond_k; let cond_Q = parseFloat(answer.toFixed(1)); $('.calculation_inflow .formula.inflow.inputs .numbers').html(formula); $('.calculation_inflow .formula.inflow.inputs .num').html(cond_Q); $('.selection_information .inflow .num').html(cond_Q); //Gu 阻集グリースの質量 if (mode == 'area') { formula = cond_A + ' × ' + cond_gu + ' × (' + cond_n + ' ÷ ' + cond_n0 + ') × ' + cond_iu + ' × 0.001'; } else if (mode == 'users') { formula = cond_A + ' × ' + cond_gu + ' × ' + cond_iu + ' × 0.001'; } answer = cond_A * cond_gu * (cond_n / cond_n0) * cond_iu * 0.001; let cond_Gu = parseFloat(answer.toFixed(1)); $('.calculation_mass .formula.massGu.inputs .numbers').html(formula); $('.calculation_mass .formula.massGu.inputs .num').html(cond_Gu); //Gb 堆積残渣の質量 if (mode == 'area') { formula = cond_A + ' × ' + cond_gb + ' × (' + cond_n + ' ÷ ' + cond_n0 + ') × ' + cond_ib + ' × 0.001'; } else if (mode == 'users') { formula = cond_A + ' × ' + cond_gb + ' × ' + cond_ib + ' × 0.001'; } answer = cond_A * cond_gb * (cond_n / cond_n0) * cond_ib * 0.001; let cond_Gb = parseFloat(answer.toFixed(1)); $('.calculation_mass .formula.massGb.inputs .numbers').html(formula); $('.calculation_mass .formula.massGb.inputs .num').html(cond_Gb); //G 阻集グリース及び堆積残渣の質量 formula = cond_Gu + ' + ' + cond_Gb; answer = cond_Gu + cond_Gb; let cond_G = parseFloat(answer.toFixed(1)); $('.calculation_mass .formula.massG.inputs .numbers').html(formula); $('.calculation_mass .formula.massG.inputs .num').html(cond_G); $('.selection_information .massG .num').html(cond_G); resultDataReset(); $('.oncalcSettings').addClass('active'); $('.calculation_inflow').addClass('active'); $('.calculation_mass').addClass('active'); $('.selection_information').addClass('active'); $('.selection_types').addClass('active'); } /* 算出式以下をリセット */ function resultCalculationReset() { $('.calculation_inflow').removeClass('active'); $('.calculation_mass').removeClass('active'); $('.selection_information').removeClass('active'); $('.selection_types').removeClass('active'); $('.resultData .msg').html(''); $('.resultData .type .name').html('----'); $('.resultData .inflow .num').html('----'); $('.resultData .mass .num').html('----'); $('.resultPrint').removeClass('active'); } /* 型式選定 */ //値変更 $('#selection_inputs .inSelect').on('change', function () { resultDataReset(); }); //表示をリセット function resultDataReset() { $('.resultData .msg').html(''); $('.resultData .type .name').html('----'); $('.resultData .inflow .num').html('----'); $('.resultData .mass .num').html('----'); $('.resultPrint').removeClass('active'); } /* 全表示をリセット */ function resultAllReset() { $('.oncalcSettings').removeClass('active'); $('.calculation_inflow').removeClass('active'); $('.calculation_mass').removeClass('active'); $('.selection_information').removeClass('active'); $('.selection_types').removeClass('active'); $('.resultData .msg').html(''); $('.resultData .type .name').html('----'); $('.resultData .inflow .num').html('----'); $('.resultData .mass .num').html('----'); $('.resultPrint').removeClass('active'); } // ------------------------------------------------------------- //# ajax var isPosting = false; let ajaxOption = { url: '/showroom/con/gt-form/request/', type: 'POST', data: {}, dataType: "json", success: function () { isPosting = false; $('.overlay').removeClass('active'); }, beforeSend: function () { isPosting = true; $('.overlay').addClass('active'); }, }; //n0の値を取得 function get_cond_n0() { if (isPosting) return; if (issetMustInput() && mode == 'area') { //条件をデータ化 ajaxOption.data = 'inset_mode=' + mode + '&'; ajaxOption.data += $('#condition_inputs').serialize(); ajaxOption.data += '&inset_outputs=cond_n0'; $.ajax(ajaxOption) .done(function (response) { if (response.data['cond_n0'] != '') { $('.value.cond_n0 .num').html(response.data['cond_n0']); } }) .fail(function (response) { console.log('fail'); }); } } //型式選定 $('#searchGreasetrap').on('click', function () { if (isPosting) return; //表示をリセット resultDataReset(); //条件をデータ化 ajaxOption.data = 'inset_mode=' + mode + '&'; ajaxOption.data += $('#condition_inputs').serialize(); ajaxOption.data += '&'; ajaxOption.data += $('#selection_inputs').serialize(); ajaxOption.data += '&inset_outputs=type%3Ainflow%3Amass'; $.ajax(ajaxOption) .done(function (response) { console.log(response); if (response.data['type'] != '-' && response.data['type'] != '') { //型式情報 $('.resultData .type .name').html(response.data['type']); $('.resultData .inflow .num').html(response.data['inflow']); $('.resultData .mass .num').html(response.data['mass']); //納入仕様書 if (response.pdf != '') { $('.resultPrint #productPDF').data('download', response.pdf); $('.resultPrint #productPDF').prop('disabled', false); } else { $('.resultPrint #productPDF').data('download', ''); $('.resultPrint #productPDF').prop('disabled', true); } $('.resultPrint').addClass('active'); } //見つからない else { $('.resultData .msg').html('
ご指定の条件に該当する型式は見つかりませんでした
'); } }) .fail(function (response) { console.log('fail'); }); }); //結果PDF生成 $('#outputPDF').on('click', function () { if (isPosting) return; window.open('', 'outputPDF'); let $form = $('', { action: '/showroom/con/gt-form/request/', target: 'outputPDF', method: 'post' }); $form.append($('', { type: 'hidden', name: 'outpdf', value: 'ON' })); $form.append($('', { type: 'hidden', name: 'inset_mode', value: mode })); //# 宛名 $('#resultPrint_inputs input, #resultPrint_inputs select').each(function () { $form.append($('', { type: 'hidden', name: $(this).attr('name'), value: $(this).val() })); }); //# 条件表 let conditionSetting = $('.conditionSetting.active'); conditionSetting.find('input, select').each(function () { let inset_name = $(this).attr('name'); $form.append($('', { type: 'hidden', name: inset_name, value: $(this).val() })); let name = inset_name.substring(6); let grounds = conditionSetting.find('.grounds.' + name); if (grounds.hasClass('change')) { $form.append($('', { type: 'hidden', name: 'inset_grounds_' + name, value: 'change' })); } }); let conditions = ['cond_Wm', 'cond_k', 'cond_gu', 'cond_gb', 'cond_n0']; $.each(conditions, function (index, value) { let invalue = conditionSetting.find('.value.' + value + ' .num').html(); if (invalue != '') { $form.append($('', { type: 'hidden', name: 'inset_' + value, value: invalue })); } }); //# 算出式 let formulas = ['inflow', 'massGu', 'massGb', 'massG']; $.each(formulas, function (index, value) { $form.append($('', { type: 'hidden', name: 'inset_formula_' + value + '_numbers', value: $('.formula.' + value + ' .numbers').html() })); $form.append($('', { type: 'hidden', name: 'inset_formula_' + value + '_num', value: $('.formula.' + value + ' .num').html() })); }); let resultData = $('.resultData'); $form.append($('', { type: 'hidden', name: 'inset_type', value: resultData.find('.type .name').html() })); let result = ['inflow', 'mass']; $.each(result, function (index, value) { $form.append($('', { type: 'hidden', name: 'inset_' + value, value: resultData.find('.' + value + ' .num').html() })); }); //# 型式選定 $('#selection_inputs select').each(function () { $form.append($('', { type: 'hidden', name: $(this).attr('name'), value: $(this).val() })); }); $form.appendTo($('body:first')); $form.submit(); }); //納入仕様書PDF表示 $('#productPDF').on('click', function () { if (isPosting) return; let downloadURL = '/showroom/con/gt-form/request/' + $(this).data('download') + '/'; console.log(downloadURL); if (downloadURL != '' && downloadURL != undefined) { window.open(downloadURL, 'productPDF'); } }); }); })(jQuery);