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:
Juan Salvador Pérez García
2018-07-16 11:09:07 +02:00
parent 3ca90634d3
commit 7a9faef775
9 changed files with 73 additions and 20 deletions

View File

@@ -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;
} }
} }

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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">

View File

@@ -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>

View File

@@ -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) %>

View File

@@ -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:

View File

@@ -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: