プロジェクト

全般

プロフィール

バグ #149

未完了

【実装】Redmineカンバンビュー拡張機能(task2.call2arm.com)

Redmine Admin さんが5日前に追加. 5日前に更新.

ステータス:
解決
優先度:
通常
担当者:
-
開始日:
2025-06-02
期日:
進捗率:

0%

予定工数:

説明

概要

Redmineカンバンビュー拡張機能の実装を行う。実装環境は task2.call2arm.com。

実装項目

  1. 開発環境セットアップ

    • プラグイン開発環境構築
    • バージョン管理設定
    • デバッグ環境構築
  2. チケットパネル詳細ボタン実装

    • HTMLテンプレート修正
    • CSS実装
    • JavaScript実装
  3. 担当者別カンバンビュー実装

    • コントローラー実装
    • モデル実装
    • ビュー実装
    • ルーティング設定
  4. 日次/週次/月次フィルター実装

    • フィルターUI実装
    • 日付計算ロジック実装
    • フィルタリング機能実装
  5. テスト実装

    • 単体テスト
    • 統合テスト
    • E2Eテスト

成果物

  • ソースコード
  • コメント付きコード
  • テストコード
  • 開発ドキュメント

参考コード

# チケットパネルに詳細ボタンを追加する例
# app/views/kanban/_issue_card.html.erb に追加

<div class="card-actions">
  <%= link_to l(:button_details), issue_path(issue), 
      :class => 'button details-button', 
      :title => l(:label_view_issue_details),
      :target => '_blank' %>
</div>

<style>
  .card-actions {
    margin-top: 5px;
    text-align: right;
  }
  
  .details-button {
    padding: 2px 5px;
    background-color: #f0f0f0;
    border: 1px solid #ccc;
    border-radius: 3px;
    font-size: 0.8em;
  }
  
  .details-button:hover {
    background-color: #e0e0e0;
  }
</style>
# 担当者別カンバンビューのコントローラーメソッド例
# app/controllers/kanban_controller.rb に追加

def assignee_view
  @project = Project.find(params[:project_id]) if params[:project_id]
  
  # フィルタ条件を設定
  @query = IssueQuery.new(:name => "_")
  @query.project = @project
  
  # 日付範囲フィルタ
  if params[:date_period]
    case params[:date_period]
    when 'daily'
      @start_date = Date.today
      @end_date = Date.today
    when 'weekly'
      @start_date = Date.today.beginning_of_week
      @end_date = Date.today.end_of_week
    when 'monthly'
      @start_date = Date.today.beginning_of_month
      @end_date = Date.today.end_of_month
    else
      # カスタム日付範囲
      @start_date = params[:start_date].present? ? params[:start_date].to_date : Date.today
      @end_date = params[:end_date].present? ? params[:end_date].to_date : Date.today
    end
    
    @query.add_filter('start_date', '>=', [@start_date.to_s])
    @query.add_filter('due_date', '<=', [@end_date.to_s])
  end
  
  # 担当者を取得
  @assignees = @project ? @project.members.map(&:user).uniq : User.active
  
  # ステータス(列)を取得
  @statuses = IssueStatus.all.sorted
  
  # 担当者ごとのチケットを整理
  @assignee_issues = {}
  @assignees.each do |assignee|
    query = @query.dup
    query.add_filter('assigned_to_id', '=', [assignee.id.to_s])
    @assignee_issues[assignee.id] = query.issues
  end
  
  render 'assignee_view'
end

現状

実装前の初期段階。設計の完了を待っている状態。

他の形式にエクスポート: Atom PDF