Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WTH - Additional details #652

Merged
merged 76 commits into from
Sep 13, 2016
Merged
Show file tree
Hide file tree
Changes from 70 commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
68acc2b
wth - Additional Details rewrite part 1: Catalog Manager Section
Jul 20, 2016
3d7d2e8
wth - Created Additional Details Form Builder
Jul 25, 2016
8c2747c
wth - Refactored new form into form partial
Jul 27, 2016
0759053
wth-redirect to index action after successful submission
Jul 27, 2016
15156fc
added name column to questionnaires table
Jul 29, 2016
671ea49
added validation for form name attribute field
Jul 29, 2016
fc9f0be
added tests for model validation
Jul 29, 2016
148b331
setup additional detail index page
Jul 29, 2016
9f0e45f
set up ability to edit additional detail form
Jul 29, 2016
1eda05e
set up update action
Jul 29, 2016
2ba20a3
added ability to delete form records
Jul 29, 2016
8853c80
added create new button
Jul 29, 2016
fed43ac
small text change
Jul 29, 2016
6ff6fad
changed title to Additional details
Jul 29, 2016
a47cf41
center edit and delete buttons in table cell
Aug 1, 2016
9ce66df
spec fix
Aug 1, 2016
1cfe54a
changed link to go to index
Aug 2, 2016
82e1432
added small methods to find services with questionnaires
Aug 2, 2016
ff2ebad
added submission model and table
Aug 2, 2016
3fcf0f9
added model tests
Aug 2, 2016
8a65fe3
added questionnaire responses table
Aug 2, 2016
03acb5e
added additional details form
Aug 2, 2016
28fc838
fixed issue when destroying questionnaire
Aug 3, 2016
602fe79
styled link and form a bit
Aug 4, 2016
595702c
committing what I have so far
Aug 4, 2016
a546708
fixed conflicts
Aug 12, 2016
cece7c5
added functionality to update status of questionnaire
Aug 12, 2016
8018c58
user can now disable/enable questionnaire
Aug 12, 2016
7446c85
adding translations back in
Aug 12, 2016
d02955c
disable activate links if there is an enabled questionnaire
Aug 12, 2016
54a0252
added scope to find active questionnaires
Aug 12, 2016
5dbd9ca
added country_select gem
Aug 12, 2016
ecfb457
added dropdown for us states
Aug 12, 2016
2c6080e
set up another nested level to add item options
Aug 12, 2016
1862c85
committing what i have so far
Aug 12, 2016
8b3ab08
return selected value in questionnaire form
Aug 15, 2016
154282d
refactored coffeescript logic
Aug 15, 2016
3a4f8a8
committing what I have so far
Aug 15, 2016
17b2a72
build item options in form instead of controller
Aug 16, 2016
ea32296
set up preview for additional details form builder
Aug 16, 2016
eec8957
added preview feature to questionnaire creation
Aug 16, 2016
02cf728
grab first active service questionnaire
Aug 16, 2016
9baf468
strip ids from elements from edit action
Aug 16, 2016
f36bf91
changed route to be post rather than get because of long url params
Aug 17, 2016
cc22109
fixed issue where ajax was defaulting to patch
Aug 17, 2016
6fb9a6d
removed hidden field from values object
Aug 17, 2016
32cf2bb
removed validation for required checkbox
Aug 17, 2016
e10e526
added required flag to questionnaire responses
Aug 17, 2016
4554182
if item is required, add hidden field to submission form that will ma…
Aug 17, 2016
715c812
deleted unnecessary test
Aug 17, 2016
bf822dd
moved controllers into additional details subdirectory
Aug 17, 2016
1ef637c
namespaced controllers and views to additional details
Aug 17, 2016
d040349
updated routes
Aug 17, 2016
2073796
updated route to reflect namespace
Aug 17, 2016
8de029e
styled modal with title and footer
Aug 17, 2016
b9312b9
updated spec to reference namespaced controller
Aug 17, 2016
aea624f
fixed failing specs
Aug 18, 2016
6564c5f
added test for required? validation method
Aug 18, 2016
dfc0c8b
added model tests testing associations and validation
Aug 18, 2016
0b20212
added controller tests for update questionnaires controller
Aug 18, 2016
ddb9685
wrote tests for has_additional_details method in service model
Aug 18, 2016
a14cdaf
select first questionnaire from active questionnaires
Aug 18, 2016
e4dc8ec
added tests for service request model methods
Aug 18, 2016
da24ee4
created new additional details namespace for stylesheets and javascripts
Aug 18, 2016
f387147
created new additional details directories for css/javascripts
Aug 18, 2016
862d23b
added button to return to questionnaires index
Aug 18, 2016
c78465a
changed type of button
Aug 18, 2016
7ad1564
added link to dashboard page, need to work out permissions still
Aug 22, 2016
5e299a9
loop through additional detail services and display links to take the…
Aug 24, 2016
8ac7c56
Merge branch 'master' into additional-details
Aug 25, 2016
6dbc933
Get additional detail services from a ServiceRequest with just one me…
Aug 25, 2016
523d7b8
deleted method no longer being used
Aug 26, 2016
5c16519
updated pull request to reflect team members suggestions
Aug 26, 2016
d99bcef
Removed spec for method removed in previous commit.
Aug 26, 2016
3ed8980
Merge branch 'master' into additional-details
Sep 13, 2016
6d1c2b1
fix gemfile lock issues
Sep 13, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ gem 'bootstrap3-datetimepicker-rails'
gem 'capistrano'
gem 'capistrano-ext'
gem 'coffee-rails'
gem 'country_select'
gem 'delayed_job_active_record'
gem 'devise', '~> 3.5.1'
gem 'dynamic_form'
Expand All @@ -35,6 +36,7 @@ gem 'letter_opener'
gem 'momentjs-rails', '>= 2.8.1'
gem 'mysql2', '~> 0.3.18'
gem 'nested_form'
gem 'nested_form_fields'
gem 'newrelic_rpm'
gem 'nokogiri'
gem 'nori'
Expand Down
17 changes: 17 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,15 @@ GEM
execjs
coffee-script-source (1.10.0)
connection_pool (2.2.0)
countries (1.2.5)
currencies (~> 0.4.2)
i18n_data (~> 0.7.0)
country_select (2.5.2)
countries (~> 1.2.0)
sort_alphabetical (~> 1.0)
crack (0.4.2)
safe_yaml (~> 1.0.0)
currencies (0.4.2)
daemons (1.2.3)
database_cleaner (1.5.1)
delayed_job (4.1.1)
Expand Down Expand Up @@ -218,6 +225,7 @@ GEM
httpi (2.0.2)
rack
i18n (0.7.0)
i18n_data (0.7.0)
icalendar (2.3.0)
ice_nine (0.11.1)
inflection-js-rails (0.1.1)
Expand Down Expand Up @@ -252,6 +260,10 @@ GEM
mustache (0.99.8)
mysql2 (0.3.20)
nested_form (0.3.2)
nested_form_fields (0.7.8)
coffee-rails (>= 3.2.1)
jquery-rails
rails (>= 3.2.0)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-sftp (2.1.2)
Expand Down Expand Up @@ -419,6 +431,8 @@ GEM
addressable (>= 2.3.3, < 3.0)
capybara (>= 2.1, < 3.0)
slop (3.6.0)
sort_alphabetical (1.0.2)
unicode_utils (>= 1.2.2)
spring (1.5.0)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
Expand Down Expand Up @@ -454,6 +468,7 @@ GEM
unf (0.1.4)
unf_ext
unf_ext (0.0.7.1)
unicode_utils (1.4.0)
uniform_notifier (1.9.0)
uuidtools (2.1.5)
virtus (1.0.5)
Expand Down Expand Up @@ -500,6 +515,7 @@ DEPENDENCIES
capybara-webkit
coffee-rails
connection_pool
country_select
database_cleaner
delayed_job_active_record
devise (~> 3.5.1)
Expand Down Expand Up @@ -528,6 +544,7 @@ DEPENDENCIES
momentjs-rails (>= 2.8.1)
mysql2 (~> 0.3.18)
nested_form
nested_form_fields
newrelic_rpm
nokogiri
nori
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
$ ->
activeQuestionnaires = $('.active-questionnaire')
inactiveQuestionnaires = $('.inactive-questionnaire')

