Merge pull request #252 feature-NEWDWH2021-1182 into develop

This commit is contained in:
朝倉 明日香 2023-08-21 11:03:17 +09:00
commit 76e6b0e5b6
16 changed files with 206 additions and 81 deletions

View File

@ -317,25 +317,3 @@ table.tablesorter thead tr .headerSortDown {
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
background-color: #8dbdd8;
}
#loading {
z-index: 10000;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #FFF;
overflow-x: hidden;
overflow-y: auto;
outline: 0;
text-align: center;
display: none;
opacity: 0.7;
}
#loading_content {
position: absolute;
top: 50%;
left: 50%;
}

View File

@ -0,0 +1,21 @@
._loading {
z-index: 10000;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #FFF;
overflow-x: hidden;
overflow-y: auto;
outline: 0;
text-align: center;
display: none;
opacity: 0.7;
}
._loading_content {
position: absolute;
top: 50%;
left: 50%;
}

View File

@ -1,8 +1,75 @@
// ローディング
/**
* ローディングクラス
* @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/";
}
@ -224,8 +291,10 @@ function checkNumberOnlyForm($this)
// メニューへボタンの関数
// 機能概要:マスターメンテメニュー画面に遷移する
function backToMainteMenu(){
function backToMainteMenu(loadingElemId = '_loading'){
sessionStorage.clear();
// ローディング表示
showLoading(loadingElemId);
location.href = "/masterMainte/masterMainteMenu";
}

View File

@ -8,6 +8,7 @@
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<link rel="stylesheet" href="/static/css/pagenation.css">
<link rel="stylesheet" href="/static/css/datepicker.css">
<link rel="stylesheet" href="/static/css/loading.css">
<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
<script src="https://pagination.js.org/dist/2.5.0/pagination.min.js" crossorigin="anonymous"></script>

View File

@ -0,0 +1,5 @@
<div class="_loading" id="{{id or '_loading'}}">
<div class="_loading_content">
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>{{progress_message}}
</div>
</div>

View File

@ -198,10 +198,12 @@
<input type="checkbox" name="ikoFlg" value="true" {{bio.is_checked_iko_flg()}} style="display: none;">
</form>
<!-- CSV/Excelダウンロードボタン。ここはajaxでやってる -->
<!-- CSV/Excelダウンロード処理-->
<script type="text/javascript">
function download(filename, ext) {
$(`#loading`).toggle()
// ローディング開始
const loading = new Loading();
loading.start();
// 検索パラメータを取得
const formData = $('#bio_download').serializeArray()
@ -237,7 +239,8 @@
}
// S3の期限付き署名URLがレスポンスされる
window.location.href = data.download_url;
$(`#loading`).toggle();
// ローディング停止
loading.stop();
$(`#modal_${ext}`).modal('toggle');
} catch (e) {
alert("エラーが発生しました。:" + e.message);
@ -246,20 +249,20 @@
error: function(jqXHR, textStatus, errorThrown) {
const responseJson = jqXHR.responseJSON
if (responseJson?.detail?.error === 'db_error') {
$(`#loading`).toggle();
loading.stop()
$(`#modal_${ext}`).modal('toggle');
$(`#ErrorModal_DB`).modal('toggle');
return
}
if (responseJson?.detail?.error === 'aws_error') {
$(`#loading`).toggle();
loading.stop();
$(`#modal_${ext}`).modal('toggle');
$(`#ErrorModal_AWS`).modal('toggle');
return
}
// 予期せぬエラーが発生した場合
$(`#loading`).toggle();
loading.stop();
$(`#modal_${ext}`).modal('toggle');
$(`#ErrorModal_Unexpected`).modal('toggle');
return
@ -473,10 +476,8 @@
{% endwith %}
<!-- ローディング -->
<div id="loading">
<div id="loading_content">
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>出力中...
</div>
</div>
{% with progress_message = '出力中...'%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -45,7 +45,7 @@
<!-- 上部のボタン -->
<table class="instHeaderTable">
<tr>
<form id="instInfo" name="instInfo" method="post" action="/ultmarc/docInfo">
<form id="instInfo" name="instInfo" method="post" action="/ultmarc/docInfo" onsubmit="showLoading()">
<input type="hidden" name="doc_id" value="{{ultmarc.doc_id}}">
<input type="hidden" name="page_num" id="page_num" value="{{ultmarc.page_num}}">
<td class="instHeaderTd">
@ -58,7 +58,7 @@
<input type="button" name="next" id="next" value="次" class="transitionBt" {{ultmarc.is_disabled_next()}}>
</td>
</form>
<form id="instSearch" name="instSearch" method="post" action="/ultmarc/docSearch">
<form id="instSearch" name="instSearch" method="post" action="/ultmarc/docSearch" onsubmit="showLoading()">
<script>
var form = document.getElementById("instSearch");
for (var i = 0, length = sessionStorage.length; i < length; ++i) {
@ -188,16 +188,17 @@
</tr>
</thead>
<script>
function OnLinkClick(){
function transitionWithClearSearchItem(link) {
sessionStorage.clear();
return true;
transitionTo(link)
return false;
}
</script>
<tbody>
{% for doctor_wrkplace_data in ultmarc.doctor_wrkplace_data %}
{% if doctor_wrkplace_data.dcf_dsf_inst_cd %}
<tr>
<td><a href="/ultmarc/instInfo?id={{doctor_wrkplace_data.dcf_dsf_inst_cd or ''}}" onclick="OnLinkClick();">
<td><a href="javascript:void(0);" onclick="transitionWithClearSearchItem('/ultmarc/instInfo?id={{doctor_wrkplace_data.dcf_dsf_inst_cd}}');">
{{doctor_wrkplace_data.dcf_dsf_inst_cd or ''}}</a></td>
<td>{{doctor_wrkplace_data.inst_name_kanji or ''}}</td>
<td>{{doctor_wrkplace_data.blng_sec_name or ''}}</td>
@ -211,7 +212,7 @@
{% for doctor_wrkplace_his_data in ultmarc.doctor_wrkplace_his_data %}
{% if doctor_wrkplace_his_data.dcf_dsf_inst_cd %}
<tr>
<td><a href="/ultmarc/instInfo?id={{doctor_wrkplace_his_data.dcf_dsf_inst_cd or ''}}" onclick="OnLinkClick();">
<td><a href="javascript:void(0);" onclick="transitionWithClearSearchItem('/ultmarc/instInfo?id={{doctor_wrkplace_his_data.dcf_dsf_inst_cd}}');">
{{doctor_wrkplace_his_data.dcf_dsf_inst_cd or ''}}</a></td>
<td>{{doctor_wrkplace_his_data.inst_name_kanji or ''}}</td>
<td>{{doctor_wrkplace_his_data.blng_sec_name or ''}}</td>
@ -225,6 +226,9 @@
</tbody>
</table>
</div>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -35,7 +35,7 @@
<td class="docHeaderTd docHeaderTdRight"><button class="docHeader_bt" onclick="backToMenu()">メニューへ</button></td>
</tr>
</table>
<form id="doctor_search" class="_form" name="search" action="/ultmarc/docSearch" method="POST">
<form id="doctor_search" class="_form" name="search" action="/ultmarc/docSearch" method="POST" onsubmit="showLoading()">
<table class="docSearchTableDivTwo">
<tbody>
<tr>
@ -213,13 +213,16 @@
// ページ送りしたときにヘッダがずれるのを修正
FixedMidashi.remove();
FixedMidashi.create();
// ページ送りしたときに医師情報ボタンを非活性化
resultBtDisabled();
}
})
});
function OnLinkClick(){
function transitionWithClearSearchItem(link) {
sessionStorage.clear();
return true;
transitionTo(link)
return false;
}
function pagination_content(datas) {
@ -237,9 +240,9 @@
let td = display_keys.map((key) =>{
let inner_content = data[key];
if(key=='dcf_pcf_dr_cd')
inner_content = `<a href="/ultmarc/docInfo?id=${data['dcf_pcf_dr_cd']}">${data['dcf_pcf_dr_cd'] || ''}</a>`;
inner_content = `<a href="javascript:void(0);" onclick="transitionTo('/ultmarc/docInfo?id=${data['dcf_pcf_dr_cd']}')">${data['dcf_pcf_dr_cd'] || ''}</a>`;
if(key=='dcf_dsf_inst_cd')
inner_content = `<a href="/ultmarc/instInfo?id=${data['dcf_dsf_inst_cd']}" onclick="OnLinkClick()">${data['form_inst_name_kanji'] || ''}</a>`;
inner_content = `<a href="javascript:void(0);" onclick="transitionWithClearSearchItem('/ultmarc/instInfo?id=${data['dcf_dsf_inst_cd']}')">${data['form_inst_name_kanji'] || ''}</a>`;
return `<td>${inner_content || ''}</td>`
});
return `
@ -287,7 +290,13 @@
vals.push( $(this).val() ); // 配列に値を追加
});
$("#doc_id").val(vals.join(','));
// ローダー表示
showLoading();
}
</script>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -29,7 +29,7 @@
function Form_Submit_Disp_Dialog(){
var msg = 'CSVファイルを出力しますか';
if (confirmDialog(msg)) {
document.getElementById("loading").style.display = "block";
showLoading();
document.getElementById("csvOutputMsg").style.display = "none";
} else {
return false;
@ -45,7 +45,7 @@
<table class="headerTable">
<tr>
<td class="headerTdLeft"><h1>施設担当者データCSVダウンロード</h1></td>
<td class="headerTdRight"><input type="button" name="back" class="header_buttonSize" value="メニューへ" onclick="backToMainteMenu()"></td>
<td class="headerTdRight"><input type="button" name="back" class="header_buttonSize" value="メニューへ" onclick="backToMainteMenu('_loading_for_back')"></td>
</tr>
</table>
</h1>
@ -179,9 +179,14 @@
<div id="csvOutputMsg" class="csvOutputMessage">{{mainte_csv_dl.result_msg}}</div>
{% endif %}
{% endif %}
<div id="loading" class="csvOutputMessage" style="display:none;">
<p>処理中...<br>しばらくお待ち下さい。</p>
</div>
</p>
<!-- ダウンロード用 -->
{% with progress_message = '処理中...しばらくお待ち下さい。'%}
{% include '_loading.html' %}
{% endwith %}
<!-- 戻るボタン用 -->
{% with progress_message = '', id = '_loading_for_back' %}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -36,7 +36,7 @@
var element = document.getElementById("upload_form")
sessionStorage.setItem("ctrl_select_function", element.ctrl_select_function.value);
sessionStorage.setItem("ctrl_select_table", element.ctrl_select_table.value);
document.getElementById("loading").style.display = "block";
showLoading();
if (document.getElementById("ulMsg") !== null) {
document.getElementById("ulMsg").style.display = "none";
}
@ -45,7 +45,7 @@
function Form_Submit_Disp_Dialog(){
var msg = '{{ mainte_csv_up.select_function_message }}';
if (confirmDialog(msg)) {
document.getElementById("loading").style.display = "block";
showLoading();
if (document.getElementById("ulMsg") !== null) {
document.getElementById("ulMsg").style.display = "none";
}
@ -66,7 +66,7 @@
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}
<input type="button" class="header_buttonSize" onclick="location.href='/masterMainte/instEmpCsvUL' " value="戻る">
{% else %}
<input type="button" class="header_buttonSize" onclick="backToMainteMenu()" value="メニューへ" />
<input type="button" class="header_buttonSize" onclick="backToMainteMenu('_loading_for_back')" value="メニューへ" />
{% endif %}
</td>
</tr>
@ -165,9 +165,6 @@
</form>
<p>
<!-- 処理中メッセージ表示 -->
<div id="loading" class="csvOutputMessage" style="display:none;">
<p>処理中...<br>しばらくお待ち下さい。</p>
</div>
{% if not mainte_csv_up.is_error_message_list_empty() %}
<div id="ulMsg" class="footerMsg errorColor">
{% for error_message in mainte_csv_up.error_message_list %}
@ -203,5 +200,14 @@
</div>
{% endif %}
</p>
<!-- ローディング -->
<!-- 登録処理用 -->
{% with progress_message = '処理中...しばらくお待ち下さい。'%}
{% include '_loading.html' %}
{% endwith %}
<!-- 戻るボタン用 -->
{% with progress_message = '', id = '_loading_for_back' %}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -41,13 +41,13 @@
<!-- 上部のボタン -->
<table class="instHeaderTable">
<tr>
<form name="docSearch" method="post" action="/ultmarc/docSearch">
<form name="docSearch" method="post" action="/ultmarc/docSearch" onsubmit="showLoading()">
<td class="instHeaderTd">
<input type="hidden" name="ctrl_dcf_dsf_inst_cd" value="{{ultmarc.inst_info_data.dcf_dsf_inst_cd or ''}}">
<input name="docSearchBt" class="transitionBt" type="submit" value="勤務医師" {{ultmarc.is_disabled_doctor_wrkplace()}}>
</td>
</form>
<form id="instInfo" name="instInfo" method="post" action="/ultmarc/instInfo">
<form id="instInfo" name="instInfo" method="post" action="/ultmarc/instInfo" onsubmit="showLoading()">
<input type="hidden" name="inst_id" value="{{ultmarc.inst_id}}">
<input type="hidden" name="page_num" id="page_num" value="{{ultmarc.page_num}}">
<td class="instHeaderTd">
@ -86,6 +86,8 @@
}else{
$('#instSearch').attr('method', 'POST');
}
// ローディングを表示
showLoading();
return true;
}
</script>
@ -283,5 +285,9 @@
</tr>
</tbody>
</table>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -37,7 +37,7 @@
</tr>
</table>
<!-- 入力フォーム -->
<form id="inst_search" class="_form" name="search" action="/ultmarc/instSearch" method="POST">
<form id="inst_search" class="_form" name="search" action="/ultmarc/instSearch" method="POST" onsubmit="showLoading()">
<table class="search_table">
<tbody>
<tr>
@ -211,6 +211,8 @@
// ページ送りしたときにヘッダがずれるのを修正
FixedMidashi.remove();
FixedMidashi.create();
// ページ送りしたときに施設情報ボタンを非活性化
resultBtDisabled();
}
})
});
@ -232,7 +234,7 @@
let td = display_keys.map((key) =>{
let inner_content = data[key];
if(key=='dcf_dsf_inst_cd')
inner_content = `<a href="/ultmarc/instInfo?id=${data['dcf_dsf_inst_cd']}">${data['dcf_dsf_inst_cd'] || ''}</a>`;
inner_content = `<a href="javascript:void(0);" onclick="transitionTo('/ultmarc/instInfo?id=${data['dcf_dsf_inst_cd']}')">${data['dcf_dsf_inst_cd'] || ''}</a>`;
if(key=='abolish_ymd' && data[key] != null)
inner_content = '削除';
return `<td>${inner_content || ''}</td>`
@ -281,9 +283,14 @@
vals.push( $(this).val() ); // 配列に値を追加
});
$("#inst_id").val(vals.join(','));
// ローダー表示
showLoading();
}
</script>
</body>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</html>

View File

@ -13,7 +13,7 @@
Mainte Login
</h1>
<br><br>
<form name="login" class="text-center" method="post" action="/login/maintlogin">
<form name="login" class="text-center" method="post" action="/login/maintlogin" onsubmit="showLoading()">
<div class="form-group">
<input type="text" name="ctrl_username" maxlength='10' style="ime-mode:disabled;" placeholder="UserID" class="form_login" onchange="formBtDisabled('login_button', 'login', true)">
<input type="password" name="ctrl_password" style="ime-mode:disabled;" placeholder="Password" class="form_login" onchange="formBtDisabled('login_button', 'login', true)" onkeyup="formBtDisabled('login_button', 'login', true)" oninput="checkPassForm(this)">
@ -21,5 +21,9 @@
<input type="submit" id="login_button" name="login" class="btn btn-info btn-lg btn_width" id="submit" value="Login">
</form>
</div>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -10,16 +10,17 @@
<h1>MeDaCA<br/>マスターメンテメニュー</h1>
<br><br>
<!-- 施設担当者データCSVアップロード -->
<a href="/masterMainte/instEmpCsvUL" class="btn btn-primary btn-lg btn_width">施設担当者データCSVアップロード</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/masterMainte/instEmpCsvUL')" class="btn btn-primary btn-lg btn_width">施設担当者データCSVアップロード</a><br><br>
<!-- 施設担当者データCSVダウンロード -->
<a href="/masterMainte/instEmpCsvDL" class="btn btn-primary btn-lg btn_width">施設担当者データCSVダウンロード</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/masterMainte/instEmpCsvDL')" class="btn btn-primary btn-lg btn_width">施設担当者データCSVダウンロード</a><br><br>
<!-- データ上書きコピー -->
<a href="/masterMainte/tableOverride" class="btn btn-primary btn-lg btn_width">テーブル上書きコピー</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/masterMainte/tableOverride')" class="btn btn-primary btn-lg btn_width">テーブル上書きコピー</a><br><br>
<!-- 機能メニューへ -->
<br><br><a href="/menu/" class="btn btn-info btn-lg btn_width">メニューへ</a>
<br><br><a href="javascript:void(0);" onclick="transitionTo('/menu/')" class="btn btn-info btn-lg btn_width">メニューへ</a>
</div>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -11,14 +11,14 @@
<h1>MeDaCA<br/>機能メニュー</h1>
<br><br>
{% if menu.is_available_ult_doctor_menu() %}
<a href="/ultmarc/docSearch" class="btn btn-primary btn-lg btn_width">Ultmarc照会医師</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/ultmarc/docSearch')" class="btn btn-primary btn-lg btn_width">Ultmarc照会医師</a><br><br>
{% endif %}
{% if menu.is_available_ult_inst_menu() %}
<a href="/ultmarc/instSearch" class="btn btn-primary btn-lg btn_width">Ultmarc照会施設</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/ultmarc/instSearch')" class="btn btn-primary btn-lg btn_width">Ultmarc照会施設</a><br><br>
{% endif %}
{% if menu.is_available_bio_menu() %}
{% if not menu.is_batch_processing() %}
<a href="/bio/BioSearchList" class="btn btn-primary btn-lg btn_width">生物由来データ参照</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/bio/BioSearchList')" class="btn btn-primary btn-lg btn_width">生物由来データ参照</a><br><br>
{% else %}
<div class="notUseBioMsg">生物由来データ参照は <br> 日次バッチ処理中のため利用出来ません</div>
{% endif %}
@ -29,10 +29,14 @@
{% elif menu.is_backup_processing() %}
<div class="notUseMainteMsg"> バックアップ取得を開始しました。 <br>日次バッチ更新が終了するまでマスターメンテメニューは利用できません</div>
{% else %}
<a href="/masterMainte/masterMainteMenu" class="btn btn-primary btn-lg btn_width">マスターメンテメニュー</a><br><br>
<a href="javascript:void(0);" onclick="transitionTo('/masterMainte/masterMainteMenu')" class="btn btn-primary btn-lg btn_width">マスターメンテメニュー</a><br><br>
{% endif %}
{% endif %}
<br><br><a href="/logout/?reason=do_logout" class="btn btn-info btn-lg btn_width">Logout</a>
<br><br><a href="javascript:void(0);" onclick="transitionTo('/logout/?reason=do_logout')" class="btn btn-info btn-lg btn_width">Logout</a>
</div>
<!-- ローディング -->
{% with progress_message = ''%}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>

View File

@ -11,7 +11,7 @@
function Form_Submit_Disp_Dialog(){
var msg = "ダミー従業員担当施設マスタのデータがすべて上書きされます。よろしいですか?"
if (confirmDialog(msg)) {
document.getElementById("loading").style.display = "block";
showLoading();
document.getElementById("overRided").style.display = "none";
} else {
return false;
@ -25,7 +25,7 @@
<table class="headerTable">
<tr>
<td class="headerTdLeft"><h1>テーブル上書きコピー</h1></td>
<td class="headerTdRight"><input type="button" name="back" class="header_buttonSize" value="メニューへ" onclick="backToMainteMenu()"></td>
<td class="headerTdRight"><input type="button" name="back" class="header_buttonSize" value="メニューへ" onclick="backToMainteMenu('_loading_for_back')"></td>
</tr>
</table>
</h1>
@ -53,9 +53,13 @@
<div id="overRided" class="csvOutputMessage">ダミー従業員担当施設マスタのデータを本番従業員担当施設マスタのデータで上書きしました</div>
</p>
{% endif %}
<div id="loading" class="csvOutputMessage" style="display:none;">
<p>データ上書き中...<br>しばらくお待ち下さい。</p>
</div>
<!-- 上書き用 -->
{% with progress_message = 'データ上書き中...しばらくお待ち下さい。'%}
{% include '_loading.html' %}
{% endwith %}
<!-- 戻るボタン用 -->
{% with progress_message = '', id = '_loading_for_back' %}
{% include '_loading.html' %}
{% endwith %}
</body>
</html>