// オイル阻集器選定フォーム ver 1.0.0 // Last update 2025-04-11 (function ($) { $(function () { let conditionTable = {}; conditionTable['cond_Qm1'] = ['14', '33', '52']; conditionTable['cond_n_value'] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '0']; conditionTable['cond_n1'] = ['1', '1.4', '1.7', '2', '2.2', '2.4', '2.6', '2.8', '2.9', '3', '0']; conditionTable['cond_n2_value'] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']; conditionTable['cond_i_value'] = ['1', '2', '3', '4', '5', '6', '7', '10', '14', '15', '20', '21', '25', '30', '60', '90', '120', '150', '180']; conditionTable['SetArea2List'] = []; conditionTable['SetArea2List'].push(['稚内', '留萌', '旭川', '網走', '札幌', '帯広', '釧路', '根室', '寿都', '浦河', '函館']) conditionTable['SetArea2List'].push(['青森', '秋田', '盛岡', '山形', '福島', '仙台', '宮古', '酒田', '小名浜', '西郷']) conditionTable['SetArea2List'].push(['新潟', '富山', '金沢', '福井', '敦賀', '輪島', '相川']) conditionTable['SetArea2List'].push(['長野', '甲府', '軽井沢', '飯田', '高田', '松本']) conditionTable['SetArea2List'].push(['宇都宮', '水戸', '前橋', '銚子', '東京', '横浜', '熊谷', '大島', '八丈島']) conditionTable['SetArea2List'].push(['静岡', '浜松', '名古屋', '高山', '岐阜', '津', '尾鷲']) conditionTable['SetArea2List'].push(['京都', '和歌山', '奈良', '大阪', '神戸', '彦根', '潮岬']) conditionTable['SetArea2List'].push(['鳥取', '浜田', '岡山', '広島', '下関', '松江']) conditionTable['SetArea2List'].push(['高松', '松山', '徳島', '高知', '清水', '室戸岬']) conditionTable['SetArea2List'].push(['福岡', '佐賀', '長崎', '大分', '熊本', '宮崎', '鹿児島', '厳原', '福江', '名瀬', '那覇']) conditionTable['SetAreaPrecipitation'] = {}; conditionTable['SetAreaPrecipitation']['稚内'] = '64'; conditionTable['SetAreaPrecipitation']['留萌'] = '58'; conditionTable['SetAreaPrecipitation']['旭川'] = '57'; conditionTable['SetAreaPrecipitation']['網走'] = '37'; conditionTable['SetAreaPrecipitation']['札幌'] = '50'; conditionTable['SetAreaPrecipitation']['帯広'] = '57'; conditionTable['SetAreaPrecipitation']['釧路'] = '56'; conditionTable['SetAreaPrecipitation']['根室'] = '53'; conditionTable['SetAreaPrecipitation']['寿都'] = '58'; conditionTable['SetAreaPrecipitation']['浦河'] = '44'; conditionTable['SetAreaPrecipitation']['函館'] = '63'; conditionTable['SetAreaPrecipitation']['青森'] = '58'; conditionTable['SetAreaPrecipitation']['秋田'] = '72'; conditionTable['SetAreaPrecipitation']['盛岡'] = '63'; conditionTable['SetAreaPrecipitation']['宮古'] = '64'; conditionTable['SetAreaPrecipitation']['酒田'] = '78'; conditionTable['SetAreaPrecipitation']['山形'] = '75'; conditionTable['SetAreaPrecipitation']['仙台'] = '94'; conditionTable['SetAreaPrecipitation']['福島'] = '71'; conditionTable['SetAreaPrecipitation']['小名浜'] = '62'; conditionTable['SetAreaPrecipitation']['輪島'] = '74'; conditionTable['SetAreaPrecipitation']['相川'] = '80'; conditionTable['SetAreaPrecipitation']['新潟'] = '97'; conditionTable['SetAreaPrecipitation']['金沢'] = '77'; conditionTable['SetAreaPrecipitation']['富山'] = '75'; conditionTable['SetAreaPrecipitation']['長野'] = '63'; conditionTable['SetAreaPrecipitation']['高田'] = '64'; conditionTable['SetAreaPrecipitation']['宇都宮'] = '101'; conditionTable['SetAreaPrecipitation']['福井'] = '56'; conditionTable['SetAreaPrecipitation']['高山'] = '52'; conditionTable['SetAreaPrecipitation']['松本'] = '59'; conditionTable['SetAreaPrecipitation']['軽井沢'] = '69'; conditionTable['SetAreaPrecipitation']['前橋'] = '115'; conditionTable['SetAreaPrecipitation']['熊谷'] = '89'; conditionTable['SetAreaPrecipitation']['水戸'] = '82'; conditionTable['SetAreaPrecipitation']['敦賀'] = '58'; conditionTable['SetAreaPrecipitation']['岐阜'] = '100'; conditionTable['SetAreaPrecipitation']['名古屋'] = '92'; conditionTable['SetAreaPrecipitation']['飯田'] = '80'; conditionTable['SetAreaPrecipitation']['甲府'] = '73'; conditionTable['SetAreaPrecipitation']['銚子'] = '140'; conditionTable['SetAreaPrecipitation']['津'] = '118'; conditionTable['SetAreaPrecipitation']['浜松'] = '88'; conditionTable['SetAreaPrecipitation']['静岡'] = '95'; conditionTable['SetAreaPrecipitation']['東京'] = '89'; conditionTable['SetAreaPrecipitation']['尾鷲'] = '139'; conditionTable['SetAreaPrecipitation']['横浜'] = '92'; conditionTable['SetAreaPrecipitation']['大島'] = '85'; conditionTable['SetAreaPrecipitation']['八丈島'] = '130'; conditionTable['SetAreaPrecipitation']['西郷'] = '93'; conditionTable['SetAreaPrecipitation']['松江'] = '78'; conditionTable['SetAreaPrecipitation']['鳥取'] = '68'; conditionTable['SetAreaPrecipitation']['浜田'] = '91'; conditionTable['SetAreaPrecipitation']['京都'] = '88'; conditionTable['SetAreaPrecipitation']['彦根'] = '63'; conditionTable['SetAreaPrecipitation']['下関'] = '77'; conditionTable['SetAreaPrecipitation']['広島'] = '79'; conditionTable['SetAreaPrecipitation']['岡山'] = '74'; conditionTable['SetAreaPrecipitation']['神戸'] = '88'; conditionTable['SetAreaPrecipitation']['大阪'] = '78'; conditionTable['SetAreaPrecipitation']['和歌山'] = '99'; conditionTable['SetAreaPrecipitation']['潮岬'] = '145'; conditionTable['SetAreaPrecipitation']['奈良'] = '75'; conditionTable['SetAreaPrecipitation']['厳原'] = '112'; conditionTable['SetAreaPrecipitation']['福岡'] = '97'; conditionTable['SetAreaPrecipitation']['佐賀'] = '102'; conditionTable['SetAreaPrecipitation']['大分'] = '82'; conditionTable['SetAreaPrecipitation']['長崎'] = '128'; conditionTable['SetAreaPrecipitation']['熊本'] = '77'; conditionTable['SetAreaPrecipitation']['鹿児島'] = '105'; conditionTable['SetAreaPrecipitation']['宮崎'] = '140'; conditionTable['SetAreaPrecipitation']['福江'] = '114'; conditionTable['SetAreaPrecipitation']['松山'] = '61'; conditionTable['SetAreaPrecipitation']['高松'] = '69'; conditionTable['SetAreaPrecipitation']['高知'] = '130'; conditionTable['SetAreaPrecipitation']['徳島'] = '87'; conditionTable['SetAreaPrecipitation']['清水'] = '150'; conditionTable['SetAreaPrecipitation']['室戸岬'] = '124'; conditionTable['SetAreaPrecipitation']['名瀬'] = '116'; conditionTable['SetAreaPrecipitation']['那覇'] = '111'; ; /* 条件設定表 */ //水栓口径 > Qm1 水栓を使用する場合の流量 $('[name=inset_cond_Qm1_size]').on('change', function () { //表示をリセット resultAllReset(); let cond_key = $(this).val(); $('.value.cond_Qm1 .num').html(conditionTable['cond_Qm1'][cond_key - 1]); return; let conditionData = conditionTable[mode][$(this).val()]; let tbody = $(this).parent().parent().parent(); //値初期化 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] + ']'); } }); //n 水栓個数 > n1 水栓個数に対する同時使用倍率 $('[name=inset_cond_n]').on('change', function () { //表示をリセット resultAllReset(); let cond_key = $(this).val(); $('.value.cond_n1 .num').html(conditionTable['cond_n1'][cond_key - 1]); }); //n2 洗車機の台数 $('[name=inset_cond_n2]').on('change', function () { //表示をリセット resultAllReset(); let cond_key = $(this).val(); $('[name=inset_cond_n2_value]').val(conditionTable['cond_n2_value'][cond_key - 1]); }); //設置地域/設置地 > q 1時間最大降水量 $('[name=inset_SetArea1]').on('change', function () { //表示をリセット resultAllReset(); SetAreaSelect($(this)); SetArea2Set($('[name=inset_SetArea2]')); }); function SetAreaSelect(input) { let cond_key = input.val(); let SetArea2List = conditionTable['SetArea2List'][cond_key - 1]; $('[name=inset_SetArea2] .item').remove(); $.each(SetArea2List, function (index, val) { let num = index + 1; $('[name=inset_SetArea2]').append(''); }); } SetAreaSelect($('[name=inset_SetArea1]')); $('[name=inset_SetArea2]').on('change', function () { //表示をリセット resultAllReset(); SetArea2Set($(this)); }); function SetArea2Set(input) { let cond_SetArea1 = $('[name=inset_SetArea1]').val(); let cond_SetArea2 = input.val(); let cond_SetAreaName = conditionTable['SetArea2List'][cond_SetArea1 - 1][cond_SetArea2 - 1]; $('.value.cond_q .num').html(conditionTable['SetAreaPrecipitation'][cond_SetAreaName]); } //a 駐車台数/b 洗車周期 > N 1日当たりの洗車台数 $('[name=inset_cond_a],[name=inset_cond_b]').on('change', function () { //表示をリセット resultAllReset(); is_number($(this)); let cond_a = $('[name=inset_cond_a]').val(); let cond_b = $('[name=inset_cond_b]').val(); let value = cond_a / cond_b; if (cond_b <= 0) { value = 0; } $('.value.cond_N .num').html(value); }); //i 阻集器の掃除の周期 $('[name=inset_cond_i]').on('change', function () { //表示をリセット resultAllReset(); let cond_key = $(this).val(); $('[name=inset_cond_i_value]').val(conditionTable['cond_i_value'][cond_key - 1]); }); //標準値 値変更可能項目 $('.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(''); calculationNumbers(); } else { $('.recalculateConditionsMsg').html('必須項目を選択・入力してください'); } }); //必須入力判定 function issetMustInput() { //標準値入力チェック let cond_K = $('.conditionSetting .cond_K input').val(); let cond_On = $('.conditionSetting .cond_On input').val(); if (Number(cond_K) <= 0 || isNaN(Number(cond_K))) { $('.conditionSetting .cond_K input').addClass('error'); } if (Number(cond_On) <= 0 || isNaN(Number(cond_On))) { $('.conditionSetting .cond_On input').addClass('error'); } //エラー入力欄をチェック if ($('.conditionSetting .error').length > 0) { return false; } return true; } /* 算出式 */ function calculationNumbers() { let cond_Qm1 = $('.conditionSetting .cond_Qm1 .num').html(); let cond_n1 = $('.conditionSetting .cond_n1 .num').html(); let cond_Qm2 = $('.conditionSetting .cond_Qm2 input').val(); let cond_n2 = $('.conditionSetting .cond_n2 input').val(); let cond_K = $('.conditionSetting .cond_K input').val(); let cond_q = $('.conditionSetting .cond_q .num').html(); let cond_A = $('.conditionSetting .cond_A input').val(); let cond_On = $('.conditionSetting .cond_On input').val(); let cond_N = $('.conditionSetting .cond_N .num').html(); let cond_i = $('.conditionSetting .cond_i input').val(); let cond_C1 = $('.conditionSetting .cond_C1 .num').html(); let cond_Sn = 0.09; let formula = ''; let answer = ''; //Q1 流入流量 水栓、洗車機 (Q m1 × n1 + Q m2 × n2) × K formula = '( ' + cond_Qm1 + ' × ' + cond_n1 + ' + ' + cond_Qm2 + ' × ' + cond_n2 + ') × ' + cond_K; answer = (cond_Qm1 * cond_n1 + cond_Qm2 * cond_n2) * cond_K; let cond_Q1 = parseFloat(answer.toFixed(1)); $('.formula.inflowQ1.inputs .numbers').html(formula); $('.formula.inflowQ1.inputs .num').html(cond_Q1); //Q2 流入流量 雨水流入 q × A / 60 formula = cond_q + ' × ' + cond_A + ' / 60'; answer = cond_q * cond_A / 60; let cond_Q2 = parseFloat(answer.toFixed(1)); $('.formula.inflowQ2.inputs .numbers').html(formula); $('.formula.inflowQ2.inputs .num').html(cond_Q2); //Q 流入流量 formula = 'MAX ( ' + cond_Q1 + ' , ' + cond_Q2 + ')'; answer = cond_Q1; if (cond_Q1 < cond_Q2) { answer = cond_Q2; } let cond_Q = parseFloat(answer.toFixed(1)); $('.formula.inflowQ.inputs .numbers').html(formula); $('.formula.inflowQ.inputs .num').html(cond_Q); //O オイル阻集量 On × N × i × C1 formula = cond_On + ' × ' + cond_N + ' × ' + cond_i + ' × ' + cond_C1; answer = cond_On * cond_N * cond_i * cond_C1; let cond_O = parseFloat(answer.toFixed(3)); $('.formula.incollection.inputs .numbers').html(formula); $('.formula.incollection.inputs .num').html(cond_O); //S 土砂堆積量 Sn × N × i formula = cond_Sn + ' × ' + cond_N + ' × ' + cond_i; answer = cond_Sn * cond_N * cond_i; let cond_S = parseFloat(answer.toFixed(3)); $('.formula.insediment.inputs .numbers').html(formula); $('.formula.insediment.inputs .num').html(cond_S); //計算結果 $('.selection_information .inflow .num').html(cond_Q); $('.selection_information .incollection .num').html(cond_O); $('.selection_information .insediment .num').html(cond_S); resultDataReset(); $('.calculation').addClass('active'); $('.selection_information').addClass('active'); $('.selection_types').addClass('active'); } /* 算出式以下をリセット */ function resultCalculationReset() { $('.calculation').removeClass('active'); $('.selection_information').removeClass('active'); $('.selection_types').removeClass('active'); $('.resultData .msg').html(''); $('.resultData .type .name').html('----'); $('.resultData .inflow .num').html('----'); $('.resultData .incollection .num').html('----'); $('.resultData .insediment .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 .incollection .num').html('----'); $('.resultData .insediment .num').html('----'); $('.resultPrint').removeClass('active'); } /* 全表示をリセット */ function resultAllReset() { $('.calculation').removeClass('active'); $('.selection_information').removeClass('active'); $('.selection_types').removeClass('active'); $('.resultData .msg').html(''); $('.resultData .type .name').html('----'); $('.resultData .inflow .num').html('----'); $('.resultData .incollection .num').html('----'); $('.resultData .insediment .num').html('----'); $('.resultPrint').removeClass('active'); } // 入力欄の値が数値がチェックする // 数値以外はエラークラス付与 // 引数plusがtrueの場合 0 を含まない、falseの場合 0 以上 function is_number(input, plus = true) { if (( input.val() == '' || plus && Number(input.val()) <= 0) || (!plus && Number(input.val()) < 0) || isNaN(Number(input.val())) ) { input.addClass('error'); } else { input.removeClass('error'); } } //数値チェック $('.inNumber').on('change', function () { //表示をリセット resultAllReset(); is_number($(this), false); }); $('.inNumberPlus').on('change', function () { //表示をリセット resultAllReset(); is_number($(this), true); }); // ------------------------------------------------------------- //# ajax var isPosting = false; let ajaxOption = { url: '/showroom/con/ot-form/request/', type: 'POST', data: {}, dataType: "json", success: function () { isPosting = false; $('.overlay').removeClass('active'); }, beforeSend: function () { isPosting = true; $('.overlay').addClass('active'); }, }; //型式選定 $('#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%3Aincollection%3Ainsediment'; $.ajax(ajaxOption) .done(function (response) { console.log(response); if (response.data['type'] != '-' && response.data['type'] != '') { //型式情報 $('.resultData .type .name').html(response.data['type']); let inflow = response.data['inflow']; if (!isNaN(Number(inflow))) { inflow = parseFloat(inflow.toFixed(1)) } let incollection = response.data['incollection']; if (!isNaN(Number(incollection))) { incollection = parseFloat(incollection.toFixed(1)) } let insediment = response.data['insediment']; if (!isNaN(Number(insediment))) { insediment = parseFloat(insediment.toFixed(1)) } $('.resultData .inflow .num').html(inflow); $('.resultData .incollection .num').html(incollection); $('.resultData .insediment .num').html(insediment); //納入仕様書 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/ot-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'); 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_Qm1', 'cond_n1', 'cond_q', 'cond_N', 'cond_C1']; $.each(conditions, function (index, value) { let invalue = conditionSetting.find('.value.' + value + ' .num').html(); if (invalue != '') { $form.append($('', { type: 'hidden', name: 'inset_' + value, value: invalue })); } }); //# 型式選定入力 $('#selection_inputs select').each(function () { $form.append($('', { type: 'hidden', name: $(this).attr('name'), value: $(this).val() })); }); //# 選定条件 let selections = ['inflow', 'incollection', 'insediment']; $.each(selections, function (index, value) { let invalue = $('.selection_information .' + value + ' .num').html(); if (invalue != '') { $form.append($('', { type: 'hidden', name: 'inset_selection_' + value, value: invalue })); } }); let calculations = ['inflowQ1', 'inflowQ2']; $.each(calculations, function (index, value) { let invalue = $('.calculation .' + value + ' .set .num').html(); if (invalue != '') { $form.append($('', { type: 'hidden', name: 'inset_calculation_' + value, value: invalue })); } }); //# 型式選定結果 let resultData = $('.resultData'); $form.append($('', { type: 'hidden', name: 'inset_type', value: resultData.find('.type .name').html() })); let result = ['inflow', 'incollection', 'insediment']; $.each(result, function (index, value) { $form.append($('', { type: 'hidden', name: 'inset_' + value, value: resultData.find('.' + value + ' .num').html() })); }); $form.appendTo($('body:first')); $form.submit(); }); //納入仕様書PDF表示 $('#productPDF').on('click', function () { if (isPosting) return; let downloadURL = '/showroom/con/ot-form/request/' + $(this).data('download') + '/'; console.log(downloadURL); if (downloadURL != '' && downloadURL != undefined) { window.open(downloadURL, 'productPDF'); } }); }); })(jQuery);