if activeQuestionnaires.length > 0
$.each inactiveQuestionnaires, (key, value) ->
$(value).addClass('disabled')


33 changes: 33 additions & 0 deletions app/assets/javascripts/additional_details/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//= require jquery
//= require bootstrap-sprockets
//= require bootstrap-select
//= require bootstrap-table
//= require bootstrap-table-export
//= require bootstrap-table-custom
//= require moment
//= require bootstrap-datetimepicker
//= require jquery_ujs
//= require jquery.remotipart
//= require jquery_nested_form
//= require jquery.cookie
//= require jquery.form
//= require jquery.toastmessage
//= require jquery.printElement
//= require editable/bootstrap-editable
//= require editable/rails
//= require nprogress
//= require nprogress-ajax
//= require json2
//= require inflection
//= require underscore-min
//= require assert
//= require form_manager
//= require form_fx_manager
//= require twitter/typeahead.min
//= require filterrific/filterrific-jquery
//= require sweetalert.min
//= require_tree .
//= require ../service_calendar
//= require nested_form_fields

window.Sparc = {};
31 changes: 31 additions & 0 deletions app/assets/javascripts/additional_details/item_options.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
$ ->
needOptions = ['radio_button', 'checkbox', 'dropdown', 'multiple_dropdown']

showOptions = (selection, array) ->
$.inArray(selection, array) > -1

