[Thread Prev][Thread Next][Index]

[las_users] Re: Bug in "LAS_url_label.jnl" in Las v8



Hi Akshay,
Thank you for the report. We had found this as well, and the fix will be in the next LAS release. I've attached the repaired script for your convenience.

Ansley

On 10/18/2013 9:42 AM, Akshay Hegde wrote:

Hi I found a bug in LAS_url_label.jnl while dealing with mysql database, the same script in in old las v7 is working fine...you can confirm it using default insitu demo datasets.

here is a log

LAS 2013-10-09T18:35:26.482 +0530 INFO - FerretBackendService - Wed Oct 09 18:35:26 IST 2013:START: Plot_insitu_XY_locations LAS 2013-10-09T18:35:26.608 +0530 ERROR - FerretBackendService - Wed Oct 09 18:35:26 IST 2013:Ferret backend request failed: An error occurred in the service that was creating your product. LAS 2013-10-09T18:35:26.609 +0530 INFO - FerretBackendService - Wed Oct 09 18:35:26 IST 2013:END: Plot_insitu_XY_locations LAS 2013-10-09T18:35:26.640 +0530 ERROR - LASAction - An error occurred in the service that was creating your product. LAS 2013-10-09T18:35:26.640 +0530 ERROR - LASAction - **ERROR: command syntax: DATASET_URL_LAB = ???
DEFINE SYMBOL dataset_url_lab =
Command file, command group, or REPEAT execution aborted
ERROR RUNNING SCRIPT

go "$1"


Thanks and Regards,
Akshay Hegde
CSIR-National Institute of Oceanography,
Dona Paula, Panjim, Goa -403004

! LAS_url_label.jnl

