Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. {
  2. "features": {
  3. "utilities": {
  4. "gas": false,
  5. "water": false,
  6. "electric": true
  7. }
  8. }
  9. }
  10.  
  11. ActiveAdmin.register Entity do
  12.  
  13. permit_params :name, :config, :message, :water, :gas, :electric
  14.  
  15. form do |f|
  16. f.inputs do
  17. f.input :name
  18. f.input :water, as: :text, :as => :select, :collection => [true, false]
  19. f.input :gas, as: :text, :as => :select, :collection => [true, false]
  20. f.input :electric, as: :text, :as => :select, :collection => [true, false]
  21. end
  22. f.actions
  23. end
  24.  
  25. index do
  26. column :id
  27. column :parent_id
  28. column :name
  29. [:water, :gas, :electric].each do |u|
  30. column u do |e|
  31. e.send("has_#{u}?")
  32. end
  33. column "parent_#{u}" do |e|
  34. e.parent.nil? ? nil : e.parent.send("has_#{u}?")
  35. end
  36. end
  37.  
  38. actions
  39. end
  40.  
  41. show do
  42. attributes_table do
  43. row :name
  44. [:water, :gas, :electric].each do |u|
  45. row u do |e|
  46. e.send("has_#{u}?")
  47. end
  48. end
  49. end
  50. end
  51.  
  52. preserve_default_filters!
  53. remove_filter :name, :salesforce_id, :subdomain, :code, :display_name, :kind, :category, :status, :status_updated_at, :live_date, :cancelled_date, :test, :subscription_plan_id, :discount_id, :email, :proper_email, :first_name, :last_name, :phone, :external_id, :external_office_id, :address_id, :moves_per_month, :number_of_units, :pmm, :stripe_customer_id, :stripe_subscription_id, :stripe_subscription_metadata, :subscription_type, :logo_id, :facebook_url, :twitter_url, :linkedin_url, :website, :team_name, :message, :enable_automated_invites, :notify_before_invite, :notify_after_invite, :force_hard_verification, :automated, :integration_status, :last_synced_at, :deleted_at, :created_at, :updated_at
  54.  
  55. sidebar :remove_utilities do
  56. form title: 'from google sheet' do |f|
  57.  
  58.  
  59. end
  60. end
  61.  
  62. end
  63.  
  64. class Entity < ActiveRecord::Base
  65.  
  66. belongs_to :parent, class_name: 'Entity'
  67.  
  68. def has_config
  69. self.has_attribute? 'config'
  70. end
  71.  
  72. def water
  73. has_water?
  74. end
  75.  
  76. def water=(val)
  77. set_water(val)
  78. end
  79.  
  80. def gas
  81. has_gas?
  82. end
  83.  
  84. def gas=(val)
  85. set_gas(val)
  86. end
  87.  
  88. def electric
  89. has_electric?
  90. end
  91.  
  92. def electric=(val)
  93. set_electric(val)
  94. end
  95.  
  96. def utility(util)
  97. self[:config].try(:fetch, "features", nil).try(:fetch, "utilities", nil).try(:fetch, "#{util}", nil)
  98. end
  99.  
  100. def has_water?
  101. utility("water") == true
  102. end
  103.  
  104. def has_gas?
  105. utility("gas") == true
  106. end
  107.  
  108. def has_electric?
  109. utility("electric") == true
  110. end
  111.  
  112. private
  113.  
  114. def default_config
  115. {"features" => {"utilities" => {"water" => true, "gas" => true, "electric" => true}}}
  116. end
  117.  
  118. def make_explicit(util)
  119. self[:config].reverse_merge!(default_config) unless util
  120. end
  121.  
  122. def set_water(boolean)
  123. new_val = cleaned_boolean(boolean)
  124. make_explicit(water)
  125. self[:config]["features"]["utilities"]["water"] = new_val
  126. end
  127.  
  128. def set_gas(boolean)
  129. new_val = cleaned_boolean(boolean)
  130.  
  131. make_explicit(gas)
  132. self[:config]["features"]["utilities"]["gas"] = new_val
  133. end
  134.  
  135. def set_electric(boolean)
  136. new_val = cleaned_boolean(boolean)
  137. make_explicit(electric)
  138. self[:config]["features"]["utilities"]["electric"] = new_val
  139. end
  140.  
  141. def cleaned_boolean(val)
  142. if val.is_a?(String)
  143. return true if val.downcase == "true"
  144. return false
  145. elsif val.is_a?(TrueClass) or val.is_a?(FalseClass)
  146. return val
  147. else
  148. fail 'Must be String or Boolean'
  149. end
  150. end
  151. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement