Project

General

Profile

Download (2.79 KB) Statistics
| Branch: | Tag: | Revision:
module Dashboard
module Manager
class << self
def default_widgets
Foreman::Plugin.all.inject(builtin_widgets) { |widgets, plugin| widgets + plugin.dashboard_widgets }
end

def add_widget_to_user(user, widget_params)
raise ::Foreman::Exception.new(N_("Unallowed template for dashboard widget: %s"), widget_params[:template]) unless template_allowed?(widget_params[:template])

widget = user.widgets.build(widget_params.except(:name, :template, :settings))
widget.name = widget_params[:name]
widget.template = widget_params[:template]
widget.data = { :settings => widget_params[:settings] } if widget_params[:settings]
widget.save!
widget
end

def reset_user_to_default(user)
user.widgets.clear
default_widgets.each do |widget|
add_widget_to_user(user, widget)
end
end

def find_default_widget_by_name(name)
default_widgets.select { |widget| widget[:name] == name }
end

private

def builtin_widgets
[
(registered_report_orgins + ['All']).sort.flat_map do |origin|
[
{
template: 'status_widget',
sizex: 8,
sizey: 1,
name: N_('Host Configuration Status for %s') % origin,
settings: {
origin: origin,
class_name: 'host-configuration-status'
}
},
{
template: 'status_chart_widget',
sizex: 4,
sizey: 1,
name: N_('Host Configuration Chart for %s') % origin,
settings: {
origin: origin,
class_name: 'host-configuration-chart'
}
}
]
end,
registered_report_orgins.flat_map do |origin|
{
template: 'distribution_widget',
sizex: 6,
sizey: 1,
name: N_('Run Distribution Chart for %s') % origin,
settings: {
origin: origin,
class_name: 'run-distribution-chart'
}
}
end,
{template: 'reports_widget', sizex: 6, sizey: 1, name: N_('Latest Events')},
{template: 'new_hosts_widget', sizex: 8, sizey: 1, name: N_('New Hosts')},
{template: 'hosts_in_build_mode_widget', sizex: 8, sizey: 1, name: N_('Hosts in build mode')}
].flatten.sort_by {|widget| widget['name'] }
end

def registered_report_orgins
Foreman::Plugin.report_origin_registry.origins_for('ConfigReport')
end

def template_allowed?(template)
default_widgets.any? { |widget| widget[:template] == template }
end
end
end
end
(2-2/2)