tplot 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,59 +1,5 @@
1
1
  module Tplot
2
- class BarChart
3
- include Curses
4
-
5
- COLORS = [COLOR_BLUE,
6
- COLOR_GREEN,
7
- COLOR_RED,
8
- COLOR_CYAN,
9
- COLOR_MAGENTA,
10
- COLOR_YELLOW,
11
- COLOR_WHITE]
12
-
13
- attr_accessor :labels
14
- attr_accessor :limit
15
-
16
- def initialize
17
- @labels = []
18
- @datas ||= []
19
- @limit = 800
20
- end
21
-
22
- def add(values)
23
- @datas.push(values)
24
- @datas.shift if @datas.size > limit
25
- draw
26
- end
27
-
28
- def update(values)
29
- @datas.pop
30
- @datas.push(values)
31
- draw
32
- end
33
-
34
- def draw
35
- pre_draw
36
-
37
- draw_frame_pre
38
- draw_line
39
- draw_frame_post
40
-
41
- setpos(0, 0)
42
- refresh
43
- end
44
-
45
- def pre_draw
46
- clear
47
- start_color
48
- init_colors
49
-
50
- @min_value = (@datas.flatten.min < 0) ? @datas.flatten.min : 0
51
- @max_value = (@datas.flatten.max < 0) ? 1 : @datas.flatten.max
52
-
53
- @height = lines - 1
54
- @width = cols - 1
55
- end
56
-
2
+ class BarChart < LineChart
57
3
  def draw_line
58
4
  tmp_data = @datas.dup
59
5
  (-@width..0).map(&:abs).each do |col|
@@ -72,70 +18,11 @@ module Tplot
72
18
  (min..max).each do |line|
73
19
  setpos(line, col)
74
20
  attron(color_pair(COLORS[idx % COLORS.size])|A_NORMAL) do
75
- addstr(" ")
21
+ addstr("*")
76
22
  end
77
23
  end
78
24
  end
79
25
  end
80
26
  end
81
-
82
- def print_char(v)
83
- if v.even?
84
- return "_"
85
- else
86
- return "-"
87
- end
88
- end
89
-
90
- def calc_mapping_value(value)
91
- range = (@max_value - @min_value).abs
92
- return 0 if range == 0
93
- ratio = (value - @min_value).abs.to_f / range.to_f
94
- (@height * ratio * 2).to_i
95
- end
96
-
97
- def calc_position(value)
98
- range = (@max_value - @min_value).abs
99
- return 0 if range == 0
100
- ratio = (value - @min_value).abs.to_f / range.to_f
101
- LOGGER.debug "#{range}:#{ratio}"
102
- (@height * (1 - ratio)).to_i
103
- end
104
-
105
- def draw_frame_pre
106
- setpos(calc_position(@max_value), 0)
107
- addstr(print_char(calc_mapping_value(@max_value)) * (@width + 1))
108
-
109
- setpos(calc_position(0), 0)
110
- addstr(print_char(calc_mapping_value(0)) * (@width + 1))
111
-
112
- setpos(calc_position(@min_value), 0)
113
- addstr(print_char(calc_mapping_value(@min_value)) * (@width + 1))
114
- end
115
-
116
- def draw_frame_post
117
- setpos(calc_position(@max_value), 0)
118
- addstr(@max_value.to_s)
119
-
120
- setpos(calc_position(0), 0)
121
- addstr(0.to_s)
122
-
123
- setpos(calc_position(@min_value), 0)
124
- addstr(@min_value.to_s)
125
-
126
- labels.each_with_index do |label, idx|
127
- setpos(idx + 2, 2)
128
- attron(color_pair(COLORS[idx % COLORS.size])|A_NORMAL) do
129
- addstr(label)
130
- end
131
- end
132
-
133
- end
134
-
135
- def init_colors
136
- COLORS.each_with_index do |col,idx|
137
- init_pair(col, COLOR_BLACK, col)
138
- end
139
- end
140
27
  end
141
28
  end
@@ -22,13 +22,11 @@ module Tplot
22
22
  def add(values)
23
23
  @datas.push(values)
24
24
  @datas.shift if @datas.size > limit
25
- draw
26
25
  end
27
26
 
28
27
  def update(values)
29
28
  @datas.pop
30
29
  @datas.push(values)
31
- draw
32
30
  end
33
31
 
34
32
  def draw
@@ -61,43 +59,29 @@ module Tplot
61
59
  break unless data
62
60
  data.each_with_index do |value, idx|
63
61
  setpos(calc_position(value), col)
64
- v = calc_mapping_value(value)
65
62
  attron(color_pair(COLORS[idx % COLORS.size])|A_NORMAL) do
66
- addstr(print_char(v))
63
+ addstr("*")
67
64
  end
68
65
  end
69
66
  end
70
67
  end
71
68
 
72
- def print_char(v)
73
- if v.even?
74
- return "_"
75
- else
76
- return "-"
77
- end
78
- end
79
-
80
- def calc_mapping_value(value)
81
- range = (@max_value - @min_value).abs
82
- ratio = (value - @min_value).abs.to_f / range.to_f
83
- (@height * ratio * 2).to_i
84
- end
85
-
86
69
  def calc_position(value)
87
70
  range = (@max_value - @min_value).abs
71
+ return 0 if range == 0
88
72
  ratio = (value - @min_value).abs.to_f / range.to_f
89
73
  (@height * (1 - ratio)).to_i
90
74
  end
91
75
 
92
76
  def draw_frame_pre
93
77
  setpos(calc_position(@max_value), 0)
94
- addstr(print_char(calc_mapping_value(@max_value)) * (@width + 1))
78
+ addstr("-" * (@width + 1))
95
79
 
96
80
  setpos(calc_position(0), 0)
97
- addstr(print_char(calc_mapping_value(0)) * (@width + 1))
81
+ addstr("-" * (@width + 1))
98
82
 
99
83
  setpos(calc_position(@min_value), 0)
100
- addstr(print_char(calc_mapping_value(@min_value)) * (@width + 1))
84
+ addstr("-" * (@width + 1))
101
85
  end
102
86
 
103
87
  def draw_frame_post
@@ -1,3 +1,3 @@
1
1
  module Tplot
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,42 @@
1
+ class Tplot::Csv < Tplot::Plugin
2
+
3
+ def initialize
4
+ require 'csv'
5
+ @options = {
6
+ chart_type: Tplot::BarChart,
7
+ delay: 1,
8
+ use_header: false
9
+ }
10
+ end
11
+
12
+ def parser
13
+ OptionParser.new do |opt|
14
+ opt.banner = "Usage: tplot csv csv_file [options]\n"
15
+ opt.on('-l', '--line','line chart.') do
16
+ @options[:chart_type] = Tplot::LineChart
17
+ end
18
+ opt.on('-h', '--header','set header first row') do
19
+ @options[:use_header] = true
20
+ end
21
+ end
22
+ end
23
+
24
+ def execute
25
+ parser.parse!(ARGV)
26
+ file_name = ARGV.shift
27
+
28
+ chart = @options[:chart_type].new
29
+ CSV.foreach(file_name) do |csv|
30
+ if @options[:use_header]
31
+ chart.labels = ["hoge","moge"]
32
+ @options[:use_header] = false
33
+ next
34
+ end
35
+ chart.add(csv.map(&:to_f))
36
+ end
37
+ chart.draw
38
+ end
39
+
40
+ description "plot csv file"
41
+ help self.new.parser.to_s
42
+ end
@@ -7,6 +7,7 @@ class Tplot::Free < Tplot::Plugin
7
7
  while true
8
8
  uptime = `free | grep Mem`.gsub(/^Mem:/, "").split(" ").map{|v| v.strip.to_f}
9
9
  chart.add(uptime[0..1])
10
+ chart.draw
10
11
  sleep 1
11
12
  end
12
13
  end
@@ -1,7 +1,5 @@
1
1
  class Tplot::Help < Tplot::Plugin
2
2
 
3
- description "print plugins help."
4
-
5
3
  def execute
6
4
  plugin_name = ARGV.shift
7
5
  if File.exists?("#{PLUGIN_DIR}/#{plugin_name}.rb")
@@ -12,6 +10,7 @@ class Tplot::Help < Tplot::Plugin
12
10
  print_help("#{PLUGIN_DIR}/#{plugin_name}.rb", USER_PLUGIN_DIR)
13
11
  exit 0
14
12
  end
13
+ puts "#{plugin_name} is not installed."
15
14
  end
16
15
 
17
16
  def print_help(plugin_path, dir)
@@ -21,4 +20,10 @@ class Tplot::Help < Tplot::Plugin
21
20
  return puts plugin_class.help.call if plugin_class.help.is_a? Proc
22
21
  return puts plugin_class.help
23
22
  end
23
+
24
+ description "print plugins help."
25
+ help <<-END
26
+ Usage: tplot help [plugin_name]
27
+ print plugin's help.
28
+ END
24
29
  end
@@ -1,7 +1,5 @@
1
1
  class Tplot::List < Tplot::Plugin
2
2
 
3
- description "list installed plugins."
4
-
5
3
  def execute
6
4
  # builtin plugin.
7
5
  puts "-- builtin plugins --"
@@ -22,4 +20,10 @@ class Tplot::List < Tplot::Plugin
22
20
  plugin_class = Tplot.const_get(name.capitalize)
23
21
  puts "tplot #{name}\t: #{plugin_class.description}"
24
22
  end
23
+
24
+ description "list installed plugins."
25
+ help <<-END
26
+ Usage: tplot list
27
+ list installed plugins.
28
+ END
25
29
  end
@@ -9,6 +9,7 @@ class Tplot::Network < Tplot::Plugin
9
9
  inoctet ||= values.first
10
10
  outoctet ||= values.last
11
11
  chart.add([values.first - inoctet, values.last - outoctet])
12
+ chart.draw
12
13
  inoctet, outoctet = values.first, values.last
13
14
  sleep 1
14
15
  end
@@ -29,6 +29,7 @@ class Tplot::Uptime < Tplot::Plugin
29
29
  while true
30
30
  uptime = `uptime`.gsub(/^.*load average: /, "").split(",").map{|v| v.strip.to_f}
31
31
  chart.add(uptime)
32
+ chart.draw
32
33
  sleep @options[:delay]
33
34
  end
34
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tplot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-21 00:00:00.000000000 Z
12
+ date: 2012-10-22 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Tplot is text base graph plot tool.
15
15
  email:
@@ -31,6 +31,7 @@ files:
31
31
  - lib/tplot/line_chart.rb
32
32
  - lib/tplot/plugin.rb
33
33
  - lib/tplot/version.rb
34
+ - plugins/csv.rb
34
35
  - plugins/free.rb
35
36
  - plugins/help.rb
36
37
  - plugins/list.rb