' Name: Plot_Stick_Type2
'
' Title: Plot stick time-series graphs (thin bars) for 5-range pH
'
' Topics: Views
'
' Description: Plot data as vertical "sticks" or thin bars
'              
' Author: Michael Silberbauer 2001
' Institute for Water Quality Studies, Department of Water and Sanitation
' Private Bag X313 PRETORIA South Africa 0001
' Requires:
'
' Self:av.Run( "Plot_Stick_Type2", { MinX, MaxX, MinY, MaxY, OriginX, OriginY, ScaleX, ScaleY, theVTab, theBitMap, PlotItem, Guidelines, ColList } )
'
' Results:
' -----------------------------------------------------------------------------

MinX = Self.Get(0)
MaxX = Self.Get(1)
MinY = Self.Get(2)
MaxY = Self.Get(3)
OriginX = Self.Get(4)
OriginY = Self.Get(5)
ScaleX = Self.Get(6)
ScaleY = Self.Get(7)
theVTab = Self.Get(8)
theBitMap = Self.Get(9)
PlotItem = Self.Get(10)
Guidelines = Self.Get(11)
ColList = Self.Get(12)
_Dark_Blue = Color.Make
_Dark_Blue.SetRGBList({0,0,128})
_Light_Green = Color.Make
_Light_Green.SetRGBList({30,255,30})
_Dark_Green = Color.Make
_Dark_Green.SetRGBList({0,128,0})
_Salmon_Pink = Color.Make
_Salmon_Pink.SetRGBList({255,128,128})
_Orange = Color.Make
_Orange.SetRGBList({255,200,0})
_Dark_Red = Color.Make
_Dark_Red.SetRGBList({128,0,0})
nib = 1
theProject = av.GetProject
theView = av.GetActiveDoc
theGraphics = theView.GetGraphics
theDisplay = theView.GetDisplay
theVarField = theVTab.FindField(PlotItem.AsString)
the_nDateField = theVTab.FindField("Ndate")
theDateField = theVTab.FindField("Date")
theTimeField = theVTab.FindField("Time")

' Plot each data point as a vertical bar starting from pH 7 (neutral):
' any part exceeding the set guidelines is coloured according to the rules in classcodes.txt.
' Prototype 1:
'  BLUE
'11-----------
'  CYAN
' 9-----------
'  GREEN
' 6-----------
'  YELLOW
' 4-----------
'  RED
' Prototype 2:
'  DARK_BLUE
'11.0-----------
'  BLUE
'10.5-----------
'  CYAN
'10.0-----------
'  LIGHT_GREEN
' 9.5-----------
'  GREEN
' 5.0-----------
'  SALMON_PINK
' 4.5-----------
'  ORANGE
' 4.0-----------
'  RED
' 3.0-----------
'  DARK_RED
'(Colours set in SetConstants)

totalBits = theBitMap.GetSize
selBits = theBitMap.Count
av.ClearMsg
av.ClearStatus
record = 0
if (selBits>0) then
  OriginY7 = OriginY+((7-MinY)*ScaleY)
  Y_List = List.Make
  nGuide = 0
  for each Guideline in Guidelines
    VariableYg = OriginY+((Guideline-MinY)*ScaleY)
    Y_List.Add(VariableYg)
    nGuide = nGuide+1
  end
  for each rec in theBitMap
    record = record+1
    av.SetStatus(100*(record/selBits))
    Variable = theVTab.ReturnValue(theVarField,rec)
    TimeText = theVTab.ReturnValue(theTimeField,rec)
    nDate = theVTab.ReturnValue(theDateField,rec)
    nDate = nDate.SetFormat("J").AsString.AsNumber
    hTime = (TimeText.AsNumber/100).Round
    mTime = (TimeText.AsNumber/100)-hTime
    mTime = mTime/60
    nDate = nDate+((hTime+mTime)/24)
    nDate0 = nDate-0.25
    nDate2 = nDate+0.25
    if (Variable>=0) then
      av.ShowMsg("Plotting graph of"++PlotItem.AsString++"="++Variable.AsString++"...")
      VariableX = OriginX+((nDate-MinX)*ScaleX)
      VariableY = OriginY+((Variable-MinY)*ScaleY)
      
      ' Nine cases!
      

      if (Variable<=Guidelines.Get(0)) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(0))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Dark_Red)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(0),VariableX@Y_List.Get(1))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetRed)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(1),VariableX@Y_List.Get(2))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Salmon_Pink)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(2),VariableX@Y_List.Get(3))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Orange)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(3),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>Guidelines.Get(0)) and (Variable<=Guidelines.Get(1))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(1))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetRed)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(1),VariableX@Y_List.Get(2))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Salmon_Pink)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(2),VariableX@Y_List.Get(3))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Orange)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(3),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>Guidelines.Get(1)) and (Variable<=Guidelines.Get(2))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(2))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Salmon_Pink)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(2),VariableX@Y_List.Get(3))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Orange)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(3),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>=Guidelines.Get(2)) and (Variable<=Guidelines.Get(3))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(3))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Orange)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(3),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>Guidelines.Get(3)) and (Variable<Guidelines.Get(4))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>=Guidelines.Get(4)) and (Variable<Guidelines.Get(5))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(5))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Light_Green)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(4),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>=Guidelines.Get(5)) and (Variable<Guidelines.Get(6))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(5))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetCyan)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(5),VariableX@Y_List.Get(4))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Light_Green)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(4),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if ((Variable>=Guidelines.Get(6)) and (Variable<Guidelines.Get(7))) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(6))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetBlue)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(5),VariableX@Y_List.Get(6))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetCyan)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(4),VariableX@Y_List.Get(5))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Light_Green)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(4),VariableX@OriginY7)
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
      if (Variable>=Guidelines.Get(7)) then
        aLine = Line.Make(VariableX@VariableY,VariableX@Y_List.Get(7))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Dark_Blue)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(6),VariableX@Y_List.Get(7))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetBlue)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(5),VariableX@Y_List.Get(6))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetCyan)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@Y_List.Get(4),VariableX@Y_List.Get(5))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(_Light_Green)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        aLine = Line.Make(VariableX@OriginY7,VariableX@Y_List.Get(4))
        gLine = GraphicShape.Make(aLine)
        FatLine = BasicPen.Make
        FatLine.SetSize(nib)
        FatLine.SetColor(Color.GetGreen)
        aSymbol = gLine.SetSymbol(FatLine)
        theGraphics.AddBatch(gLine)
        end
    end
  end
end
theGraphics.EndBatch
return {}