GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。 NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは 別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
別記資料 スクリプト(Scripts)全文 (7/28)
/*
@config :
@filename : 02_プロセス処理スクリプト.js
@title : 02_プロセス処理スクリプト.js
@name :
@siteIds :
@siteTitles : プロセス実行前の処理
@disabled: false
*/
//プロセスボタンから呼び出す共通ディスパッチャ(雛形)
//Process定義側のOnClickは $p.ex.processScript($(this)); の形(ボタン要素そのものを渡す形)で呼び出す想定。
//procNum(数値文字列)ではなく、ボタンの表示ラベル文字列(procName)で処理を振り分ける方針(②サイトに倣う)。
//プロセス再設計時、switch内にプロセス名ごとのcaseを追加していく。
$p.ex.processScript = async function (target) {
let $btn = $(target);
if (!$btn.length) {
console.log('processScript: 対象ボタンが取得できませんでした');
return false;
}
let procName = $btn.text().replace(/^\s+/, '').trim();
console.log('processScript ' + procName);
//確認ダイアログを出さないプロセス名。ここにprocNameを追加すると、そのプロセスはconfirmをスキップして即実行する
let noConfirmProcesses = [];
switch (procName) {
case '登録完了':
//実行者:登録者(本人限定、Process側View.ColumnFilterHash: ClassB=Ownで担保)
//要入力チェックあり(Process側ValidateInputsで担保)
//確認プロンプトあり
let popMessage1 = '"' + procName + '" 処理を実行します。よろしいですか?';
if (!confirm(popMessage1)) return;
break;
default:
let popMessage = '"' + procName + '" 処理を実行します。よろしいですか?';
if (!noConfirmProcesses.includes(procName) && !confirm(popMessage)) return;
break;
}
//プロセス実行
$p.execProcess($btn);
//プロセス側で設定した入力検証(ValidateInputs)が未入力エラーになった場合、
//Pleasanterが対象項目へ<label id="Results_XXX-error" class="error" for="Results_XXX">入力必須項目です。</label>を
//動的追加する。これを拾い、for属性から通常のフィールドラベル(class="error"でない方)を逆引きして
//まとめて下部にアラート表示する(必須項目名はスクリプト内にハードコードしない、②サイトと同じ方式)
setTimeout(function () {
let $errorLabels = $('label.error[id$="-error"]');
if ($errorLabels.length) {
let labelTexts = [];
$errorLabels.each(function () {
let forAttr = $(this).attr('for');
let $fieldLabel = $('label[for="' + forAttr + '"]').not('.error').first();
labelTexts.push($fieldLabel.length ? $fieldLabel.text().trim() : forAttr);
});
$p.ex.setMyMessage('new-status-red', labelTexts.join('、') + ' は必須項目です。入力してください。');
}
}, 300);
}