4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

担当者と進捗率を自動で設定したり、ヘルプを表示したりViewCustomizeでやってみる

Last updated at Posted at 2017-04-09

担当者と進捗率を自動で設定したり、ヘルプを表示したりViewCustomizeでやってみる

をあるトラッカーに対して、強引に実施しています。
(いろいろ手抜きですが、すみません。。。)

  • 担当者と進捗率を自動で設定

  • Topメニューに「このステータスでやる事」をポップアップするリンクを表示

  • チケットの最初にも「このステータスでやる事」を表示

help.PNG

  • 次の担当者に向けたコメントを自動入力するポップアップを表示

input.PNG

  • あるステータスでは、編集ボタンを自動クリック(カスタムフィールドに記入してほしい為)

  • あるステータスでは、記入箇所の背景色をハイライト表示

hilight.PNG

ソース

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

4
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?