Show pending task orders at top of funding page

This commit is contained in:
Patrick Smith 2019-01-15 13:32:05 -05:00
parent 176a87faae
commit f6037aa8af
3 changed files with 98 additions and 19 deletions

View File

@ -1,14 +1,25 @@
from collections import defaultdict
from flask import g, render_template from flask import g, render_template
from . import portfolios_bp from . import portfolios_bp
from atst.domain.task_orders import TaskOrders from atst.domain.task_orders import TaskOrders
from atst.domain.portfolios import Portfolios from atst.domain.portfolios import Portfolios
from atst.models.task_order import Status as TaskOrderStatus
@portfolios_bp.route("/portfolios/<portfolio_id>/task_orders") @portfolios_bp.route("/portfolios/<portfolio_id>/task_orders")
def portfolio_task_orders(portfolio_id): def portfolio_task_orders(portfolio_id):
portfolio = Portfolios.get(g.current_user, portfolio_id) portfolio = Portfolios.get(g.current_user, portfolio_id)
return render_template("portfolios/task_orders/index.html", portfolio=portfolio) task_orders_by_status = defaultdict(list)
for task_order in portfolio.task_orders:
task_orders_by_status[task_order.status].append(task_order)
return render_template(
"portfolios/task_orders/index.html",
portfolio=portfolio,
pending_task_orders=task_orders_by_status.get(TaskOrderStatus.PENDING, []),
)
@portfolios_bp.route("/portfolios/<portfolio_id>/task_order/<task_order_id>") @portfolios_bp.route("/portfolios/<portfolio_id>/task_order/<task_order_id>")

View File

@ -29,3 +29,37 @@
} }
} }
} }
.portfolio-funding {
.pending-task-order {
background-color: $color-gold-lightest;
align-items: center;
margin: 0;
padding: 2 * $gap;
dt {
font-weight: bold;
}
dd {
margin-left: 0;
}
.label {
margin-right: 2 * $gap;
}
.pending-task-order__started {
flex-grow: 1;
}
.pending-task-order__value {
text-align: right;
}
}
.view-task-order-link {
margin-left: $gap * 2;
}
}

View File

@ -1,9 +1,42 @@
{% from "components/empty_state.html" import EmptyState %} {% from "components/empty_state.html" import EmptyState %}
{% from "components/icon.html" import Icon %}
{% extends "portfolios/base.html" %} {% extends "portfolios/base.html" %}
{% block portfolio_content %} {% block portfolio_content %}
{% macro ViewLink(task_order) %}
<a href="{{ url_for('portfolios.view_task_order', portfolio_id=portfolio.id, task_order_id=task_order.id) }}" class="icon-link view-task-order-link">
<span>View</span>
{{ Icon("caret_right") }}
</a>
{% endmacro %}
<div class="portfolio-funding">
{% for task_order in pending_task_orders %}
<div class='panel'>
<div class='panel__content pending-task-order row'>
<span class='label label--warning'>Pending</span>
<div class="pending-task-order__started col">
<dt>Started</dt>
<dd>
<local-datetime
timestamp="{{ task_order.time_created }}"
format="M/D/YYYY">
</local-datetime>
</dd>
</div>
<div class="pending-task-order__value col">
<dt>Value</dt>
<dd>{{ task_order.budget | dollars }}</dd>
</div>
{{ ViewLink(task_order) }}
</div>
</div>
{% endfor %}
{% if not portfolio.task_orders %} {% if not portfolio.task_orders %}
{{ EmptyState( {{ EmptyState(
@ -26,5 +59,6 @@
</ul> </ul>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}