! Define upper-right labels with the url; the URL is not plotted automatically when the var is
! (the same thing may be done in transform scripts or in differencing setup; that is ok
! 1/2010 fix ticket 745 - immediate-mode expressions where the string contains an = sign
!        trip up the command parsing. Break these definitions into two steps.

IF `($n_right_labels"0") EQ 0` THEN DEFINE SYMBOL n_right_labels = 0
!IF `($data_$1_url"0|*>1") EQ 0` THEN EXIT/SCRIPT


! Instead of the URL use the dataset name or ID passed in to the 
! (addXML gets this from the title attribute from the original dataset
! dataset if that attrib exists)


DEFINE SYMBOL num ($1"0")

LET got_dataset_label = 0

IF `got_dataset_label EQ 0` THEN
   IF `($data_$1_dataset_id"0|*>1")+($data_$1_dataset_name"0|*>1") GT 0` THEN \
      DEFINE SYMBOL n_right_labels = `($n_right_labels)+1`
   
   IF ($data_$1_dataset_id"0|*>1") THEN
     DEFINE SYMBOL upper_right_($n_right_labels) = DATA SET: ($data_$1_dataset_id)
     DEFINE SYMBOL upper_right_text_($n_right_labels) = DATA SET: ($data_$1_dataset_id)
     LET got_dataset_label = 1
     DEFINE SYMBOL dataset_title_($num)_lab = ($upper_right_text_($n_right_labels))
     DEFINE SYMBOL dataset_title_lab = ($upper_right_text_($n_right_labels))
   ENDIF
   IF ($data_$1_dataset_name"0|*>1") THEN
     DEFINE SYMBOL upper_right_($n_right_labels) = DATA SET: ($data_$1_dataset_name)
     DEFINE SYMBOL upper_right_text_($n_right_labels) = DATA SET: ($data_$1_dataset_name)
     LET got_dataset_label = 1
     DEFINE SYMBOL dataset_title_($num)_lab = ($upper_right_text_($n_right_labels))
     DEFINE SYMBOL dataset_title_lab = ($upper_right_text_($n_right_labels))
   ENDIF
ENDIF

! If we didnt get a label from the above, use the URL

IF `got_dataset_label EQ 0` THEN
   IF `STRINDEX("($data_$1_url)","http") NE 0` THEN
   
      IF ($data_$1_dataset_url"0|*>1") THEN 
         DEFINE SYMBOL data_$1_urlpath = ($data_$1_dataset_url)
      ELSE
         DEFINE SYMBOL data_$1_urlpath = ($data_$1_url)
      ENDIF

      DEFINE SYMBOL n_right_labels = `($n_right_labels)+1`
      DEFINE SYMBOL upper_right_($n_right_labels) = OPeNDAP URL: ($data_$1_urlpath)
      DEFINE SYMBOL upper_right_text_($n_right_labels) = OPeNDAP URL ($data_$1_urlpath)
   ELSE
      DEFINE SYMBOL n_right_labels = `($n_right_labels)+1`
      DEFINE SYMBOL upper_right_($n_right_labels) = DATA SET: `($data_var)[d=($data_num)],RETURN=dset`
      DEFINE SYMBOL upper_right_($n_right_labels) = DATA SET: ($data_$1_url)
      DEFINE SYMBOL upper_right_text_($n_right_labels) = DATA SET: ($data_$1_url)
   ENDIF
   
ENDIF

! If labels are not going to be on the plots, save the url

IF `STRINDEX("($data_$1_dataset_url)","http") NE 0` THEN

   IF ($data_$1_dataset_url"0|*>1") THEN 
      DEFINE SYMBOL data_$1_urlpath = ($data_$1_dataset_url)
   ELSE
      DEFINE SYMBOL data_$1_urlpath = ($data_$1_url)
   ENDIF

   DEFINE SYMBOL dataset_url_($num)_lab = OPeNDAP URL: ($data_$1_urlpath)
ELSE
   DEFINE SYMBOL dataset_url_($num)_lab = DATA SET: ($data_$1_dataset_url)
ENDIF

IF `($num) EQ 0` THEN 
   DEFINE SYMBOL dataset_url_lab = ($dataset_url_($num)_lab)
   IF `STRINDEX("($dataset_url_lab)", "http") EQ 0` THEN 
     IF ($data_0_ftds_url"0|*>1") THEN DEFINE SYMBOL dataset_url_lab = ($data_0_ftds_url)
   ENDIF
ENDIF

IF `($num) GT 0` THEN
 ! For annotations, without the (1) and (2)
 
   IF `STRCMP("($dataset_url_0_lab)", "($dataset_url_($num)_lab)") NE 0` THEN \
      DEFINE SYMBOL diffurl = 1

   IF ($ferret_annotations"0|*>1") THEN 
      IF `($add_0_url"0|*>1") EQ 0 AND ($dataset_url_0_lab"0|*>1")` THEN 
         DEFINE SYMBOL dataset_url_lab ($dataset_url_0_lab)
         IF ($diffurl"0|*>1") THEN 
            IF ($itsa_vector_plot"0|*>1") THEN 
	       DEFINE SYMBOL dataset_url_lab ($dataset_url_lab),
	    ELSE
	       DEFINE SYMBOL dataset_url_lab ($dataset_url_lab) minus
	    ENDIF
         DEFINE SYMBOL add_0_url = 1
      ENDIF
      IF ($diffurl"0|*>1") THEN DEFINE SYMBOL dataset_url_lab ($dataset_url_lab) ($dataset_url_($num)_lab)

   ELSE
      IF `($add_0_url"0|*>1") EQ 0 AND ($dataset_url_0_lab"0|*>1")` THEN 
         DEFINE SYMBOL dataset_url_lab ($dataset_url_0_lab)
         IF ($diffurl"0|*>1") THEN DEFINE SYMBOL dataset_url_lab ($dataset_url_0_lab) (1)
         DEFINE SYMBOL add_0_url = 1
      ENDIF
      IF ($diffurl"0|*>1") THEN DEFINE SYMBOL dataset_url_lab ($dataset_url_($num)_lab)
   ENDIF
   IF `STRCMP("($dataset_url_0_lab)", "($dataset_url_($num)_lab)") NE 0` THEN \
      DEFINE SYMBOL diffurl = 1

! Throw up our hands if its a difference of vectors with multiple URLs
   IF `(($num) EQ 2) AND ($diffurl)` THEN \
        IF `STRCMP("($dataset_url_0_lab)", "($dataset_url_2_lab)") NE 0` THEN CANCEL SYMBOL dataset_url_lab

   IF `(($num) EQ 3) AND ($diffurl)` THEN \
        IF `STRCMP("($dataset_url_1_lab)", "($dataset_url_3_lab)") NE 0` THEN CANCEL SYMBOL dataset_url_lab

ELSE
   IF `($dataset_url_0_lab"0|*>1")` THEN DEFINE SYMBOL dataset_url_lab ($dataset_url_0_lab)
ENDIF



IF ($data_0_dataset_institution"0|*>1") THEN

   IF `($num) GT 1` THEN
      IF `($add_0_institut"0|*>1") EQ 0 AND ($data_0_dataset_institution"0|*>1")` THEN 
         DEFINE SYMBOL dataset_institute_lab ($data_0_dataset_institution) (1)
         DEFINE SYMBOL add_0_institut = 1
      ENDIF
      DEFINE SYMBOL dataset_institute_lab ($dataset_institute_lab) ($data_($num)_dataset_institution) (`($num)+1`)
   ELSE
      IF `($data_0_dataset_institution"0|*>1")` THEN DEFINE SYMBOL dataset_institute_lab ($data_0_dataset_institution)
   ENDIF

ENDIF


! If the dataset name or URL and is really long, split into multiple lines.
! Split if longer than 50, but if really long, use fewer 80-character lines.
   
LET linelen = 50
LET slen = `STRLEN ("($upper_right_($n_right_labels))")`
IF `slen GT 150` THEN LET linelen = 80

IF `(slen GT linelen)` THEN
   LET slen2 = `INT(slen/2)`

! If the first SUBSTRING call happens to break the line within some parentheses or 
! ther marks, then we get an error in string parsing. If there are parens or brackets,
! then break the line once, just before or after the last set of () or [].

   LET last_p1 = `STRRINDEX("($upper_right_($n_right_labels))", "(")`
   LET last_p2 = `STRRINDEX("($upper_right_($n_right_labels))", ")")`
   LET last_b1 = `STRRINDEX("($upper_right_($n_right_labels))", "[")`
   LET last_b2 = `STRRINDEX("($upper_right_($n_right_labels))", "]")`
   IF `last_b1 NE 0 AND last_p1 EQ 0` THEN
      LET last_p1 = `last_b1`
      LET last_p2 = `last_b2`
   ENDIF
   DEFINE SYMBOL linebreak = <NL>@AS;\
   LET i1 = 1

   IF `last_p1 GT 0` THEN
      IF `last_p1 LT linelen AND last_p2 GT linelen OR last_p1 GT linelen` THEN 
         LET upper_right_line = SUBSTRING("($upper_right_($n_right_labels))", `i1`, `last_p1 - 1`)
         DEFINE SYMBOL upper_right_out = `upper_right_line`
         CANCEL SYMBOL upper_right_line
         IF `slen-last_p1+1 GT 0` THEN
	    LET upper_right_line = SUBSTRING("($upper_right_($n_right_labels))", `last_p1`, `slen-last_p1+1`)
            DEFINE SYMBOL  upper_right_line = `upper_right_line`
	    DEFINE SYMBOL upper_right_out = ($upper_right_out)($linebreak)($upper_right_line)
	 ENDIF
      ELIF `last_p2 LE linelen` THEN 
         LET upper_right_line = SUBSTRING("($upper_right_($n_right_labels))", `i1`, `last_p2+1`)
         DEFINE SYMBOL upper_right_out = `upper_right_line`
	 CANCEL SYMBOL upper_right_line
	 IF `slen-(last_p2+1) GT 0` THEN
            LET upper_right_line = SUBSTRING("($upper_right_($n_right_labels))", `last_p2+2`, `slen-(last_p2+1)`)
            DEFINE SYMBOL upper_right_line = `upper_right_line`
	    DEFINE SYMBOL upper_right_out = ($upper_right_out)($linebreak)($upper_right_line)
         ENDIF
      ENDIF

      IF ($upper_right_out"0|*>1") THEN DEFINE SYMBOL upper_right_($n_right_labels) = ($upper_right_out)
      DEFINE SYMBOL long_right_label = 1
      LET nlines = 2

! Get ready to exit
      DEFINE SYMBOL upper_right_($n_right_labels) = @AS($upper_right_($n_right_labels))
      IF `($n_right_labels"0") GT 1` THEN \
         DEFINE SYMBOL upper_right_($n_right_labels) = @P2($upper_right_($n_right_labels))

! For comparison plots get rid of the long ugly URL labels at the upper right.
! (DO this in the difference scripts!??

      IF `got_dataset_label EQ 0` THEN
         IF ($operation_service_action"0|Compare_Plot>1|*>0") THEN DEFINE SYMBOL n_right_labels = 0
      ENDIF
      EXIT/SCRIPT
   ENDIF

! Otherwise break into lines of about linelen characters on spaces, or / or - or _

!DATA SET: GFDL_CM2.0,_20C3M_run_3_climate_of_the_20th_Century_experiment_20C3M_output_for_IPCC_AR4_and_US_CCSP

   LET nlines = `INT(slen/linelen)`
!!   IF `nlines LE 2` THEN 
!!      LET linelen = `slen2`
!!      LET nlines = `INT(slen/linelen)`
!!   ENDIF
   IF `nlines*linelen LT slen` THEN LET nlines = `nlines+1`

   DEFINE SYMBOL remainder = ($upper_right_($n_right_labels))

   IF `STRINDEX("($upper_right_($n_right_labels))", "DATA SET: ") GT 0` THEN
      LET last_space = `STRINDEX("($upper_right_($n_right_labels))", ":") + 1`
      LET remainder = SUBSTRING("($upper_right_($n_right_labels))", `last_space+1`, `slen-last_space`)
      DEFINE SYMBOL remainder = `remainder`
      DEFINE SYMBOL upper_right_out = DATA SET: 
   ENDIF

   LET last_space = `STRRINDEX("($remainder)", " ")`
   DEFINE SYMBOL schar = " "
   IF `last_space EQ 0` THEN 
      LET last_space = `STRRINDEX("($remainder)", "/")`
      DEFINE SYMBOL schar = "/"
      DEFINE SYMBOL putchar = /
   ENDIF
   IF `last_space EQ 0` THEN 
      LET last_space = `STRRINDEX("($remainder)", "_")`
      DEFINE SYMBOL schar = "_"
      DEFINE SYMBOL ptchar = _
   ENDIF
   IF `last_space EQ 0` THEN 
      LET last_space = `STRRINDEX("($remainder)", "-")`
      DEFINE SYMBOL schar = "-"
      DEFINE SYMBOL putchar = -
   ENDIF
   IF `last_space EQ 0` THEN 
      EXIT/SCRIPT
   ENDIF

   LET i1 = 1
   LET i2 = linelen
   CANCEL SYMBOL linebreak
   DEFINE SYMBOL long_right_label = 1

   REPEAT/RANGE=1:`nlines` (;\
      LET upper_right_line = SUBSTRING("($remainder)", `i1`, `i2-i1+1`);\
      DEFINE SYMBOL upper_right_line = `upper_right_line`;\
      LET last_space = STRRINDEX("($upper_right_line)", ($schar));\
      IF `last_space LE 0` THEN EXIT/LOOP;\
      LET upper_right_line = SUBSTRING("($remainder)", `i1`, `last_space`);\
      DEFINE SYMBOL upper_right_line = `upper_right_line`;\
     DEFINE SYMBOL upper_right_out = ($upper_right_out)($pchar)($linebreak)($upper_right_line);\
      LET i1 = `i1+last_space`;\
      LET i2 = `i1 + 79`;\
      DEFINE SYMBOL linebreak = <NL>@AS;\
      IF ($putchar"0|*>1") THEN DEFINE SYMBOL pchar = ($putchar);\
      IF `i2-i1+1 LE 0` THEN EXIT/LOOP;\
   )

   IF `i1 LT slen` THEN 
      LET slast = `STRLEN("($upper_right_line)")`;\
      LET upper_right_line = SUBSTRING("($remainder)", `i1`, `slen-i1+1`);\
      DEFINE SYMBOL upper_right_line = `upper_right_line`;\
      IF `slast + STRLEN("($upper_right_line)") LE linelen` THEN CANCEL SYMBOL linebreak;\
      DEFINE SYMBOL upper_right_out = ($upper_right_out)($pchar)($linebreak)($upper_right_line);\
   ENDIF

   DEFINE SYMBOL upper_right_($n_right_labels) = ($upper_right_out)
   DEFINE SYMBOL long_right_label = 1

ENDIF

DEFINE SYMBOL upper_right_($n_right_labels) = @AS($upper_right_($n_right_labels))
IF `($n_right_labels"0") GT 1` THEN \
   DEFINE SYMBOL upper_right_($n_right_labels) = @P2($upper_right_($n_right_labels))

! For comparison plots get rid of the long ugly URL labels at the upper right.
! (DO this in the difference scripts!??

IF `got_dataset_label EQ 0` THEN
   IF ($operation_service_action"0|Compare_Plot>1|*>0") THEN DEFINE SYMBOL n_right_labels = 0
ENDIF

! End of $RCSfile ------------LAS_url_label.jnl-------------------------- 

[Thread Prev][Thread Next][Index]


Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement