// ローディング
/**
* ローディングクラス
* @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.name == 'ikoFlg' || formInput.name == 'delFlg_ctrl'){
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;
}
}