class TicketView

Public Class Methods

new(screen, ticket) click to toggle source
# File lib/view/ticket-view.rb, line 4
def initialize(screen, ticket)
    @screen = screen
    @ticket = ticket
end

Public Instance Methods

display() click to toggle source
# File lib/view/ticket-view.rb, line 9
def display
    @screen.clear
    @screen.setpos(0,0)
    @screen.attron(Curses.color_pair(1));
    @screen.addstr("Issue Details - [f]ix, [e]dit, [q]uit")
    @screen.attroff(Curses.color_pair(1));


    @screen.setpos(1,0)
    @screen.addstr("Title:     #{@ticket.title}")
    @screen.setpos(2,0)
    @screen.addstr("Status:    #{@ticket.status}")
    @screen.setpos(3,0)
    @screen.addstr("Priority:  #{@ticket.priority}")
    @screen.setpos(4,0)
    @screen.addstr("Type:      #{@ticket.type}")
    @screen.setpos(5,0)
    @screen.addstr("Subsystem: #{@ticket.subsystem}")
    @screen.setpos(6,0)
    @screen.addstr("Comments:")
    ln = 7
    @ticket.comments.split("\n").each do |l|
        @screen.setpos(ln,0)
        @screen.addstr(l)
        ln += 1
    end
end
edit() click to toggle source
# File lib/view/ticket-view.rb, line 78
def edit
    tmp = File.open("fs-ticket-edit.txt", "w+")
    tmp.puts({"title"    => @ticket.title,
              "status"   => @ticket.status,
              "priority" => @ticket.priority,
              "type"     => @ticket.type,
              "comment"  => @ticket.comments}.to_yaml)
    tmp.close

    system("vim fs-ticket-edit.txt")

    #Restore curses options
    Curses.raw
    Curses.nonl
    #Curses.cbreak
    Curses.noecho
    Curses.curs_set(0)
    @screen.scrollok(true)
    @screen.keypad(true)
end
interact() click to toggle source
# File lib/view/ticket-view.rb, line 37
def interact
    ret = nil
    while true
        result = true
        c = Curses.getch
        case c
        when Curses::KEY_LEFT
            break
        when ?q
            break
        when ?f
            et = EditTicketView.new(@screen, @ticket)
            @screen.clear
            if(et.status.value == "Open")
                et.status.value = "Fixed"
            end
            et.display
            tmp = et.interact
            ret ||= tmp
            @screen.clear
            display
        when ?e
            et = EditTicketView.new(@screen, @ticket)
            @screen.clear
            if(et.status == "Open")
                et.status = "Fixed"
            end
            et.display
            tmp = et.interact
            ret ||= tmp
            @screen.clear
            display
        else
            @screen.setpos(0,0)
            @screen.addstr("[unknown key `#{Curses.keyname(c)}'=#{c}] ")
        end
        @screen.setpos(0,0)
    end
    ret
end