mno-enterprise-api 3.3.1 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/mno_enterprise/config.js.coffee.erb +1 -0
- data/app/controllers/mno_enterprise/impersonate_controller.rb +5 -1
- data/app/controllers/mno_enterprise/jpi/v1/admin/impac/dashboard_templates_controller.rb +93 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/impac/kpis_controller.rb +71 -0
- data/app/controllers/mno_enterprise/jpi/v1/admin/impac/widgets_controller.rb +70 -0
- data/app/controllers/mno_enterprise/jpi/v1/impac/dashboard_templates_controller.rb +5 -0
- data/app/views/mno_enterprise/auth/confirmations/_form.html.haml +10 -1
- data/app/views/mno_enterprise/jpi/v1/admin/base_resource/_member.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/dashboard_templates/_template.json.jbuilder +16 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/dashboard_templates/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/dashboard_templates/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/kpis/_kpi.json.jbuilder +2 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/kpis/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/widgets/_widget.json.jbuilder +7 -0
- data/app/views/mno_enterprise/jpi/v1/admin/impac/widgets/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/app_feedbacks/_resource.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/app_questions/_resource.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/current_users/show.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/impac/dashboard_templates/index.json.jbuilder +1 -0
- data/app/views/mno_enterprise/jpi/v1/impac/kpis/_kpi.json.jbuilder +1 -1
- data/app/views/mno_enterprise/pages/loading.html.erb +1 -1
- data/config/routes.rb +12 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/dashboard_templates_controller.rb +20 -0
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/dashboards_controller.rb +25 -2
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/kpis_controller.rb +13 -11
- data/lib/mno_enterprise/concerns/controllers/jpi/v1/marketplace_controller.rb +1 -1
- data/lib/mno_enterprise/concerns/controllers/pages_controller.rb +3 -1
- data/spec/controllers/mno_enterprise/impersonate_controller_spec.rb +11 -2
- data/spec/controllers/mno_enterprise/jpi/v1/admin/impac/dashboard_templates_controller_spec.rb +225 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/impac/kpis_controller_spec.rb +134 -0
- data/spec/controllers/mno_enterprise/jpi/v1/admin/impac/widgets_controller_spec.rb +150 -0
- data/spec/controllers/mno_enterprise/jpi/v1/app_feedbacks_controller_spec.rb +2 -1
- data/spec/controllers/mno_enterprise/jpi/v1/app_questions_controller_spec.rb +2 -1
- data/spec/controllers/mno_enterprise/jpi/v1/impac/dashboard_templates_controller_spec.rb +97 -0
- data/spec/controllers/mno_enterprise/jpi/v1/impac/dashboards_controller_spec.rb +223 -0
- data/spec/controllers/mno_enterprise/jpi/v1/marketplace_controller_spec.rb +31 -1
- data/spec/controllers/mno_enterprise/pages_controller_spec.rb +13 -2
- data/spec/routing/mno_enterprise/jpi/v1/admin/impac/dashboard_templates_controller_routing_spec.rb +28 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/impac/kpis_controller_routing_spec.rb +20 -0
- data/spec/routing/mno_enterprise/jpi/v1/admin/impac/widgets_controller_routing_spec.rb +20 -0
- data/spec/routing/mno_enterprise/jpi/v1/impac/dashboard_templates_controller_routing_spec.rb +11 -0
- metadata +35 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 846a1b37e09b4377d95942c2a767e6940b6accf9
|
4
|
+
data.tar.gz: 523280be7a240646691ccacb1b9da059154ac75c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f52fd948f00c51ea0d3b450864ee3ca443fc3f57f82c45b93994b5be7a1ee9e91fdfc0e91c93aa589225f156a26bb28b3037707f10a279a4a8db79b273cabd7
|
7
|
+
data.tar.gz: 57243387693928174a98c694054fbfdbd4e788101656800674a4297b4556c3a9cfd4ede660bd0d5323c65b0b0968cefb95d68f5ec338392dea89cde4b4f1c8e0
|
@@ -24,3 +24,4 @@ angular.module('mnoEnterprise.configuration', [])
|
|
24
24
|
.constant('INTERCOM_ID', <%= MnoEnterprise.intercom_app_id.to_json %>)
|
25
25
|
.constant('APP_NAME', <%= MnoEnterprise.app_name.to_json %>)
|
26
26
|
.constant('URL_CONFIG', <%= Hash(Settings.url_config).to_json %>)
|
27
|
+
.constant('DEVISE_CONFIG', <%= Hash(Settings.devise).to_json %>)
|
@@ -11,7 +11,11 @@ module MnoEnterprise
|
|
11
11
|
session[:impersonator_redirect_path] = params[:redirect_path].presence
|
12
12
|
@user = MnoEnterprise::User.find(params[:user_id])
|
13
13
|
if @user.present?
|
14
|
-
|
14
|
+
if @user.admin_role.present?
|
15
|
+
flash[:notice] = 'User is a staff member'
|
16
|
+
else
|
17
|
+
impersonate(@user)
|
18
|
+
end
|
15
19
|
else
|
16
20
|
flash[:notice] = "User doesn't exist"
|
17
21
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
class Jpi::V1::Admin::Impac::DashboardTemplatesController < Jpi::V1::Admin::BaseResourceController
|
3
|
+
|
4
|
+
#==================================================================
|
5
|
+
# Instance methods
|
6
|
+
#==================================================================
|
7
|
+
# GET /mnoe/jpi/v1/admin/impac/dashboard_templates
|
8
|
+
def index
|
9
|
+
if params[:terms]
|
10
|
+
# For search mode
|
11
|
+
@dashboard_templates = []
|
12
|
+
JSON.parse(params[:terms]).map { |t| @dashboard_templates = @dashboard_templates | dashboard_templates.where(Hash[*t]) }
|
13
|
+
response.headers['X-Total-Count'] = @dashboards_templates.count
|
14
|
+
else
|
15
|
+
@dashboard_templates = dashboard_templates
|
16
|
+
@dashboard_templates = @dashboard_templates.limit(params[:limit]) if params[:limit]
|
17
|
+
@dashboard_templates = @dashboard_templates.skip(params[:offset]) if params[:offset]
|
18
|
+
@dashboard_templates = @dashboard_templates.order_by(params[:order_by]) if params[:order_by]
|
19
|
+
@dashboard_templates = @dashboard_templates.where(params[:where]) if params[:where]
|
20
|
+
@dashboard_templates = @dashboard_templates.all.fetch
|
21
|
+
response.headers['X-Total-Count'] = @dashboard_templates.metadata[:pagination][:count]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET /mnoe/jpi/v1/admin/impac/dashboard_templates/1
|
26
|
+
def show
|
27
|
+
render json: { errors: { message: 'Dashboard template not found' } }, status: :not_found unless dashboard_template.present?
|
28
|
+
end
|
29
|
+
|
30
|
+
# POST /mnoe/jpi/v1/admin/impac/dashboard_templates
|
31
|
+
def create
|
32
|
+
@dashboard_template = MnoEnterprise::Impac::Dashboard.new(dashboard_template_params.merge(dashboard_type: 'template'))
|
33
|
+
|
34
|
+
# Abort on failure
|
35
|
+
unless @dashboard_template.save
|
36
|
+
return render json: { errors: dashboard_template.errors }, status: :bad_request
|
37
|
+
end
|
38
|
+
|
39
|
+
MnoEnterprise::EventLogger.info('dashboard_template_create', current_user.id, 'Dashboard Template Creation', dashboard_template)
|
40
|
+
render 'show'
|
41
|
+
end
|
42
|
+
|
43
|
+
# PATCH/PUT /mnoe/jpi/v1/admin/impac/dashboard_templates/1
|
44
|
+
def update
|
45
|
+
return render json: { errors: { message: 'Dashboard template not found' } }, status: :not_found unless dashboard_template
|
46
|
+
|
47
|
+
# Abort on failure
|
48
|
+
unless dashboard_template.update(dashboard_template_params)
|
49
|
+
return render json: { errors: dashboard_template.errors }, status: :bad_request
|
50
|
+
end
|
51
|
+
|
52
|
+
MnoEnterprise::EventLogger.info('dashboard_template_update', current_user.id, 'Dashboard Template Update', dashboard_template)
|
53
|
+
render 'show'
|
54
|
+
end
|
55
|
+
|
56
|
+
# DELETE /mnoe/jpi/v1/admin/impac/dashboard_templates/1
|
57
|
+
def destroy
|
58
|
+
return render json: { errors: { message: 'Dashboard template not found' } }, status: :not_found unless dashboard_template
|
59
|
+
|
60
|
+
# Abort on failure
|
61
|
+
unless dashboard_template.destroy
|
62
|
+
return render json: { errors: 'Cannot destroy dashboard template' }, status: :bad_request
|
63
|
+
end
|
64
|
+
|
65
|
+
MnoEnterprise::EventLogger.info('dashboard_template_delete', current_user.id, 'Dashboard Template Deletion', dashboard_template)
|
66
|
+
head status: :ok
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def dashboard_templates
|
72
|
+
@dashboard_templates ||= MnoEnterprise::Impac::Dashboard.templates
|
73
|
+
end
|
74
|
+
|
75
|
+
def dashboard_template
|
76
|
+
@dashboard_template ||= dashboard_templates.find(params[:id].to_i)
|
77
|
+
end
|
78
|
+
|
79
|
+
def whitelisted_params
|
80
|
+
[:name, :currency, { widgets_order: [] }, { organization_ids: [] }, :published]
|
81
|
+
end
|
82
|
+
|
83
|
+
# Allows all metadata attrs to be permitted, and maps it to :settings
|
84
|
+
# for the Her "meta_data" issue.
|
85
|
+
def dashboard_template_params
|
86
|
+
params.require(:dashboard).permit(*whitelisted_params).tap do |whitelisted|
|
87
|
+
whitelisted[:settings] = params[:dashboard][:metadata] || {}
|
88
|
+
end
|
89
|
+
.except(:metadata)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
# From the Admin panel, an admin can create/update/delete kpis to/from a dashboard template
|
3
|
+
class Jpi::V1::Admin::Impac::KpisController < Jpi::V1::Admin::BaseResourceController
|
4
|
+
before_filter :find_valid_kpi, only: [:update, :delete]
|
5
|
+
|
6
|
+
# POST /mnoe/jpi/v1/admin/impac/dashboard_templates/:id/kpis
|
7
|
+
def create
|
8
|
+
return render json: { errors: { message: 'Dashboard template not found' } }, status: :not_found unless template.present?
|
9
|
+
|
10
|
+
@kpi = template.kpis.create(kpi_create_params)
|
11
|
+
return render json: { errors: (@kpi && @kpi.errors).to_a }, status: :bad_request unless @kpi.present? && @kpi.valid?
|
12
|
+
|
13
|
+
MnoEnterprise::EventLogger.info('kpi_create', current_user.id, 'Template KPI Creation', @kpi)
|
14
|
+
@no_content = true
|
15
|
+
render 'show'
|
16
|
+
end
|
17
|
+
|
18
|
+
# PUT /mnoe/jpi/v1/admin/impac/kpis/:id
|
19
|
+
def update
|
20
|
+
unless kpi.present? && kpi.update(kpi_update_params)
|
21
|
+
return render json: { errors: 'Cannot update kpi' }, status: :bad_request
|
22
|
+
end
|
23
|
+
|
24
|
+
MnoEnterprise::EventLogger.info('kpi_update', current_user.id, 'Template KPI Update', kpi)
|
25
|
+
@nocontent = !params['metadata']
|
26
|
+
render 'show'
|
27
|
+
end
|
28
|
+
|
29
|
+
# DELETE /mnoe/jpi/v1/admin/impac/kpis/:id
|
30
|
+
def destroy
|
31
|
+
unless kpi.present? && kpi.destroy
|
32
|
+
return render json: { errors: 'Cannot delete kpi' }, status: :bad_request
|
33
|
+
end
|
34
|
+
|
35
|
+
MnoEnterprise::EventLogger.info('kpi_delete', current_user.id, 'Template KPI Deletion', kpi)
|
36
|
+
head status: :ok
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def template
|
42
|
+
MnoEnterprise::Impac::Dashboard.templates.find(params[:dashboard_template_id].to_i)
|
43
|
+
end
|
44
|
+
|
45
|
+
def kpi
|
46
|
+
@kpi ||= MnoEnterprise::Impac::Kpi.find(params[:id].to_i)
|
47
|
+
end
|
48
|
+
|
49
|
+
def kpi_create_params
|
50
|
+
whitelist = [:dashboard_id, :widget_id, :endpoint, :source, :element_watched, { extra_watchables: [] }]
|
51
|
+
extract_params(whitelist)
|
52
|
+
end
|
53
|
+
|
54
|
+
def kpi_update_params
|
55
|
+
whitelist = [:element_watched, {extra_watchables: []}]
|
56
|
+
extract_params(whitelist)
|
57
|
+
end
|
58
|
+
|
59
|
+
def extract_params(whitelist)
|
60
|
+
(p = params).require(:kpi).permit(*whitelist).tap do |whitelisted|
|
61
|
+
whitelisted[:settings] = p[:kpi][:metadata] || {}
|
62
|
+
# TODO: strong params for targets & extra_params attributes (keys will depend on the kpi).
|
63
|
+
whitelisted[:targets] = p[:kpi][:targets] if p[:kpi][:targets].present?
|
64
|
+
whitelisted[:extra_params] = p[:kpi][:extra_params] if p[:kpi][:extra_params].present?
|
65
|
+
end
|
66
|
+
.except(:metadata)
|
67
|
+
end
|
68
|
+
|
69
|
+
alias :find_valid_kpi :kpi
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module MnoEnterprise
|
2
|
+
# From the Admin panel, an admin can:
|
3
|
+
# - add widgets to template dashboards (passing the dashboard template id)
|
4
|
+
# - update any widget (passing its id)
|
5
|
+
# - delete any widget (passing its id)
|
6
|
+
class Jpi::V1::Admin::Impac::WidgetsController < Jpi::V1::Admin::BaseResourceController
|
7
|
+
|
8
|
+
# POST /mnoe/jpi/v1/admin/impac/dashboard_templates/:id/widgets
|
9
|
+
def create
|
10
|
+
return render json: { errors: { message: 'Dashboard template not found' } }, status: :not_found unless template.present?
|
11
|
+
|
12
|
+
@widget = template.widgets.create(widget_create_params)
|
13
|
+
return render json: { errors: (widget && widget.errors).to_a }, status: :bad_request unless widget.present? && widget.valid?
|
14
|
+
|
15
|
+
MnoEnterprise::EventLogger.info('widget_create', current_user.id, 'Template Widget Creation', widget)
|
16
|
+
@no_content = true
|
17
|
+
render 'show'
|
18
|
+
end
|
19
|
+
|
20
|
+
# PUT /mnoe/jpi/v1/admin/impac/widgets/:id
|
21
|
+
def update
|
22
|
+
unless widget.present? && widget.update(widget_update_params)
|
23
|
+
return render json: { errors: 'Cannot update widget' }, status: :bad_request
|
24
|
+
end
|
25
|
+
|
26
|
+
MnoEnterprise::EventLogger.info('widget_update', current_user.id, 'Template Widget Update', widget)
|
27
|
+
@nocontent = !params['metadata']
|
28
|
+
render 'show'
|
29
|
+
end
|
30
|
+
|
31
|
+
# DELETE /mnoe/jpi/v1/admin/impac/widgets/:id
|
32
|
+
def destroy
|
33
|
+
unless widget.present? && widget.destroy
|
34
|
+
return render json: { errors: 'Cannot delete widget' }, status: :bad_request
|
35
|
+
end
|
36
|
+
|
37
|
+
MnoEnterprise::EventLogger.info('widget_delete', current_user.id, 'Template Widget Deletion', widget)
|
38
|
+
head status: :ok
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def template
|
44
|
+
MnoEnterprise::Impac::Dashboard.templates.find(params[:dashboard_template_id].to_i)
|
45
|
+
end
|
46
|
+
|
47
|
+
def widget
|
48
|
+
@widget ||= MnoEnterprise::Impac::Widget.find(params[:id].to_i)
|
49
|
+
end
|
50
|
+
|
51
|
+
def widget_create_params
|
52
|
+
params.require(:widget).permit(:endpoint, :name, :width).tap do |whitelisted|
|
53
|
+
whitelisted[:settings] = params[:widget][:metadata] || {}
|
54
|
+
# TODO: remove when all deployed versions of Impac! Angular will be above v1.5.0
|
55
|
+
# When this is done:
|
56
|
+
# - :widget_category can definitively be renamed to :endpoint in mnohub and mnoe
|
57
|
+
# - the widget templates can be completely removed from mnohub and mnoe
|
58
|
+
whitelisted[:widget_category] = params[:widget][:endpoint]
|
59
|
+
end
|
60
|
+
.except(:metadata)
|
61
|
+
end
|
62
|
+
|
63
|
+
def widget_update_params
|
64
|
+
params.require(:widget).permit(:name, :width).tap do |whitelisted|
|
65
|
+
whitelisted[:settings] = params[:widget][:metadata] || {}
|
66
|
+
end
|
67
|
+
.except(:metadata)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%div{ 'ng-init' => "user = { $pwdScore: {}, name: '#{resource.name}', surname: '#{resource.surname}', phone: '#{resource.phone}'
|
1
|
+
%div{ 'ng-init' => "user = { $pwdScore: {}, name: '#{resource.name}', surname: '#{resource.surname}', phone: '#{resource.phone}'}" }
|
2
2
|
|
3
3
|
= form_for(resource, as: resource_name, :url => mno_enterprise.user_confirmation_finalize_path, :html => { 'name' => 'loginForm', :class => 'autofill-detect text-center' }) do |f|
|
4
4
|
|
@@ -39,6 +39,15 @@
|
|
39
39
|
|
40
40
|
= f.hidden_field :confirmation_token, value: @confirmation_token
|
41
41
|
|
42
|
+
- unless @user[:meta_data][:tos_accepted_at]
|
43
|
+
%br
|
44
|
+
.row
|
45
|
+
.col-sm-12
|
46
|
+
.checkbox-section.text-center
|
47
|
+
= check_box_tag 'tos', 'accept', false, required: true, style: "margin-top: -3px;", 'ng-model' => 'acceptTos'
|
48
|
+
%label{for: 'tos'}= t('mno_enterprise.auth.registrations.new.user_accept')
|
49
|
+
= link_to t('mno_enterprise.auth.registrations.new.tos'), MnoEnterprise.router.terms_url, target: '_blank'
|
50
|
+
|
42
51
|
%br/
|
43
52
|
%div
|
44
53
|
%button{ :class => "btn btn-warning btn-login", :type => "submit", 'ng-click' => 'hasClicked = true', 'ng-disabled' => 'loginForm.$invalid', 'ng-hide' => 'hasClicked' }= t('mno_enterprise.auth.confirmations.show.confirm')
|
@@ -0,0 +1,16 @@
|
|
1
|
+
json.extract! template, :id, :name, :full_name, :currency
|
2
|
+
|
3
|
+
json.metadata template.settings
|
4
|
+
|
5
|
+
json.data_sources template.organizations(current_user.organizations).compact.map do |org|
|
6
|
+
json.id org.id
|
7
|
+
json.uid org.uid
|
8
|
+
json.label org.name
|
9
|
+
end
|
10
|
+
|
11
|
+
json.kpis template.kpis, partial: 'mno_enterprise/jpi/v1/admin/impac/kpis/kpi', as: :kpi
|
12
|
+
json.widgets template.widgets, partial: 'mno_enterprise/jpi/v1/admin/impac/widgets/widget', as: :widget
|
13
|
+
|
14
|
+
json.created_at template.created_at
|
15
|
+
json.updated_at template.updated_at
|
16
|
+
json.published template.published
|
@@ -0,0 +1 @@
|
|
1
|
+
json.array! @dashboard_templates, partial: 'template', as: :template
|
@@ -0,0 +1 @@
|
|
1
|
+
json.partial! 'template', template: @dashboard_template
|
@@ -0,0 +1 @@
|
|
1
|
+
json.partial! 'kpi', kpi: @kpi
|
@@ -0,0 +1 @@
|
|
1
|
+
json.partial! 'widget', widget: @widget
|
@@ -0,0 +1 @@
|
|
1
|
+
json.array! @templates, partial: 'mno_enterprise/jpi/v1/impac/dashboards/dashboard', as: :dashboard
|
@@ -1,4 +1,4 @@
|
|
1
1
|
json.ignore_nil!
|
2
2
|
json.extract! kpi, :id, :element_watched, :endpoint, :source, :targets, :settings, :extra_watchables, :extra_params
|
3
3
|
|
4
|
-
json.alerts kpi.alerts, partial: 'mno_enterprise/jpi/v1/impac/alerts/alert', as: :alert if kpi.alerts.any?
|
4
|
+
json.alerts kpi.alerts, partial: 'mno_enterprise/jpi/v1/impac/alerts/alert', as: :alert if kpi.alerts.to_a.any?
|
data/config/routes.rb
CHANGED
@@ -145,6 +145,8 @@ MnoEnterprise::Engine.routes.draw do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
namespace :impac do
|
148
|
+
post 'dashboards/:id/copy', to: 'dashboards#copy'
|
149
|
+
|
148
150
|
resources :dashboards, only: [:index, :show, :create, :update, :destroy] do
|
149
151
|
resources :widgets, shallow: true, only: [:create, :update, :destroy]
|
150
152
|
resources :kpis, shallow: true, only: [:show, :create, :update, :destroy] do
|
@@ -158,6 +160,8 @@ MnoEnterprise::Engine.routes.draw do
|
|
158
160
|
resources :organizations, only: [] do
|
159
161
|
resources :widgets, only: :index
|
160
162
|
end
|
163
|
+
|
164
|
+
resources :dashboard_templates, only: :index
|
161
165
|
end
|
162
166
|
|
163
167
|
|
@@ -211,6 +215,14 @@ MnoEnterprise::Engine.routes.draw do
|
|
211
215
|
post 'theme/save'
|
212
216
|
post 'theme/reset'
|
213
217
|
put 'theme/logo'
|
218
|
+
|
219
|
+
# Dashboard templates designer
|
220
|
+
namespace :impac do
|
221
|
+
resources :dashboard_templates, only: [:index, :show, :destroy, :update, :create] do
|
222
|
+
resources :widgets, shallow: true, only: [:create, :update, :destroy]
|
223
|
+
resources :kpis, shallow: true, only: [:create, :update, :destroy]
|
224
|
+
end
|
225
|
+
end
|
214
226
|
end
|
215
227
|
end
|
216
228
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module MnoEnterprise::Concerns::Controllers::Jpi::V1::Impac::DashboardTemplatesController
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
#==================================================================
|
5
|
+
# Included methods
|
6
|
+
#==================================================================
|
7
|
+
# 'included do' causes the included code to be evaluated in the
|
8
|
+
# context where it is included rather than being executed in the module's context
|
9
|
+
included do
|
10
|
+
respond_to :json
|
11
|
+
end
|
12
|
+
|
13
|
+
#==================================================================
|
14
|
+
# Instance methods
|
15
|
+
#==================================================================
|
16
|
+
# GET /mnoe/jpi/v1/impac/dashboard_templates
|
17
|
+
def index
|
18
|
+
@templates = MnoEnterprise::Impac::Dashboard.published_templates
|
19
|
+
end
|
20
|
+
end
|