Project

General

Profile

Defect #7280 » gantt_truncate_subjects_add_tooltip.diff

Anonymous, 2011-02-21 15:56

View differences:

app/views/gantts/show.html.erb
60 60
# Width of the entire chart    
61 61
g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
62 62

  
63
@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width)
63
@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width)
64 64

  
65 65
g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
66 66
t_height = g_height + headers_height
lib/redmine/helpers/gantt.rb
263 263
      def subject_for_project(project, options)
264 264
        case options[:format]
265 265
        when :html
266
          subject = "<span class='icon icon-projects #{project.overdue? ? 'project-overdue' : ''}'>"
266
          text_style = "width:#{options[:subject_width]-options[:indent]-20}px;" if options[:subject_width]
267

  
268
          subject = "<span class=\"gantt_subject-text icon icon-projects #{project.overdue? ? 'project-overdue' : ''}\""
269
          subject << " title=\"#{project.name}\""
270
          subject << " style=\"#{text_style}\"" if text_style
271
          subject << '>'
267 272
          subject << view.link_to_project(project)
268 273
          subject << '</span>'
269 274
          html_subject(options, subject, :css => "project-name")
......
301 306
      def subject_for_version(version, options)
302 307
        case options[:format]
303 308
        when :html
304
          subject = "<span class='icon icon-package #{version.behind_schedule? ? 'version-behind-schedule' : ''} #{version.overdue? ? 'version-overdue' : ''}'>"
309
          text_style = "width:#{options[:subject_width]-options[:indent]-20}px;" if options[:subject_width]
310

  
311
          subject = "<span class=\"gantt_subject-text icon icon-package #{version.behind_schedule? ? 'version-behind-schedule' : ''} #{version.overdue? ? 'version-overdue' : ''}\""
312
          subject << " title=\"#{version.to_s_with_project}\""
313
          subject << " style=\"#{text_style}\"" if text_style
314
          subject << '>'
305 315
          subject << view.link_to_version(version)
306 316
          subject << '</span>'
307 317
          html_subject(options, subject, :css => "version-name")
......
345 355
          
346 356
        output = case options[:format]
347 357
        when :html
348
          css_classes = ''
358

  
359
          css_classes = 'gantt_subject-text'
349 360
          css_classes << ' issue-overdue' if issue.overdue?
350 361
          css_classes << ' issue-behind-schedule' if issue.behind_schedule?
351
          css_classes << ' icon icon-issue' unless Setting.gravatar_enabled? && issue.assigned_to
352
          
353
          subject = "<span class='#{css_classes}'>"
354
          if issue.assigned_to.present?
362

  
363
          if Setting.gravatar_enabled? && issue.assigned_to.present?
355 364
            assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name
356
            subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string)
365
            subject = view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string)
366
            text_style = 'left:20px;'
367
          else
368
            css_classes << ' icon icon-issue'
369
            subject = ''
370
            text_style = ''
357 371
          end
372

  
373
          text_style += "width:#{options[:subject_width]-options[:indent]-20}px;" if options[:subject_width]
374

  
375
          subject << "<span class=\"#{css_classes}\""
376
          subject << " title=\"#{issue.subject}\""
377
          subject << " style=\"#{text_style}\"" if text_style
378
          subject <<  '>'
358 379
          subject << view.link_to_issue(issue)
359 380
          subject << '</span>'
360
          html_subject(options, subject, :css => "issue-subject") + "\n"
381
          html_subject(options, subject, :css => 'issue-subject') + "\n"
361 382
        when :image
362 383
          image_subject(options, issue.subject)
363 384
        when :pdf
......
369 390
          @issue_ancestors << issue
370 391
          options[:indent] += options[:indent_increment]
371 392
        end
372
        
393

  
373 394
        output
374 395
      end
375 396

  
......
709 730
      end
710 731
      
711 732
      def html_subject(params, subject, options={})
712
        output = "<div class=' #{options[:css] }' style='position: absolute;line-height:1.2em;height:16px;top:#{params[:top]}px;left:#{params[:indent]}px;overflow:hidden;'>"
733
        output = "<div class=\"gantt_subject #{options[:css] }\" style=\"top:#{params[:top]}px;left:#{params[:indent]}px;\">"
713 734
        output << subject
714 735
        output << "</div>"
715 736
        @subjects << output
public/stylesheets/application.css
783 783
}
784 784

  
785 785
.gantt_subjects { font-size: 0.8em; }
786
.gantt_subject { position: absolute; height: 16px; line-height: 1.2em; }
787
.gantt_subject-text { position: absolute; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
786 788

  
787 789
.task {
788 790
  position: absolute;
......
924 926

  
925 927
/* Used on 12px Gravatar img tags without the icon background */
926 928
.icon-gravatar {
927
  float: left;
928 929
  margin-right: 4px;
929 930
}
930 931

  
test/unit/lib/redmine/helpers/gantt_test.rb
283 283
    end
284 284
    
285 285
    context ":html format" do
286
      should "add an absolute positioned div" do
287
        @response.body = @gantt.subject_for_project(@project, {:format => :html})
288
        assert_select "div[style*=absolute]"
289
      end
290

  
291 286
      should "use the indent option to move the div to the right" do
292 287
        @response.body = @gantt.subject_for_project(@project, {:format => :html, :indent => 40})
293 288
        assert_select "div[style*=left:40]"
......
449 444
    end
450 445

  
451 446
    context ":html format" do
452
      should "add an absolute positioned div" do
453
        @response.body = @gantt.subject_for_version(@version, {:format => :html})
454
        assert_select "div[style*=absolute]"
455
      end
456

  
457 447
      should "use the indent option to move the div to the right" do
458 448
        @response.body = @gantt.subject_for_version(@version, {:format => :html, :indent => 40})
459 449
        assert_select "div[style*=left:40]"
......
615 605
    end
616 606

  
617 607
    context ":html format" do
618
      should "add an absolute positioned div" do
619
        @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
620
        assert_select "div[style*=absolute]"
621
      end
622

  
623 608
      should "use the indent option to move the div to the right" do
624 609
        @response.body = @gantt.subject_for_issue(@issue, {:format => :html, :indent => 40})
625 610
        assert_select "div[style*=left:40]"
(6-6/6)