;+
; NAME
;          eis_response_db_obj
;
; PURPOSE
;          This (object) GUI displays the contents of the RESPONSE DB
;
; INPUTS
;          parentClass - object reference of parent object gui
;          ll_id       - linelist ID. User must select one window
;          eise_flag   - BYTARR(25) - defines which window is selected
;
; WRITTEN
;          John Rainnie, RAL, 21-Jan-2010
;
; HISTORY
;          v0.1 JAR 17-Jan-2012
;               Added date-time range widgets. Allows for searching
;               response DB according to supplied time range.
;
;-
;______________________________________________________________________________
FUNCTION eis_response_db_obj::Init , parentClass = parentClass

IF KEYWORD_SET(parentClass) THEN BEGIN

    Self.parentClass  = parentClass
    Self.group_leader = parentClass->tlbID()

ENDIF

;-------------------create the main base---------------------------------------;
pt_version = eis_get_pt_version_number()
widTitle = 'EIS Response DB Viewer' + pt_version
TLB_EVENT                  = {eis_response_db_obj_Event}
TLB_EVENT.eis_response_db_obj = Self
TLB_EVENT.Type             = "TLB"
Self.tlbID                 = WIDGET_BASE(                                  $
                                   TITLE       = widTitle            ,     $
                                   COLUMN      = 1                   ,     $
                                   FLOATING    = KEYWORD_SET(parentClass), $
                                   GROUP_LEADER = Self.group_leader  ,     $
                                   UValue      = TLB_EVENT)

;-------------------create the GUI------------------------------;
Self->createGUI

RETURN, 1

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_response_db_obj::createGUI

; Get eis_fonts
fonts = eis_fonts()
Event_Pro = 'eis_response_db_obj_EV'
; ______________________________________________________________________
;
; DateTime Range Base
;
; ______________________________________________________________________
datetimeBase               = WIDGET_BASE(Self.tlbID                  ,     $
                                   COLUMN      = 1                   ,     $
                                   FRAME       = 6)

; Get current date-time
get_utc , utc
; Get start date-time. Set time to start of day - 7 days ago!
start_utc      = utc
start_utc.time = 0
start_utc.mjd  = utc.mjd - 7
; Get stop date-time. Set to start of tomorrow
stop_utc       = utc
stop_utc.time  = 0
stop_utc.mjd   = utc.mjd + 1

;
; Start date-time
;
start_timeBase             = WIDGET_BASE(datetimeBase                ,     $
                                   ROW         = 1)

value = "Start Time: "
aLabel                     = WIDGET_LABEL(start_timeBase             ,     $
                                   value       = value               ,     $
                                   /ALIGN_LEFT)


start_time_EVENT           = {eis_response_db_obj_Event}
start_time_EVENT.eis_response_db_obj    = Self
start_time_EVENT.Type      = "DT_START"
value = anytim2utc(start_utc,/STIME,/TRUNCATE)
Self.start_timeID          = WIDGET_TEXT(start_timeBase              ,     $
                                   Event_Pro   = Event_Pro           ,     $
                                   /EDITABLE                         ,     $
                                   uValue      = start_time_EVENT    ,     $
                                   value       = value               ,     $
                                   xSize       = 25)

;
; Stop date-time
;
stop_timeBase              = WIDGET_BASE(datetimeBase                ,     $
                                   ROW         = 1)

value = "Stop Time : "
aLabel                     = WIDGET_LABEL(stop_timeBase              ,     $
                                   value       = value               ,     $
                                   /ALIGN_LEFT)


stop_time_EVENT            = {eis_response_db_obj_Event}
stop_time_EVENT.eis_response_db_obj    = Self
stop_time_EVENT.Type       = "DT_STOP"
value = anytim2utc(stop_utc,/STIME,/TRUNCATE)
Self.stop_timeID           = WIDGET_TEXT(stop_timeBase               ,     $
                                   Event_Pro   = Event_Pro           ,     $
                                   /EDITABLE                         ,     $
                                   uValue      = stop_time_EVENT     ,     $
                                   value       = value               ,     $
                                   xSize       = 25)



