artfully_ose 1.2.0.pre.23 → 1.2.0.pre.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/application.js +44 -11
  3. data/app/assets/javascripts/custom/inline-people-search.js +40 -40
  4. data/app/assets/javascripts/households.js +59 -0
  5. data/app/assets/javascripts/jquery-migrate-1.2.1.min.js +2 -0
  6. data/app/assets/javascripts/relationships.js +63 -0
  7. data/app/assets/stylesheets/application.sass +57 -10
  8. data/app/assets/stylesheets/sass/_event_list.sass +12 -1
  9. data/app/assets/stylesheets/sass/cart.sass +0 -6
  10. data/app/assets/stylesheets/storefront.css +1 -0
  11. data/app/concerns/pdf_generation.rb +4 -1
  12. data/app/controllers/events_controller.rb +11 -2
  13. data/app/controllers/events_pass_types_controller.rb +2 -0
  14. data/app/controllers/exchanges_controller.rb +1 -1
  15. data/app/controllers/households_controller.rb +71 -0
  16. data/app/controllers/member_cards_controller.rb +45 -0
  17. data/app/controllers/members/sessions_controller.rb +14 -0
  18. data/app/controllers/membership_comps_controller.rb +7 -2
  19. data/app/controllers/membership_types_controller.rb +8 -3
  20. data/app/controllers/mobile/orders_controller.rb +3 -2
  21. data/app/controllers/mobile/shows_controller.rb +6 -0
  22. data/app/controllers/mobile/tickets_controller.rb +32 -3
  23. data/app/controllers/mobile/users_controller.rb +11 -13
  24. data/app/controllers/orders_controller.rb +44 -2
  25. data/app/controllers/pass_types_controller.rb +11 -0
  26. data/app/controllers/passes_controller.rb +40 -1
  27. data/app/controllers/people_controller.rb +31 -15
  28. data/app/controllers/relationships_controller.rb +15 -0
  29. data/app/controllers/sales_controller.rb +12 -12
  30. data/app/controllers/searches_controller.rb +1 -1
  31. data/app/controllers/shows_controller.rb +10 -4
  32. data/app/controllers/slices_controller.rb +3 -2
  33. data/app/controllers/statements_controller.rb +1 -1
  34. data/app/controllers/store/memberships_controller.rb +5 -2
  35. data/app/controllers/store/orders_controller.rb +14 -13
  36. data/app/controllers/store/retrievals_controller.rb +29 -0
  37. data/app/helpers/artfully_ose_helper.rb +12 -4
  38. data/app/helpers/households_helper.rb +7 -0
  39. data/app/helpers/link_helper.rb +5 -5
  40. data/app/helpers/relationships_helper.rb +26 -0
  41. data/app/helpers/searches_helper.rb +13 -0
  42. data/app/helpers/suggested_households_helper.rb +5 -0
  43. data/app/mailers/pass_mailer.rb +17 -0
  44. data/app/models/ability.rb +1 -0
  45. data/app/models/actions/go_action.rb +3 -2
  46. data/app/models/address.rb +27 -13
  47. data/app/models/cart.rb +15 -0
  48. data/app/models/company.rb +1 -1
  49. data/app/models/database_views/item_view.rb +56 -13
  50. data/app/models/door_list.rb +6 -3
  51. data/app/models/event.rb +22 -1
  52. data/app/models/events_pass_type.rb +3 -1
  53. data/app/models/extendable.rb +6 -0
  54. data/app/models/household.rb +61 -0
  55. data/app/models/household_suggester.rb +58 -0
  56. data/app/models/imports/events_import.rb +10 -5
  57. data/app/models/individual.rb +3 -1
  58. data/app/models/item.rb +3 -1
  59. data/app/models/job/cleanup_suggested_households_job.rb +17 -0
  60. data/app/models/job/destroy_show_job.rb +10 -0
  61. data/app/models/job/geocode_address_job.rb +11 -0
  62. data/app/models/job/order_processor.rb +20 -8
  63. data/app/models/job/refund_order_processor.rb +16 -0
  64. data/app/models/kit.rb +1 -1
  65. data/app/models/kits/mailchimp_kit.rb +5 -3
  66. data/app/models/kits/membership_kit.rb +1 -1
  67. data/app/models/member.rb +19 -0
  68. data/app/models/member_card_generator.rb +63 -0
  69. data/app/models/member_walkup.rb +150 -0
  70. data/app/models/membership.rb +2 -5
  71. data/app/models/membership_comp.rb +1 -0
  72. data/app/models/membership_sale_search.rb +36 -0
  73. data/app/models/membership_type.rb +8 -2
  74. data/app/models/order.rb +32 -2
  75. data/app/models/order_handler.rb +58 -41
  76. data/app/models/orders/refund_order.rb +4 -0
  77. data/app/models/organization.rb +5 -0
  78. data/app/models/organization_ability.rb +1 -0
  79. data/app/models/pass.rb +143 -5
  80. data/app/models/pass_summary.rb +18 -0
  81. data/app/models/pass_type.rb +7 -1
  82. data/app/models/person.rb +83 -32
  83. data/app/models/relation.rb +27 -0
  84. data/app/models/relation_builder.rb +32 -0
  85. data/app/models/relationship.rb +55 -0
  86. data/app/models/relationship_builder.rb +12 -0
  87. data/app/models/relationship_validator.rb +46 -0
  88. data/app/models/relationships_kit.rb +31 -0
  89. data/app/models/search.rb +152 -57
  90. data/app/models/show.rb +38 -18
  91. data/app/models/slices.rb +25 -8
  92. data/app/models/statement.rb +32 -5
  93. data/app/models/suggested_household.rb +24 -0
  94. data/app/models/ticket.rb +1 -4
  95. data/app/models/ticket/locker.rb +2 -1
  96. data/app/models/ticket/pricing.rb +10 -1
  97. data/app/models/ticket_type.rb +12 -1
  98. data/app/models/valuation/lifetime_memberships.rb +24 -0
  99. data/app/models/valuation/lifetime_ticket_value.rb +1 -1
  100. data/app/models/venue.rb +21 -7
  101. data/app/views/actions/_form.html.haml +6 -6
  102. data/app/views/actions/get/_show.html.haml +1 -1
  103. data/app/views/actions/give/_show.html.haml +1 -1
  104. data/app/views/actions/shared/_show.html.haml +1 -1
  105. data/app/views/discounts/_discount_section_fields.html.haml +1 -1
  106. data/app/views/discounts/index.html.haml +1 -1
  107. data/app/views/events/_day_date_show.html.haml +2 -2
  108. data/app/views/events/_discount_section_fields.html.haml +1 -1
  109. data/app/views/events/_list.html.haml +10 -5
  110. data/app/views/events/_menu.html.haml +5 -5
  111. data/app/views/events/_section_fields.html.haml +1 -1
  112. data/app/views/events/_ticket_type_fields.html.haml +2 -2
  113. data/app/views/events/index.html.haml +20 -3
  114. data/app/views/events/temp_discount_form.html.haml +1 -1
  115. data/app/views/events/temp_discounts_index.html.haml +1 -1
  116. data/app/views/events_pass_types/_form.html.haml +17 -0
  117. data/app/views/events_pass_types/index.html.haml +5 -2
  118. data/app/views/exchanges/new.html.haml +1 -1
  119. data/app/views/households/_action.html.haml +24 -0
  120. data/app/views/households/_edit_modal.html.haml +143 -0
  121. data/app/views/households/_form.html.haml +26 -0
  122. data/app/views/households/_header.html.haml +25 -0
  123. data/app/views/households/_individual_fields.html.haml +8 -0
  124. data/app/views/households/_list.html.haml +10 -0
  125. data/app/views/households/_note.html.haml +33 -0
  126. data/app/views/households/edit.html.haml +1 -0
  127. data/app/views/households/index.html.haml +13 -0
  128. data/app/views/households/new.html.haml +14 -0
  129. data/app/views/households/show.html.haml +72 -0
  130. data/app/views/households/suggested.html.haml +38 -0
  131. data/app/views/imports/donations/_pending.html.haml +1 -1
  132. data/app/views/imports/events/_pending.html.haml +1 -1
  133. data/app/views/imports/people/_imported.html.haml +2 -2
  134. data/app/views/imports/people/_new.html.haml +3 -3
  135. data/app/views/imports/people/_pending.html.haml +2 -2
  136. data/app/views/imports/people/_recalled.html.haml +1 -1
  137. data/app/views/imports/shared/_sidebar.html.haml +1 -1
  138. data/app/views/index/dashboard.html.haml +4 -4
  139. data/app/views/layouts/_flash.html.haml +2 -2
  140. data/app/views/layouts/_menu.html.haml +2 -0
  141. data/app/views/layouts/storefront.html.haml +1 -1
  142. data/app/views/members/index/index.html.haml +1 -1
  143. data/app/views/membership_comps/confirm.html.haml +4 -3
  144. data/app/views/membership_comps/new.html.haml +21 -8
  145. data/app/views/membership_types/_form.html.haml +11 -0
  146. data/app/views/membership_types/index.html.haml +2 -2
  147. data/app/views/membership_types/type.html.haml +7 -4
  148. data/app/views/memberships/index.html.haml +7 -7
  149. data/app/views/merges/find_person.html.haml +1 -1
  150. data/app/views/notes/_note.html.haml +4 -4
  151. data/app/views/order_mailer/confirmation_for_refund.html.haml +8 -1
  152. data/app/views/orders/_item_table.haml +18 -5
  153. data/app/views/orders/_order_sidebar.html.haml +1 -1
  154. data/app/views/orders/membership.html.haml +104 -0
  155. data/app/views/orders/sales.html.haml +1 -1
  156. data/app/views/organizations/_form.html.haml +1 -1
  157. data/app/views/pass_mailer/pass_info_for.html.haml +21 -0
  158. data/app/views/pass_types/_form.html.haml +6 -0
  159. data/app/views/pass_types/_pass_type_fees.html.haml +0 -48
  160. data/app/views/pass_types/index.html.haml +4 -2
  161. data/app/views/passes/index.html.haml +95 -27
  162. data/app/views/pdfs/member_card_generator/blanks_usa_idc6.html.haml +109 -0
  163. data/app/views/people/_edit_modal.html.haml +35 -25
  164. data/app/views/people/_header.html.haml +10 -6
  165. data/app/views/people/_household_fields.html.haml +5 -0
  166. data/app/views/people/_phone_fields.html.haml +1 -1
  167. data/app/views/people/_relationship_fields.html.haml +14 -0
  168. data/app/views/people/_work_with_menu.html.haml +36 -0
  169. data/app/views/people/new.html.haml +1 -1
  170. data/app/views/people/show.html.haml +46 -8
  171. data/app/views/refunds/new.html.haml +4 -0
  172. data/app/views/relationships/index.html.haml +32 -0
  173. data/app/views/reports_mailer/daily.html.haml +41 -38
  174. data/app/views/sales/new.html.haml +1 -1
  175. data/app/views/searches/_form.html.haml +65 -17
  176. data/app/views/searches/_household.html.haml +7 -0
  177. data/app/views/searches/_person.html.haml +5 -2
  178. data/app/views/searches/new.html.haml +1 -1
  179. data/app/views/searches/show.html.haml +13 -5
  180. data/app/views/segments/show.html.haml +3 -3
  181. data/app/views/shared/_tags.html.haml +1 -1
  182. data/app/views/shows/_glance.html.haml +1 -1
  183. data/app/views/shows/_sections_table.html.haml +2 -2
  184. data/app/views/shows/_ticket_table.html.haml +1 -1
  185. data/app/views/shows/_work_with.html.haml +2 -2
  186. data/app/views/shows/door_list.html.haml +2 -2
  187. data/app/views/shows/door_list.pdf.haml +29 -0
  188. data/app/views/shows/index.html.haml +1 -1
  189. data/app/views/shows/show.html.haml +1 -1
  190. data/app/views/slices/index.html.haml +2 -1
  191. data/app/views/statements/_discounts_table.html.haml +1 -1
  192. data/app/views/statements/_order_location_table.html.haml +1 -1
  193. data/app/views/statements/_passes_table.html.haml +13 -16
  194. data/app/views/statements/_payment_method_table.haml +1 -1
  195. data/app/views/statements/_ticket_type_table.haml +5 -2
  196. data/app/views/statements/show.html.haml +2 -2
  197. data/app/views/store/checkouts/thanks.html.haml +3 -2
  198. data/app/views/store/events/index.html.haml +1 -1
  199. data/app/views/store/memberships/index.html.haml +9 -2
  200. data/app/views/store/orders/show.html.haml +10 -24
  201. data/app/views/store/passes/index.html.haml +1 -1
  202. data/app/views/store/retrievals/index.html.haml +11 -0
  203. data/app/views/store/shows/_show.html.haml +2 -2
  204. data/app/views/venues/edit.html.haml +3 -1
  205. data/config/routes.rb +21 -3
  206. data/db/migrate/20130916194547_add_relationships.rb +21 -0
  207. data/db/migrate/20131003134821_add_relationships_to_search.rb +7 -0
  208. data/db/migrate/20131003200508_add_starred_to_relationships.rb +5 -0
  209. data/db/migrate/20131015151550_add_households.rb +18 -0
  210. data/db/migrate/20131022183913_add_search_output_options.rb +24 -0
  211. data/db/migrate/20131025162155_default_search_filter_values.rb +10 -0
  212. data/db/migrate/20131025180139_unique_household_names.rb +8 -0
  213. data/db/migrate/20131106191847_add_suggested_households.rb +13 -0
  214. data/db/migrate/20131204162642_add_shared_address.rb +9 -0
  215. data/db/migrate/20131212164553_add_copy_to_individuals_option.rb +5 -0
  216. data/db/migrate/20140415212841_add_min_max_start_dates_to_searches.artfully_ose_engine.rb +6 -0
  217. data/db/migrate/20140422193345_add_email_copy_to_pass_type.rb +5 -0
  218. data/db/migrate/20140423181639_add_min_max_end_dates_to_searches.artfully_ose_engine.rb +6 -0
  219. data/db/migrate/20140423185921_add_cached_stats_to_event.rb +9 -0
  220. data/db/migrate/20140424174423_add_lifetime_memberships_to_people.artfully_ose_engine.rb +5 -0
  221. data/db/migrate/20140506155241_add_lpt_to_membership_type.rb +5 -0
  222. data/db/migrate/20140515143651_remove_show_stats_view.rb +6 -0
  223. data/db/migrate/20140521195853_add_deleted_at_to_pass_type.rb +5 -0
  224. data/db/migrate/20140522205554_add_limit_to_events_pass_types.rb +5 -0
  225. data/db/migrate/20140523180444_remove_tickets_purchased_from_passes.rb +5 -0
  226. data/lib/artfully_ose/common_abilities.rb +7 -1
  227. data/lib/artfully_ose/version.rb +1 -1
  228. data/spec/factories/household_factories.rb +8 -0
  229. data/spec/factories/organization_factories.rb +4 -0
  230. data/spec/factories/pass_type_factories.rb +11 -0
  231. data/spec/factories/user_factories.rb +1 -1
  232. metadata +92 -11
  233. data/app/assets/fonts/FontAwesome.otf +0 -0
  234. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  235. data/app/assets/fonts/fontawesome-webfont.svg +0 -284
  236. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  237. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  238. data/app/assets/stylesheets/font-awesome.sass +0 -759
  239. data/app/models/show_stats_view.rb +0 -10
  240. data/app/models/show_touch.rb +0 -12
  241. data/app/views/people/_comp_membership.html.haml +0 -23
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODcyYzg1ZTUzZmI5NjVlNzgzNDdmMTcyN2EwNDMwOTI1NTJjZjQ1Zg==
4
+ Y2U1MDlhODQyYjllZWM4ZGEyZGJjZjhjMjYyZDM0MWZlZDU2ZmRlMQ==
5
5
  data.tar.gz: !binary |-
6
- MDljN2U0ODMzZWZiMWY2NWEwOTU4ZWE0ZWZjYTIzOTYzZjEyYTNkOQ==
6
+ MmU5MTU5NzRmMjM2Y2NkYjBkZjY2OTBmZmI0MmY5NTE4NzMzYWMxZg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZTcwMzgwY2NiNWExZTVlYzkxYTg5ZmUxZjBmYzM2OGEwYzIwZTk1OTQ2Mzc2
10
- YjllMTgyMWUyMzRlM2NlNzExYmI4N2I4ZDUwM2Q3YjA2ZDA0NDI0YzFjYjgx
11
- N2E5NzgxZWZhMjZlMTVjOTRmZTA2YThjMzc1ZjdmYTc0Nzk0NjY=
9
+ ZmNiNzNhZjYxNDFjZmJiYjFlNWEyNWYwNjhjZjYyNTkzZWI3ZWQ1NzE2YmEy
10
+ NmY0OGIwOTFmNGQ2NWRiNzBjNWE2OTc5OWI4MTMzYjg4NTI0ZjBmZGMwNTJk
11
+ YjI2ODgyNzA1MGU2MDQ0OWJjMDZmYTAzMzU1ZGJjYTAwOGEwZjQ=
12
12
  data.tar.gz: !binary |-
