;+
;PROCEDURE:
;         mms_tplot_quicklook
;
; PURPOSE:
;         Wrapper around tplot specifically for MMS quicklook figures; this
;         routine will include all panels in the QL figure even when there is no 
;         data (panels without data are labeled 'NO DATA')
;
;
; $LastChangedBy: egrimes $
; $LastChangedDate: 2016-08-19 08:34:58 -0700 (Fri, 19 Aug 2016) $
; $LastChangedRevision: 21677 $
; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_6_1/projects/mms/common/quicklook/mms_tplot_quicklook.pro $
;-

pro mms_tplot_quicklook, tplotnames, degap=degap, window=win_idx, $
  xsize=xsize, ysize=ysize, burst_bar=burst_bar, fast_bar=fast_bar, $
  trange=trange, title=title, _extra=ex
  
@tplot_com.pro ; tplot common block

    if keyword_set(trange) then begin
      start_time = time_string(trange[0])
      end_time = time_string(trange[1])
    endif else if is_struct(tplot_vars.options) then begin
      ; grab the trange from the common block if it isn't specified as a keyword
      start_time = time_string(tplot_vars.options.trange[0])
      end_time = time_string(tplot_vars.options.trange[1])
    endif
    
    ; grab previous data names if tplotnames isn't specified
    if undefined(tplotnames) then begin
      tpv_opt_tags = tag_names( tplot_vars.options)
      idx = where( tpv_opt_tags eq 'DATANAMES', icnt)
      if icnt gt 0 then begin
        tplotnames = tplot_vars.options.datanames
        tplotnames = tnames(tplotnames, nd, /all, index=ind)
      endif else begin
        return
      endelse
    endif; else tplotnames = tnames(tplotnames, nd, /all, index=ind)

    if ~keyword_set(xsize) then xsize=710
    if ~keyword_set(ysize) then ysize=1150

    if keyword_set(fast_bar) && tnames(fast_bar) ne '' then begin
      append_array, tplotnames_with_data, fast_bar
      append_array, data_or_no_data, 1
    endif
    if keyword_set(burst_bar) && tnames(burst_bar) ne '' then begin
      append_array, tplotnames_with_data, burst_bar
      append_array, data_or_no_data, 1
    endif

    ; check that the tvars exist and have data over the trange
    for tvar_idx = 0, n_elements(tplotnames)-1 do begin
      get_data, tplotnames[tvar_idx], data=d
      if tdexists(tplotnames[tvar_idx], start_time, end_time) ne 0 or (is_array(d) && is_string(d)) then begin
        
        ; force the data to be monotonic
       ; tplot_force_monotonic, tplotnames[tvar_idx], /forward, /keep_repeats 
        
        if is_array(d) && is_string(d) then begin
          ; pseudo variable
          valid_p_var = 0
          
          for pseudo_var_idx = 0, n_elements(d)-1 do begin
            if tdexists(d[pseudo_var_idx], start_time, end_time) ne 0 then valid_p_var += 1
          endfor
          
          ; check if there was a valid variable inside the pseudo variable
          if valid_p_var gt 0 then begin
            append_array, tplotnames_with_data, tplotnames[tvar_idx]
            append_array, data_or_no_data, 1
          endif else begin
            ; dummy var, only name is correct (for y-axis title)
            store_data, tplotnames[tvar_idx]+'_nodata', data={x: [time_double(start_time), time_double(end_time)], y: [0, 0]}
            append_array, tplotnames_with_data, tplotnames[tvar_idx]+'_nodata'
            append_array, data_or_no_data, 0
          endelse
            
        endif else begin
          append_array, tplotnames_with_data, tplotnames[tvar_idx]
          append_array, data_or_no_data, 1
        endelse
      endif else begin
        ; dummy var, only name is correct (for y-axis title)
        store_data, tplotnames[tvar_idx]+'_nodata', data={x: [time_double(start_time), time_double(end_time)], y: [0, 0]}
        append_array, tplotnames_with_data, tplotnames[tvar_idx]+'_nodata'
        append_array, data_or_no_data, 0
      endelse
    endfor
    
    ; degap the data
    if keyword_set(degap) then tdegap, tplotnames_with_data, /overwrite
    
    ; plot them
    if keyword_set(win_idx) then window, win_idx, xsize=xsize, ysize=ysize else window, xsize=xsize, ysize=ysize


    ; fixes weird bug with title on OS X, when calling this
    ; routine repeatedly
    wait, .01
    
    tplot, tplotnames_with_data, get_plot_pos=positions, window=win_idx, trange=trange, title=title, _extra=ex

    ; add NO DATA labels to plots on the figure without any data
    where_no_data = where(data_or_no_data eq 0, nodatacount)
    if nodatacount ne 0 then begin
      no_data_msg = 'NO DATA'
      no_data_panel_pos = positions[*, where_no_data]
      for no_data_panel=0, nodatacount-1 do begin
        xyouts, charsize=1, /normal, 0.47, (no_data_panel_pos[*,no_data_panel])[1]+((no_data_panel_pos[*,no_data_panel])[3]-(no_data_panel_pos[*,no_data_panel])[1])/2.0, no_data_msg
      endfor
    endif
end