User:Saikotsu/CIS350
From MCIS Wiki
May 6th:
Throughout this semester, I've been working on making an application that tracks test results for the haplab, and then graphs them. Due to some unfortunate data loss, much of my work had to be redone at the last minute, so what I am able to show you today is rather limited. However, I did do extensive work with graphs earlier in the semester, on a different project, and the result is shown below. Due to the fact that my data isn't being submitted properly to the database I built for the haplab, a haplab type graph is not going to be shown, but the idea of taking information from a database is demonstrated with the previous graph, so it is quite possible. There were some unique issues with designing a graphing application for the haplab, as they have rather big forms. here's an example of such a form:
I managed to get something similar, but not so clean. With more time, I could format it, but it looks like this:
the issue is that I've got to record both rows and columns, each piece of data must be unique. Since every row has the same columns, I had to design something that looked like this to make each one unique:
<% form_for :cardio do |form| %>
<fieldset> <legend>Cardio Pulmonary Test</legend>
<%= error_messages_for 'cardio' %>
<label for="Stage">Stage_____Mph______Percent______Grade____hr_____bp____rpe____lactate_____SaO2____rer____Vo2</label>
<label for="Rest">Rest</label> <%= form.text_field :mph %> <%= form.text_field :PerGrade %> <%= form.text_field :HP %> <%= form.text_field :BP %> <%= form.text_field :rrpe %> <%= form.text_field :rlactate %> <%= form.text_field :SaO2 %> <%= form.text_field :rrer %> <%= form.text_field :rVO2 %>
<label for="Warmup">Warmup</label> <%= form.text_field :wrmpg %> <%= form.text_field :wrgrade %> <%= form.text_field :wrperGrade %> <%= form.text_field :wrhr %> <%= form.text_field :wrbp %> <%= form.text_field :wrrpe %> <%= form.text_field :wlactate %> <%= form.text_field :wSaO2 %> <%= form.text_field :wrrer %> <%= form.text_field :wrVO2 %>
<label for="S1M1">Stage One, minute 1</label> <%= form.text_field :oompg %> <%= form.text_field :oograde %> <%= form.text_field :ooperGrade %> <%= form.text_field :oohr %> <%= form.text_field :oobp %> <%= form.text_field :oorpe %> <%= form.text_field :oolactate %> <%= form.text_field :ooSaO2 %> <%= form.text_field :oorer %> <%= form.text_field :ooVO2 %>
<label for="S1M2">Minute 2</label> <%= form.text_field :otmpg %> <%= form.text_field :otgrade %> <%= form.text_field :otperGrade %> <%= form.text_field :othr %> <%= form.text_field :otbp %> <%= form.text_field :otrpe %> <%= form.text_field :otlactate %> <%= form.text_field :otSaO2 %> <%= form.text_field :otrer %> <%= form.text_field :otVO2 %>
<label for="S1M3">Minute 3</label> <%= form.text_field :othmpg %> <%= form.text_field :othgrade %> <%= form.text_field :othperGrade %> <%= form.text_field :othhr %> <%= form.text_field :othbp %> <%= form.text_field :othrpe %> <%= form.text_field :othlactate %> <%= form.text_field :othSaO2 %> <%= form.text_field :othrer %> <%= form.text_field :othVO2 %>
<label for="S2M1">Stage Two, minute 1</label> <%= form.text_field :tompg %> <%= form.text_field :tograde %> <%= form.text_field :toperGrade %> <%= form.text_field :tohr %> <%= form.text_field :tobp %> <%= form.text_field :torpe %> <%= form.text_field :tolactate %> <%= form.text_field :toSaO2 %> <%= form.text_field :torer %> <%= form.text_field :toVO2 %>
<label for="S2M2">Minute 2</label> <%= form.text_field :ttmpg %> <%= form.text_field :ttgrade %> <%= form.text_field :ttperGrade %> <%= form.text_field :tthr %> <%= form.text_field :ttbp %> <%= form.text_field :ttrpe %> <%= form.text_field :ttlactate %> <%= form.text_field :ttSaO2 %> <%= form.text_field :ttrer %> <%= form.text_field :ttVO2 %>
<label for="S2M3">Minute 3</label> <%= form.text_field :tthmpg %> <%= form.text_field :tthgrade %> <%= form.text_field :tthperGrade %> <%= form.text_field :tthhr %> <%= form.text_field :tthbp %> <%= form.text_field :tthrpe %> <%= form.text_field :tthlactate %> <%= form.text_field :tthSaO2 %> <%= form.text_field :tthrer %> <%= form.text_field :tthVO2 %>
<label for="S3M1">Stage three, minute 1</label> <%= form.text_field :thompg %> <%= form.text_field :thograde %> <%= form.text_field :thoperGrade %> <%= form.text_field :thohr %> <%= form.text_field :thobp %> <%= form.text_field :thorpe %> <%= form.text_field :tholactate %> <%= form.text_field :thoSaO2 %> <%= form.text_field :thorer %> <%= form.text_field :thoVO2 %>
<label for="S3M2">Minute 2</label> <%= form.text_field :thtmpg %> <%= form.text_field :thtgrade %> <%= form.text_field :thtperGrade %> <%= form.text_field :ththr %> <%= form.text_field :thtbp %> <%= form.text_field :thtrpe %> <%= form.text_field :thtlactate %> <%= form.text_field :thtSaO2 %> <%= form.text_field :thtrer %> <%= form.text_field :thtVO2 %>
<label for="S3M3">Minute 3</label> <%= form.text_field :ththmpg %> <%= form.text_field :ththgrade %> <%= form.text_field :ththperGrade %> <%= form.text_field :ththhr %> <%= form.text_field :ththbp %> <%= form.text_field :ththrpe %> <%= form.text_field :ththlactate %> <%= form.text_field :ththSaO2 %> <%= form.text_field :ththrer %> <%= form.text_field :ththVO2 %>
<label for="S4M1">Stage Four, minute 1</label> <%= form.text_field :foompg %> <%= form.text_field :foograde %> <%= form.text_field :fooperGrade %> <%= form.text_field :foohr %> <%= form.text_field :foobp %> <%= form.text_field :foorpe %> <%= form.text_field :foolactate %> <%= form.text_field :fooSaO2 %> <%= form.text_field :foorer %> <%= form.text_field :fooVO2 %>
<label for="S4M2">Minute 2</label> <%= form.text_field :fotmpg %> <%= form.text_field :fotgrade %> <%= form.text_field :fotperGrade %> <%= form.text_field :fothr %> <%= form.text_field :fotbp %> <%= form.text_field :fotrpe %> <%= form.text_field :fotlactate %> <%= form.text_field :fotSaO2 %> <%= form.text_field :fotrer %> <%= form.text_field :fotVO2 %>
<label for="S4M3">Minute 3</label> <%= form.text_field :fothmpg %> <%= form.text_field :fothgrade %> <%= form.text_field :fothperGrade %> <%= form.text_field :fothhr %> <%= form.text_field :fothbp %> <%= form.text_field :fothrpe %> <%= form.text_field :fothlactate %> <%= form.text_field :fothSaO2 %> <%= form.text_field :fothrer %> <%= form.text_field :fothVO2 %>
<label for="S5M1">Stage Five, minute 1</label> <%= form.text_field :fiompg %> <%= form.text_field :fiograde %> <%= form.text_field :fioperGrade %> <%= form.text_field :fiohr %> <%= form.text_field :fiobp %> <%= form.text_field :fiorpe %> <%= form.text_field :fiolactate %> <%= form.text_field :fioSaO2 %> <%= form.text_field :fiorer %> <%= form.text_field :fioVO2 %>
<label for="S5M2">Minute 2</label> <%= form.text_field :fitmpg %> <%= form.text_field :fitgrade %> <%= form.text_field :fitperGrade %> <%= form.text_field :fithr %> <%= form.text_field :fitbp %> <%= form.text_field :fitrpe %> <%= form.text_field :fitlactate %> <%= form.text_field :fitSaO2 %> <%= form.text_field :fitrer %> <%= form.text_field :fitVO2 %>
<label for="S5M3">Minute 3</label> <%= form.text_field :fithmpg %> <%= form.text_field :fithgrade %> <%= form.text_field :fithperGrade %> <%= form.text_field :fithhr %> <%= form.text_field :fithbp %> <%= form.text_field :fithrpe %> <%= form.text_field :fithlactate %> <%= form.text_field :fithSaO2 %> <%= form.text_field :fithrer %> <%= form.text_field :fithVO2 %>
<label for="S6M1">Stage six, minute 1</label> <%= form.text_field :siompg %> <%= form.text_field :siograde %> <%= form.text_field :sioperGrade %> <%= form.text_field :siohr %> <%= form.text_field :siobp %> <%= form.text_field :siorpe %> <%= form.text_field :siolactate %> <%= form.text_field :sioSaO2 %> <%= form.text_field :siorer %> <%= form.text_field :sioVO2 %>
<label for="S6M2">Minute 2</label> <%= form.text_field :sitmpg %> <%= form.text_field :sitgrade %> <%= form.text_field :sitperGrade %> <%= form.text_field :sithr %> <%= form.text_field :sitbp %> <%= form.text_field :sitrpe %> <%= form.text_field :sitlactate %> <%= form.text_field :sitSaO2 %> <%= form.text_field :sitrer %> <%= form.text_field :sitVO2 %>
<label for="S6M3">Minute 3</label> <%= form.text_field :sithmpg %> <%= form.text_field :sithgrade %> <%= form.text_field :sithperGrade %> <%= form.text_field :sithhr %> <%= form.text_field :sithbp %> <%= form.text_field :sithrpe %> <%= form.text_field :sithlactate %> <%= form.text_field :sithSaO2 %> <%= form.text_field :sithrer %> <%= form.text_field :sithVO2 %>
<label for="S7M1">Stage Seven, minute 1</label> <%= form.text_field :seompg %> <%= form.text_field :seograde %> <%= form.text_field :seoperGrade %> <%= form.text_field :seohr %> <%= form.text_field :seobp %> <%= form.text_field :seorpe %> <%= form.text_field :seolactate %> <%= form.text_field :seoSaO2 %> <%= form.text_field :seorer %> <%= form.text_field :seoVO2 %>
<label for="S7M2">Minute 2</label> <%= form.text_field :setmpg %> <%= form.text_field :setgrade %> <%= form.text_field :setperGrade %> <%= form.text_field :sethr %> <%= form.text_field :setbp %> <%= form.text_field :setrpe %> <%= form.text_field :setlactate %> <%= form.text_field :setSaO2 %> <%= form.text_field :setrer %> <%= form.text_field :setVO2 %>
<label for="S7M3">Minute 3</label> <%= form.text_field :sethmpg %> <%= form.text_field :sethgrade %> <%= form.text_field :sethperGrade %> <%= form.text_field :sethhr %> <%= form.text_field :sethbp %> <%= form.text_field :sethrpe %> <%= form.text_field :sethlactate %> <%= form.text_field :sethSaO2 %> <%= form.text_field :sethrer %> <%= form.text_field :sethVO2 %>
<label for="S8M1">Stage Eight, minute 1</label> <%= form.text_field :eompg %> <%= form.text_field :eograde %> <%= form.text_field :eoperGrade %> <%= form.text_field :eohr %> <%= form.text_field :eobp %> <%= form.text_field :eorpe %> <%= form.text_field :eolactate %> <%= form.text_field :eoSaO2 %> <%= form.text_field :eorer %> <%= form.text_field :eoVO2 %>
<label for="S8M2">Minute 2</label> <%= form.text_field :etmpg %> <%= form.text_field :etgrade %> <%= form.text_field :etperGrade %> <%= form.text_field :ethr %> <%= form.text_field :etbp %> <%= form.text_field :etrpe %> <%= form.text_field :etlactate %> <%= form.text_field :etSaO2 %> <%= form.text_field :etrer %> <%= form.text_field :etVO2 %>
<label for="S8M3">Minute 3</label> <%= form.text_field :ethmpg %> <%= form.text_field :ethgrade %> <%= form.text_field :ethperGrade %> <%= form.text_field :ethhr %> <%= form.text_field :ethbp %> <%= form.text_field :ethrpe %> <%= form.text_field :ethlactate %> <%= form.text_field :ethSaO2 %> <%= form.text_field :ethrer %> <%= form.text_field :ethVO2 %>
<label for="S9M1">Stage Nine, minute 1</label> <%= form.text_field :nompg %> <%= form.text_field :nograde %> <%= form.text_field :noperGrade %> <%= form.text_field :nohr %> <%= form.text_field :nobp %> <%= form.text_field :norpe %> <%= form.text_field :nolactate %> <%= form.text_field :noSaO2 %> <%= form.text_field :norer %> <%= form.text_field :noVO2 %>
<label for="S9M2">Minute 2</label> <%= form.text_field :ntmpg %> <%= form.text_field :ntgrade %> <%= form.text_field :ntperGrade %> <%= form.text_field :nthr %> <%= form.text_field :ntbp %> <%= form.text_field :ntrpe %> <%= form.text_field :ntlactate %> <%= form.text_field :ntSaO2 %> <%= form.text_field :ntrer %> <%= form.text_field :ntVO2 %>
<label for="S9M3">Minute 3</label> <%= form.text_field :nthmpg %> <%= form.text_field :nthgrade %> <%= form.text_field :nthperGrade %> <%= form.text_field :nthhr %> <%= form.text_field :nthbp %> <%= form.text_field :nthrpe %> <%= form.text_field :nthlactate %> <%= form.text_field :nthSaO2 %> <%= form.text_field :nthrer %> <%= form.text_field :nthVO2 %>
<label for="S10M1">Stage Ten, minute 1</label> <%= form.text_field :teompg %> <%= form.text_field :teograde %> <%= form.text_field :teoperGrade %> <%= form.text_field :teohr %> <%= form.text_field :teobp %> <%= form.text_field :teorpe %> <%= form.text_field :teolactate %> <%= form.text_field :teoSaO2 %> <%= form.text_field :teorer %> <%= form.text_field :teoVO2 %>
<label for="S10M2">Minute 2</label> <%= form.text_field :tetmpg %> <%= form.text_field :tetgrade %> <%= form.text_field :tetperGrade %> <%= form.text_field :tethr %> <%= form.text_field :tetbp %> <%= form.text_field :tetrpe %> <%= form.text_field :tetlactate %> <%= form.text_field :tetSaO2 %> <%= form.text_field :tetrer %> <%= form.text_field :tetVO2 %>
<label for="S10M3">Minute 3</label> <%= form.text_field :tethmpg %> <%= form.text_field :tethgrade %> <%= form.text_field :tethperGrade %> <%= form.text_field :tethhr %> <%= form.text_field :tethbp %> <%= form.text_field :tethrpe %> <%= form.text_field :tethlactate %> <%= form.text_field :tethSaO2 %> <%= form.text_field :tethrer %> <%= form.text_field :tethVO2 %>
<label for="IPE">IPE</label> <%= form.text_field :ipmpg %> <%= form.text_field :ipgrade %> <%= form.text_field :ipperGrade %> <%= form.text_field :iphr %> <%= form.text_field :ipbp %> <%= form.text_field :iprpe %> <%= form.text_field :iplactate %> <%= form.text_field :ipSaO2 %> <%= form.text_field :iprer %> <%= form.text_field :ipVO2 %>
<label for="R1">Recovery1</label> <%= form.text_field :reompg %> <%= form.text_field :reograde %> <%= form.text_field :reoperGrade %> <%= form.text_field :reohr %> <%= form.text_field :reobp %> <%= form.text_field :reorpe %> <%= form.text_field :reolactate %> <%= form.text_field :reoSaO2 %> <%= form.text_field :reorer %> <%= form.text_field :reoVO2 %>
<label for="R3">Recovery3</label> <%= form.text_field :r3etmpg %> <%= form.text_field :r3etgrade %> <%= form.text_field :r3etperGrade %> <%= form.text_field :r3ethr %> <%= form.text_field :r3etbp %> <%= form.text_field :r3etrpe %> <%= form.text_field :r3etlactate %> <%= form.text_field :r3etSaO2 %> <%= form.text_field :r3etrer %> <%= form.text_field :r3etVO2 %>
<label for="R5">Recovery5</label> <%= form.text_field :r5ethmpg %> <%= form.text_field :r5ethgrade %> <%= form.text_field :r5ethperGrade %> <%= form.text_field :r5ethhr %> <%= form.text_field :r5ethbp %> <%= form.text_field :r5ethrpe %> <%= form.text_field :r5ethlactate %> <%= form.text_field :r5ethSaO2 %> <%= form.text_field :r5ethrer %> <%= form.text_field :r5ethVO2 %>
</fieldset>
<%= submit_tag "Submit Workout Data", :class => "submit"%>
<% end %>
<%= link_to "Index", {:controller => "login", :action => "index"}, :method => :get %>
nasty huh?
April 28, 2009. 9:33:20 p.m night time, spring, library computer lab Here is an inline graph:
these go inside the graph.html.erb file
"graph of category"
<img src="<%= url_for(:action => 'showgraph') %>">
these lines go inside the inventory controller:
def showgraph
@inventory = Inventory.find(:all)
g = Gruff::Bar.new
totals = {}
g.title = "My Graph"
for item in @inventory
if(totals[item.category])
totals[item.category] += 1
else
totals[item.category] = 1
end
end
for c in totals.keys
g.data(c, [totals[c]] )
end
g.minimum_value = 0
#g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
send_data(g.to_blob,:dispostion => 'inline',:type => 'image/png',
:filename => "inlineGraph.png")
end
April 17, 2009: first and foremost, working with gems is a pain, but it can be quite rewarding. In order to use the gruff library you need rmagick4j and imagemagick, and gruff. once you have all 3 gems installed it works without issue. installing gems isn't so bad, but that is only the case if your platform paths are all configured properly.
once you have all your variable paths corrected, you can simply type in any command prompt "gem install 'gemname'" sans the single quotes.
before you can make new graphs, you need these two lines in a program:
require 'rubygems' require 'gruff'
g = Gruff::Line.new
g.title = "My Graph"
g.data("Apples", [1, 2, 3, 4, 4, 3])
g.data("Oranges", [4, 8, 7, 9, 8, 9])
g.data("Watermelon", [2, 3, 1, 5, 6, 8])
g.data("Peaches", [9, 9, 10, 8, 7, 9])
g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
g.write('C:\Users\Adam\Pictures\my_graph.png')
g2 = Gruff::Bar.new
g2.title = "barg"
g2.data("stuff",[5,2,9])
g2.labels = {0 => 'other stuff'}
g2.write('my_bar_graph.png')
some more examples of what this can do are here:
http://geoffreygrosenbach.com/projects/show/5
April 3: I'm hoping to explore the gruff graphs module in ruby. it is a program that allows people to make nice graphs via inputs. unfortunately, as it stands at this moment, I can't get the gems to install properly on my computer, so I can't run it yet thus, it will be a learning experience for me as well.
March 19: Been a while since I posted on this wiki.[ I had some general ideas for the facebook site we'll be building there will be several tables, "Person", "Network", "Network Member", "pictures", "friends", "perspective friends", and so forth. each person is unique and has the following fields
Name: string Id: int(unique) email: string(unique)
they will also have refferences to other tables
Network: network name: string network id: int(unique) Pictures: (a set of pictures that they've put on the site) picture id: int(unique) picture name: string Friends: (other people on the site) friend name: string friend id: int(unique -> the friends person_id) friend confirmed: bool
each person can have multiple networks and each network can have multiple people (many to many) each person can have multiple pictures, but each picture belongs to one person (one to many, although some people could have the same picture)
Networks have many people in them, but contain little else. In a sense, they're grouping mechanisms.
Network network name: string network id: int(unique)
Netmembers is a table that combines network and person tables
person name: string person id: int network name: string network id: int(unique)
it is a relational table that combines people with their network.
Pictures is simply a collection of pictures that refferences a user
Picture: user_id: int(unique)(the owner of the pictures) picture_id: int(unique) picture_name: string
not sure how to go about doing the friends thing yet. Friends relates multiple people together.
user_id: int(unique) friend_id: int (the person_id of the friend.) unconfirmed friends: table of person_ids not yet accepted.
many to many relationship with friends, and unconfirmed friends.
January 30: This project is rather easy once you get a general idea for what is needed. If you're having trouble, I encourage you to seek out others and find out what they've tried and share some ideas.
January 23:
It looks like Chris and I are assigned to the haplab project. I wonder if we will be working with input devices such as the equipment that they use over there, or will they want us to create something that they can input manually. I plan on getting the concordance working before the end of the night, and I'm going to work with Chris on it too.



