Fixes #224
Resource cards show the request status: * Green solved by administrator. * Blue + button: Available * Blue + help text: Requested * Red: Locked A tooltip has been added to the card to improve its readability.
This commit is contained in:
@@ -264,7 +264,6 @@
|
|||||||
min-height: 200pt;
|
min-height: 200pt;
|
||||||
|
|
||||||
.bottom-container {
|
.bottom-container {
|
||||||
position: relative;
|
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
|
||||||
@@ -276,32 +275,40 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.resource-card.success {
|
.resource-card {
|
||||||
background-color: #c5f6eb;
|
|
||||||
|
|
||||||
i {
|
i {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 20pt;
|
width: 20pt;
|
||||||
height: 20pt;
|
height: 20pt;
|
||||||
color: #00cf96;
|
|
||||||
border-radius: 10pt;
|
border-radius: 10pt;
|
||||||
border: 1pt solid #00cf96;
|
|
||||||
padding-right: 4pt;
|
padding-right: 4pt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.resource-card.primary {
|
||||||
|
background-color: #d3edf6;
|
||||||
|
|
||||||
|
i {
|
||||||
|
color: #116f8e;
|
||||||
|
border: 1pt solid #116f8e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.resource-card.success {
|
||||||
|
background-color: #c5f6eb;
|
||||||
|
|
||||||
|
i {
|
||||||
|
color: #00cf96;
|
||||||
|
border: 1pt solid #00cf96;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.resource-card.alert {
|
.resource-card.alert {
|
||||||
background-color: #ffe5e8;
|
background-color: #ffe5e8;
|
||||||
|
|
||||||
i {
|
i {
|
||||||
display: inline-block;
|
|
||||||
width: 20pt;
|
|
||||||
height: 20pt;
|
|
||||||
color: #ff828b;
|
color: #ff828b;
|
||||||
border-radius: 10pt;
|
|
||||||
border: 1pt solid #ff828b;
|
border: 1pt solid #ff828b;
|
||||||
padding-right: 4pt;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ class ProposalsDashboardController < Dashboard::BaseController
|
|||||||
if @proposal_executed_dashboard_action.save
|
if @proposal_executed_dashboard_action.save
|
||||||
AdministratorTask.create(source: @proposal_executed_dashboard_action)
|
AdministratorTask.create(source: @proposal_executed_dashboard_action)
|
||||||
|
|
||||||
redirect_to proposal_dashboard_index_path(proposal.to_param), { flash: { info: t('.success') } }
|
redirect_to progress_proposal_dashboard_index_path(proposal.to_param), { flash: { info: t('.success') } }
|
||||||
else
|
else
|
||||||
|
flash.now[:alert] = @proposal_executed_dashboard_action.errors.full_messages.join('<br>')
|
||||||
render :new_request
|
render :new_request
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -90,4 +90,17 @@ module ProposalsDashboardHelper
|
|||||||
return nil if params[:group_by] == 'month'
|
return nil if params[:group_by] == 'month'
|
||||||
'hollow'
|
'hollow'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def resource_card_class(resource, proposal)
|
||||||
|
return 'alert' unless resource.active_for?(proposal)
|
||||||
|
return 'success' if resource.executed_for?(proposal)
|
||||||
|
'primary'
|
||||||
|
end
|
||||||
|
|
||||||
|
def resource_tooltip(resource, proposal)
|
||||||
|
return t('proposals_dashboard.resource.resource_locked') unless resource.active_for?(proposal)
|
||||||
|
return t('proposals_dashboard.resource.view_resource') if resource.executed_for?(proposal)
|
||||||
|
return t('proposals_dashboard.resource.resource_requested') if resource.requested_for?(proposal)
|
||||||
|
t('proposals_dashboard.resource.request_resource')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -60,6 +60,20 @@ class ProposalDashboardAction < ActiveRecord::Base
|
|||||||
required_supports <= proposal.votes_for.size && day_offset <= (Date.today - published_at).to_i
|
required_supports <= proposal.votes_for.size && day_offset <= (Date.today - published_at).to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def requested_for?(proposal)
|
||||||
|
executed_action = proposal_executed_dashboard_actions.find_by(proposal: proposal)
|
||||||
|
return false if executed_action.nil?
|
||||||
|
|
||||||
|
executed_action.administrator_tasks.any?
|
||||||
|
end
|
||||||
|
|
||||||
|
def executed_for?(proposal)
|
||||||
|
executed_action = proposal_executed_dashboard_actions.find_by(proposal: proposal)
|
||||||
|
return false if executed_action.nil?
|
||||||
|
|
||||||
|
executed_action.administrator_tasks.where.not(executed_at: nil).any?
|
||||||
|
end
|
||||||
|
|
||||||
def self.next_goal_for(proposal)
|
def self.next_goal_for(proposal)
|
||||||
course_for(proposal).first
|
course_for(proposal).first
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<% if proposal_dashboard_action.request_to_administrators %>
|
<% if proposal_dashboard_action.request_to_administrators && !proposal_dashboard_action.requested_for?(proposal) %>
|
||||||
<%= form_for @proposal_executed_dashboard_action,
|
<%= form_for @proposal_executed_dashboard_action,
|
||||||
url: create_request_proposal_dashboard_url(proposal, proposal_dashboard_action) do |f| %>
|
url: create_request_proposal_dashboard_url(proposal, proposal_dashboard_action) do |f| %>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
<% if can?(:manage_polls, proposal) %>
|
<% if can?(:manage_polls, proposal) %>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="card resource-card success">
|
<div class="card resource-card primary"
|
||||||
|
data-tooltip title="<%= t('proposals_dashboard.resource.request_resource') %>"
|
||||||
|
data-position="bottom" data-alignment="right">
|
||||||
<div class="card-section">
|
<div class="card-section">
|
||||||
<p class="text-right">
|
<p class="text-right">
|
||||||
<i class="fi-check"></i>
|
<i class="fi-pencil"></i>
|
||||||
</p>
|
</p>
|
||||||
<h4 class="text-center"><%= t('proposals_dashboard.menu.polls') %></h4>
|
<h4 class="text-center"><%= t('proposals_dashboard.menu.polls') %></h4>
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
@@ -13,7 +15,7 @@
|
|||||||
|
|
||||||
<div class="card-section text-center bottom-container">
|
<div class="card-section text-center bottom-container">
|
||||||
<div class="bottom-element text-center">
|
<div class="bottom-element text-center">
|
||||||
<%= link_to t('proposals_dashboard.resource.view_resource'), proposal_dashboard_polls_path(proposal.to_param), class: 'button success' %>
|
<%= link_to t('proposals_dashboard.resource.request_resource'), proposal_dashboard_polls_path(proposal.to_param), class: 'button primary' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
<div class="column" id="<%= dom_id(resource) %>">
|
<div class="column" id="<%= dom_id(resource) %>">
|
||||||
<div class="card resource-card <%= resource.active_for?(proposal) ? 'success' : 'alert' %>">
|
<div class="card resource-card <%= resource_card_class(resource, proposal) %>"
|
||||||
|
data-tooltip title="<%= resource_tooltip(resource, proposal) %>"
|
||||||
|
data-position="bottom" data-alignment="right">
|
||||||
<div class="card-section">
|
<div class="card-section">
|
||||||
<p class="text-right">
|
<p class="text-right">
|
||||||
<% if resource.active_for?(proposal) %>
|
<% if resource.executed_for?(proposal) %>
|
||||||
<i class="fi-check"></i>
|
<i class="fi-check"></i>
|
||||||
|
<% elsif resource.active_for?(proposal) %>
|
||||||
|
<i class="fi-pencil"></i>
|
||||||
<% else %>
|
<% else %>
|
||||||
<i class="fi-lock"></i>
|
<i class="fi-lock"></i>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -15,10 +19,16 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-section text-center bottom-container">
|
<div class="card-section text-center bottom-container">
|
||||||
<% if resource.active_for?(proposal) %>
|
<% if resource.executed_for?(proposal) %>
|
||||||
<div class="bottom-element text-center">
|
<div class="bottom-element text-center">
|
||||||
<%= link_to t('.view_resource'), new_request_proposal_dashboard_path(proposal, resource), class: 'button success' %>
|
<%= link_to t('.view_resource'), new_request_proposal_dashboard_path(proposal, resource), class: 'button success' %>
|
||||||
</div>
|
</div>
|
||||||
|
<% elsif resource.requested_for?(proposal) %>
|
||||||
|
<strong><%= t('.resource_requested') %></strong>
|
||||||
|
<% elsif resource.active_for?(proposal) %>
|
||||||
|
<div class="bottom-element text-center">
|
||||||
|
<%= link_to t('.request_resource'), new_request_proposal_dashboard_path(proposal, resource), class: 'button primary' %>
|
||||||
|
</div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<strong>
|
<strong>
|
||||||
<%== resoure_availability_label(resource) %>
|
<%== resoure_availability_label(resource) %>
|
||||||
|
|||||||
@@ -536,6 +536,9 @@ en:
|
|||||||
required_supports: "%{supports} supports required"
|
required_supports: "%{supports} supports required"
|
||||||
and: and
|
and: and
|
||||||
view_resource: See resource
|
view_resource: See resource
|
||||||
|
resource_requested: Resource already requested
|
||||||
|
request_resource: Request resource
|
||||||
|
resource_locked: Resource locked
|
||||||
recommended_actions:
|
recommended_actions:
|
||||||
title: Recommended actions
|
title: Recommended actions
|
||||||
next_goal:
|
next_goal:
|
||||||
|
|||||||
@@ -536,6 +536,9 @@ es:
|
|||||||
required_supports: "%{supports} apoyos necesarios"
|
required_supports: "%{supports} apoyos necesarios"
|
||||||
and: y
|
and: y
|
||||||
view_resource: Ver recurso
|
view_resource: Ver recurso
|
||||||
|
resource_requested: Recurso solicitado
|
||||||
|
request_resource: Solicitar recurso
|
||||||
|
resource_locked: Recurso bloqueado
|
||||||
recommended_actions:
|
recommended_actions:
|
||||||
title: Acciones recomendadas
|
title: Acciones recomendadas
|
||||||
next_goal:
|
next_goal:
|
||||||
|
|||||||
Reference in New Issue
Block a user