gooby 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +200 -35
- data/bin/code_scan.rb +1 -3
- data/bin/gooby_been_there.rb +12 -14
- data/bin/gooby_config.rb +11 -3
- data/bin/gooby_csv_validation.rb +50 -0
- data/bin/gooby_first_trackpoints_as_poi.rb +31 -0
- data/bin/gooby_gen_gmap.rb +7 -3
- data/bin/gooby_parser.rb +7 -5
- data/bin/gooby_splitter.rb +7 -4
- data/bin/gooby_version.rb +7 -3
- data/bin/run_all.sh +12 -2
- data/bin/run_been_there.sh +4 -1
- data/bin/run_config.sh +12 -0
- data/bin/run_csv_validation.sh +15 -0
- data/bin/run_db_gen.sh +1 -1
- data/bin/run_db_load.sh +1 -1
- data/bin/run_first_trackpoints_as_poi.sh +16 -0
- data/bin/run_gen_gmaps.sh +7 -6
- data/bin/run_parse_full.sh +45 -0
- data/bin/run_parse_samples.sh +21 -0
- data/bin/run_split.sh +5 -4
- data/bin/run_version.sh +12 -0
- data/config/gooby_config.yaml +130 -131
- data/data/20050305_corporate_cup_hm.csv +251 -251
- data/data/20050430_nashville_marathon_km.csv +1208 -0
- data/data/20060115_phoenix_marathon.csv +1280 -1280
- data/data/20070101_davidson_11m.csv +251 -0
- data/data/{davidson_11m_20070101.xml → 20070101_davidson_11m.xml} +0 -0
- data/data/{davidson_5K_20070505.xml → 20070505_davidson_5k.xml} +0 -0
- data/data/20070505_davidson_5k_km.csv +286 -0
- data/data/hrm1.csv +5 -0
- data/lib/gooby.rb +27 -3144
- data/lib/gooby_code_scanner.rb +288 -0
- data/lib/gooby_command.rb +210 -0
- data/lib/gooby_configuration.rb +123 -0
- data/lib/gooby_counter_hash.rb +95 -0
- data/lib/gooby_course.rb +117 -0
- data/lib/gooby_csv_point.rb +71 -0
- data/lib/gooby_csv_reader.rb +71 -0
- data/lib/gooby_csv_run.rb +28 -0
- data/lib/gooby_delim_line.rb +42 -0
- data/lib/gooby_dttm.rb +87 -0
- data/lib/gooby_duration.rb +86 -0
- data/lib/gooby_forerunner_xml_parser.rb +191 -0
- data/lib/gooby_forerunner_xml_splitter.rb +115 -0
- data/lib/gooby_google_map_generator.rb +385 -0
- data/lib/gooby_history.rb +41 -0
- data/lib/gooby_kernel.rb +163 -0
- data/lib/gooby_lap.rb +30 -0
- data/lib/gooby_line.rb +80 -0
- data/lib/gooby_object.rb +22 -0
- data/lib/gooby_point.rb +172 -0
- data/lib/gooby_run.rb +213 -0
- data/lib/gooby_simple_xml_parser.rb +50 -0
- data/lib/gooby_test_helper.rb +23 -0
- data/lib/gooby_track.rb +47 -0
- data/lib/gooby_track_point.rb +229 -0
- data/lib/gooby_training_center_xml_parser.rb +224 -0
- data/lib/gooby_training_center_xml_splitter.rb +116 -0
- data/lib/split_code.sh +29 -0
- data/samples/20050305_corporate_cup_hm.html +269 -269
- data/samples/20050430_nashville_marathon.html +1410 -1266
- data/samples/20060115_phoenix_marathon.html +1311 -1311
- data/samples/{davidson_11m_20070101.html → 20070101_davidson_11m.html} +267 -267
- data/samples/20070505_davidson_5k.html +413 -0
- data/samples/been_there.txt +52 -704
- data/samples/hrm1.html +87 -0
- data/sql/gooby.ddl +20 -16
- data/sql/gooby_load.dml +36 -9
- metadata +48 -14
- data/bin/example_usage.txt +0 -55
- data/bin/run_parse.sh +0 -43
- data/bin/run_parse_named.sh +0 -19
- data/data/20050430_nashville_marathon.csv +0 -1208
- data/data/davidson_11m_20070101.csv +0 -251
- data/data/davidson_5K_20070505.csv +0 -286
- data/data/test1.txt +0 -4
- data/samples/davidson_5K_20070505.html +0 -395
data/lib/gooby_lap.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Gooby = Google APIs + Ruby
|
4
|
+
Gooby - Copyright 2007 by Chris Joakim.
|
5
|
+
Gooby is available under GNU General Public License (GPL) license.
|
6
|
+
|
7
|
+
=end
|
8
|
+
|
9
|
+
module Gooby
|
10
|
+
|
11
|
+
=begin rdoc
|
12
|
+
Instances of this class represent a <Lap> aggregate object from a
|
13
|
+
Forerunner XML file.
|
14
|
+
=end
|
15
|
+
|
16
|
+
class Lap < GoobyObject
|
17
|
+
|
18
|
+
attr_accessor :number, :startTime, :duration, :length, :begin_position, :end_position
|
19
|
+
|
20
|
+
def initialize(num)
|
21
|
+
@number = num
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
return "Lap: num: #{@number} start: #{@startTime} dur: #{@duration} len: #{@length} begin: #{@begin_position.to_s} end: #{@end_position.to_s}"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end # end of module
|
data/lib/gooby_line.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Gooby = Google APIs + Ruby
|
4
|
+
Gooby - Copyright 2007 by Chris Joakim.
|
5
|
+
Gooby is available under GNU General Public License (GPL) license.
|
6
|
+
|
7
|
+
=end
|
8
|
+
|
9
|
+
module Gooby
|
10
|
+
|
11
|
+
class Line < GoobyObject
|
12
|
+
|
13
|
+
attr_accessor :raw_data, :tokens
|
14
|
+
|
15
|
+
def initialize(raw='', delim=nil, strip=false)
|
16
|
+
if strip
|
17
|
+
@raw_data = raw.strip
|
18
|
+
else
|
19
|
+
@raw_data = raw
|
20
|
+
end
|
21
|
+
|
22
|
+
@tokens = tokenize(@raw_data, delim, strip=false)
|
23
|
+
end
|
24
|
+
|
25
|
+
public
|
26
|
+
|
27
|
+
def token(idx)
|
28
|
+
@tokens[idx]
|
29
|
+
end
|
30
|
+
|
31
|
+
def token_count
|
32
|
+
@tokens.size
|
33
|
+
end
|
34
|
+
|
35
|
+
def token_idx_equals(idx, value)
|
36
|
+
if idx < token_count
|
37
|
+
if @tokens[idx] == value
|
38
|
+
return true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
def match(pattern)
|
45
|
+
@raw_data.match(pattern)
|
46
|
+
end
|
47
|
+
|
48
|
+
def is_comment
|
49
|
+
s = @raw_data.strip
|
50
|
+
(s.match('^#')) ? true : false
|
51
|
+
end
|
52
|
+
|
53
|
+
def is_populated_non_comment
|
54
|
+
s = @raw_data.strip
|
55
|
+
if s.size == 0
|
56
|
+
return false
|
57
|
+
end
|
58
|
+
if is_comment
|
59
|
+
return false
|
60
|
+
end
|
61
|
+
return true
|
62
|
+
end
|
63
|
+
|
64
|
+
def concatinate_tokens(start_idx = 0)
|
65
|
+
s = ''
|
66
|
+
idx = -1
|
67
|
+
@tokens.each { |tok|
|
68
|
+
idx = idx + 1
|
69
|
+
if idx >= start_idx
|
70
|
+
s << tok
|
71
|
+
s << ' '
|
72
|
+
end
|
73
|
+
}
|
74
|
+
s.strip!
|
75
|
+
s
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end # end of module
|
data/lib/gooby_object.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Gooby = Google APIs + Ruby
|
4
|
+
Gooby - Copyright 2007 by Chris Joakim.
|
5
|
+
Gooby is available under GNU General Public License (GPL) license.
|
6
|
+
|
7
|
+
=end
|
8
|
+
|
9
|
+
module Gooby
|
10
|
+
|
11
|
+
=begin rdoc
|
12
|
+
This is the abstract superclass of several Gooby classes.
|
13
|
+
It includes module GoobyKernel.
|
14
|
+
=end
|
15
|
+
|
16
|
+
class GoobyObject
|
17
|
+
|
18
|
+
include Gooby::GoobyKernel
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end # end of module
|
data/lib/gooby_point.rb
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Gooby = Google APIs + Ruby
|
4
|
+
Gooby - Copyright 2007 by Chris Joakim.
|
5
|
+
Gooby is available under GNU General Public License (GPL) license.
|
6
|
+
|
7
|
+
=end
|
8
|
+
|
9
|
+
module Gooby
|
10
|
+
|
11
|
+
class Point < GoobyObject
|
12
|
+
|
13
|
+
attr_accessor :number, :latitude, :longitude, :altitude, :uom, :note
|
14
|
+
|
15
|
+
def initialize(*args)
|
16
|
+
@number, @latitude, @longitude, @altitude, @uom, @heartbeat, @note = '', '', '', '', 'm', -1, ''
|
17
|
+
if args
|
18
|
+
if args.size == 1
|
19
|
+
initialize_from_string(args[0]) # yaml
|
20
|
+
else
|
21
|
+
initialize_from_array(args)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def csv_delim
|
27
|
+
'|'
|
28
|
+
end
|
29
|
+
|
30
|
+
def english_system
|
31
|
+
if @uom
|
32
|
+
(@uom == 'm') ? true : false
|
33
|
+
else
|
34
|
+
return true # english is the default
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def metric_system
|
39
|
+
return false if !english_system
|
40
|
+
end
|
41
|
+
|
42
|
+
def initialize_from_array(args)
|
43
|
+
@latitude = args[0] if args.size > 0
|
44
|
+
@longitude = args[1] if args.size > 1
|
45
|
+
@altitude = args[2] if args.size > 2
|
46
|
+
@note = args[3] if args.size > 3
|
47
|
+
end
|
48
|
+
|
49
|
+
def initialize_from_string(yaml_value_string)
|
50
|
+
tokens = yaml_value_string.split
|
51
|
+
if (tokens.size > 2)
|
52
|
+
@latitude = tokens[0]
|
53
|
+
@longitude = tokens[1]
|
54
|
+
@note = ''
|
55
|
+
count = 0
|
56
|
+
tokens.each { |tok|
|
57
|
+
count = count + 1
|
58
|
+
if (count > 2)
|
59
|
+
@note << tok
|
60
|
+
@note << ' '
|
61
|
+
end
|
62
|
+
}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
public
|
67
|
+
|
68
|
+
def has_coordinates?
|
69
|
+
return false if @latitude == nil
|
70
|
+
return false if @latitude.size < 1
|
71
|
+
return false if @longitude == nil
|
72
|
+
return false if @longitude .size < 1
|
73
|
+
return true
|
74
|
+
end
|
75
|
+
|
76
|
+
def to_s
|
77
|
+
return "lat: #{@latitude} lng: #{@longitude} alt: #{@altitude} note: #{@note}"
|
78
|
+
end
|
79
|
+
|
80
|
+
def to_formatted_string
|
81
|
+
s = "lat: #{@latitude.to_s.ljust(20)}"
|
82
|
+
s << " lng: #{@longitude.to_s.ljust(20)}"
|
83
|
+
s << " poi.#{@number.to_s.ljust(12)}" if @number
|
84
|
+
s << " #{@note}" if @note
|
85
|
+
s
|
86
|
+
end
|
87
|
+
|
88
|
+
def to_csv
|
89
|
+
return "#{@latitude}#{csv_delim}#{@longitude}#{csv_delim}#{@altitude}"
|
90
|
+
end
|
91
|
+
|
92
|
+
def latitude_as_float
|
93
|
+
@latitude ? @latitude.to_f : invalid_latitude
|
94
|
+
end
|
95
|
+
|
96
|
+
def longitude_as_float
|
97
|
+
@longitude ? @longitude.to_f : invalid_longitude
|
98
|
+
end
|
99
|
+
|
100
|
+
def altitude_as_float
|
101
|
+
@altitude ? @altitude.to_f : invalid_altitude
|
102
|
+
end
|
103
|
+
|
104
|
+
def heartbeat_as_float
|
105
|
+
@heartbeat? @heartbeat.to_f : invalid_heartbeat
|
106
|
+
end
|
107
|
+
|
108
|
+
def degrees_diff(another_point)
|
109
|
+
if (another_point)
|
110
|
+
puts "this: #{to_s}" if false
|
111
|
+
puts "other: #{another_point.to_s}" if false
|
112
|
+
puts "lats: #{latitude_as_float} #{another_point.latitude_as_float}" if false
|
113
|
+
puts "lngs: #{longitude_as_float} #{another_point.longitude_as_float}" if false
|
114
|
+
lat_diff = latitude_as_float - another_point.latitude_as_float
|
115
|
+
lng_diff = longitude_as_float - another_point.longitude_as_float
|
116
|
+
diff = lat_diff.abs + lng_diff.abs
|
117
|
+
puts "diff: #{diff} #{lat_diff} #{lng_diff}" if false
|
118
|
+
diff
|
119
|
+
else
|
120
|
+
360
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def proximity(another_point, uom)
|
125
|
+
if (another_point)
|
126
|
+
arg1 = latitude_as_float
|
127
|
+
arg2 = another_point.latitude_as_float
|
128
|
+
arg3 = latitude_as_float
|
129
|
+
arg4 = another_point.latitude_as_float
|
130
|
+
theta = longitude_as_float - another_point.longitude_as_float
|
131
|
+
res1 = Math.sin(deg2rad(arg1))
|
132
|
+
res2 = Math.sin(deg2rad(arg2))
|
133
|
+
res3 = Math.cos(deg2rad(arg3))
|
134
|
+
res4 = Math.cos(deg2rad(arg4))
|
135
|
+
res5 = Math.cos(deg2rad(theta.to_f))
|
136
|
+
dist = ((res1 * res2) + (res3 * res4 * res5)).to_f
|
137
|
+
|
138
|
+
if (!dist.nan?)
|
139
|
+
dist = Math.acos(dist.to_f)
|
140
|
+
if (!dist.nan?)
|
141
|
+
dist = rad2deg(dist)
|
142
|
+
if (!dist.nan?)
|
143
|
+
dist = dist * 60 * 1.1515;
|
144
|
+
if (!dist.nan?)
|
145
|
+
if uom == "km"
|
146
|
+
dist = dist * 1.609344;
|
147
|
+
end
|
148
|
+
if uom == "n"
|
149
|
+
dist = dist * 0.8684;
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
return dist.to_f
|
155
|
+
else
|
156
|
+
return 0
|
157
|
+
end
|
158
|
+
else
|
159
|
+
return 0
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
def deg2rad(degrees)
|
164
|
+
(((0 + degrees) * Math::PI) / 180)
|
165
|
+
end
|
166
|
+
|
167
|
+
def rad2deg(radians)
|
168
|
+
(((0 + radians) * 180) / Math::PI)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
end # end of module
|
data/lib/gooby_run.rb
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Gooby = Google APIs + Ruby
|
4
|
+
Gooby - Copyright 2007 by Chris Joakim.
|
5
|
+
Gooby is available under GNU General Public License (GPL) license.
|
6
|
+
|
7
|
+
=end
|
8
|
+
|
9
|
+
module Gooby
|
10
|
+
|
11
|
+
=begin rdoc
|
12
|
+
Instances of this class represent a <Run> aggregate object from a
|
13
|
+
Forerunner XML file.
|
14
|
+
|
15
|
+
Additionally, there is distance, pace, and Google Map generation logic
|
16
|
+
in this class.
|
17
|
+
=end
|
18
|
+
|
19
|
+
class Run < GoobyObject
|
20
|
+
|
21
|
+
attr_accessor :number, :run_id, :descr, :notes, :tracks, :tkpts, :laps, :distance
|
22
|
+
|
23
|
+
def initialize(number=0, descr='')
|
24
|
+
@number = number
|
25
|
+
@run_id = nil
|
26
|
+
@descr = descr
|
27
|
+
@notes = ''
|
28
|
+
@tracks = Array.new
|
29
|
+
@tkpts = Array.new
|
30
|
+
@laps = Array.new
|
31
|
+
@distance = 0
|
32
|
+
@configuration = Hash.new
|
33
|
+
@logProgress = true
|
34
|
+
@finished = false
|
35
|
+
end
|
36
|
+
|
37
|
+
public
|
38
|
+
|
39
|
+
# This method is invoked at end-of-parsing.
|
40
|
+
def finish()
|
41
|
+
@logProgress = false
|
42
|
+
unless @finished
|
43
|
+
@tracks.each { |trk|
|
44
|
+
trk.trackpoints().each { |tkpt|
|
45
|
+
tkpt.run_number = @number
|
46
|
+
@tkpts.push(tkpt)
|
47
|
+
}
|
48
|
+
}
|
49
|
+
compute_distance_and_pace
|
50
|
+
compute_splits
|
51
|
+
set_run_ids
|
52
|
+
@finished = true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
public
|
57
|
+
|
58
|
+
def add_track(trk)
|
59
|
+
if trk != nil
|
60
|
+
@tracks.push(trk)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def trackpoint_count()
|
65
|
+
@tkpts.size()
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_lap(lap)
|
69
|
+
@laps.push(lap)
|
70
|
+
end
|
71
|
+
|
72
|
+
def lap_count()
|
73
|
+
@laps.size
|
74
|
+
end
|
75
|
+
|
76
|
+
def start_dttm()
|
77
|
+
count = 0
|
78
|
+
@tracks.each { |trk|
|
79
|
+
trk.trackpoints().each { |tkpt|
|
80
|
+
return tkpt.dttm()
|
81
|
+
}
|
82
|
+
}
|
83
|
+
return nil
|
84
|
+
end
|
85
|
+
|
86
|
+
def end_dttm()
|
87
|
+
lastOne = nil
|
88
|
+
@tracks.each { |trk|
|
89
|
+
trk.trackpoints().each { |tkpt|
|
90
|
+
lastOne = tkpt.dttm()
|
91
|
+
}
|
92
|
+
}
|
93
|
+
lastOne
|
94
|
+
end
|
95
|
+
|
96
|
+
def duration()
|
97
|
+
first = start_dttm()
|
98
|
+
last = end_dttm()
|
99
|
+
if first
|
100
|
+
if last
|
101
|
+
return last.hhmmss_diff(first)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
return "00:00:00"
|
105
|
+
end
|
106
|
+
|
107
|
+
def start_yyyy_mm_dd
|
108
|
+
if start_dttm()
|
109
|
+
start_dttm().yyyy_mm_dd()
|
110
|
+
else
|
111
|
+
""
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def start_hh_mm_ss
|
116
|
+
if start_dttm()
|
117
|
+
start_dttm().hh_mm_ss()
|
118
|
+
else
|
119
|
+
""
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def end_hh_mm_ss
|
124
|
+
if end_dttm()
|
125
|
+
end_dttm().hh_mm_ss()
|
126
|
+
else
|
127
|
+
""
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def to_s
|
132
|
+
finish() unless @finished
|
133
|
+
s = "Run: #{@number} date: #{start_yyyy_mm_dd} distance: #{distance} duration: #{duration} "
|
134
|
+
s << " tracks: #{@tracks.size} tkpts: #{trackpoint_count} laps: #{lap_count} "
|
135
|
+
s << " notes: #{@notes} "
|
136
|
+
s
|
137
|
+
end
|
138
|
+
|
139
|
+
def print_string
|
140
|
+
finish() unless @finished
|
141
|
+
"Run number=#{@number} tracks=#{@tracks.size} tkpts=#{@tkpts.size} laps=#{@laps.size} distance=#{@distance} "
|
142
|
+
end
|
143
|
+
|
144
|
+
def put_csv()
|
145
|
+
finish() unless @finished
|
146
|
+
puts "#{@number}|#{}|#{start_yyyy_mm_dd()}|#{start_hh_mm_ss()}|#{end_hh_mm_ss}|#{duration()}|#{@distance}|#{@tracks.size}|#{trackpoint_count()}|#{lap_count}|#{@notes.strip}"
|
147
|
+
end
|
148
|
+
|
149
|
+
def put_tkpt_csv()
|
150
|
+
finish() unless @finished
|
151
|
+
@tkpts.each { | tkpt |
|
152
|
+
@prev_tkpt = tkpt if (@prev_tkpt == nil)
|
153
|
+
puts tkpt.to_csv(@prev_tkpt)
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
def put_laps
|
158
|
+
@laps.each { | lap | puts lap.to_s }
|
159
|
+
end
|
160
|
+
|
161
|
+
private
|
162
|
+
|
163
|
+
def compute_distance_and_pace
|
164
|
+
cumulative_dist = 0.to_f;
|
165
|
+
curr_index = -1
|
166
|
+
prev_tkpt = nil
|
167
|
+
start_dttm = nil
|
168
|
+
@tkpts.each { | tkpt |
|
169
|
+
curr_index = curr_index + 1
|
170
|
+
if curr_index == 0
|
171
|
+
start_dttm = tkpt.dttm()
|
172
|
+
prev_tkpt = tkpt
|
173
|
+
else
|
174
|
+
cumulative_dist = tkpt.compute_distance_and_pace(curr_index, start_dttm, cumulative_dist, prev_tkpt)
|
175
|
+
prev_tkpt = tkpt
|
176
|
+
end
|
177
|
+
}
|
178
|
+
@distance = cumulative_dist
|
179
|
+
end
|
180
|
+
|
181
|
+
def compute_splits
|
182
|
+
nextSplitDist = 1.00
|
183
|
+
prev_splitTkpt = nil
|
184
|
+
loop1Count = 0;
|
185
|
+
@tkpts.each { |tkpt|
|
186
|
+
loop1Count = loop1Count + 1
|
187
|
+
if tkpt.cumulative_distance() >= nextSplitDist
|
188
|
+
tkpt.set_split(0 + nextSplitDist, prev_splitTkpt)
|
189
|
+
nextSplitDist = nextSplitDist + 1.00
|
190
|
+
prev_splitTkpt = tkpt
|
191
|
+
end
|
192
|
+
}
|
193
|
+
# set first and last booleans
|
194
|
+
count = 0
|
195
|
+
@tkpts.each { |tkpt|
|
196
|
+
count = count + 1
|
197
|
+
tkpt.first = true if count == 1
|
198
|
+
tkpt.last = true if count == loop1Count
|
199
|
+
}
|
200
|
+
end
|
201
|
+
|
202
|
+
def set_run_ids
|
203
|
+
@tkpts.each { |tkpt|
|
204
|
+
if (@run_id == nil)
|
205
|
+
@run_id = tkpt.dttm.rawdata
|
206
|
+
end
|
207
|
+
tkpt.run_id = @run_id
|
208
|
+
}
|
209
|
+
end
|
210
|
+
|
211
|
+
end
|
212
|
+
|
213
|
+
end # end of module
|