ChartDirector 6.0 (Ruby Edition)

V-Linear Meter Orientation


  

This example demonstration various orientations for vertical linear meters.

In a vertical linear meter, the scale labels can be positioned on the left or right side of the meter scale. This is controlled by the last argument to LinearMeter.setMeter, which can be Left or Right.

Source Code Listing

[Ruby On Rails Version - Controller] app/controllers/vlinearmeterorientation_controller.rb
require("chartdirector")

class VlinearmeterorientationController < ApplicationController

    def index()
        @title = "V-Linear Meter Orientation"
        @ctrl_file = File.expand_path(__FILE__)
        @noOfCharts = 2
        render :template => "templates/chartview"
    end

    #
    # Render and deliver the chart
    #
    def getchart()
        # This script can draw different charts depending on the chartIndex
        chartIndex = (params["img"]).to_i

        # The value to display on the meter
        value = 75.35

        # Create a LinearMeter object of size 70 x 240 pixels with very light grey (0xeeeeee)
        # backgruond and a light grey (0xccccccc) 3-pixel thick rounded frame
        m = ChartDirector::LinearMeter.new(70, 240, 0xeeeeee, 0xcccccc)
        m.setRoundedFrame(ChartDirector::Transparent)
        m.setThickFrame(3)

        # This example demonstrates putting the text labels at the left or right side by setting the
        # label alignment and scale position.
        if chartIndex == 0
            m.setMeter(28, 18, 20, 205, ChartDirector::Left)
        else
            m.setMeter(20, 18, 20, 205, ChartDirector::Right)
        end

        # Set meter scale from 0 - 100, with a tick every 10 units
        m.setScale(0, 100, 10)

        # Add a smooth color scale to the meter
        smoothColorScale = [0, 0x6666ff, 25, 0x00bbbb, 50, 0x00ff00, 75, 0xffff00, 100, 0xff0000]
        m.addColorScale(smoothColorScale)

        # Add a blue (0x0000cc) pointer at the specified value
        m.addPointer(value, 0x0000cc)

        # Output the chart
        send_data(m.makeChart2(ChartDirector::PNG), :type => "image/png", :disposition => "inline")

    end

end

[Ruby On Rails Version - View] app/views/templates/chartview.html.erb
<html>
<body style="margin:5px 0px 0px 5px">

<!-- Title -->
<div style="font-size:18pt; font-family:verdana; font-weight:bold">
    <%= @title %>
</div>
<hr style="border:solid 1px #000080" />

<!-- Source Code Listing Link -->
<div style="font-size:9pt; font-family:verdana; margin-bottom:1.5em">
    <%= link_to "Source Code Listing", 
        :controller => "cddemo", :action => "viewsource",
        :ctrl_file => @ctrl_file, :view_file => File.expand_path(__FILE__) %>
</div>

<!-- Create one or more IMG tags to display the demo chart(s) -->
<% 0.upto(@noOfCharts - 1) do |i| %>
    <img src="<%= url_for(:action => "getchart", :img => i) %>">
<% end %>

</body>
</html>

[Command Line Version] rubydemo/vlinearmeterorientation.rb
#!/usr/bin/env ruby
require("chartdirector")

def createChart(chartIndex)

    # The value to display on the meter
    value = 75.35

    # Create a LinearMeter object of size 70 x 240 pixels with very light grey (0xeeeeee) backgruond
    # and a light grey (0xccccccc) 3-pixel thick rounded frame
    m = ChartDirector::LinearMeter.new(70, 240, 0xeeeeee, 0xcccccc)
    m.setRoundedFrame(ChartDirector::Transparent)
    m.setThickFrame(3)

    # This example demonstrates putting the text labels at the left or right side by setting the
    # label alignment and scale position.
    if chartIndex == 0
        m.setMeter(28, 18, 20, 205, ChartDirector::Left)
    else
        m.setMeter(20, 18, 20, 205, ChartDirector::Right)
    end

    # Set meter scale from 0 - 100, with a tick every 10 units
    m.setScale(0, 100, 10)

    # Add a smooth color scale to the meter
    smoothColorScale = [0, 0x6666ff, 25, 0x00bbbb, 50, 0x00ff00, 75, 0xffff00, 100, 0xff0000]
    m.addColorScale(smoothColorScale)

    # Add a blue (0x0000cc) pointer at the specified value
    m.addPointer(value, 0x0000cc)

    # Output the chart
    m.makeChart("vlinearmeterorientation%s.png" % chartIndex)
end

createChart(0)
createChart(1)