From 7e6d897f5ef47a9a1dbc6653323d0ca45aee1148 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 12 Jun 2013 14:36:45 -0700 Subject: [PATCH] Add 'new version' function to plan files and survey files --- Gemfile | 1 + Gemfile.lock | 8 ++++++++ app/controllers/plan_files_controller.rb | 12 ++++++++---- app/controllers/survey_files_controller.rb | 10 ++++++++++ app/models/plan_file.rb | 9 +++++++++ app/views/survey_files/new_version.html.erb | 1 + config/routes.rb | 5 ++++- 7 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 app/views/survey_files/new_version.html.erb diff --git a/Gemfile b/Gemfile index bad24d5..1b2b945 100644 --- a/Gemfile +++ b/Gemfile @@ -6,6 +6,7 @@ gem 'devise' gem 'passenger' gem 'mysql2' gem 'rails3-jquery-autocomplete', :git => 'https://github.com/crowdint/rails3-jquery-autocomplete' +gem 'debugger' # Gems used only for assets and not required # in production environments by default. diff --git a/Gemfile.lock b/Gemfile.lock index 966ff1e..5a739a6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,7 +53,14 @@ GEM coffee-script-source execjs coffee-script-source (1.6.2) + columnize (0.3.6) daemon_controller (1.1.2) + debugger (1.6.0) + columnize (>= 0.3.1) + debugger-linecache (~> 1.2.0) + debugger-ruby_core_source (~> 1.2.1) + debugger-linecache (1.2.0) + debugger-ruby_core_source (1.2.2) devise (2.2.3) bcrypt-ruby (~> 3.0) orm_adapter (~> 0.1) @@ -139,6 +146,7 @@ PLATFORMS DEPENDENCIES active_scaffold! coffee-rails (~> 3.2.1) + debugger devise jquery-rails mysql2 diff --git a/app/controllers/plan_files_controller.rb b/app/controllers/plan_files_controller.rb index be82447..a3b3d9b 100644 --- a/app/controllers/plan_files_controller.rb +++ b/app/controllers/plan_files_controller.rb @@ -47,7 +47,7 @@ class PlanFilesController < ApplicationController config.show.link = false config.update.link = false - # config.action_links.add 'subrecord', :label => 'Subrecords', :type => :member + config.action_links.add 'new_version', :label => 'New Version', :page => true, :type => :member, :inline => true, :position => :after config.action_links.add 'show', :label => 'Print', :page => true, :type => :member, :html_options => { :class => 'print' } active_scaffold_config.columns = active_scaffold_config.columns._inheritable end @@ -62,8 +62,12 @@ def format_plan_number params[:record][:plan_number] = params[:record][:prefix] + params[:record][:plan_number] end - def subrecord - parent = PlanFile.find(params[:id]) - children = parent.plan_number + def new_version + record = PlanFile.find(params[:id]) + dup = record.dup + params[:id] = dup.id + dup.plan_number = record.latest_version + dup.save! + redirect_to :controller => 'plan_files', :action => 'index' end end diff --git a/app/controllers/survey_files_controller.rb b/app/controllers/survey_files_controller.rb index 2ca18ea..8c83b26 100644 --- a/app/controllers/survey_files_controller.rb +++ b/app/controllers/survey_files_controller.rb @@ -79,6 +79,16 @@ def self.condition_for_date_type(column, value, like_pattern) config.search.link = false config.update.link = false + config.action_links.add 'new_version', :label => 'New Version', :page => true, :type => :member, :inline => true, :position => :after config.action_links.add 'show', :label => 'Print', :page => true, :type => :member, :html_options => { :class => 'print' } end + + def new_version + record = SurveyFile.find(params[:id]) + dup = record.dup + dup.survey_file = SurveyFile.where("survey_file LIKE '%?%'", record.survey_file.truncate).maximum("survey_file") + 0.01 + params[:id] = dup.id + dup.save! + redirect_to :controller => 'survey_files', :action => 'index' + end end diff --git a/app/models/plan_file.rb b/app/models/plan_file.rb index 859a8e4..36dd639 100644 --- a/app/models/plan_file.rb +++ b/app/models/plan_file.rb @@ -27,6 +27,11 @@ def base_number r.nil? ? '' : r[1] end + def decimal + r = /.*\.(.*)/.match(plan_number) + r.nil? ? '' : r[1] + end + def drawing_description nil end @@ -41,4 +46,8 @@ def self.latest(prefix) .select(%q{max(cast(substr(plan_number,} + prefix.length.to_s + %q{) as decimal(10,2))) as latest}) .where("plan_number like ?", prefix).first.latest end + + def latest_version + base_number + '.' + ((PlanFile.where('plan_number like ?', base_number + '%').collect{ |p| p.decimal }).max.to_i + 1).to_s.rjust(2, '0') + end end diff --git a/app/views/survey_files/new_version.html.erb b/app/views/survey_files/new_version.html.erb new file mode 100644 index 0000000..216b3eb --- /dev/null +++ b/app/views/survey_files/new_version.html.erb @@ -0,0 +1 @@ +<%= render :partial => 'create_form' -%> diff --git a/config/routes.rb b/config/routes.rb index 472a6ef..8cfb08a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,7 +11,7 @@ resources :marine_files do as_routes end resources :plan_files do collection do - get 'subrecord' + get 'new_version' get 'latest' end as_routes @@ -21,6 +21,9 @@ resources :survey_files do as_routes get :autocomplete_survey_file_survey_file, :on => :collection + collection do + get 'new_version' + end end resources :surveyors do as_routes end