13
- ZWE5MTFhMTI3YWFiNGJhMmRlMDU3ZmNkM2JiYmJjYWM1ZDQ3NWRiNWE3YTU1
14
- NzJkZGUwMTlhZTg3Y2Y1ZWU0YjY2MGViYzU3YWY2NWE0MzM5YThjMTcyN2Yx
15
- MjAwMzIwMTZmNWRiMDk2MTFhOTU1ZDFjZjQ4NGI1NjBhN2EyMDU=
13
+ MmFhY2E4OTNjNzU3YzYzZTUyZTk5ZmE0OThkMjU3MGU2Mzg4M2ZjYmU2ZTRk
14
+ MzlhZjcwZDIwYTM4YTFlNjJiMTY4MzcwZTNjZmY4NmI5YzgzZjQwZjI2M2Vm
15
+ ODZhMmQzNjY4ZmUzMWJhNmJlODQ4OTQzOTllNTAzYzhjYTdkMzY=
@@ -28,6 +28,12 @@ function NewPersonCtrl($scope) {
28
28
  }
29
29
  }
30
30
 
31
+ function NewHouseholdCtrl($scope) {
32
+ }
33
+
34
+ function EditHouseholdCtrl($scope) {
35
+ }
36
+
31
37
  function EditPersonCtrl($scope) {
32
38
  }