; ______________________________________________________________________
;
; DB Base
;
; ______________________________________________________________________
dbBase                     = WIDGET_BASE(Self.tlbID                  ,     $
                                   COLUMN      = 1                   ,     $
                                   FRAME       = 6)

format  = Self->get_format()
value = STRING(format=format,'RESP_ID','SEQ_ID','Type','Created')
aLabel                     = WIDGET_LABEL(dbBase                     ,     $
                                   value       = value               ,     $
                                   /ALIGN_LEFT)

list_EVENT                 = {eis_response_db_obj_Event}
list_EVENT.eis_response_db_obj  = Self
list_EVENT.Type            = "DBLIST"
Self.listID                = WIDGET_LIST(dbBase                      ,     $
                                   Event_Pro   = Event_Pro           ,     $
                                   value       = 'None'              ,     $
                                   uValue      = list_EVENT          ,     $
                                   xSize       = 50                  ,     $
                                   ySize       = 8                   ,     $
                                   /CONTEXT_EVENTS)

; ______________________________________________________________________
;
; Entry Base
;
; ______________________________________________________________________
entryBase                  = WIDGET_BASE(Self.tlbID                  ,     $
                                   COLUMN      = 1                   ,     $
                                   FRAME       = 6)


entry_EVENT                = {eis_response_db_obj_Event}
entry_EVENT.eis_response_db_obj    = Self
entry_EVENT.Type           = "ENTRY"
value = "Nothing to see here!"
Self.textID                = WIDGET_TEXT(entryBase                   ,     $
                                   Event_Pro   = Event_Pro           ,     $
                                   uValue      = entry_EVENT         ,     $
                                   value       = value               ,     $
                                   xSize       = 50                  ,     $
                                   ySize       = 26                  ,     $
                                   /SCROLL)

; ______________________________________________________________________
;
; Bottom base
;
; ______________________________________________________________________
bottomBase                  = WIDGET_BASE(Self.tlbID ,                      $
                                    ROW         = 1  ,                      $
                                    /FRAME           ,                      $
                                    /GRID_LAYOUT)

REFRESH_EVENT              = {eis_response_db_obj_Event}
REFRESH_EVENT.eis_response_db_obj   = Self
REFRESH_EVENT.Type         = "REFRESH"
REFRESHbutton              = WIDGET_BUTTON(bottomBase,                     $
                                    value       = ' Refresh ',                $
                                    Event_Pro   = Event_Pro,          $
                                    uValue      = REFRESH_EVENT)


QUIT_EVENT                  = {eis_response_db_obj_Event}
QUIT_EVENT.eis_response_db_obj      = Self
QUIT_EVENT.Type             = "QUIT"
quitbutton                  = WIDGET_BUTTON(bottomBase,                     $
                                    value       = ' Quit ',              $
                                    Event_Pro   = Event_Pro,          $
                                    uValue      = QUIT_EVENT)

END

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_response_db_obj_Cleanup , wid

WIDGET_CONTROL , wid , get_uvalue = eis_response_db_obj_Event
OBJ_DESTROY    , eis_response_db_obj_Event.eis_response_db_obj

END
;______________________________________________________________________________
; Cleanup
;______________________________________________________________________________
PRO eis_response_db_obj::CleanUp

PTR_FREE , Self.db_array

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_response_db_obj::setProperty,x_repoint = x_repoint

IF (N_ELEMENTS(x_repoint)   GT 0) THEN BEGIN
    stop
ENDIF

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_response_db_obj::GetProperty, eis_event_control = eis_event_control

eis_event_control = Self.eis_event_control

END
;______________________________________________________________________________
; Return widget id
;______________________________________________________________________________
FUNCTION eis_response_db_obj::tlbID

RETURN , Self.tlbID

END
;______________________________________________________________________________
; Widget_Control wrapper
;______________________________________________________________________________
PRO eis_response_db_obj::Control, _Ref_Extra=Widget_Control_Keywords

Widget_Control, Self.tlbID, _Extra=Widget_Control_Keywords

END
;______________________________________________________________________________
; Widget_Info wrapper
;______________________________________________________________________________
FUNCTION eis_response_db_obj::Info, _Ref_Extra=Widget_Info_Keywords

RETURN , WIDGET_INFO(Self.tlbID, _Extra=Widget_Info_Keywords)

End
;______________________________________________________________________________
; Realize wrapper
;______________________________________________________________________________
PRO eis_response_db_obj::Realize

WIDGET_CONTROL , Self.tlbID , /Realize

End
;______________________________________________________________________________
; XManager wrapper
;______________________________________________________________________________
PRO eis_response_db_obj::XManager

XMANAGER , "eis_response_db_obj" ,   Self.tlbID ,                                 $
    Event_Handler  = "eis_response_db_obj_EV",                                    $
    cleanup        = "eis_response_db_obj_Cleanup",                               $
    GROUP_LEADER   = Self.group_leader ,                                   $
    /NO_BLOCK

END

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_response_db_obj_Event__Define

    struct = {  eis_response_db_obj_Event,                                         $
                Type                 : "",         $ ;Unique identifier for event
                eis_response_db_obj   : OBJ_NEW(),  $ ;Reference to object passed
                extra                : 0           $ ;to - often object associated
             }
END
;______________________________________________________________________________
; Event Handler wrapper
;______________________________________________________________________________
PRO eis_response_db_obj_EV , Event

;Get event handler structure containing eis_response_db_obj type object
Widget_CONTROL,Event.ID,get_uvalue = eis_response_db_obj_Event
;If a WIDGET_TAB event , just quit
IF (TAG_NAMES(event, /STRUCTURE_NAME) EQ 'WIDGET_TAB') THEN BEGIN
    ;print,'tab event'
    RETURN
ENDIF

;Call eis_response_db_obj's class member procedure "Handler"
eis_response_db_obj_Event.eis_response_db_obj->Handler,Event

END
;______________________________________________________________________________
;
; * THIS is the routine for putting in event handling NOT
;   eis_response_db_obj_Ev above.
;
; Event Handler - handle events.  Derived classes must
; contain their own implementation in order to handle events or else pass in an
; procedure name/function name using the Event_Pro/Event_Func keywords to
; CWidget::Init()
;______________________________________________________________________________
PRO eis_response_db_obj::Handler, Event

WIDGET_CONTROL, Event.ID, Get_UValue = eis_response_db_obj_Event
CASE eis_response_db_obj_Event.Type OF
    "QUIT"       : Self->Control, /Destroy
    "REFRESH"    : Self->refresh
    "DT_START"   : Self->refresh
    "DT_STOP"    : Self->refresh
    "DBLIST"     : Self->entry_detail , event
    "VIEW_SEQID" : Self->view_seqid
    ELSE         : print,eis_response_db_obj_Event.Type
ENDCASE

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_format

RETURN , '(A-10,A-10,A-8,A-20)'

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_start_td , widget_id , string_out

WIDGET_CONTROL , widget_id , get_value = value
; Check this is a valid time string
valid_time_string = valid_time(value[0])
IF (valid_time_string EQ 0) THEN BEGIN
   BEEP
   mText = STRJOIN([string_out,' Time format is incorrect!'],/SINGLE)
   complain = DIALOG_MESSAGE( mText       ,                        $
                        DIALOG_PARENT = Self.tlbID,                $
                        /ERROR )
   RETURN , 0
ENDIF

RETURN , value[0]

END
;______________________________________________________________________________
; Read Response database and display results
;______________________________________________________________________________
PRO eis_response_db_obj::refresh

WIDGET_CONTROL , /HOURGLASS

status   = eis_open_db(/RESPONSE)
n        = db_info('entries')
; JAR 15-Jun-2010 Added to take account of zero entry DB
IF (n[0] EQ 0) THEN BEGIN
   WIDGET_CONTROL , Self.listID , sensitive = 0
   RETURN