$('.select-type').on 'change', ->
itemId = $(this).data('item-form-id')
if showOptions($(this).val(), needOptions)
$(".item-options[data-item-form-id=#{itemId}]").removeClass('hidden')
else
$(".item-options[data-item-form-id=#{itemId}]").addClass('hidden')

$(document).on 'fields_added.nested_form_fields', (event, param) ->
$('.select-type').on 'change', ->
itemId = $(this).data('item-form-id')
if showOptions($(this).val(), needOptions)
$(".item-options[data-item-form-id=#{itemId}]").removeClass('hidden')
else
$(".item-options[data-item-form-id=#{itemId}]").addClass('hidden')


$.each $('.select-type :selected'), (key, value) ->
itemFormId = $(value).parent().data('item-form-id')
if showOptions($(value).val(), needOptions)
$(".item-options[data-item-form-id=#{itemFormId}]").removeClass('hidden')

$('#datetimepicker').datetimepicker()

$('.selectpicker').selectpicker()

17 changes: 17 additions & 0 deletions app/assets/javascripts/additional_details/view_preview.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
$ ->
$('#view-preview').on 'click', ->
values = {}
$.each $('.questionnaire-form').serializeArray(), (i, field) ->
matchId = /\[id\]/
unless field.name.match(matchId) || field.name == '_method'
values[field.name] = field.value
serviceId = $('#service_id').val()
$.ajax
url: "/services/#{serviceId}/additional_details/questionnaire/preview"
type: 'POST'
data: values
success: ->
$('.selectpicker').selectpicker()
$('#datetimepicker').datetimepicker()
error: (error) ->
sweetAlert("Error", "Nothing to Preview", "error")
11 changes: 11 additions & 0 deletions app/assets/stylesheets/additional_details/application.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@import 'bootstrap-sprockets';
@import 'bootstrap';
@import 'bootstrap-select';
@import 'bootstrap-table';
@import 'bootstrap-table-custom';
@import 'bootstrap-datetimepicker';
@import 'editable/bootstrap-editable';
@import 'jquery-ui';
@import '960';
@import 'jquery.toastmessage';
@import 'sweetalert';
18 changes: 18 additions & 0 deletions app/controllers/additional_details/previews_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
class AdditionalDetails::PreviewsController < ApplicationController

def create
@service = Service.find(params[:service_id])
@questionnaire = Questionnaire.new(questionnaire_params)
@submission = Submission.new
@submission.questionnaire_responses.build
respond_to do |format|
format.js
end
end

private

def questionnaire_params
params.require(:questionnaire).permit!
end
end
55 changes: 55 additions & 0 deletions app/controllers/additional_details/questionnaires_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
class AdditionalDetails::QuestionnairesController < ApplicationController
before_action :find_service
before_action :find_questionnaire, only: [:edit, :update, :destroy]
layout 'additional_details'

def index
@questionnaires = @service.questionnaires
end

def new
@questionnaire = Questionnaire.new
@questionnaire.items.build
end

def edit
end

def create
@questionnaire = Questionnaire.new(questionnaire_params)
@questionnaire.service = Service.find(params[:service_id])
if @questionnaire.save
redirect_to service_additional_details_questionnaires_path(@service)
else
render :new
end
end

def update
@questionnaire.update_attributes(questionnaire_params)
if @questionnaire.save
redirect_to service_additional_details_questionnaires_path(@service)
else
render :edit
end
end

