From 2989b13f18272dd319c288832b9cad9df57d98c4 Mon Sep 17 00:00:00 2001 From: Tim Trautmann Date: Wed, 12 Oct 2011 22:13:22 -0700 Subject: [PATCH] Adding instantiationDimensions element --- app/controllers/instantiations_controller.rb | 2 +- app/models/instantiation.rb | 2 ++ app/models/instantiation_dimension.rb | 7 +++++++ app/views/instantiations/_form.html.haml | 2 ++ ...1013040951_create_instantiation_dimensions.rb | 16 ++++++++++++++++ db/schema.rb | 11 ++++++++++- public/javascripts/common/edit.js | 2 +- public/stylesheets/application/styles.css | 2 +- test/fixtures/instantiation_dimensions.yml | 11 +++++++++++ test/unit/instantiation_dimension_test.rb | 8 ++++++++ 10 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 app/models/instantiation_dimension.rb create mode 100644 db/migrate/20111013040951_create_instantiation_dimensions.rb create mode 100644 test/fixtures/instantiation_dimensions.yml create mode 100644 test/unit/instantiation_dimension_test.rb diff --git a/app/controllers/instantiations_controller.rb b/app/controllers/instantiations_controller.rb index f95d932..2d0c807 100644 --- a/app/controllers/instantiations_controller.rb +++ b/app/controllers/instantiations_controller.rb @@ -118,7 +118,7 @@ def update @instantiation = @asset.instantiations.find(params[:id]) @instantiation.transaction do parsed_instantiation = Instantiation.from_xml(params[:xml]) - [:format_ids, :instantiation_dates, :essence_tracks, :annotations, :format, ## WTF DATE_AVAILABLES :date_availables + [:format_ids, :instantiation_dates, :instantiation_dimensions, :essence_tracks, :annotations, :format, ## WTF DATE_AVAILABLES :date_availables :instantiation_media_type, :instantiation_generation, :instantiation_color, :format_location, :format_file_size, :format_time_start, :format_duration, :format_data_rate, :format_tracks, :format_channel_configuration, diff --git a/app/models/instantiation.rb b/app/models/instantiation.rb index 50ea47b..f97d592 100644 --- a/app/models/instantiation.rb +++ b/app/models/instantiation.rb @@ -5,6 +5,7 @@ class Instantiation < ActiveRecord::Base belongs_to :asset has_many :format_ids, :dependent => :destroy, :attributes => true has_many :instantiation_dates, :dependent => :destroy, :attributes => true + has_many :instantiation_dimensions, :dependent => :destroy, :attributes => true belongs_to :format belongs_to :instantiation_media_type belongs_to :instantiation_generation @@ -31,6 +32,7 @@ class Instantiation < ActiveRecord::Base xml << fid end xml_subelements "instantiationDate", :instantiation_dates + xml_subelements "instantiationDimensions", :instantiation_dimensions from_xml_elt do |record| elt = record._working_xml.find_first("pbcore:instantiationPhysical|pbcore:instantiationDigital", PbcoreXmlElement::PBCORE_NAMESPACE) if elt && elt.content diff --git a/app/models/instantiation_dimension.rb b/app/models/instantiation_dimension.rb new file mode 100644 index 0000000..db38bfc --- /dev/null +++ b/app/models/instantiation_dimension.rb @@ -0,0 +1,7 @@ +class InstantiationDimension < ActiveRecord::Base + include PbcoreXmlElement + belongs_to :instantiation + + xml_text_field :dimension + # xml_attributes { "unitsOfMeasure" => :units_of_measure }, { "annotation" => :annotation } +end diff --git a/app/views/instantiations/_form.html.haml b/app/views/instantiations/_form.html.haml index d92a110..b5ad591 100644 --- a/app/views/instantiations/_form.html.haml +++ b/app/views/instantiations/_form.html.haml @@ -16,6 +16,8 @@ #format_ids %h3 Instantiation Dates #instantiation_dates + %h3 Instantiation Dimensions + #instantiation_dimensions %h3 Instantiation Information #instantiation_info %h3 Essence Tracks diff --git a/db/migrate/20111013040951_create_instantiation_dimensions.rb b/db/migrate/20111013040951_create_instantiation_dimensions.rb new file mode 100644 index 0000000..8633c29 --- /dev/null +++ b/db/migrate/20111013040951_create_instantiation_dimensions.rb @@ -0,0 +1,16 @@ +class CreateInstantiationDimensions < ActiveRecord::Migration + def self.up + create_table :instantiation_dimensions do |t| + t.integer :instantiation_id + t.string :dimension + t.string :units_of_measure + t.text :annotation + + t.timestamps + end + end + + def self.down + drop_table :instantiation_dimensions + end +end diff --git a/db/schema.rb b/db/schema.rb index 70a5ce9..f20ce6b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -9,7 +9,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20111012154123) do +ActiveRecord::Schema.define(:version => 20111013040951) do create_table "annotations", :force => true do |t| t.integer "instantiation_id" @@ -353,6 +353,15 @@ t.datetime "updated_at" end + create_table "instantiation_dimensions", :force => true do |t| + t.integer "instantiation_id" + t.string "dimension" + t.string "units_of_measure" + t.text "annotation" + t.datetime "created_at" + t.datetime "updated_at" + end + create_table "instantiation_generations", :force => true do |t| t.string "name", :null => false t.boolean "visible", :default => false, :null => false diff --git a/public/javascripts/common/edit.js b/public/javascripts/common/edit.js index e4c8ed5..57ec0de 100644 --- a/public/javascripts/common/edit.js +++ b/public/javascripts/common/edit.js @@ -715,6 +715,7 @@ var FormEditor = (function($, undefined) { return $(elt).attr("source") === 'pbcore XML database UUID'; }); mkfields("instantiation_dates", "instantiationDate", pbcore_maker(undefined, "dateType", Style.VERBOSE, false, true)); + mkfields("instantiation_dimensions", "instantiationDimensions", pbcore_maker(undefined, undefined, Style.ONLY_TEXTAREA)); basic_instantiation_fields(); mkfields("essence_tracks", "pbcoreEssenceTrack", essence_track_maker); mkfields("annotations", "instantiationAnnotation", pbcore_maker(undefined, "annotationType", Style.TEXTAREA, false, true)); @@ -837,7 +838,6 @@ var FormEditor = (function($, undefined) { var name = this.name, elt; if (name === 'instantiation') { name += $('input[name="format_type"]:checked').val(); - alert(name); } elt = mkelt(name); root.appendChild(elt); diff --git a/public/stylesheets/application/styles.css b/public/stylesheets/application/styles.css index c8a79cf..4337595 100644 --- a/public/stylesheets/application/styles.css +++ b/public/stylesheets/application/styles.css @@ -482,7 +482,7 @@ input.pbcorefield.ui-autocomplete-input { width: 211px; } } -#identifiers, #titles, #subjects, #descriptions, #genres, #relations, #publishers, #essence_tracks, #instantiation_info, #format_ids, #instantiation_dates, #annotations, #creators, #contributors, #publishers, #rights_summaries, #extensions, #coverages, #audience_levels, #audience_ratings, #asset_dates { +#identifiers, #titles, #subjects, #descriptions, #genres, #relations, #publishers, #essence_tracks, #instantiation_info, #format_ids, #instantiation_dates, #instantiation_dimensions, #annotations, #creators, #contributors, #publishers, #rights_summaries, #extensions, #coverages, #audience_levels, #audience_ratings, #asset_dates { padding:5px; margin:0 10px 0 0; display:block; diff --git a/test/fixtures/instantiation_dimensions.yml b/test/fixtures/instantiation_dimensions.yml new file mode 100644 index 0000000..59021c1 --- /dev/null +++ b/test/fixtures/instantiation_dimensions.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html + +one: + dimension: MyString + units_of_measure: MyString + annotation: MyText + +two: + dimension: MyString + units_of_measure: MyString + annotation: MyText diff --git a/test/unit/instantiation_dimension_test.rb b/test/unit/instantiation_dimension_test.rb new file mode 100644 index 0000000..f17cfcc --- /dev/null +++ b/test/unit/instantiation_dimension_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class InstantiationDimensionTest < ActiveSupport::TestCase + # Replace this with your real tests. + def test_truth + assert true + end +end