Class: GraphStarter::AssetsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- GraphStarter::AssetsController
- Defined in:
- app/controllers/graph_starter/assets_controller.rb
Instance Method Summary collapse
- #apply_associations(scope, var = :asset) ⇒ Object
- #asset ⇒ Object
- #asset_set(var = :asset, limit = 30) ⇒ Object
- #asset_with_access_level ⇒ Object
- #associations ⇒ Object
- #create ⇒ Object
- #destroy ⇒ Object
- #edit ⇒ Object
- #home ⇒ Object
- #index ⇒ Object
- #model_class_scope(var = :asset) ⇒ Object
- #new ⇒ Object
- #rate ⇒ Object
- #require_model_class ⇒ Object
- #search ⇒ Object
- #show ⇒ Object
- #update ⇒ Object
Methods inherited from ApplicationController
Instance Method Details
#apply_associations(scope, var = :asset) ⇒ Object
177 178 179 180 181 182 183 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 177 def apply_associations(scope, var = :asset) if associations.present? scope.query_as(var).with(var).proxy_as(model_class, var).with_associations(*associations) else scope end end |
#asset ⇒ Object
146 147 148 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 146 def asset apply_associations(model_class_scope.as(:asset).where('asset.uuid = {id} OR asset.slug = {id}', id: params[:id])).to_a[0] end |
#asset_set(var = :asset, limit = 30) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 129 def asset_set(var = :asset, limit = 30) associations = [] associations << model_class.image_association associations += model_class.category_associations associations.compact! scope = model_class_scope(var) scope = scope.for_category(var, params[:category]) if params[:category].present? scope = yield scope if block_given? scope = scope.limit(limit) scope = apply_associations(scope, var) scope end |
#asset_with_access_level ⇒ Object
150 151 152 153 154 155 156 157 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 150 def asset_with_access_level scope = model_class_scope.where(uuid: params[:id]) if defined?(current_user) scope.pluck(:asset, :level) else scope.pluck(:asset, '"read"') end.to_a[0] end |
#associations ⇒ Object
167 168 169 170 171 172 173 174 175 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 167 def associations return @associations if @associations.present? @associations = [] @associations << model_class.image_association @associations += model_class.category_associations @associations.compact! @associations end |
#create ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 95 def create return if !require_model_class @asset = model_class.create(params[params[:model_slug].singularize]) if @asset.persisted? redirect_to action: :show, id: @asset.id else flash[:error] = @asset.errors..to_a.map {|pair| pair.join(' ') }.join(' / ') redirect_to :back end end |
#destroy ⇒ Object
108 109 110 111 112 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 108 def destroy asset.destroy redirect_to action: :index end |
#edit ⇒ Object
69 70 71 72 73 74 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 69 def edit @asset, @access_level = asset_with_access_level @title = @asset.title.to_s + ' - Edit' render file: 'public/404.html', status: :not_found, layout: false if !@asset end |
#home ⇒ Object
3 4 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 3 def home end |
#index ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 6 def index @all_assets = asset_set(:asset, nil) @assets = asset_set.to_a @title = model_class.name.tableize.humanize @category_images = Asset.where(id: @assets.map(&:categories).flatten.map(&:id)) .query_as(:asset) .match('(asset)-[:HAS_IMAGE]->(image:Image)') .pluck('asset.uuid', :image) @category_images = Hash[*@category_images.flatten] end |
#model_class_scope(var = :asset) ⇒ Object
159 160 161 162 163 164 165 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 159 def model_class_scope(var = :asset) @model_class_scope ||= if defined?(current_user) model_class.(current_user) else model_class.all(var) end end |
#new ⇒ Object
91 92 93 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 91 def new @asset = model_class.new end |
#rate ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 114 def rate if current_user = asset.(current_user) ||= Rating.create(from_node: current_user, to_node: asset) = params[:new_rating].to_i = nil if .zero? .update_attribute(:level, ) render json: else render json: {} end end |
#require_model_class ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 42 def require_model_class # For cases where the route picked up more than it should have and we try to constantize something wrong begin model_class rescue NameError render text: 'Not found', status: :not_found false end end |
#search ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 18 def search assets = asset_set { |scope| scope.for_query(params[:query]) } results_data = assets.map do |asset| description = model_class.search_properties.map do |property| "<b>#{property.to_s.humanize}:</b> #{asset.read_attribute(property)}" end.join("<br>") { title: asset.title, url: asset_path(id: asset, model_slug: asset.class.model_slug), description: description, image: asset.first_image_source_url }.reject {|_, v| v.nil? }.tap do |result| model_class.search_properties.each do |property| result[property] = asset.read_attribute(property) end end end # INCLUDE SEARCH QUERY PROPERTIES IN RESULT!!! render json: {results: results_data}.to_json end |
#show ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 53 def show return if !require_model_class @asset = asset @title = @asset.title if @asset View.record_view(@session_node, @asset, browser_string: request.env['HTTP_USER_AGENT'], ip_address: request.remote_ip) else render file: 'public/404.html', status: :not_found, layout: false end end |
#update ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'app/controllers/graph_starter/assets_controller.rb', line 76 def update @asset = asset @asset.update(params[params[:model_slug].singularize]) if params[:image].present? if @asset.class.has_image? @asset.image = Image.create(source: params[:image]) elsif @asset.class.has_images? @asset.images << Image.create(source: params[:image]) end end redirect_to action: :edit end |