担当者と進捗率を自動で設定したり、ヘルプを表示したりViewCustomizeでやってみる
をあるトラッカーに対して、強引に実施しています。
(いろいろ手抜きですが、すみません。。。)
-
担当者と進捗率を自動で設定
-
Topメニューに「このステータスでやる事」をポップアップするリンクを表示
-
チケットの最初にも「このステータスでやる事」を表示
- 次の担当者に向けたコメントを自動入力するポップアップを表示
-
あるステータスでは、編集ボタンを自動クリック(カスタムフィールドに記入してほしい為)
-
あるステータスでは、記入箇所の背景色をハイライト表示
ソース
Path pattern:
/issues/new$|/issues/[0-9]+
Type:
JavaScript
Code:
/* 機能導入チケット */
$(function()
{
var nowStatusId = $('#issue_status_id').val();
var trackerId = $('#issue_tracker_id').val();
var autoSetDone = 0;
/* このステータスでやる事 (概略) */
switch(trackerId)
{
case '2'://機能
/* ステータスとコメントの組み合わせ */
var statusToExplainComment = {
'1' : "★このステータスでやる事<br>" +
"1) 依頼者と事前打ち合わせする<br>" +
"2) タイトルを記入する<br>" +
"3) ステータスを**に変更する",
'2' : "★このステータスでやる事<br>" +
"1) 担当者を設定する<br>" +
"2) ステータスを**に変更する", /* 進行中 */
'3' : "33333333333", /* 解決 */
'4' : "44444444444", /* フィードバック */
'5' : "55555555555", /* 終了 */
'6' : "66666666666", /* 却下 */
};
break;
default:
/* DO NOTHING */
break;
}
/* このステータスでやる事 (詳細説明)*/
var funcTodoDisp = function ()
{
var dispOn = 0;
trackerId = $('#issue_tracker_id').val();
switch(trackerId)
{
case '2'://機能
/* ステータスとコメントの組み合わせ */
var statusToComment = {
'1' : "【新規】\n" +
"・事前打ち合わせ後、ステータスを変更して下さい\n" +
"\n" +
"<このステータスの対象者>\n依頼を受けた者 or 作業担当者",
'2' : "22222222222", /* 進行中 */
'3' : "33333333333", /* 解決 */
'4' : "44444444444", /* フィードバック */
'5' : "55555555555", /* 終了 */
'6' : "66666666666", /* 却下 */
};
dispOn = 1;
break;
default:
dispOn = 0;
break;
}
if (dispOn)
{
var comment = statusToComment [nowStatusId];
if (comment)
{
alert(comment);
}
else
{
alert('コメントなし');
}
}
else
{
alert('コメントなし');
}
return false;
}
/* ステータス毎に背景変えたい */
function funcAutoColorSet(sts)
{
switch(sts)
{
case '2'://進行中
/* このステータスでは編集ボタンを押してあげる */
$("div.contextual a.icon.icon-edit").click();
/* 記入エリアに色を付けてあげる */
$('#issue_custom_field_values_10').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_7').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_6').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_5').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_4').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_3').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_2').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_1').css({'background-color': 'lavenderblush'}); //背景色
break;
case '3'://解決
/* 記入エリアに色を付けてあげる */
$('#issue_custom_field_values_11').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_9').css({'background-color': 'lavenderblush'}); //背景色
$('#issue_custom_field_values_8').css({'background-color': 'lavenderblush'}); //背景色
break;
default:
/* DO NOTHING */
break;
}
}
/* ステータス変更で担当者と進捗率を自動設定 */
var funcAutoSet = function()
{
/* ajax更新後にステータス変更をチェック開始 */
$(document).ajaxComplete(function()
{
/* ステータス毎に背景変えたい部分(編集ボタン押したら色付けたい) */
funcAutoColorSet(nowStatusId);
/* ステータス変更された時だけ自動設定処理を実行する */
$('#issue_status_id').change(function(){
autoSetDone = 0;
return false;
});
if (autoSetDone == 0)
{
autoSetDone = 1;
var notes = "";
var addComment = "";
var commentTo = "";
if (document.getElementById("issue_notes") != null)
{
notes = $('#issue_notes').val(); //記入済み注記をバックアップ
}
else
{
/* DO NOTHING */
}
var selectStatusId = $('#issue_status_id option:selected').val();
switch(selectStatusId)
{
case '1': /* 新規 */
$('#issue_assigned_to_id').val(1);
$('#issue_done_ratio').val(0);
commentTo = $('#issue_assigned_to_id option:selected').text();
addComment = "★" + commentTo + "さん、記入をお願いします。";
break;
case '2': /* 進行中 */
$('#issue_assigned_to_id').val($('#issue_custom_field_values_3').val());
$('#issue_done_ratio').val(30);
commentTo = $('#issue_assigned_to_id option:selected').text();
addComment = "★" + commentTo + "さん、記入をお願いします。";
break;
case '3': /* 解決 */
$('#issue_assigned_to_id').val($('#issue_custom_field_values_4').val());
$('#issue_done_ratio').val(50);
commentTo = $('#issue_assigned_to_id option:selected').text();
addComment = "★" + commentTo + "さん、記入をお願いします。";
break;
case '4': /* フォードバック */
$('#issue_assigned_to_id').val($('#issue_custom_field_values_1').val());
$('#issue_done_ratio').val(70);
commentTo = $('#issue_assigned_to_id option:selected').text();
addComment = "★" + commentTo + "さん、記入をお願いします。";
break;
case '5': /* 終了 */
$('#issue_assigned_to_id').val($('#issue_custom_field_values_2').val());
$('#issue_done_ratio').val(100);
commentTo = $('#issue_assigned_to_id option:selected').text();
addComment = "★" + commentTo + "さん、記入をお願いします。";
break;
case '6': /* 却下 */
/* 進捗率を変更しない */
commentTo = $('#issue_assigned_to_id option:selected').text();
addComment = "★" + commentTo + "さん、記入をお願いします。";
break;
default:
alert("default default");
/* DO NOTHING */
break;
}
if (document.getElementById("issue_notes") != null)
{//注記あり
/* 注記にコメント追加 */
var inputComment = prompt(commentTo + "さんへのコメント----------------------------",addComment);
if ((inputComment == "") || (inputComment == null))
{
// DO NOTHING
}
else
{
if(notes > "")
{
notes = inputComment + "\n" + notes; //記入ありは改行追加後
}
else
{
notes = inputComment;
}
}
$('#issue_notes').blur().focus().val(notes);
}
else
{//注記なし
/* DO NOTHING */
}
return false;
}
else
{// 自動設定しないケース
/* DO NOTHING */
}
})//$(document).ajaxComplete(function()
return false;
}
/* MAIN部 */
var $todo = $('#top-menu > #loggedas'); //リンク表示場所
/* やる事リンクボタン表示 */
$('<a href="#" >このステータスでやる事</a>').prependTo($todo).click(funcTodoDisp);
if (trackerId == '2') //機能
{
/* やる事概略を表示 */
var explainComment = statusToExplainComment [nowStatusId];
var $myExplain = $("<p id='myexplain'>" + explainComment + "</p>");
$('#content .issue:first').before($myExplain); //説明文
$('#myexplain').css({'background-color': 'lavenderblush'}); //背景色
/* ステータス毎に背景変えたい部分 */
funcAutoColorSet(nowStatusId);
/* ステータス変更時のみ自動設定開始する */
$('#issue_status_id').change(function(){
autoSetDone = 0;
/* 担当と進捗 自動設定 */
funcAutoSet();
return false;
});
}
else
{
/* DO NOTHING */
}
});
※参考記事
↓ Enjoy*Study (onozatyさん) ↓
View customize plugin


