Project

General

Profile

Download (1.78 KB) Statistics
| Branch: | Tag: | Revision:
class DashboardController < ApplicationController
include Foreman::Controller::AutoCompleteSearch
before_filter :prefetch_data, :only => :index
before_filter :find_resource, :only => [:destroy]

def index
respond_to do |format|
format.html
format.yaml { render :text => @report.to_yaml }
format.json
end
end

def create
widget = Dashboard::Manager.find_default_widget_by_name(params[:name])
(not_found and return) unless widget.present?
Dashboard::Manager.add_widget_to_user(User.current, widget.first)
render :json => { :name => params[:name] }, :status => :ok
end

def destroy
if @widget.present? && @widget.user == User.current
User.current.widgets.destroy(@widget)
status = :ok
else
status = :forbidden
logger.warn "#{User.current} attempted to remove widget id #{params[:id]} and failed."
end
respond_to do |format|
format.json {render :json => params[:id], :status => status}
end
end

def reset_default
Dashboard::Manager.reset_user_to_default(User.current)
redirect_to root_path
end

def save_positions
errors = []
params[:widgets].each do |id, values|
widget = User.current.widgets.where("id = #{id}").first
errors << widget.errors unless widget.update_attributes(values)
end
respond_to do |format|
if errors.empty?
format.json { render :json => {}, :status => :ok }
else
format.json { render :json => errors, :status => :bad_request }
end
end
rescue => exception
process_ajax_error exception, 'save positions'
end

private

def prefetch_data
dashboard = Dashboard::Data.new(params[:search])
@hosts = dashboard.hosts
@report = dashboard.report
end

def resource_name
"widget"
end
end
(14-14/52)