ENDIF

;
; JAR 17-Jan-2012. Added start and stop time parameters
;
; Need to get start and stop date-times from text widgets
start_dt = Self->get_start_td(Self.start_timeID , 'Start')
stop_dt  = Self->get_start_td(Self.stop_timeID  , 'Stop')
; If either date-time is invalid then bail out!
IF (start_dt EQ 0) THEN RETURN
IF (stop_dt  EQ 0) THEN RETURN

start_dt_tai = anytim2tai(start_dt)
stop_dt_tai  = anytim2tai(stop_dt)
; Check that start time is before stop time
IF (start_dt_tai GE stop_dt_tai) THEN BEGIN
   BEEP
   mText = "Start Time is greater that Stop Time!"
   complain = DIALOG_MESSAGE( mText       ,                        $
                        DIALOG_PARENT = Self.tlbID,                $
                        /ERROR )
   RETURN
ENDIF

;constraint = STRJOIN([STRING(start_dt_tai),'< CREATED <',STRING(stop_dt_tai)],/SINGLE)
constraint = STRJOIN([STRING(start_dt_tai),'< MODIFIED <',STRING(stop_dt_tai)],/SINGLE)
;print,STRJOIN(['Checking Response DB for: ',constraint],/SINGLE)
;constraint = constraint + time_constraint
;; OK, read database here! Index is a vector of sequence_ids
;
index      = dbfind(constraint , /SILENT , count = count)
print,STRJOIN(['Number of entries returned: ',STRCOMPRESS(count,/REMOVE)],/SINGLE)

IF (count EQ 0) THEN BEGIN
   WIDGET_CONTROL , Self.listID , sensitive = 0
   RETURN
ENDIF


db_list  = STRARR(count)
db_array = REPLICATE({eis_response_props} , count)
PTR_FREE , Self.db_array
format  = Self->get_format()
; What list index is selected?
list_select = WIDGET_INFO(Self.listID , /LIST_SELECT)

FOR i = 0 , count - 1 DO BEGIN

    rs       = db_read_response_entry(id=index[i])
    id       = STRING(FORMAT='(I6.6)', rs.id)
    seq_id   = STRING(FORMAT='(I6.6)', rs.trig_st_seqid)
    type     =                         rs.type
    datetime = anytim2utc(rs.created,/STIME,/TRUNCATE)

    IF (is_blank(type) EQ 1) THEN type = 'NONE'

    db_list[i]  = STRING(format=format,id,seq_id,type,datetime)
    db_array[i] = rs
ENDFOR

dbclose

Self.db_array = PTR_NEW(db_array)
; Display list
WIDGET_CONTROL , Self.listID , set_value = db_list , sensitive = 1
list_select = list_select > 0
WIDGET_CONTROL , Self.listID , set_list_select   = list_select

Self->entry_detail , 0

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO eis_response_db_obj::list_context_event , event

; OK, we have a context-sensitive click event!
contextbase                = WIDGET_BASE(Self.textID                 ,     $
                                   /CONTEXT_MENU)
;
; Create context menu
;
CONTEXT_EVENT              = {eis_response_db_obj_Event}
CONTEXT_EVENT.eis_response_db_obj  = Self
CONTEXT_EVENT.Type         = "VIEW_SEQID"
value = "View properties of trigger/hunter study entry... "
Event_Pro                  = 'eis_response_db_obj_EV'
CONTEXTButton              = WIDGET_BUTTON(contextbase               ,     $
                                    value       = value              ,     $
                                    Event_Pro   = Event_Pro          ,     $
                                    uValue      = CONTEXT_EVENT )

widget_displaycontextmenu, event.id, event.x, event.y, contextbase

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO eis_response_db_obj::view_seqid

; What list index is selected?
list_select = WIDGET_INFO(Self.listID , /LIST_SELECT)
IF (list_select LT 0) THEN RETURN

