From 4746ce938b1a0554500bdc5813fabc4d2e967b80 Mon Sep 17 00:00:00 2001 From: jiroghianni Date: Thu, 19 Oct 2023 18:36:53 +0200 Subject: [PATCH 1/9] [#1791] Starting design update of case detail status --- .../components/Dashboard/Dashboard.html | 4 +- .../components/templatetags/dashboard_tags.py | 23 ++---- .../components/templatetags/table_tags.py | 2 +- .../scss/components/Cases/Cases.scss | 5 +- .../scss/components/Dashboard/Dashboard.scss | 45 +++++++++--- .../scss/components/Status/_StatusList.scss | 72 +++++++++++++++---- src/open_inwoner/scss/views/App.scss | 2 + .../templates/pages/cases/status_inner.html | 38 ++++++---- .../templates/pages/cases/status_outer.html | 8 --- 9 files changed, 134 insertions(+), 65 deletions(-) diff --git a/src/open_inwoner/components/templates/components/Dashboard/Dashboard.html b/src/open_inwoner/components/templates/components/Dashboard/Dashboard.html index cfda1c7f3b..2e6c897efa 100644 --- a/src/open_inwoner/components/templates/components/Dashboard/Dashboard.html +++ b/src/open_inwoner/components/templates/components/Dashboard/Dashboard.html @@ -4,9 +4,7 @@ diff --git a/src/open_inwoner/components/templatetags/dashboard_tags.py b/src/open_inwoner/components/templatetags/dashboard_tags.py index 5544c7f5d7..b246867bf5 100644 --- a/src/open_inwoner/components/templatetags/dashboard_tags.py +++ b/src/open_inwoner/components/templatetags/dashboard_tags.py @@ -9,7 +9,7 @@ class Metric(TypedDict): - icon: str + # icon: str label: str value: Optional[str] @@ -27,7 +27,7 @@ def case_dashboard(case: dict, **kwargs) -> dict: {% case_dashboard case %} Variables: - + case: dict | The case to be able to build the dashboard, fetching the documents and statusses of the case. + + case: dict | The case to be able to build the dashboard, fetching the documents and statuses of the case. Extra context: + config: DashboardConfig | The configuration of the dashboard. @@ -35,24 +35,16 @@ def case_dashboard(case: dict, **kwargs) -> dict: config: DashboardConfig = { "metrics": [ { - "icon": "inventory_2", - "label": _("Aanvraag"), + "label": _("Zaaknummer:"), "value": case.get("identification"), }, { - "icon": "calendar_today", - "label": _("Datum"), + "label": _("Aanvraag ingediend op:"), "value": case.get("start_date"), }, { - "icon": "task_alt", - "label": _("Status"), - "value": case.get("current_status"), - }, - { - "icon": "description", - "label": _("Documenten"), - "value": len(case.get("documents")), + "label": _("Verwachte uitslag:"), + "value": case.get("end_date_legal"), }, ] } @@ -80,17 +72,14 @@ def contactmoment_dashboard(kcm: KCMDict, **kwargs) -> dict: config: DashboardConfig = { "metrics": [ { - "icon": "calendar_today", "label": _("Ontvangstdatum"), "value": kcm.get("registered_date"), }, { - "icon": "inventory_2", "label": _("Contactwijze"), "value": kcm.get("channel"), }, { - "icon": "task_alt", "label": _("Status"), "value": kcm.get("status"), }, diff --git a/src/open_inwoner/components/templatetags/table_tags.py b/src/open_inwoner/components/templatetags/table_tags.py index 1d8426765f..da43614f62 100644 --- a/src/open_inwoner/components/templatetags/table_tags.py +++ b/src/open_inwoner/components/templatetags/table_tags.py @@ -39,7 +39,7 @@ def case_table(case: dict, **kwargs) -> dict: {% case_table case %} Variables: - + case: dict | The case to be able to build the dashboard, fetching the documents and statusses of the case. + + case: dict | The case to be able to build the dashboard, fetching the documents and statuses of the case. Extra context: + table: TableConfig | The configuration of the table. diff --git a/src/open_inwoner/scss/components/Cases/Cases.scss b/src/open_inwoner/scss/components/Cases/Cases.scss index 9b87137998..613df2f912 100644 --- a/src/open_inwoner/scss/components/Cases/Cases.scss +++ b/src/open_inwoner/scss/components/Cases/Cases.scss @@ -12,6 +12,10 @@ cursor: pointer; } + &__detail { + box-sizing: border-box; + } + &__title_text { padding-top: var(--spacing-medium); padding-bottom: var(--spacing-extra-large); @@ -58,7 +62,6 @@ background-color: $color-danger; color: $color-danger-dark; padding: 0.4em; -} .icon--success { margin-right: 0.2em; diff --git a/src/open_inwoner/scss/components/Dashboard/Dashboard.scss b/src/open_inwoner/scss/components/Dashboard/Dashboard.scss index 4d495f9541..ead34f4832 100644 --- a/src/open_inwoner/scss/components/Dashboard/Dashboard.scss +++ b/src/open_inwoner/scss/components/Dashboard/Dashboard.scss @@ -1,28 +1,57 @@ .dashboard { + margin-bottom: var(--spacing-mega); + &__list { - display: grid; - grid-template-columns: 1fr 1fr; - gap: var(--spacing-large) var(--spacing-medium); - justify-content: space-between; + display: block; list-style: none; margin: 0; padding: 0; + border-bottom: var(--border-width-thin) solid var(--color-gray); - @media (min-width: 768px) { + @media (min-width: 900px) { display: flex; - gap: var(--spacing-medium); + gap: 0; + border-top: var(--border-width-thin) solid var(--color-gray); } } &__list-item { + padding: var(--spacing-large) 0; + color: var(--color-gray-dark); white-space: nowrap; - text-align: center; + border-top: var(--border-width-thin) solid var(--color-gray); + @media (min-width: 900px) { + border-top: none; + margin-left: var(--spacing-extra-large); + } - @media (min-width: 768px) { + &:first-child { + margin-left: 0; + } + + p::after { + color: var(--color-gray); + @media (min-width: 900px) { + content: '|'; + margin-left: var(--spacing-extra-large); + } + } + + &:last-child p::after { + @media (min-width: 900px) { + content: none; + } + } + + @media (min-width: 900px) { text-align: start; } } + &__item-label { + color: var(--color-gray-90); + } + .h4 { @media (min-width: 768px) { margin-top: var(--spacing-large); diff --git a/src/open_inwoner/scss/components/Status/_StatusList.scss b/src/open_inwoner/scss/components/Status/_StatusList.scss index 59804b3356..c32180d34c 100644 --- a/src/open_inwoner/scss/components/Status/_StatusList.scss +++ b/src/open_inwoner/scss/components/Status/_StatusList.scss @@ -9,26 +9,68 @@ position: relative; } - &__list:before { - content: ''; - background-color: var(--color-success); - display: block; - height: calc(100% - 1.5em); - left: 11px; - position: absolute; - top: 0.75em; - width: 2px; - z-index: -1; - } - &__list-item { display: flex; gap: var(--spacing-large); + + h3 { + display: inline-block; + width: calc(100% - 2em); + } + + .material-icons, + .material-icons-outlined { + box-sizing: border-box; + color: var(--color-success); + position: relative; + width: var(--spacing-extra-large); + z-index: 3; + + &::before { + content: ''; + background-color: white; + border-radius: 50%; + top: 2px; + left: 2px; + height: 20px; + width: 20px; + position: absolute; + z-index: -1; + } + } + + &--info { + background-color: var(--color-info-lighter); + + .material-icons, + .material-icons-outlined { + color: var(--color-info-darker); + + &::before { + background-color: transparent; + } + } + } } - [class*='icon'] { - color: var(--color-success); - background-color: var(--color-white); + &__notification { + padding: var(--spacing-extra-large); + &-content { + margin-left: 2em; + + &::before { + content: ''; + background-color: var(--color-success); + display: block; + height: calc(100% - 4.3em); + left: 11px; + margin-left: var(--spacing-extra-large); + position: absolute; + top: 1.3em; + width: 2px; + z-index: 1; + } + } } } diff --git a/src/open_inwoner/scss/views/App.scss b/src/open_inwoner/scss/views/App.scss index 4b99d72ca7..4428933e7e 100644 --- a/src/open_inwoner/scss/views/App.scss +++ b/src/open_inwoner/scss/views/App.scss @@ -25,6 +25,7 @@ --color-black: #000; --color-blue: #1261a3; --color-gray: #d2d2d2; + --color-gray-90: #676767; --color-gray-dark: #4b4b4b; --color-gray-lighter: #7a7a7a; --color-gray-light: #d2d2d2; @@ -244,6 +245,7 @@ --spacing-large: 16px; --spacing-extra-large: 24px; --spacing-giant: 32px; + --spacing-mega: 80px; /// Common widths --form-width: 500px; diff --git a/src/open_inwoner/templates/pages/cases/status_inner.html b/src/open_inwoner/templates/pages/cases/status_inner.html index 41c65530c2..e4f182abb9 100644 --- a/src/open_inwoner/templates/pages/cases/status_inner.html +++ b/src/open_inwoner/templates/pages/cases/status_inner.html @@ -10,21 +10,16 @@ {% notifications messages %} -{# Anchor menu-desktop #} -
- {% anchor_menu anchors desktop=True %} -
- {% get_solo 'openzaak.OpenZaakConfig' as openzaak_config %} {% if case %} {% render_grid %} - {% render_column span=9 %} - + {% render_column span=12 %} {# Title/dashboard. #}

{{ case.description }}

{% case_dashboard case %} - {% case_table case %} + {% endrender_column %} + {% render_column start=4 span=6 %} {# Status history. #} {% if case.statuses %} @@ -33,13 +28,31 @@

{% trans 'Status' %}

{% endif %} @@ -51,6 +64,7 @@

{% trans 'Documenten' %}

{% endif %} {% if case.internal_upload_enabled %} +

{% trans "Document uploaden" %}

{% trans "Document uploaden" %}

{% if case.case_type_document_upload_description %} diff --git a/src/open_inwoner/templates/pages/cases/status_outer.html b/src/open_inwoner/templates/pages/cases/status_outer.html index ed7b79a8da..6482f690cf 100644 --- a/src/open_inwoner/templates/pages/cases/status_outer.html +++ b/src/open_inwoner/templates/pages/cases/status_outer.html @@ -1,18 +1,10 @@ {% extends 'master.html' %} {% load i18n icon_tags %} -{% block mobile_anchors %} -
-{% endblock mobile_anchors %} - {% block notifications %}
{% endblock notifications %} -{% block sidebar_content %} -
-{% endblock sidebar_content %} - {% block content %}
From b7d4d4330f23a933cf06548bfd4ce7ee9ea027a1 Mon Sep 17 00:00:00 2001 From: Steven Bal Date: Mon, 23 Oct 2023 12:51:54 +0200 Subject: [PATCH 2/9] :sparkles: [#1791] Add statustype configuration to each status in detail page --- src/open_inwoner/cms/cases/views/status.py | 30 ++++++++++++++----- .../openzaak/tests/test_case_detail.py | 25 ++++++++++------ .../templates/pages/cases/status_inner.html | 1 + 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/open_inwoner/cms/cases/views/status.py b/src/open_inwoner/cms/cases/views/status.py index d87bec77e0..ea61366ee4 100644 --- a/src/open_inwoner/cms/cases/views/status.py +++ b/src/open_inwoner/cms/cases/views/status.py @@ -1,6 +1,6 @@ import dataclasses from collections import defaultdict -from typing import List +from typing import List, Optional from django.contrib import messages from django.core.exceptions import ObjectDoesNotExist, PermissionDenied @@ -43,6 +43,7 @@ StatusTranslation, ZaakTypeConfig, ZaakTypeInformatieObjectTypeConfig, + ZaakTypeStatusTypeConfig, ) from open_inwoner.openzaak.utils import get_role_name_display, is_info_object_visible from open_inwoner.utils.translate import TranslationLookup @@ -116,6 +117,11 @@ def get_context_data(self, **kwargs): statuses = fetch_status_history(self.case.url) + statustype_config_mapping = { + zaaktype_statustype.statustype_url: zaaktype_statustype + for zaaktype_statustype in ZaakTypeStatusTypeConfig.objects.all() + } + # NOTE we cannot sort on the Status.datum_status_gezet (datetime) because eSuite returns zeros as the time component of the datetime, # so we're going with the observation that on both OpenZaak and eSuite the returned list is ordered 'oldest-last' # here we want it 'oldest-first' so we reverse() it instead of sort()-ing @@ -146,12 +152,9 @@ def get_context_data(self, **kwargs): self.case, "uiterlijke_einddatum_afdoening", None ), "description": self.case.zaaktype.omschrijving, - "current_status": status_translate.from_glom( - self.case, - "status.statustype.omschrijving", - default=_("No data available"), + "statuses": self.get_statuses_data( + statuses, status_translate, statustype_config_mapping ), - "statuses": self.get_statuses_data(statuses, status_translate), "documents": documents, "allowed_file_extensions": sorted(config.allowed_file_extensions), } @@ -234,7 +237,10 @@ def get_initiator_display(self, case: Zaak) -> str: return ", ".join([get_role_name_display(r) for r in roles]) def get_statuses_data( - self, statuses: List[Status], lookup: TranslationLookup + self, + statuses: List[Status], + lookup: TranslationLookup, + statustype_config_mapping: Optional[dict] = None, ) -> List[dict]: return [ { @@ -242,6 +248,16 @@ def get_statuses_data( "label": lookup.from_glom( s, "statustype.omschrijving", default=_("No data available") ), + "status_indicator": getattr( + statustype_config_mapping.get(s.statustype.url), + "status_indicator", + None, + ), + "status_indicator_text": getattr( + statustype_config_mapping.get(s.statustype.url), + "status_indicator_text", + None, + ), } for s in statuses ] diff --git a/src/open_inwoner/openzaak/tests/test_case_detail.py b/src/open_inwoner/openzaak/tests/test_case_detail.py index 531524fc89..e023ecbeaf 100644 --- a/src/open_inwoner/openzaak/tests/test_case_detail.py +++ b/src/open_inwoner/openzaak/tests/test_case_detail.py @@ -23,6 +23,7 @@ from open_inwoner.accounts.choices import LoginTypeChoices from open_inwoner.accounts.tests.factories import UserFactory from open_inwoner.cms.cases.views.status import SimpleFile +from open_inwoner.openzaak.constants import StatusIndicators from open_inwoner.openzaak.tests.factories import ( StatusTranslationFactory, ZaakTypeConfigFactory, @@ -353,6 +354,17 @@ def _setUpMocks(self, m): def test_status_is_retrieved_when_user_logged_in_via_digid(self, m): self.maxDiff = None + ZaakTypeStatusTypeConfigFactory.create( + statustype_url=self.status_type_new["url"], + status_indicator=StatusIndicators.warning, + status_indicator_text="foo", + ) + ZaakTypeStatusTypeConfigFactory.create( + statustype_url=self.status_type_finish["url"], + status_indicator=StatusIndicators.success, + status_indicator_text="bar", + ) + self._setUpMocks(m) status_new_obj, status_finish_obj = factory( Status, [self.status_new, self.status_finish] @@ -372,15 +384,18 @@ def test_status_is_retrieved_when_user_logged_in_via_digid(self, m): "end_date_planned": datetime.date(2022, 1, 4), "end_date_legal": datetime.date(2022, 1, 5), "description": "Coffee zaaktype", - "current_status": "Finish", "statuses": [ { "date": datetime.datetime(2021, 1, 12), "label": "Initial request", + "status_indicator": StatusIndicators.warning, + "status_indicator_text": "foo", }, { "date": datetime.datetime(2021, 3, 12), "label": "Finish", + "status_indicator": StatusIndicators.success, + "status_indicator_text": "bar", }, ], # only one visible information object @@ -404,7 +419,6 @@ def test_page_displays_expected_data(self, m): self.assertContains(response, "ZAAK-2022-0000000024") self.assertContains(response, "Coffee zaaktype") - self.assertContains(response, "Finish") self.assertContains(response, "uploaded_document_title") self.assertContains(response, "Foo Bar van der Bazz") self.assertContains(response, "resultaat toelichting") @@ -449,13 +463,6 @@ def test_when_accessing_case_detail_a_timelinelog_is_created(self, m): self.assertEqual(self.user, log.user) self.assertEqual(self.user, log.content_object) - def test_current_status_in_context_is_the_most_recent_one(self, m): - self._setUpMocks(m) - - response = self.app.get(self.case_detail_url, user=self.user) - current_status = response.context.get("case", {}).get("current_status") - self.assertEquals(current_status, "Finish") - def test_case_io_objects_are_retrieved_when_user_logged_in_via_digid(self, m): self._setUpMocks(m) diff --git a/src/open_inwoner/templates/pages/cases/status_inner.html b/src/open_inwoner/templates/pages/cases/status_inner.html index e4f182abb9..f0e1690d2c 100644 --- a/src/open_inwoner/templates/pages/cases/status_inner.html +++ b/src/open_inwoner/templates/pages/cases/status_inner.html @@ -28,6 +28,7 @@

{% trans 'Status' %}

{% endif %} @@ -67,8 +98,7 @@

{% trans 'Documenten' %}

{% endif %} {% if case.internal_upload_enabled %} -

{% trans "Document uploaden" %}

-

{% trans "Document uploaden" %}

+

{% trans "Document uploaden" %}

{% if case.case_type_document_upload_description %}
diff --git a/src/open_inwoner/templates/pages/cases/status_outer.html b/src/open_inwoner/templates/pages/cases/status_outer.html index 6482f690cf..ed7b79a8da 100644 --- a/src/open_inwoner/templates/pages/cases/status_outer.html +++ b/src/open_inwoner/templates/pages/cases/status_outer.html @@ -1,10 +1,18 @@ {% extends 'master.html' %} {% load i18n icon_tags %} +{% block mobile_anchors %} +
+{% endblock mobile_anchors %} + {% block notifications %}
{% endblock notifications %} +{% block sidebar_content %} +
+{% endblock sidebar_content %} + {% block content %}
From b30845d08be58dbd224c518e2e2e73c422139ebd Mon Sep 17 00:00:00 2001 From: Paul Schilling Date: Wed, 1 Nov 2023 16:02:34 +0100 Subject: [PATCH 5/9] [#1791] Update mocks and fix failing test(s) --- .../cms/cases/tests/test_contactform.py | 38 +++++++++- src/open_inwoner/cms/cases/tests/test_htmx.py | 38 +++++++++- .../migrations/0027_auto_20231101_1641.py | 48 +++++++++++++ .../0027_zaaktype_resultaattype_config.py | 72 +++++++++++++++++++ .../migrations/0028_merge_20231101_1705.py | 13 ++++ 5 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 src/open_inwoner/openzaak/migrations/0027_auto_20231101_1641.py create mode 100644 src/open_inwoner/openzaak/migrations/0027_zaaktype_resultaattype_config.py create mode 100644 src/open_inwoner/openzaak/migrations/0028_merge_20231101_1705.py diff --git a/src/open_inwoner/cms/cases/tests/test_contactform.py b/src/open_inwoner/cms/cases/tests/test_contactform.py index 7a0425375d..c9e6d4e139 100644 --- a/src/open_inwoner/cms/cases/tests/test_contactform.py +++ b/src/open_inwoner/cms/cases/tests/test_contactform.py @@ -113,6 +113,18 @@ def setUp(self): vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduidingen.openbaar, indicatieInternOfExtern="extern", ) + # + # statuses + # + self.status_new = generate_oas_component( + "zrc", + "schemas/Status", + url=f"{ZAKEN_ROOT}statussen/3da81560-c7fc-476a-ad13-beu760sle929", + zaak=self.zaak["url"], + statustype=f"{CATALOGI_ROOT}statustypen/e3798107-ab27-4c3c-977d-777yu878km09", + datumStatusGezet="2021-01-12", + statustoelichting="", + ) self.status_finish = generate_oas_component( "zrc", "schemas/Status", @@ -122,6 +134,21 @@ def setUp(self): datumStatusGezet="2021-03-12", statustoelichting="", ) + # + # status types + # + self.status_type_new = generate_oas_component( + "ztc", + "schemas/StatusType", + url=self.status_new["statustype"], + zaaktype=self.zaaktype["url"], + catalogus=f"{CATALOGI_ROOT}catalogussen/1b643db-81bb-d71bd5a2317a", + omschrijving="Initial request", + omschrijvingGeneriek="Nieuw", + statustekst="", + volgnummer=1, + isEindstatus=False, + ) self.status_type_finish = generate_oas_component( "ztc", "schemas/StatusType", @@ -129,7 +156,10 @@ def setUp(self): zaaktype=self.zaaktype["url"], catalogus=f"{CATALOGI_ROOT}catalogussen/1b643db-81bb-d71bd5a2317a", omschrijving="Finish", - omschrijvingGeneriek="some content", + omschrijvingGeneriek="Afgehandeld", + statustekst="", + volgnummer=1, + isEindstatus=True, ) self.result = generate_oas_component( "zrc", @@ -181,6 +211,12 @@ def _setUpMocks(self, m): ]: self.matchers.append(m.get(resource["url"], json=resource)) + # mock `fetch_status_types_no_cache` + m.get( + f"{CATALOGI_ROOT}statustypen?zaaktype={self.zaak['zaaktype']}", + json=paginated_response([self.status_type_new, self.status_type_finish]), + ) + self.matchers += [ m.get( f"{ZAKEN_ROOT}rollen?zaak={self.zaak['url']}", diff --git a/src/open_inwoner/cms/cases/tests/test_htmx.py b/src/open_inwoner/cms/cases/tests/test_htmx.py index f8d41b789e..e7502953d3 100644 --- a/src/open_inwoner/cms/cases/tests/test_htmx.py +++ b/src/open_inwoner/cms/cases/tests/test_htmx.py @@ -122,6 +122,18 @@ def setUp(self) -> None: vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduidingen.openbaar, indicatieInternOfExtern="extern", ) + # + # statuses + # + self.status_new = generate_oas_component( + "zrc", + "schemas/Status", + url=f"{ZAKEN_ROOT}statussen/3da81560-c7fc-476a-ad13-beu760sle929", + zaak=self.zaak["url"], + statustype=f"{CATALOGI_ROOT}statustypen/e3798107-ab27-4c3c-977d-777yu878km09", + datumStatusGezet="2021-01-12", + statustoelichting="", + ) self.status_finish = generate_oas_component( "zrc", "schemas/Status", @@ -131,6 +143,21 @@ def setUp(self) -> None: datumStatusGezet="2021-03-12", statustoelichting="", ) + # + # status types + # + self.status_type_new = generate_oas_component( + "ztc", + "schemas/StatusType", + url=self.status_new["statustype"], + zaaktype=self.zaaktype["url"], + catalogus=f"{CATALOGI_ROOT}catalogussen/1b643db-81bb-d71bd5a2317a", + omschrijving="Initial request", + omschrijvingGeneriek="Nieuw", + statustekst="", + volgnummer=1, + isEindstatus=False, + ) self.status_type_finish = generate_oas_component( "ztc", "schemas/StatusType", @@ -138,7 +165,10 @@ def setUp(self) -> None: zaaktype=self.zaaktype["url"], catalogus=f"{CATALOGI_ROOT}catalogussen/1b643db-81bb-d71bd5a2317a", omschrijving="Finish", - omschrijvingGeneriek="some content", + omschrijvingGeneriek="Afgehandeld", + statustekst="", + volgnummer=1, + isEindstatus=True, ) self.user_role = generate_oas_component( "zrc", @@ -285,6 +315,12 @@ def _setUpMocks(self, m): ]: self.matchers.append(m.get(resource["url"], json=resource)) + # mock `fetch_status_types_no_cache` + m.get( + f"{CATALOGI_ROOT}statustypen?zaaktype={self.zaak['zaaktype']}", + json=paginated_response([self.status_type_new, self.status_type_finish]), + ) + self.matchers += [ m.get( f"{ZAKEN_ROOT}zaken?rol__betrokkeneIdentificatie__natuurlijkPersoon__inpBsn={self.user.bsn}&maximaleVertrouwelijkheidaanduiding=beperkt_openbaar", diff --git a/src/open_inwoner/openzaak/migrations/0027_auto_20231101_1641.py b/src/open_inwoner/openzaak/migrations/0027_auto_20231101_1641.py new file mode 100644 index 0000000000..f2780b7476 --- /dev/null +++ b/src/open_inwoner/openzaak/migrations/0027_auto_20231101_1641.py @@ -0,0 +1,48 @@ +# Generated by Django 3.2.20 on 2023-11-01 15:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("openzaak", "0026_zaaktypestatustypeconfig_document_upload_description"), + ] + + operations = [ + migrations.AlterField( + model_name="openzaakconfig", + name="title_text", + field=models.TextField( + default="Hier vindt u een overzicht van al uw lopende en afgeronde aanvragen.", + help_text="The title/introductory text shown on the list view of 'Mijn aanvragen'.", + verbose_name="Title text", + ), + ), + migrations.AlterField( + model_name="zaaktypestatustypeconfig", + name="status_indicator", + field=models.CharField( + blank=True, + choices=[ + ("info", "Info"), + ("warning", "Warning"), + ("failure", "Failure"), + ("success", "Success"), + ], + help_text="Determines what color will be shown to the user if a case is set to this status", + max_length=32, + verbose_name="Statustype indicator", + ), + ), + migrations.AlterField( + model_name="zaaktypestatustypeconfig", + name="status_indicator_text", + field=models.TextField( + blank=True, + default="", + help_text="Determines the text that will be shown to the user if a case is set to this status", + verbose_name="Statustype indicator text", + ), + ), + ] diff --git a/src/open_inwoner/openzaak/migrations/0027_zaaktype_resultaattype_config.py b/src/open_inwoner/openzaak/migrations/0027_zaaktype_resultaattype_config.py new file mode 100644 index 0000000000..840666039f --- /dev/null +++ b/src/open_inwoner/openzaak/migrations/0027_zaaktype_resultaattype_config.py @@ -0,0 +1,72 @@ +# Generated by Django 3.2.20 on 2023-10-26 10:05 + +import django.db.models.deletion +from django.db import migrations, models + +import django_better_admin_arrayfield.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ("openzaak", "0026_zaaktypestatustypeconfig_document_upload_description"), + ] + + operations = [ + migrations.CreateModel( + name="ZaakTypeResultaatTypeConfig", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "resultaattype_url", + models.URLField(max_length=1000, verbose_name="Resultaattype URL"), + ), + ( + "omschrijving", + models.CharField(max_length=20, verbose_name="Omschrijving"), + ), + ( + "zaaktype_uuids", + django_better_admin_arrayfield.models.fields.ArrayField( + base_field=models.UUIDField(verbose_name="Zaaktype UUID"), + default=list, + size=None, + ), + ), + ( + "description", + models.TextField( + blank=True, + default="", + help_text="Determines the text that will be shown to the user if a case is set to this result", + verbose_name="Frontend description", + ), + ), + ( + "zaaktype_config", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="openzaak.zaaktypeconfig", + ), + ), + ], + options={ + "verbose_name": "Zaaktype Resultaattype Configuration", + }, + ), + migrations.AddConstraint( + model_name="zaaktyperesultaattypeconfig", + constraint=models.UniqueConstraint( + fields=("zaaktype_config", "resultaattype_url"), + name="unique_zaaktype_config_resultaattype_url", + ), + ), + ] diff --git a/src/open_inwoner/openzaak/migrations/0028_merge_20231101_1705.py b/src/open_inwoner/openzaak/migrations/0028_merge_20231101_1705.py new file mode 100644 index 0000000000..bbf3c5cc47 --- /dev/null +++ b/src/open_inwoner/openzaak/migrations/0028_merge_20231101_1705.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2.20 on 2023-11-01 16:05 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("openzaak", "0027_auto_20231101_1641"), + ("openzaak", "0027_zaaktype_resultaattype_config"), + ] + + operations = [] From eb05214597789012b4270b7ab1e30c0914858d92 Mon Sep 17 00:00:00 2001 From: jiroghianni Date: Thu, 2 Nov 2023 16:43:36 +0100 Subject: [PATCH 6/9] [#1791] Added styles for case detail page --- .../scss/components/Cases/CaseDetail.scss | 25 +++++++++++++++++++ .../scss/components/Cases/Cases.scss | 20 +-------------- src/open_inwoner/scss/components/_index.scss | 1 + 3 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 src/open_inwoner/scss/components/Cases/CaseDetail.scss diff --git a/src/open_inwoner/scss/components/Cases/CaseDetail.scss b/src/open_inwoner/scss/components/Cases/CaseDetail.scss new file mode 100644 index 0000000000..5c95b94e04 --- /dev/null +++ b/src/open_inwoner/scss/components/Cases/CaseDetail.scss @@ -0,0 +1,25 @@ +.cases__detail { + /// cards on case detail + .card { + &__body { + &.document-upload-description { + display: flex; + column-gap: var(--spacing-medium); + } + } + } + + #document-upload { + /// Make required asterisk visible for this component + .label__label--required { + color: var(--color-red); + padding-left: var(--spacing-tiny); + //make asterisks invisible by default, only make them visible if component has the caption + display: inline; + } + } + + #cases-contact-form-content > h2 { + margin-top: var(--spacing-large); + } +} diff --git a/src/open_inwoner/scss/components/Cases/Cases.scss b/src/open_inwoner/scss/components/Cases/Cases.scss index 38f6a718a4..8fa9c0f86f 100644 --- a/src/open_inwoner/scss/components/Cases/Cases.scss +++ b/src/open_inwoner/scss/components/Cases/Cases.scss @@ -17,7 +17,7 @@ } } - /// cards on cases page + /// cards on cases list .card { .cases__link { text-decoration: none; @@ -79,21 +79,3 @@ } } } - -#document-upload { - /// Make required asterisk visible for this component - .label__label--required { - color: var(--color-red); - padding-left: var(--spacing-tiny); - //make asterisks invisible by default, only make them visible if component has the caption - display: inline; - } -} - -//.document-upload-description { -// display: flex; -//} - -#cases-contact-form-content > h2 { - margin-top: var(--spacing-large); -} diff --git a/src/open_inwoner/scss/components/_index.scss b/src/open_inwoner/scss/components/_index.scss index 11966c4d66..ed1cda4bb2 100644 --- a/src/open_inwoner/scss/components/_index.scss +++ b/src/open_inwoner/scss/components/_index.scss @@ -7,6 +7,7 @@ @import './Card/LocationCardList.scss'; @import './CardContainer/CardContainer.scss'; @import './Cases/Cases.scss'; +@import './Cases/CaseDetail'; @import './Condition/Condition.scss'; @import './ContactForm/ContactForm.scss'; @import './Contactmomenten/Contactmomenten.scss'; From 97c7d14df8dde9cefa475e129b7d4e0e3cbeda8e Mon Sep 17 00:00:00 2001 From: jiroghianni Date: Sat, 4 Nov 2023 01:37:41 +0100 Subject: [PATCH 7/9] :art: [#1791] Added disabled contact-button, and case status logic-styles --- .../js/components/cases/case_contact_form.js | 25 +++ .../js/components/cases/status_accordion.js | 2 +- src/open_inwoner/js/components/index.js | 5 + .../scss/components/Button/Button.scss | 7 + .../scss/components/Cases/CaseDetail.scss | 12 ++ .../scss/components/File/FileList.scss | 2 + .../scss/components/Status/_StatusList.scss | 170 ++++++++++-------- .../templates/pages/cases/contact_form.html | 6 +- .../templates/pages/cases/status_inner.html | 68 +------ .../templates/pages/cases/statuses.html | 81 +++++++++ 10 files changed, 236 insertions(+), 142 deletions(-) create mode 100644 src/open_inwoner/js/components/cases/case_contact_form.js create mode 100644 src/open_inwoner/templates/pages/cases/statuses.html diff --git a/src/open_inwoner/js/components/cases/case_contact_form.js b/src/open_inwoner/js/components/cases/case_contact_form.js new file mode 100644 index 0000000000..b7c76bb0b6 --- /dev/null +++ b/src/open_inwoner/js/components/cases/case_contact_form.js @@ -0,0 +1,25 @@ +export class DisableCaseContactButton { + static selector = '.case-contact-form' + + constructor(form) { + this.form = form + this.contactTextarea = this.form.querySelector('textarea') + this.form.addEventListener('input', this.handleTextareaInput.bind(this)) + } + + handleTextareaInput() { + const submitButton = this.form.querySelector('button[type="submit"]') + + if (this.contactTextarea.value === '') { + submitButton.setAttribute('disabled', 'true') + submitButton.classList.add('button--disabled') + } else { + submitButton.removeAttribute('disabled') + submitButton.classList.remove('button--disabled') + } + } +} + +document + .querySelectorAll(DisableCaseContactButton.selector) + .forEach((caseContactForm) => new DisableCaseContactButton(caseContactForm)) diff --git a/src/open_inwoner/js/components/cases/status_accordion.js b/src/open_inwoner/js/components/cases/status_accordion.js index a6c752dc7e..1fbd907439 100644 --- a/src/open_inwoner/js/components/cases/status_accordion.js +++ b/src/open_inwoner/js/components/cases/status_accordion.js @@ -3,7 +3,7 @@ export class StatusAccordion { constructor(node) { this.node = node - this.buttons = node.querySelectorAll('.status-list__notification-h3') + this.buttons = node.querySelectorAll('.status-list__button') this.buttons.forEach((button) => { button.addEventListener( 'click', diff --git a/src/open_inwoner/js/components/index.js b/src/open_inwoner/js/components/index.js index bf92b72cc2..dff12f9f32 100644 --- a/src/open_inwoner/js/components/index.js +++ b/src/open_inwoner/js/components/index.js @@ -9,6 +9,7 @@ import './autocomplete-search' import './autocomplete' import './autosumbit' import './cases' +import { DisableCaseContactButton } from './cases/case_contact_form' import { DisableSubmitButton } from './cases/document_upload' import './confirmation' import './contacts' @@ -48,6 +49,10 @@ const elementWrappers = [ [Dropdown.selector, (elt) => new Dropdown(elt)], [CreateGumshoe.selector, (elt) => new CreateGumshoe(elt)], [DisableSubmitButton.selector, (elt) => new DisableSubmitButton(elt)], + [ + DisableCaseContactButton.selector, + (elt) => new DisableCaseContactButton(elt), + ], [ShowInfo.selector, (elt) => new ShowInfo(elt)], [FileInputError.selector, (elt) => new FileInputError(elt)], [Notification.selector, (elt) => new Notification(elt)], diff --git a/src/open_inwoner/scss/components/Button/Button.scss b/src/open_inwoner/scss/components/Button/Button.scss index a9fe96ea94..28f7045ad3 100644 --- a/src/open_inwoner/scss/components/Button/Button.scss +++ b/src/open_inwoner/scss/components/Button/Button.scss @@ -155,6 +155,13 @@ color: var(--color-danger-lighter); } + &--borderless { + background-color: rgba(0, 0, 0, 0); + border: none; + color: var(--color-gray-dark); + padding: 0; + } + &__text-wrapper { display: flex; } diff --git a/src/open_inwoner/scss/components/Cases/CaseDetail.scss b/src/open_inwoner/scss/components/Cases/CaseDetail.scss index 5c95b94e04..50621e408c 100644 --- a/src/open_inwoner/scss/components/Cases/CaseDetail.scss +++ b/src/open_inwoner/scss/components/Cases/CaseDetail.scss @@ -1,6 +1,7 @@ .cases__detail { /// cards on case detail .card { + margin-bottom: var(--spacing-extra-large); &__body { &.document-upload-description { display: flex; @@ -22,4 +23,15 @@ #cases-contact-form-content > h2 { margin-top: var(--spacing-large); } + + .case-contact-form { + .button[type='submit']:disabled, + .button--primary.button--disabled { + background-color: var(--color-gray) !important; + border-color: var(--color-gray) !important; + color: var(--color-white); + cursor: default; + pointer-events: none; + } + } } diff --git a/src/open_inwoner/scss/components/File/FileList.scss b/src/open_inwoner/scss/components/File/FileList.scss index 4b079b1fdc..24c83841db 100644 --- a/src/open_inwoner/scss/components/File/FileList.scss +++ b/src/open_inwoner/scss/components/File/FileList.scss @@ -1,4 +1,6 @@ .file-list { + margin-bottom: var(--spacing-mega); + .h4 { margin-bottom: var(--spacing-large); } diff --git a/src/open_inwoner/scss/components/Status/_StatusList.scss b/src/open_inwoner/scss/components/Status/_StatusList.scss index 20cb1ef185..aa49042b79 100644 --- a/src/open_inwoner/scss/components/Status/_StatusList.scss +++ b/src/open_inwoner/scss/components/Status/_StatusList.scss @@ -1,7 +1,8 @@ .status-list { + margin-bottom: var(--spacing-mega); + &__list { display: flex; - gap: var(--spacing-medium); flex-direction: column; list-style: none; margin: 0; @@ -12,14 +13,17 @@ &__list-item { display: flex; gap: var(--spacing-large); - padding: 8px 16px 0 16px; + padding: var(--spacing-medium) var(--spacing-giant) var(--spacing-large) + var(--spacing-giant); + position: relative; + // Continuous line &:not(:last-child)::before { content: ''; background-color: var(--color-success); display: block; - height: calc(100% - 6.3em); - left: 3px; + height: 100%; + left: 19px; margin-left: var(--spacing-extra-large); position: absolute; top: 1.3em; @@ -27,27 +31,32 @@ z-index: 1; } - .status-list__notification-h3 { + .status-list__button { color: var(--color-success); cursor: pointer; display: flex; font-weight: normal; justify-content: space-between; + padding: 0; margin: var(--spacing-small) 0 var(--spacing-large) 0; width: 100%; } + .status-list__button .link { + color: var(--color-success); + } + + .link-future { + color: var(--color-gray-90); + } + .p-date { - color: var(--color-gray-dark); font-size: var(--font-size-body-small); } - .button *[class*='icons'] { - color: white; - } - .button *[class*='icons']::before { - content: ''; - background-color: transparent; + [class*='icons'] { + transform-origin: center; + transition: all 0.3s; } > [class*='icons'] { @@ -70,84 +79,55 @@ } } - &--info { - background-color: var(--color-info-lighter); + &--failure { + background-color: var(--color-error-lightest); + .status-step[class*='icons'] { + color: var(--color-error-darker); + } + } + &--future { [class*='icons'] { - color: var(--color-info-darker); + color: var(--color-body); } + } - &.item--completed { - background-color: var(--color-info-lighter); - [class*='icons'] { - color: var(--color-info-darker) !important; - } + &--info { + background-color: var(--color-info-lighter); + .status-step[class*='icons'] { + color: var(--color-info-darker); } } &--warning { background-color: var(--color-danger-lightest); - - [class*='icons'] { + .status-step[class*='icons'] { color: var(--color-danger-darker); } - - &.item--completed { - background-color: var(--color-info-lighter); - [class*='icons'] { - color: var(--color-info-darker) !important; - } - } } &--success { background-color: var(--color-success-lighter); - - h3 { - [class*='icons'] { - color: var(--color-success); - } - } - - &.item--completed { - background-color: var(--color-info-lighter); - [class*='icons'] { - color: var(--color-info-darker) !important; - } - } } - &--failure { - background-color: var(--color-error-lightest); - - [class*='icons'] { - color: var(--color-error-darker); + // Current status open by default + &.status--current { + .button--borderless .link { + color: var(--color-black); } - - &.item--completed { - background-color: var(--color-info-lighter); - [class*='icons'] { - color: var(--color-info-darker) !important; - } + .status-list__button [class*='icons'] { + color: var(--color-black); } - } - - &--future { - [class*='icons'] { - color: var(--color-body); + &.status--open + .status-list__notification + .status-list__notification-content { + padding-bottom: var(--spacing-tiny); } } - - // Current status open by default - &.status--current.status--open - .status-list__notification - .status-list__notification-content { - padding-bottom: 50px; - } } &__notification { - padding: 0 0 var(--spacing-extra-large) 0; + padding: 0 0 var(--spacing-tiny) 0; width: 100%; &-content { @@ -157,28 +137,70 @@ &-content.status-content--open { display: block; + color: var(--color-gray-dark); } } - // Active completed status should NOT have a line on the left - .status-list__list-item.item--completed:last-child { + // Active current status should NOT have a line on the left + .status-list__list-item.status--current, + .status-list__list-item.status--future { &::before { - background-color: var(--color-info-lighter); - bottom: 10px; + top: 0; + content: ''; + display: block; + height: 100%; + left: 27px; + margin-left: 1em; + position: absolute; + width: 2px; + z-index: 2; + } + + //Continuous line-color depending on status + &.status-list__list-item--failure::before { + background-color: var(--color-error-darker); + } + &.status-list__list-item--info::before { + background-color: var(--color-info-darker); + } + &.status-list__list-item--success::before { + background-color: var(--color-success); + } + &.status-list__list-item--warning::before { + background-color: var(--color-danger-darker); + } + &.status-list__list-item--future::before { + background-color: var(--color-gray-dark); + height: 16px; + } + } + + // Final active status should NOT have a line on the left + .status-list__list-item.status--final { + &::before { + background-color: var(--color-info-darker); + top: 0; content: ''; display: block; - height: 150px; - left: 10px; + height: 16px; + left: 27px; margin-left: 1em; position: absolute; - width: 5px; + width: 2px; z-index: 2; } + + .button--borderless { + cursor: default; + .link { + color: var(--color-black); + } + } } /// Toggle styles .status--open &__notification { - h3 [class*='icons'] { + .status-list__button [class*='icons'] { display: inline-block; transition: all 0.3s; transform: rotate(180deg); diff --git a/src/open_inwoner/templates/pages/cases/contact_form.html b/src/open_inwoner/templates/pages/cases/contact_form.html index cdb0f1c825..5a8462df92 100644 --- a/src/open_inwoner/templates/pages/cases/contact_form.html +++ b/src/open_inwoner/templates/pages/cases/contact_form.html @@ -1,6 +1,6 @@ {% load i18n form_tags button_tags icon_tags %} -

{% trans 'Contact' %}

+

{% trans 'Stel een vraag' %}

{% blocktrans trimmed %} Door middel van dit formulier kunt u een vraag stellen over deze zaak. @@ -9,12 +9,12 @@

{% trans 'Contact' %}

{% endblocktrans %}

-{% render_form form=contact_form method="POST" id="contact-form" hxpost=hxpost_contact_action hxtarget="#cases-contact-form" extra_classes="case-detail-form" %} +{% render_form form=contact_form method="POST" id="contact-form" hxpost=hxpost_contact_action hxtarget="#cases-contact-form" extra_classes="case-contact-form" %} {% csrf_token %} {% textarea contact_form.question %}
{% button_row %} - {% button text=_("Vraag versturen") id="submit_contact" type="submit" primary=True name="contact_form_submit" %} + {% button text=_("Vraag versturen") id="submit_contact" type="submit" disabled=True primary=True name="contact_form_submit" %} {% endbutton_row %}
{% endrender_form %} diff --git a/src/open_inwoner/templates/pages/cases/status_inner.html b/src/open_inwoner/templates/pages/cases/status_inner.html index c6b129d678..b57f2a33d7 100644 --- a/src/open_inwoner/templates/pages/cases/status_inner.html +++ b/src/open_inwoner/templates/pages/cases/status_inner.html @@ -18,69 +18,9 @@

{{ case.description }}

{% render_column start=4 span=6 %} {# Status history. #} - {% if case.statuses %} -

{% trans 'Status' %}

- - - - {% endif %} +
+ {% include 'pages/cases/statuses.html' %} +
{# Documents. #} {% if case.documents %} @@ -117,7 +57,7 @@

{% trans "Document uploaden" %}

{% elif case.external_upload_enabled %} -

{% trans "Document toevoegen" %}

+

{% trans "Document toevoegen" %}

{% if case.case_type_config_description %}

{{ case.case_type_config_description }}

{% else %} diff --git a/src/open_inwoner/templates/pages/cases/statuses.html b/src/open_inwoner/templates/pages/cases/statuses.html new file mode 100644 index 0000000000..ea30498c05 --- /dev/null +++ b/src/open_inwoner/templates/pages/cases/statuses.html @@ -0,0 +1,81 @@ +{% load i18n form_tags i18n grid_tags solo_tags link_tags button_tags icon_tags notification_tags %} + +{# WILL BE UPDATED WHEN status_inner IS FINISHED #} + +{% if case.statuses %} +

{% trans 'Status' %}

+ + + +{% endif %} From 6adabf3b53f1d9481ebdae3af28a9142889ff097 Mon Sep 17 00:00:00 2001 From: jiroghianni Date: Mon, 6 Nov 2023 09:40:47 +0100 Subject: [PATCH 8/9] [#1791] Positioned continuous line before case status --- .../scss/components/Status/_StatusList.scss | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/open_inwoner/scss/components/Status/_StatusList.scss b/src/open_inwoner/scss/components/Status/_StatusList.scss index aa49042b79..dcecb18e06 100644 --- a/src/open_inwoner/scss/components/Status/_StatusList.scss +++ b/src/open_inwoner/scss/components/Status/_StatusList.scss @@ -145,7 +145,7 @@ .status-list__list-item.status--current, .status-list__list-item.status--future { &::before { - top: 0; + top: 10px; content: ''; display: block; height: 100%; @@ -177,19 +177,6 @@ // Final active status should NOT have a line on the left .status-list__list-item.status--final { - &::before { - background-color: var(--color-info-darker); - top: 0; - content: ''; - display: block; - height: 16px; - left: 27px; - margin-left: 1em; - position: absolute; - width: 2px; - z-index: 2; - } - .button--borderless { cursor: default; .link { From bef22c20a397eb01536885116a03f28eecfe5473 Mon Sep 17 00:00:00 2001 From: jiroghianni Date: Mon, 6 Nov 2023 16:10:01 +0100 Subject: [PATCH 9/9] [#1791] Corrected cases statuses after review --- .../scss/components/Status/_StatusList.scss | 15 +++++++++- src/open_inwoner/scss/views/App.scss | 2 -- .../templates/pages/cases/status_inner.html | 2 +- .../templates/pages/cases/statuses.html | 30 +++++++------------ 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/open_inwoner/scss/components/Status/_StatusList.scss b/src/open_inwoner/scss/components/Status/_StatusList.scss index dcecb18e06..67f10e0aab 100644 --- a/src/open_inwoner/scss/components/Status/_StatusList.scss +++ b/src/open_inwoner/scss/components/Status/_StatusList.scss @@ -38,7 +38,7 @@ font-weight: normal; justify-content: space-between; padding: 0; - margin: var(--spacing-small) 0 var(--spacing-large) 0; + margin: var(--spacing-small) 0 0 0; width: 100%; } @@ -46,6 +46,10 @@ color: var(--color-success); } + .link--bold { + margin: var(--spacing-small) 0 0 0; + } + .link-future { color: var(--color-gray-90); } @@ -54,6 +58,14 @@ font-size: var(--font-size-body-small); } + .p__upload { + display: none; + &.p__upload--enabled { + //hide when final status is reached + display: block; + } + } + [class*='icons'] { transform-origin: center; transition: all 0.3s; @@ -133,6 +145,7 @@ &-content { display: none; margin-left: 0; + margin-top: var(--spacing-large); } &-content.status-content--open { diff --git a/src/open_inwoner/scss/views/App.scss b/src/open_inwoner/scss/views/App.scss index 1999e15287..4428933e7e 100644 --- a/src/open_inwoner/scss/views/App.scss +++ b/src/open_inwoner/scss/views/App.scss @@ -121,8 +121,6 @@ calc(var(--color-danger-l) + 57%) ); - // color-warning = danger - // color-failure = error --color-error-h: 350; --color-error-s: 100%; --color-error-l: 45%; diff --git a/src/open_inwoner/templates/pages/cases/status_inner.html b/src/open_inwoner/templates/pages/cases/status_inner.html index b57f2a33d7..c33236cf5a 100644 --- a/src/open_inwoner/templates/pages/cases/status_inner.html +++ b/src/open_inwoner/templates/pages/cases/status_inner.html @@ -57,7 +57,7 @@

{% trans "Document uploaden" %}

{% elif case.external_upload_enabled %} -

{% trans "Document toevoegen" %}

+

{% trans "Document toevoegen" %}

{% if case.case_type_config_description %}

{{ case.case_type_config_description }}

{% else %} diff --git a/src/open_inwoner/templates/pages/cases/statuses.html b/src/open_inwoner/templates/pages/cases/statuses.html index ea30498c05..d405957190 100644 --- a/src/open_inwoner/templates/pages/cases/statuses.html +++ b/src/open_inwoner/templates/pages/cases/statuses.html @@ -1,9 +1,9 @@ -{% load i18n form_tags i18n grid_tags solo_tags link_tags button_tags icon_tags notification_tags %} +{% load i18n button_tags icon_tags %} {# WILL BE UPDATED WHEN status_inner IS FINISHED #} {% if case.statuses %} -

{% trans 'Status' %}

+

{% trans 'Status' %}

@@ -52,11 +42,14 @@

{% trans 'Status' %}

- {# Should be ZaakTypeResultaatTypeConfig configurable description #} - {# {{ status.statustype.omschrijving }} #} - {{ status.status_indicator_text }} + {{ case_type_result_type_config.description|default:"" }}

{{ status.date|date }}

+

+ {% if case.internal_upload_enabled or case.external_upload_enabled %} + {% button href="#documents-upload" text=_("Scroll omlaag") title=_("Ga direct naar document upload sectie.") primary=True icon="arrow_downward" icon_position="after" %} + {% endif %} +

@@ -72,7 +65,6 @@

{% trans 'Status' %}

{{ case.end_statustype_data.label }}
- {% endif %}