33
39
 
@@ -35,11 +41,11 @@ var CollectInfoCtrl = function($scope, $http) {
35
41
  $scope.data = {organization: {valid_name: true}};
36
42
 
37
43
  $scope.$watch("data.organization.name", function(oldValue, newValue) {
38
- $http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
44
+ //$http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
39
45
  });
40
46
 
41
47
  $scope.$watch("data.organization.zip", function(oldValue, newValue) {
42
- $http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
48
+ //$http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
43
49
  });
44
50
  };
45
51
 
@@ -47,11 +53,11 @@ var EditOrganizationCtrl = function($scope, $http) {
47
53
  $scope.data = {organization: {valid_name: true}};
48
54
 
49
55
  $scope.$watch("data.organization.name", function(oldValue, newValue) {
50
- $http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
56
+ //$http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
51
57
  });
52
58
 
53
59
  $scope.$watch("data.organization.zip", function(oldValue, newValue) {
54
- $http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
60
+ //$http.post('/organizations/check_name.json', {name:$scope.data.organization.name, zip:$scope.data.organization.zip}).then(function(result){$scope.data.organization.valid_name = result.data.valid;});
55
61
  });
56
62
  };
57
63
 
@@ -157,10 +163,21 @@ var clearFA = function() {
157
163
  $('.no-fa').popover( "show" )
158
164
  } else {
159
165
  $('.no-fa').popover( "hide" )
160
- $('.disablable').removeAttr("disabled");
166
+ $('.disablable').removeAttr("disabled");
161
167
  }
162
168
  }
163
169
 
