From edc0c6539c9f72f03588a71f7645d2f7cd4b61a8 Mon Sep 17 00:00:00 2001 From: George Drummond Date: Mon, 11 Feb 2019 14:08:56 -0500 Subject: [PATCH] Blank slate for no portfolios --- atst/routes/portfolios/index.py | 6 +++- styles/core/_util.scss | 4 +++ templates/portfolios/blank_slate.html | 28 ++++++++++++++++++ .../portfolios/test_portfolios_index.py | 29 ++++++++++++++++++- translations.yaml | 7 ++++- 5 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 templates/portfolios/blank_slate.html diff --git a/atst/routes/portfolios/index.py b/atst/routes/portfolios/index.py index 1d7739e7..2f1a6b12 100644 --- a/atst/routes/portfolios/index.py +++ b/atst/routes/portfolios/index.py @@ -15,7 +15,11 @@ from atst.models.permissions import Permissions @portfolios_bp.route("/portfolios") def portfolios(): portfolios = Portfolios.for_user(g.current_user) - return render_template("portfolios/index.html", page=5, portfolios=portfolios) + + if portfolios: + return render_template("portfolios/index.html", page=5, portfolios=portfolios) + else: + return render_template("portfolios/blank_slate.html") @portfolios_bp.route("/portfolios//edit") diff --git a/styles/core/_util.scss b/styles/core/_util.scss index f4b147a7..cf87f511 100644 --- a/styles/core/_util.scss +++ b/styles/core/_util.scss @@ -2,6 +2,10 @@ white-space: nowrap; } +.center { + text-align: center; +} + @mixin hide { border: 0; clip: rect(0 0 0 0); diff --git a/templates/portfolios/blank_slate.html b/templates/portfolios/blank_slate.html new file mode 100644 index 00000000..9131f8a0 --- /dev/null +++ b/templates/portfolios/blank_slate.html @@ -0,0 +1,28 @@ +{% extends "base.html" %} + +{% from "components/empty_state.html" import EmptyState %} +{% from "components/tooltip.html" import Tooltip %} + +{% block global_sidenav %} +{% endblock %} + +{% block content %} + {{ + EmptyState( + action_href=url_for("task_orders.new", screen=1), + action_label=("portfolios.index.empty.start_button" | translate), + icon="cloud", + message=("portfolios.index.empty.title" | translate), + ) + }} + +
+ {{ + Tooltip( + message=("portfolios.index.empty.help_message" | translate), + title=("portfolios.index.empty.help_title" | translate), + ) + }} +
+{% endblock %} + diff --git a/tests/routes/portfolios/test_portfolios_index.py b/tests/routes/portfolios/test_portfolios_index.py index 50f1bbea..5899f307 100644 --- a/tests/routes/portfolios/test_portfolios_index.py +++ b/tests/routes/portfolios/test_portfolios_index.py @@ -1,6 +1,7 @@ from flask import url_for -from tests.factories import PortfolioFactory +from tests.factories import PortfolioFactory, UserFactory +from atst.utils.localization import translate def test_update_portfolio_name(client, user_session): @@ -13,3 +14,29 @@ def test_update_portfolio_name(client, user_session): ) assert response.status_code == 200 assert portfolio.name == "a cool new name" + + +def test_portfolio_index_with_existing_portfolios(client, user_session): + portfolio = PortfolioFactory.create() + user_session(portfolio.owner) + + response = client.get(url_for("portfolios.portfolios")) + + assert response.status_code == 200 + assert portfolio.name.encode("utf8") in response.data + assert ( + translate("portfolios.index.empty.start_button").encode("utf8") + not in response.data + ) + + +def test_portfolio_index_without_existing_portfolios(client, user_session): + user = UserFactory.create() + user_session(user) + + response = client.get(url_for("portfolios.portfolios")) + + assert response.status_code == 200 + assert ( + translate("portfolios.index.empty.start_button").encode("utf8") in response.data + ) diff --git a/translations.yaml b/translations.yaml index 256d78fd..3b3342af 100644 --- a/translations.yaml +++ b/translations.yaml @@ -7,7 +7,6 @@ # `{{ "login.title" | translate | safe }}` - audit_log: events: default: @@ -481,6 +480,12 @@ task_orders: submitted_by: Below is an overview of the projected portfolio submitted by {name} task_order_information: Task Order Information portfolios: + index: + empty: + title: You have no apps yet + help_title: Should I do this? + help_message: TODO + start_button: Start a New JEDI Portfolio applications: add_application_text: Add A New Application app_settings_text: App Settings