// ローディング /** * ローディングクラス * @param {string} loading_elem_id ローディングのHTML要素 */ class Loading { constructor(loadingElemId = '_loading') { this.loadingElemId = loadingElemId; // ロード中かどうか this.isLoading = false; } /** * ローディングを開始する。
* 開始済みの場合と、ローディングの要素が見つからない場合は何もしない。 */ start() { if (this.isLoading) return; const loadingElem = document.getElementById(this.loadingElemId); if (loadingElem) { this.isLoading = true; loadingElem.style.display = 'block'; } } /** * ローディングを停止する。
* 開始されていない場合と、ローディングの要素が見つからない場合は何もしない。 */ stop() { if (!this.isLoading) return; const loadingElem = document.getElementById(this.loadingElemId); if (loadingElem) { this.isLoading = false; loadingElem.style.display = 'none'; } } } /** * ローダーを表示する * @param {string} loadingElemId ローディング要素のID */ function showLoading(loadingElemId = '_loading') { const loading = new Loading(loadingElemId); loading.start(); } // 汎用画面遷移 function transitionTo(link){ // ローディング表示 showLoading(); location.href = link; return false; } // 検索フォーム // 戻るボタンの関数 // 機能概要:メニュー画面に遷移する function backToMenu(){ // ローディング表示 showLoading(); location.href = "/menu/"; } // クリアボタンの関数 // 利用条件1:form名がsearch // 利用条件2:form入力値名がctrl_で始まる function clr() { const formElement = document.search const formInputElements = Array.from(formElement.elements) for (const formInput of formInputElements) { if (formInput.name.startsWith('ctrl_')) { formInput.value = ""; } if (formInput.type === 'checkbox') { formInput.checked = false; } } // 検索ボタンを再度非活性にする formBtDisabled(); } /** * ボタンの活性非活性関数 * @param {*} buttonId ボタンのID デフォルトは`search_bt` * @param {*} formId フォームのname デフォルトは`search` * @param {*} all 全インプットが入力されている場合に活性化するかどうか */ function formBtDisabled(buttonId='search_bt', formId='search', all=false) { const formElement = document[formId] const formInputElements = Array.from(formElement.elements) // 検査対象を const checkTargetValueLength = formInputElements .filter((elem) => elem.name.startsWith('ctrl_')) .map((elem) => elem.value.length) // 活性、非活性の判断 let validFlg = false; if (all) { validFlg = checkTargetValueLength.every((num) => num !== 0) } else { validFlg = checkTargetValueLength.some((num) => num !== 0) } if (validFlg == true) { $(`#${buttonId}`).removeAttr('disabled'); // クリアボタンはあれば活性化する if ($('#clear')) { $('#clear').removeAttr('disabled'); } } else { $(`#${buttonId}`).attr('disabled', 'disabled'); // クリアボタンはあれば非活性化する if ($('#clear')) { $('#clear').attr('disabled', 'disabled'); } } } // ドロップダウンリスト再選択の関数 // 引数:ドロップダウンリストのID // 引数:選択したいリスト選択表示文字列 function selectDropDowList(id, selectedName){ // 以前の検索条件再読み込み var select = document.getElementById(id); select = select.children[0]; var options = select.options; if (options != null) { for(var i = 0; i < options.length; i++){ if(options[i].text === selectedName){ options[i].selected = true; } }; } } /** * DatePickerを設定 */ function enableDatePicker() { // カレンダーの表示を日曜日始まりに変更 flatpickr.l10ns.ja.firstDayOfWeek = 0; $(".date_picker").each(function(i, elem) { const date_picker_name = elem.name; flatpickr(elem, { locale: 'ja', // 日本語カレンダー allowInput: true, // 入力可能にする dateFormat: "YYYY/MM/DD", // 日付のフォーマット onChange(_dates, currentDateString, _picker, _data) { }, parseDate: function(strFormat, format) { // yyyyMMddの場合→yyyy/MM/dd const datePatternMatches = strFormat.match(/^(\d{4})(\d{2})(\d{2})$/); if (datePatternMatches){ strFormat = `${datePatternMatches[1]}/${datePatternMatches[2]}/${datePatternMatches[3]}`; } // yyyy/00/00~yyyy/00/00の場合→yyyy/01/01~yyyy/12/31 // yyyy/MM/00~yyyy/MM/01の場合→yyyy/MM/01~yyyy/MM/末日 // 開始日の場合 if (date_picker_name.includes('from')){ strFormat = strFormat.replace("/00/00", "/01/01"); strFormat = strFormat.replace("/00", "/01"); } // 終了日の場合 else if (date_picker_name.includes('to')){ strFormat = strFormat.replace("/00/00", "/12/31"); const date = new Date(strFormat.slice(0, 4), strFormat.slice(5, 7), 0).getDate(); strFormat = strFormat.replace("/00", "/"+date.toString()); } return new Date(strFormat); }, formatDate: (date, format) => { // 日付の整合性チェック、不正の場合は空表示 if(isNaN(date.getDate())){ return; } // フォーマットを設定 const formatted = flatpickr.formatDate(date,'Y/m/d'); return formatted; } }) }); } // 前のスペースを許さない入力チェック function checkSpaceForm($this) { var str=$this.value; while(str.match(/(^\s+)/g)) { str=str.replace(/(^\s+)/g, ""); } $this.value=str; } // あいまい検索用に半角の英数字と%以外を許さない入力チェック function checkAimaiSearhForm($this) { var str=$this.value; while(str.match(/[^A-Z^a-z^0-9\%]/)) { str=str.replace(/[^A-Z^a-z^0-9\%]/,""); } $this.value=str; } // 大文字小文字-以外を許さない入力チェック function checkPassForm($this) { var str=$this.value; while(str.match(/[^ -\~]/)) { str=str.replace(/[^ -\~]/,""); } $this.value=str; } // チェックボックス全選択関数 // 条件:チェックボックスのクラス名に"selected"というのがついていること // 条件:ボタンにクラス名 send がついていること function allOn(){ $(".selected").prop("checked", true); $(".send").prop('disabled',false); } // チェックボックス全解除関数 // 条件:チェックボックスのクラス名に"selectedページ数"というのがついていること // 条件:ボタンにクラス名 send がついていること function allOff(){ $(".selected").prop("checked", false); $(".send").prop('disabled',true); } // 検索結果のところのボタンをチェックが1個でも付いたら押せるようにして、チェックがなければ押せないようにする関数 // 条件:チェックボックスのクラス名に"selected"というのがついていること // 条件:ボタンにクラス名 send がついていること function resultBtDisablead(){ var cnt1 = $('.checkNum input:checkbox:checked').length; console.log(cnt1); if(cnt1 == 0) { $(".send").prop('disabled',true); } else { $(".send").prop('disabled',false); } } // 数字-以外を許さない入力チェック function checkNumberForm($this) { var str=$this.value; while(str.match(/[^\d\-]/)) { str=str.replace(/[^\d\-]/,""); } $this.value=str; } // 数字以外を許さない入力チェック function checkNumberOnlyForm($this) { var str=$this.value; while(str.match(/[^\d]/)) { str=str.replace(/[^\d]/,""); } $this.value=str; } // メニューへボタンの関数 // 機能概要:マスターメンテメニュー画面に遷移する function backToMainteMenu(loadingElemId = '_loading'){ sessionStorage.clear(); // ローディング表示 showLoading(loadingElemId); location.href = "/masterMainte/masterMainteMenu"; } // 確認ダイアログ function confirmDialog(strMesssage) { var result = confirm(strMesssage); return result; } function formInsertBtDisabled(){ var validFlg = false; if(document.getElementById("csvFile").value === ""){ validFlg = true; } if (validFlg == true) { document.getElementById("confirm").disabled = true; } else { document.getElementById("confirm").disabled = false; } }