170
+ function bindLimitPopover() {
171
+ $('#ticket_type_limit').popover({title: "Heads Up!", content: "Setting this to zero means that this ticket type will appear as SOLD OUT to patrons.", placement: "right", trigger: "manual"});
172
+
173
+ $('#ticket_type_limit').keyup(function () {
174
+ if (parseInt($('#ticket_type_limit').val()) == 0) {
175
+ $('#ticket_type_limit').popover('show')
176
+ } else {
177
+ $('#ticket_type_limit').popover('hide')
178
+ }
179
+ })
180
+ }
164
181
 
165
182
  function bindMemberTickets() {
166
183
  $('.member-ticket-yes').on('click', function(e) { $('.membership-fields', $(this).parent().parent().parent().parent()).show() })
@@ -176,7 +193,7 @@ function bindMemberTickets() {
176
193
  }
177
194
 
178
195
  $(document).ready(function() {
179
-
196
+
180
197
  /*********** NEW BOOTSTRAP JS ***********/
181
198
  $(".alert").alert();
182
199
 
@@ -200,7 +217,7 @@ $(document).ready(function() {
200
217
  $('.wysihtml5').wysihtml5()
201
218
 
202
219
  /*********** NEW ARTFULLY JS ************/
203
-
220
+
204
221
  $('.artfully-tooltip').tooltip();
205
222
  $('.no-fa').popover({trigger:'manual', title: "That's us not you!", content: "You cannot name your organization \"Fractured Atlas\". Use the name of your company, group, or business here. Fiscally sponsored projects of Fractured Atlas should use their project name here."})
206
223
  $('.no-fa').on('keyup', checkForFA);
@@ -217,6 +234,7 @@ $(document).ready(function() {
217
234
  }
218
235
 
219
236
  bindMemberTickets()
237
+ bindLimitPopover()
220
238
 
221
239
  /*********** EXISTING ARTFUL.LY JS ******/
222
240
 
@@ -247,6 +265,10 @@ $(document).ready(function() {
247
265
  'regionField' : '#organization_state'
248
266
  });
249
267
 
268
+ $(document).locationSelector({
269
+ 'countryField' : '#household_address_attributes_country',
270
+ 'regionField' : '#household_address_attributes_state'
271
+ });
250
272
 
251
273
 
252
274
  $("form .description").siblings("input").focusin(function(){
@@ -310,6 +332,7 @@ $(document).ready(function() {
310
332
  $("#newTicketType").html(e.responseText);
311
333
  $("#newTicketType").modal( "show" );
312
334
  bindMemberTickets();
335
+ bindLimitPopover();
313
336
  return false;
314
337
  });
315
338
 
@@ -341,7 +364,7 @@ $(document).ready(function() {
341
364
 
342
365
  if (subtypes.length > 0) {
343
366
  $('#artfully_action_subtype').show();
344
- $.each(subtypes, function(index, value) {
367
+ $.each(subtypes, function(index, value) {
345
368
  $('#artfully_action_subtype')
346
369
  .append($("<option></option>")
347
370
  .attr("value",value)
@@ -377,11 +400,11 @@ $(document).ready(function() {
377
400
  });
378
401
 
379
402
  $('table#notes-list').on("click", 'td.toggle-truncated .truncated, td.toggle-truncated .not-truncated', function(event) {
380
- $(this).parent().find('div').toggle();
403
+ $(this).parent().find('.truncated,.not-truncated').toggle();
381
404
  })
382
405
 
383
406
  $('table#action-list').on("click", 'td.toggle-truncated .truncated, td.toggle-truncated .not-truncated', function(event) {
384
- $(this).parent().find('div').toggle();
407
+ $(this).parent().find('.truncated,.not-truncated').toggle();
385
408
  bindEditOrderLink()
386
409
  })
387
410
 
@@ -576,7 +599,17 @@ function activateControls() {
576
599
  });
577
600
  }
578
601
 
579
-
602
+
603
+ }
604
+
605
+ function toggleVisibility(el) {
606
+ el = $(el)
607
+ vis = el.hasClass('invisible')
608
+ if(vis) {
609
+ el.removeClass('invisible')
610
+ } else {
611
+ el.addClass('invisible')
612
+ }
580
613
  }
581
614
 
582
615
  function togglePrintPreview(){
@@ -6,10 +6,10 @@
6
6
  * company_name
7
7
  */
8
8
  function cleanJsonPerson(jsonPerson) {
9
- jsonPerson.first_name = ( jsonPerson.first_name == null ? "" : jsonPerson.first_name )
10
- jsonPerson.last_name = ( jsonPerson.last_name == null ? "" : jsonPerson.last_name )
11
- jsonPerson.email = ( jsonPerson.email == null ? "" : jsonPerson.email )
12
- jsonPerson.company_name = ( jsonPerson.company_name == null ? "" : jsonPerson.company_name )
9
+ jsonPerson.first_name = ( jsonPerson.first_name == null ? "" : jsonPerson.first_name )
10
+ jsonPerson.last_name = ( jsonPerson.last_name == null ? "" : jsonPerson.last_name )
11
+ jsonPerson.email = ( jsonPerson.email == null ? "" : jsonPerson.email )
12
+ jsonPerson.company_name = ( jsonPerson.company_name == null ? "" : jsonPerson.company_name )
13
13
  return jsonPerson
14
14
  }
15
15
 
@@ -21,65 +21,65 @@ function updateModal() {
21
21
  }
22
22
 
23
23
  function updateSelectedPerson(personId, personFirstName, personLastName, personEmail) {
24
- $("input#person_id").val(personId)
25
- $("input#person_first_name").val(personFirstName)
26
- $("input#person_last_name").val(personLastName)
27
- $("input#person_email").val(personEmail)
24
+ $("input#person_id").val(personId)
25
+ $("input#person_first_name").val(personFirstName)
26
+ $("input#person_last_name").val(personLastName)
27
+ $("input#person_email").val(personEmail)
28
28
  updateModal()
29
29
  }
30
30
 
31
31
  function clearNewPersonForm() {
32
32
  $("input#person_id").val("")
33
- $("input#person_first_name").val("")
34
- $("input#person_last_name").val("")
35
- $("input#person_email").val("")
33
+ $("input#person_first_name").val("")
34
+ $("input#person_last_name").val("")
35
+ $("input#person_email").val("")
36
36
  }
37
37
 
38
38
  $("document").ready(function(){
39
-
39
+
40
40
  $("#new_person").bind("ajax:success", function(xhr, person){
41
41
  $(this).removeClass('loading')
42
42
  $(this).find("input:submit").removeAttr('disabled');
43
43
  person = cleanJsonPerson(person)
44
- updateSelectedPerson(person.id, person.first_name, person.last_name, person.email)
45
- clearNewPersonForm()
44
+ updateSelectedPerson(person.id, person.first_name, person.last_name, person.email)
45
+ clearNewPersonForm()
46
46
  });
47
47
 
48
48
  $("#new_person").bind("ajax:error", function(xhr, status, error){
49
49
  $(this).find("input:submit").removeAttr('disabled');
50
50
  data = eval("(" + status.responseText + ")");
51
51
  $(this).removeClass('loading')
52
- });
53
-
54
- $("input", "#the-details").autocomplete({
52
+ });
53
+
54
+ $("input", "#the-details").autocomplete({
55
55
  html: true,
56
- minLength: 3,
57
- focus: function(event, person) {
58
- event.preventDefault()
59
- },
56
+ minLength: 3,
57
+ focus: function(event, person) {
58
+ event.preventDefault()
59
+ },
60
60
  source: function(request, response) {
61
- $.getJSON("/people?utf8=%E2%9C%93&commit=Search", { search: request.term }, function(people) {
62
- responsePeople = new Array();
63
-
64
- $.each(people, function (i, person) {
65
- person = cleanJsonPerson(person)
66
- responsePeople[i] = "<div id='search-result-full-name'><span id='search-result-first-name'>"+ person.first_name +"</span> <span id='search-result-last-name'>"+ person.last_name +"</span></div>"
67
- responsePeople[i] += "<div id='search-result-email' class='search-result-details'>"+ person.email +"</div>"
68
- responsePeople[i] += "<div class='clear'></div>"
69
- responsePeople[i] += "<div id='search-result-company-name' class='search-result-details'>"+ person.company_name +"</div>"
70
- responsePeople[i] += "<div id='search-result-id'>"+person.id+"</div>"
71
- });
72
- response(responsePeople)
73
- });
74
- },
75
- select: function(event, person) {
61
+ $.getJSON("/people?utf8=%E2%9C%93&commit=Search", { search: request.term }, function(people) {
62
+ responsePeople = new Array();
63
+
64
+ $.each(people, function (i, person) {
65
+ person = cleanJsonPerson(person)
66
+ responsePeople[i] = "<div id='search-result-full-name'><span id='search-result-first-name'>"+ person.first_name +"</span> <span id='search-result-last-name'>"+ person.last_name +"</span></div>"
67
+ responsePeople[i] += "<div id='search-result-email' class='search-result-details'>"+ person.email +"</div>"
68
+ responsePeople[i] += "<div class='clear'></div>"
69
+ responsePeople[i] += "<div id='search-result-company-name' class='search-result-details'>"+ person.company_name +"</div>"
70
+ responsePeople[i] += "<div id='search-result-id'>"+person.id+"</div>"
71
+ });
72
+ response(responsePeople)
73
+ });
74
+ },
75
+ select: function(event, person) {
76
76
  event.preventDefault()
77
- var personId = $(person.item.value).filter("#search-result-id").html()
78
- var personFirstName = $("#search-result-first-name", person.item.value).html()
77
+ var personId = $(person.item.value).filter("#search-result-id").html()
78
+ var personFirstName = $("#search-result-first-name", person.item.value).html()
79
79
  var personLastName = $("#search-result-last-name", person.item.value).html()
80
- var personEmail = $(person.item.value).filter("#search-result-email").html()
80
+ var personEmail = $(person.item.value).filter("#search-result-email").html()
81
81
 
82
82
  updateSelectedPerson(personId, personFirstName, personLastName, personEmail)
83
83
  }
84
84
  });
85
- });
85
+ });
@@ -0,0 +1,59 @@
1
+ //= require_self
2
+ //
3
+ $(function(){
4
+
5
+ function cleanJsonPerson(jsonPerson) {
6
+ jsonPerson.first_name = ( jsonPerson.first_name == null ? "" : jsonPerson.first_name )
7
+ jsonPerson.last_name = ( jsonPerson.last_name == null ? "" : jsonPerson.last_name )
8
+ jsonPerson.email = ( jsonPerson.email == null ? "" : jsonPerson.email )
9
+ jsonPerson.company_name = ( jsonPerson.company_name == null ? "" : jsonPerson.company_name )
10
+ return jsonPerson
11
+ }
12
+ $(document).on('keyup.autocomplete', '.fields.individual-fields .individual-name-input', function(){
13
+ var autocompleteField = this;
14
+ $(this).autocomplete({
15
+ html: true,
16
+ minLength: 3,
17
+ focus: function(event, person) {
18
+ event.preventDefault()
19
+ },
20
+ source: function(request, response) {
21
+ $.getJSON("/people?utf8=%E2%9C%93&type=Individual&commit=Search", { search: request.term }, function(people) {
22
+ responsePeople = new Array();
23
+
24
+ $.each(people, function (i, person) {
25
+ person = cleanJsonPerson(person)
26
+ responsePeople[i] = "<div data-row='"+""+"' id='search-result-full-name'><span id='search-result-first-name'>"+ person.first_name +"</span> <span id='search-result-last-name'>"+ person.last_name +"</span></div>"
27
+ responsePeople[i] += "<div id='search-result-email' class='search-result-details'>"+ person.email +"</div>"
28
+ responsePeople[i] += "<div class='clear'></div>"
29
+ responsePeople[i] += "<div id='search-result-company-name' class='search-result-details'>"+ person.company_name +"</div>"
30
+ responsePeople[i] += "<div id='search-result-id'>"+person.id+"</div>"
31
+ });
32
+ response(responsePeople)
33
+ });
34
+ },
35
+
36
+ select: function(event, item) {
37
+ event.preventDefault()
38
+ var personId = $(item.item.value).filter("#search-result-id").html()
39
+ var personFirstName = $("#search-result-first-name", item.item.value).html()
40
+ var personLastName = $("#search-result-last-name", item.item.value).html()
41
+
42
+ var personLabel = personFirstName + " " + personLastName
43
+ $(this).val(personLabel)
44
+ $(this).siblings('.individual-id').val(personId)
45
+ },
46
+ open: function() {
47
+ $(this).removeClass("ui-corner-all").addClass("ui-corner-top")
48
+ },
49
+ close: function() {
50
+ $(this).removeClass("ui-corner-top").addClass("ui-corner-all")
51
+ }
52
+
53
+ });
54
+
55
+ // Ensure the autocomplete drop-down shows up in the modal and on this row
56
+ $(this).autocomplete("widget").insertAfter($(this))
57
+ });
58
+ });
59
+
@@ -0,0 +1,2 @@
1
+ /*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */
2
+ jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var o=e("<input/>",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window);
@@ -0,0 +1,63 @@
1
+ //= require_self
2
+
3
+ $(function(){
4
+
5
+ function cleanJsonPerson(jsonPerson) {
6
+ jsonPerson.first_name = ( jsonPerson.first_name == null ? "" : jsonPerson.first_name )
7
+ jsonPerson.last_name = ( jsonPerson.last_name == null ? "" : jsonPerson.last_name )
8
+ jsonPerson.email = ( jsonPerson.email == null ? "" : jsonPerson.email )
9
+ jsonPerson.company_name = ( jsonPerson.company_name == null ? "" : jsonPerson.company_name )
10
+ return jsonPerson
11
+ }
12
+
13
+ $(document).on('keyup.autocomplete', '.fields.relationship-fields .other-input', function(){
14
+ var autocompleteField = this;
15
+ $(this).autocomplete({
16
+ html: true,
17
+ minLength: 3,
18
+ focus: function(event, person) {
19
+ event.preventDefault()
20
+ },
21
+ source: function(request, response) {
22
+ $.getJSON("/people?utf8=%E2%9C%93&commit=Search", { search: request.term }, function(people) {
23
+ responsePeople = new Array();
24
+
25
+ $.each(people, function (i, person) {
26
+ person = cleanJsonPerson(person)
27
+ responsePeople[i] = "<div data-row='"+""+"' id='search-result-full-name'><span id='search-result-first-name'>"+ person.first_name +"</span> <span id='search-result-last-name'>"+ person.last_name +"</span></div>"
28
+ responsePeople[i] += "<div id='search-result-email' class='search-result-details'>"+ person.email +"</div>"
29
+ responsePeople[i] += "<div class='clear'></div>"
30
+ responsePeople[i] += "<div id='search-result-company-name' class='search-result-details'>"+ person.company_name +"</div>"
31
+ responsePeople[i] += "<div id='search-result-id'>"+person.id+"</div>"
32
+ });
33
+ response(responsePeople)
34
+ });
35
+ },
36
+ select: function(event, item) {
37
+ event.preventDefault()
38
+ var personId = $(item.item.value).filter("#search-result-id").html()
39
+ var personFirstName = $("#search-result-first-name", item.item.value).html()
40
+ var personLastName = $("#search-result-last-name", item.item.value).html()
41
+
42
+ if(personFirstName && personLastName){
43
+ personLabel = personFirstName + " " + personLastName
44
+ } else {
45
+ personLabel = $(item.item.value).filter("#search-result-company-name").html()
46
+ }
47
+
48
+ $(this).val(personLabel)
49
+ $(this).siblings('.other-id').val(personId)
50
+ },
51
+ open: function() {
52
+ $(this).removeClass("ui-corner-all").addClass("ui-corner-top")
53
+ },
54
+ close: function() {
55
+ $(this).removeClass("ui-corner-top").addClass("ui-corner-all")
56
+ }
57
+
58
+ });
59
+
60
+ // Ensure the autocomplete drop-down shows up in the modal and on this row
61
+ $(this).autocomplete("widget").insertAfter($("body"))
62
+ });
63
+ });
@@ -3,7 +3,7 @@
3
3
  @import "./sass/event_list"
4
4
  @import "./sass/tags"
5
5
  @import "./sass/box-office"
6
- @import "./font-awesome"
6
+ @import "font-awesome"
7
7
 
8
8
  #preload_assets
9
9
  display: none
@@ -447,11 +447,23 @@ table.docs
447
447
  a.artfully-tooltip, a.artfully-tooltip:hover
448
448
  text-decoration: none
449
449
 
450
- // People Records
451
- body[data-controller=people][data-action=show], body[data-controller=memberships][data-action=index], body[data-controller=passes][data-action=index]
450
+ body[data-controller=people][data-action=show],
451
+ body[data-controller=households][data-action=show],
452
+ body[data-controller=memberships][data-action=index],
453
+ body[data-controller=passes][data-action=index]
452
454
  padding-top: 10px
453
455
 
454
- .person-header
456
+
457
+ .table.search-results
458
+ td.controls
459
+ width: 10px
460
+ td.name
461
+ label
462
+ font-weight: bold
463
+ display: inline
464
+
465
+ .person-header,
466
+ .household-header
455
467
  overflow: hidden
456
468
  background: #eee
457
469
  border-bottom: 1px solid #ccc
@@ -460,7 +472,8 @@ body[data-controller=people][data-action=show], body[data-controller=memberships
460
472
  border-bottom-right-radius: 8px
461
473
  margin-bottom: 20px
462
474
 
463
- .person-avatar
475
+ .person-avatar,
476
+ .household-avatar
464
477
  float: left
465
478
  margin-right: 20px
466
479
  img
@@ -468,13 +481,21 @@ body[data-controller=people][data-action=show], body[data-controller=memberships
468
481
  width: 150px
469
482
  height: 150px
470
483
 
471
- .person-values-and-tags
484
+ .person-header .view-household
485
+ margin-right: 20px
486
+
487
+ .person-header .view-household .btn
488
+ margin: 4px auto
489
+
490
+ .person-values-and-tags,
491
+ .household-values-and-tags
472
492
  float: right
473
493
 
474
494
  .company-and-title
475
495
  margin-bottom: 20px
476
496
 
477
- .person-values
497
+ .person-values,
498
+ .household-values
478
499
  margin-bottom: 20px
479
500
  border: 1px solid #ccc
480
501
  border-radius: 4px
@@ -495,7 +516,8 @@ body[data-controller=people][data-action=show], body[data-controller=memberships
495
516
  width: 300px
496
517
  clear: right
497
518
 
498
- .person-links
519
+ .person-links,
520
+ .household-links
499
521
  float: left
500
522
  a
501
523
  display: block
@@ -579,7 +601,8 @@ tr.action td
579
601
  .toggle-truncated
580
602
  cursor: pointer
581
603
 
582
- #edit-person
604
+ #edit-person,
605
+ #edit-household
583
606
  width: 740px
584
607
  margin-left: -360px
585
608
  form
@@ -592,6 +615,20 @@ tr.action td
592
615
  .modal-footer
593
616
  margin-bottom: 0
594
617
 
618
+ #edit-household
619
+ #address.tab-pane
620
+ .wide
621
+ .controls
622
+ label
623
+ width: auto
624
+ .control
625
+ select
626
+ width: 400px
627
+ #address.tab-pane
628
+ .controls
629
+ label.wide
630
+ width: auto
631
+
595
632
  table#action-list td, table#notes-list td
596
633
  line-height: 20px
597
634
  border-top: 0px
@@ -614,6 +651,11 @@ table#action-list td, table#notes-list td
614
651
  &.not-active
615
652
  color: #ccc
616
653
 
654
+ .starable-spacer
655
+ width: 10px
656
+ font-size: 17px
657
+ color: transparent
658
+
617
659
  form > fieldset:last-of-type > *:last-child
618
660
  margin-bottom: 45px
619
661
 
@@ -664,6 +706,11 @@ p.alternate_form_link
664
706
  [ng\:cloak], [ng-cloak], .ng-cloak
665
707
  display: none !important
666
708
 
709
+ .ui-autocomplete
710
+ z-index: 3000 !important
711
+ max-height: 300px
712
+ overflow: scroll
713
+
667
714
  .wysihtml5-editor
668
715
  h3
669
716
  font-size: 1.3em
@@ -695,4 +742,4 @@ p.alternate_form_link
695
742
  .controls
696
743
  label
697
744
  margin-bottom: 5px
698
- padding-top: 5px
745
+ padding-top: 5px