newdwh2021/ecs/jskult-webapp/src/static/function/businessLogicScript.js

320 lines
9.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ローディング
/**
* ローディングクラス
* @param {string} loading_elem_id ローディングのHTML要素
*/
class Loading {
constructor(loadingElemId = '_loading') {
this.loadingElemId = loadingElemId;
// ロード中かどうか
this.isLoading = false;
}
/**
* ローディングを開始する。<br>
* 開始済みの場合と、ローディングの要素が見つからない場合は何もしない。
*/
start() {
if (this.isLoading)
return;
const loadingElem = document.getElementById(this.loadingElemId);
if (loadingElem) {
this.isLoading = true;
loadingElem.style.display = 'block';
}
}
/**
* ローディングを停止する。<br>
* 開始されていない場合と、ローディングの要素が見つからない場合は何もしない。
*/
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/";
}
// クリアボタンの関数
// 利用条件form名がsearch
// 利用条件2form入力値名が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/00yyyy/00/00の場合→yyyy/01/01yyyy/12/31
// yyyy/MM/00yyyy/MM/01の場合→yyyy/MM/01yyyy/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;
}
}