def destroy
@questionnaire.destroy
redirect_to service_additional_details_questionnaires_path(@service)
end

private

def find_questionnaire
@questionnaire = Questionnaire.find(params[:id])
end

def find_service
@service = Service.find(params[:service_id])
end

def questionnaire_params
params.require(:questionnaire).permit!
end
end
28 changes: 28 additions & 0 deletions app/controllers/additional_details/submissions_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class AdditionalDetails::SubmissionsController < ApplicationController
layout 'additional_details'
include AdditionalDetails::StatesHelper

def new
@service = Service.find(params[:service_id])
@questionnaire = @service.questionnaires.active.first
@submission = Submission.new
@submission.questionnaire_responses.build
end

def create
@service = Service.find(params[:service_id])
@questionnaire = @service.questionnaires.active.first
@submission = Submission.new(submission_params)
if @submission.save
redirect_to service_additional_details_questionnaires_path(@service)
else
render :new
end
end

private

def submission_params
params.require(:submission).permit!
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
class AdditionalDetails::UpdateQuestionnairesController < ApplicationController

def update
@service = Service.find(params[:service_id])
@questionnaire = Questionnaire.find(params[:id])
update_questionnaire(@questionnaire)
if @questionnaire.save
redirect_to service_additional_details_questionnaires_path(@service)
flash[:notice] = 'Questionnaire updated'
else
redirect_to service_additional_details_questionnaires_path(@service)
flash[:error] = 'Something went wrong'
end
end

private

def update_questionnaire(questionnaire)
if questionnaire.active?
questionnaire.update_attribute(:active, false)
else
questionnaire.update_attribute(:active, true)
end
end
end
2 changes: 2 additions & 0 deletions app/helpers/additional_details/application_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module AdditionalDetails::ApplicationHelper
end
59 changes: 59 additions & 0 deletions app/helpers/additional_details/states_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
module AdditionalDetails::StatesHelper

def us_states
[
['Alabama', 'AL'],
['Alaska', 'AK'],
['Arizona', 'AZ'],
['Arkansas', 'AR'],
['California', 'CA'],
['Colorado', 'CO'],
['Connecticut', 'CT'],
['Delaware', 'DE'],
['District of Columbia', 'DC'],
['Florida', 'FL'],
['Georgia', 'GA'],
['Hawaii', 'HI'],
['Idaho', 'ID'],
['Illinois', 'IL'],
['Indiana', 'IN'],
['Iowa', 'IA'],
['Kansas', 'KS'],
['Kentucky', 'KY'],
['Louisiana', 'LA'],
['Maine', 'ME'],
['Maryland', 'MD'],
['Massachusetts', 'MA'],
['Michigan', 'MI'],
['Minnesota', 'MN'],
['Mississippi', 'MS'],
['Missouri', 'MO'],
['Montana', 'MT'],
['Nebraska', 'NE'],
['Nevada', 'NV'],
['New Hampshire', 'NH'],
['New Jersey', 'NJ'],
['New Mexico', 'NM'],
['New York', 'NY'],
['North Carolina', 'NC'],
['North Dakota', 'ND'],
['Ohio', 'OH'],
['Oklahoma', 'OK'],
['Oregon', 'OR'],
['Pennsylvania', 'PA'],
['Puerto Rico', 'PR'],
['Rhode Island', 'RI'],
['South Carolina', 'SC'],
['South Dakota', 'SD'],
['Tennessee', 'TN'],
['Texas', 'TX'],
['Utah', 'UT'],
['Vermont', 'VT'],
['Virginia', 'VA'],
['Washington', 'WA'],
['West Virginia', 'WV'],
['Wisconsin', 'WI'],
['Wyoming', 'WY']
]
end
end
1 change: 1 addition & 0 deletions app/models/identity.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class Identity < ActiveRecord::Base
attr_accessible :approved
#### END DEVISE SETUP ####

has_many :submissions
has_many :approvals, dependent: :destroy
has_many :project_roles, dependent: :destroy
has_many :protocols, through: :project_roles
Expand Down
8 changes: 8 additions & 0 deletions app/models/item.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class Item < ActiveRecord::Base
belongs_to :questionnaire
has_many :questionnaire_responses, dependent: :destroy
has_many :item_options, dependent: :destroy
validates :content, :item_type, presence: true

accepts_nested_attributes_for :item_options, allow_destroy: true
end