diff --git a/atst/forms/task_order.py b/atst/forms/task_order.py index 1d622458..1e2ce9b4 100644 --- a/atst/forms/task_order.py +++ b/atst/forms/task_order.py @@ -19,8 +19,8 @@ from atst.utils.localization import translate class CLINForm(FlaskForm): - jedi_clin_type = SelectField("Jedi CLIN type", choices=JEDI_CLIN_TYPES) - number = StringField(validators=[Required()]) + jedi_clin_type = SelectField("CLIN type", choices=JEDI_CLIN_TYPES) + number = StringField(label="CLIN", validators=[Required()]) start_date = DateField( translate("forms.task_order.start_date_label"), format="%m/%d/%Y", @@ -31,7 +31,7 @@ class CLINForm(FlaskForm): format="%m/%d/%Y", validators=[Required()], ) - obligated_amount = DecimalField() + obligated_amount = DecimalField(label="Funds obligated for cloud") loas = FieldList(StringField()) @@ -42,8 +42,7 @@ class UnclassifiedCLINForm(CLINForm): class TaskOrderForm(BaseForm): number = StringField( - translate("forms.task_order.number_label"), - description=translate("forms.task_order.number_description"), + label=translate("forms.task_order.number_description"), validators=[Required()], ) pdf = FileField( diff --git a/js/components/forms/to_form.js b/js/components/forms/to_form.js index 55999949..bf77f3c2 100644 --- a/js/components/forms/to_form.js +++ b/js/components/forms/to_form.js @@ -2,6 +2,7 @@ import ClinFields from '../clin_fields' import DateSelector from '../date_selector' import FormMixin from '../../mixins/form' import optionsinput from '../options_input' +import SemiCollapsibleText from '../semi_collapsible_text' import textinput from '../text_input' import uploadinput from '../upload_input' @@ -14,6 +15,7 @@ export default { ClinFields, DateSelector, optionsinput, + SemiCollapsibleText, textinput, uploadinput, }, diff --git a/templates/components/text_input.html b/templates/components/text_input.html index 64ab1a1f..e64ed1c0 100644 --- a/templates/components/text_input.html +++ b/templates/components/text_input.html @@ -14,7 +14,8 @@ initial_value='', classes='', noMaxWidth=False, - optional=False) -%} + optional=False, + showLabel=True) -%} - + + {% endif %} {% if paragraph %} diff --git a/templates/components/totals_box.html b/templates/components/totals_box.html index 18afeedf..3e6875a6 100644 --- a/templates/components/totals_box.html +++ b/templates/components/totals_box.html @@ -1,14 +1,19 @@ -{% macro TotalsBox(task_order) -%} +{% macro TotalsBox(task_order=None, obligated_funds=0, contract_amount=0) -%}
+ {% if task_order %} + {% set obligated_funds = task_order.total_obligated_funds %} + {% set contract_amount = task_order.total_contract_amount %} + {% endif %} +
Total obligated funds
-
{{ task_order.total_obligated_funds | dollars }}
+
{{ obligated_funds | dollars }}
This is the funding allocated to cloud services. It may be 100% or a portion of the total task order budget.

Total contract amount
-
{{ task_order.total_contract_amount | dollars }}
+
{{ contract_amount | dollars }}
This is the value of all funds obligated for this contract, including -- but not limited to -- funds obligated for the cloud.
diff --git a/templates/task_orders/edit.html b/templates/task_orders/edit.html index 174287fe..9ccbacb4 100644 --- a/templates/task_orders/edit.html +++ b/templates/task_orders/edit.html @@ -6,17 +6,13 @@ {% from 'components/save_button.html' import SaveButton %} {% from "components/sticky_cta.html" import StickyCTA %} {% from 'components/text_input.html' import TextInput %} +{% from "components/totals_box.html" import TotalsBox %} {% from 'components/upload_input.html' import UploadInput %} {% macro LOAInput() %}
-
- + {% endmacro %} {% macro CLINFields(fields, index) %} + {% if index != 0 %} +
+ {% endif %} +
-
{{ OptionsInput(fields.jedi_clin_type) }} {{ TextInput(fields.number) }} +
Line of accounting (43 characters)
{% for loa in fields.loas %} - {{ TextInput(loa) }} + {{ TextInput(loa, showLabel=False) }} {% endfor %} {{ LOAInput() }} @@ -84,9 +89,9 @@ {% endcall %} -
- {% include "fragments/flash.html" %} - + +
+ {% include "fragments/flash.html" %} {% if task_order_id %} {% set action = url_for("task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order_id) %} {% else %} @@ -95,222 +100,251 @@
{{ form.csrf_token }} - -

- {{ "task_orders.new.form_help_text" | translate }} -

-
- {{ TextInput(form.number, validation='taskOrderNumber') }} - {% for clin in form.clins %} - {{ CLINFields(clin, index=loop.index - 1) }} - {% endfor %} -
-
- -
-
-
- -
-
-
- -
-
- - -
- - - - - - - - - -
-
- - {{ LOAInput() }} - - -
- -
- Start of period of performance (PoP) -
-
- -
- - -
- - -
- -
- - -
- -
- - - -
- -
- {{ Icon("ok", classes="icon--green") }} -
-
-
-
- - -
- -
- End of period of performance (PoP) -
-
- -
- - -
- - -
- -
- - -
- -
- - - -
- -
- {{ Icon("ok", classes="icon--green") }} -
-
-
-
- - -
- - - - - - - - - -
-
- -
-
+ +
+
+ {{ "task_orders.new.form_help_text" | translate }} +
+ More{{ Icon('caret_down') }} + Less{{ Icon('caret_up') }}
+
- + +
+
Upload your supporting documentation
+
+ Upload a single PDF containing all relevant information. {{ Icon('help')}} +
{{ UploadInput(form.pdf) }} + - -
+ {{ TotalsBox(task_order=task_order) }} +
+
+ {% endblock %} diff --git a/translations.yaml b/translations.yaml index 9d824bb2..21cb82c5 100644 --- a/translations.yaml +++ b/translations.yaml @@ -302,7 +302,7 @@ forms: military: Military other: Other (E.g. University or other partner) dev_team_other_label: Development Team Other - end_date_label: End Date + end_date_label: End of period of performance (PoP) file_format_not_allowed: Only PDF or PNG files can be uploaded. first_step_title: Overview ko_invite_label: Invite contracting officer to Task Order Builder @@ -330,7 +330,7 @@ forms: skip_invite_description: | An invitation won't actually be sent until you click Done on the Review page. You can skip this for now and invite them later. so_invite_label: Invite Security Officer to Task Order Builder - start_date_label: Start Date + start_date_label: Start of period of performance (PoP) team_experience: built_1: Built, migrated, or consulted on 1-2 applications built_3: Built, migrated, or consulted on 3-5 applications