rs     = (*Self.db_array)[list_select]
seq_id = rs.trig_st_seqid

oTl_entry = OBJ_NEW("eis_tl_entry_gui" , parentClass = Self ,       $
                                         seq_id      = seq_id)
oTl_entry->Realize
oTl_entry->XMANAGER
oTl_entry->refresh

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO eis_response_db_obj::entry_detail , event

; What list index is selected?
list_select = WIDGET_INFO(Self.listID , /LIST_SELECT)
IF (list_select LT 0) THEN BEGIN
   WIDGET_CONTROL , Self.textID , sensitive = 0 , set_value = ''
   RETURN
ENDIF ELSE WIDGET_CONTROL , Self.textID , sensitive = 1


; Trap CONTEXT events here
IF (N_TAGS(event) GT 0) THEN BEGIN
   widgetType = TAG_NAMES(event, /STRUCTURE_NAME)
   IF (widgetType EQ 'WIDGET_CONTEXT') THEN BEGIN
       Self->list_context_event , event
       RETURN
   ENDIF
ENDIF

rs          = (*Self.db_array)[list_select]
WIDGET_CONTROL , /HOURGLASS

; ID
line = Self->get_line_id(rs.id)
WIDGET_CONTROL , Self.textID , set_value = line
; TRIG_ST_SEQID
line = Self->get_line_trig_st_seqid(rs.trig_st_seqid)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; EEBP TYPE
line = Self->get_line_eebp(rs.eebp_respond)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; XRTF TYPE
line = Self->get_line_xrtf(rs.xrtf_respond)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; EISF TYPE
line = Self->get_line_eisf(rs.eisf_respond)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND

;; AECE TYPE
;line = Self->get_line_aece(rs.aece_respond)
;WIDGET_CONTROL , Self.textID , set_value = line , /APPEND


; XY_THRESHOLD
line = Self->get_line_xy_threshold(rs.x_threshold,rs.y_threshold)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; XY_MIN_LIMIT
line = Self->get_line_xy_min_limit(rs.x_min_limit,rs.y_min_limit)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; XY_REPOINT
line = Self->get_line_xy_repoint(rs.adjust_x,rs.adjust_y)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; XY_LOCATE
line = Self->get_line_xy_locate(rs.locate_x,rs.locate_y)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RESPONSE_ST_ID
line = Self->get_line_response_st_id(rs.response_st_id)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RESPONSE_RA_ID
line = Self->get_line_response_ra_id(rs.raster_identifier)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; LINE_INDEX
line = Self->get_line_line_index(rs.line_index)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; FILLER_ST_ID
line = Self->get_line_filler_st_id(rs.filler_st_id)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; TYPE
line = Self->get_line_type(rs.type)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; NO_HUNT_DATA
line = Self->get_line_no_hunt_data(rs.no_hunt_data)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
;
; RA1
;
; RA1_XCEN and RA1_YCEN
line = Self->get_line_ra1_xycen(rs.ra1_xcen,rs.ra1_ycen)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RA1_MIP and RA1_YIP
line = Self->get_line_ra1_mipyip(rs.ra1_mip,rs.ra1_yip)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RA1_SC_X and RA1_SC_Y
line = Self->get_line_ra1_sc_xy(rs.ra1_sc_x,rs.ra1_sc_y)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RA1_POINTED
line = Self->get_line_ra1_pointed(rs.ra1_pointed)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RA2_USE
line = Self->get_line_ra2_use(rs.ra2_use)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
;
; RA2
;
; RA2_XCEN and RA2_YCEN
line = Self->get_line_ra2_xycen(rs.ra2_xcen,rs.ra2_ycen)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RA2_MIP and RA2_YIP
line = Self->get_line_ra2_mipyip(rs.ra2_mip,rs.ra2_yip)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; RA2_SC_X and RA2_SC_Y
line = Self->get_line_ra2_sc_xy(rs.ra2_sc_x,rs.ra2_sc_y)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
;
; Created and Modified
;
; CREATED (Date)
line = Self->get_line_created(rs.created)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND
; MODIFIED (Date)
line = Self->get_line_modified(rs.modified)
WIDGET_CONTROL , Self.textID , set_value = line , /APPEND


