Add experiment reports element

This commit is contained in:
Jure Grabnar 2016-08-03 12:49:24 +02:00
parent aedaf2f30a
commit 964b51f84a
4 changed files with 36 additions and 16 deletions

View file

@ -9,6 +9,7 @@ class Experiment < ActiveRecord::Base
has_many :my_modules, inverse_of: :experiment, dependent: :destroy
has_many :my_module_groups, inverse_of: :experiment, dependent: :destroy
has_many :report_elements, inverse_of: :experiment, dependent: :destroy
validates :name,
presence: true,

View file

@ -14,7 +14,8 @@ class ReportElement < ActiveRecord::Base
step_comments: 11,
result_comments: 12,
project_activity: 13, # TODO
project_samples: 14 # TODO
project_samples: 14, # TODO
experiment: 15
}
# This is only used by certain elements
@ -36,6 +37,7 @@ class ReportElement < ActiveRecord::Base
# References to various report entities
belongs_to :project, inverse_of: :report_elements
belongs_to :experiment, inverse_of: :report_elements
belongs_to :my_module, inverse_of: :report_elements
belongs_to :step, inverse_of: :report_elements
belongs_to :result, inverse_of: :report_elements
@ -59,6 +61,8 @@ class ReportElement < ActiveRecord::Base
def element_reference
if project_header? or project_activity? or project_samples?
return project
elsif experiment?
return experiment
elsif my_module? or my_module_activity? or my_module_samples?
return my_module
elsif step? or step_comments?
@ -79,6 +83,8 @@ class ReportElement < ActiveRecord::Base
def set_element_reference(ref_id)
if project_header? or project_activity? or project_samples?
self.project_id = ref_id
elsif experiment?
self.experiment_id = ref_id
elsif my_module? or my_module_activity? or my_module_samples?
self.my_module_id = ref_id
elsif step? or step_comments?
@ -98,6 +104,7 @@ class ReportElement < ActiveRecord::Base
def clean_removed_or_archived_elements
parent_model = ''
[ 'project',
'experiment',
'my_module',
'step',
'result',
@ -119,6 +126,7 @@ class ReportElement < ActiveRecord::Base
def has_one_of_referenced_elements
num_of_refs = [
project,
experiment,
my_module,
step,
result,

View file

@ -0,0 +1,8 @@
class AddExperimentToReportElements < ActiveRecord::Migration
def change
add_column :report_elements, :experiment_id, :integer
add_foreign_key :report_elements, :experiments
add_index :report_elements, :experiment_id
end
end

View file

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20160722082700) do
ActiveRecord::Schema.define(version: 20160803082801) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -154,10 +154,10 @@ ActiveRecord::Schema.define(version: 20160722082700) do
add_index "experiments", ["archived_by_id"], name: "index_experiments_on_archived_by_id", using: :btree
add_index "experiments", ["created_by_id"], name: "index_experiments_on_created_by_id", using: :btree
add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree
add_index "experiments", ["name"], name: "index_experiments_on_name", using: :btree
add_index "experiments", ["project_id"], name: "index_experiments_on_project_id", using: :btree
add_index "experiments", ["restored_by_id"], name: "index_experiments_on_restored_by_id", using: :btree
add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree
create_table "logs", force: :cascade do |t|
t.integer "organization_id", null: false
@ -330,10 +330,12 @@ ActiveRecord::Schema.define(version: 20160722082700) do
t.integer "table_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "experiment_id"
end
add_index "report_elements", ["asset_id"], name: "index_report_elements_on_asset_id", using: :btree
add_index "report_elements", ["checklist_id"], name: "index_report_elements_on_checklist_id", using: :btree
add_index "report_elements", ["experiment_id"], name: "index_report_elements_on_experiment_id", using: :btree
add_index "report_elements", ["my_module_id"], name: "index_report_elements_on_my_module_id", using: :btree
add_index "report_elements", ["parent_id"], name: "index_report_elements_on_parent_id", using: :btree
add_index "report_elements", ["project_id"], name: "index_report_elements_on_project_id", using: :btree
@ -661,8 +663,8 @@ ActiveRecord::Schema.define(version: 20160722082700) do
add_foreign_key "custom_fields", "users", column: "last_modified_by_id"
add_foreign_key "experiments", "users", column: "archived_by_id"
add_foreign_key "experiments", "users", column: "created_by_id"
add_foreign_key "experiments", "users", column: "restored_by_id"
add_foreign_key "experiments", "users", column: "last_modified_by_id"
add_foreign_key "experiments", "users", column: "restored_by_id"
add_foreign_key "logs", "organizations"
add_foreign_key "my_module_comments", "comments"
add_foreign_key "my_module_comments", "my_modules"
@ -695,6 +697,7 @@ ActiveRecord::Schema.define(version: 20160722082700) do
add_foreign_key "protocols", "users", column: "restored_by_id"
add_foreign_key "report_elements", "assets"
add_foreign_key "report_elements", "checklists"
add_foreign_key "report_elements", "experiments"
add_foreign_key "report_elements", "my_modules"
add_foreign_key "report_elements", "projects"
add_foreign_key "report_elements", "reports"