; Set to top line.
WIDGET_CONTROL , Self.textID , set_text_top_line = 0

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra2_sc_xy , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','RA2 SC_X,Y', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra2_mipyip , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','RA2 MIP,YIP', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra2_xycen , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','RA2 XCEN,YCEN', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra2_use , param

RETURN , STRING(FORMAT='(A-20,I-24)','RA2_USE', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra1_pointed , param

RETURN , STRING(FORMAT='(A-20,I-24)','RA1_POINTED', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra1_sc_xy , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','RA1 SC_X,Y', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra1_mipyip , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','RA1 MIP,YIP', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_ra1_xycen , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','RA1 XCEN,YCEN', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_no_hunt_data , param

;RETURN , STRING(FORMAT='(A-20,I-24)','NO_HUNT_DATA', param)
RETURN , STRING(FORMAT='(A-20,I-24)','BLAH', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_line_index , param

RETURN , STRING(FORMAT='(A-20,I-24)','LINE INDEX', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_modified , param

dateTime = anytim2utc(param , /STIME , /TRUNCATE)
RETURN , STRING(FORMAT='(A-20,A-24)','LAST MODIFIED', dateTime)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_created , param

dateTime = anytim2utc(param , /STIME , /TRUNCATE)
RETURN , STRING(FORMAT='(A-20,A-24)','CREATED', dateTime)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_type , param

IF (is_blank(param) EQ 1) THEN param = 'NONE'
RETURN , STRING(FORMAT='(A-20,A-10)','TYPE', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_filler_st_id , param

RETURN , STRING(FORMAT='(A-20,I6.6)','FILLER_ST_ID', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_response_ra_id , param

RETURN , STRING(FORMAT='(A-20,I6.6)','RESPONSE_RA_ID', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_response_st_id , param

RETURN , STRING(FORMAT='(A-20,I6.6)','RESPONSE_ST_ID', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_xy_locate , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','EIS X,Y LOCATE', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_xy_repoint , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','X,Y REPOINT', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_xy_min_limit , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','X,Y MIN_LIMIT', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_xy_threshold , x , y

xy = STRJOIN([STRCOMPRESS(x,/REMOVE_ALL)                             ,     $
              STRCOMPRESS(y,/REMOVE_ALL)],',',/SINGLE)
RETURN , STRING(FORMAT='(A-20,A-20)','X,Y THRESHOLD', xy)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_aece , param

RETURN , STRING(FORMAT='(A-20,I1)','AECE_RESPOND', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_eisf , param

RETURN , STRING(FORMAT='(A-20,I1)','EISF_RESPOND', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_xrtf , param

RETURN , STRING(FORMAT='(A-20,I1)','XRTF_RESPOND', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_eebp , param

RETURN , STRING(FORMAT='(A-20,I1)','EEBP_RESPOND', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_trig_st_seqid , param

RETURN , STRING(FORMAT='(A-20,I6.6)','TRIG_ST_SEQID', param)

END
;______________________________________________________________________________
;
;______________________________________________________________________________
FUNCTION eis_response_db_obj::get_line_id , param

RETURN , STRING(FORMAT='(A-20,I6.6)','RESPONSE DB ID', param)

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO eis_response_db_obj__define

    struct = { eis_response_db_obj                                   ,     $
                    tlbID                 : 0L                       ,     $
                    group_leader          : 0L                       ,     $
                    parentClass           : OBJ_NEW()                ,     $
                    db_array              : PTR_NEW()                ,     $
                    textID                : 0L                       ,     $
                    start_timeID          : 0L                       ,     $
                    stop_timeID           : 0L                       ,     $
                    listID                : 0L                             $
             }

END
