Put app strings into a YAML file for easy editing by product owner
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
<div v-cloak>
|
||||
<section class="block-list">
|
||||
<header class="block-list__header">
|
||||
<h1 class="block-list__title">Activity History</h1>
|
||||
<h1 class="block-list__title">{{ "audit_log.header_title" | translate }}</h1>
|
||||
</header>
|
||||
|
||||
<ul>
|
||||
|
@@ -3,7 +3,7 @@
|
||||
{% block content %}
|
||||
{% if event.event_details %}
|
||||
<br>
|
||||
<b>Details:</b>
|
||||
<b>{{ "audit_log.events.default.details" | translate }}</b>
|
||||
<dl>
|
||||
{% for key, value in event.event_details.items() %}
|
||||
{% if value is not none %}
|
||||
@@ -15,11 +15,13 @@
|
||||
{% endif %}
|
||||
{% if event.changed_state %}
|
||||
<br>
|
||||
<b>Changes:</b>
|
||||
<b>{{ "audit_log.events.default.changes" | translate }}</b>
|
||||
<dl>
|
||||
{% for key, value in event.changed_state.items() %}
|
||||
<dt>{{ key }}</dt>
|
||||
<dd>{{ value[0] }} to {{ value[1] }}</dd>
|
||||
<dd>
|
||||
{{ "audit_log.events.default.change" | translate({ "from": value[0], "to": value[1] }) }}
|
||||
</dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
{% endif %}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}JEDI Cloud{% endblock %}</title>
|
||||
<title>{% block title %}{{ "base_public.title_tag" | translate }}{% endblock %}</title>
|
||||
{% assets "css" %}
|
||||
<link rel="stylesheet" href="{{ ASSET_URL }}" type="text/css">
|
||||
{% endassets %}
|
||||
@@ -15,14 +15,13 @@
|
||||
<body>
|
||||
|
||||
<div id='app-root'>
|
||||
|
||||
{% include 'components/usa_header.html' %}
|
||||
|
||||
<header class="topbar topbar--public">
|
||||
<nav class="topbar__navigation">
|
||||
<a href="{{ url_for('atst.home') }}" class="topbar__link topbar__link--home">
|
||||
{{ Icon('shield', classes='topbar__link-icon') }}
|
||||
<span class="topbar__link-label">JEDI Cloud</span>
|
||||
<span class="topbar__link-label">{{ "base_public.header_title" | translate }}</span>
|
||||
</a>
|
||||
|
||||
{% if g.current_user %}
|
||||
@@ -36,7 +35,7 @@
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ url_for('atst.home') }}" class="topbar__link" title='Log in'>
|
||||
<span class="topbar__link-label">Log in</span>
|
||||
<span class="topbar__link-label">{{ "base_public.login" | translate }}</span>
|
||||
{{ Icon('avatar', classes='topbar__link-icon') }}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
{% if dismissable %}
|
||||
<button type='button' class='icon-link modal__dismiss' v-on:click='closeModal("{{name}}")'>
|
||||
{{ Icon('x') }}
|
||||
<span>Close</span>
|
||||
<span>
|
||||
{{ "components.modal.close" | translate }}
|
||||
</span>
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@@ -1,10 +1,14 @@
|
||||
{% from "components/tooltip.html" import Tooltip %}
|
||||
|
||||
<aside class='usa-banner'>
|
||||
<img src='{{ url_for("static", filename="img/us_flag_small.png") }}' alt='U.S. Flag' />
|
||||
<p>An official website of the United States government</p>
|
||||
<img src='{{ url_for("static", filename="img/us_flag_small.png") }}' alt='{{ "components.usa_header.flag_image_alt" | translate }}' />
|
||||
<p>{{ "components.usa_header.official_message" | translate }}
|
||||
|
||||
{{ Tooltip('<p><strong>The .mil means it’s official.</strong><br/>Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.</p><br/><p><strong>The site is secure.</strong><br>The <strong>https://</strong> ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.</p>',
|
||||
title='Here’s how you know') }}
|
||||
{{
|
||||
Tooltip(
|
||||
("components.usa_header.tooltip.message" | translate),
|
||||
title=("components.usa_header.tooltip.title" | translate)
|
||||
)
|
||||
}}
|
||||
|
||||
</aside>
|
||||
|
@@ -2,16 +2,20 @@
|
||||
|
||||
<footer class='app-footer'>
|
||||
<div class='app-footer__info'>
|
||||
<h5 class='app-footer__info__title'><a href="{{ url_for('atst.about') }}" class='icon-link' target='_blank' rel='noopener noreferrer'>Joint Enterprise Defense Infrastructure</a></h5>
|
||||
<h5 class='app-footer__info__title'>
|
||||
<a href="{{ url_for('atst.about') }}" class='icon-link' target='_blank' rel='noopener noreferrer'>
|
||||
{{ "footer.about_link_text" | translate }}
|
||||
</a>
|
||||
</h5>
|
||||
|
||||
<a href="{{ url_for('atst.helpdocs') }}" class='icon-link app-footer__info__link' target='_blank' rel='noopener noreferrer'>
|
||||
{{ Icon('help') }}
|
||||
<span>JEDI Cloud Help</span>
|
||||
<span>{{ "footer.jedi_help_link_text" | translate }}</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<dl class='app-footer__browser-support'>
|
||||
<dt>JEDI Cloud supported on these web browsers</dt>
|
||||
<dt>{{ "footer.browser_support" | translate }}</dt>
|
||||
<dd>Chrome</dd><dd>Firefox</dd><dd>Safari</dd><dd>Edge</dd><dd>IE11 on Windows 10</dd><dd>IE10 on Windows 7</dd>
|
||||
</dl>
|
||||
</footer>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{% from "components/text_input.html" import TextInput %}
|
||||
|
||||
{% set title_text = 'Edit {} project'.format(project.name) if project else 'Add a new project' %}
|
||||
{% set title_text = ('fragments.edit_project_form.existing_project_title' | translate({ "project_name": project.name })) if project else ('fragments.edit_project_form.new_project_title' | translate) %}
|
||||
|
||||
{{ form.csrf_token }}
|
||||
<div class="panel">
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<div class="panel__content">
|
||||
<p>
|
||||
AT-AT allows you to organize your workspace into multiple projects, each of which may have environments.
|
||||
{{ "fragments.edit_project_form.explain" | translate }}
|
||||
</p>
|
||||
{{ TextInput(form.name) }}
|
||||
{{ TextInput(form.description, paragraph=True) }}
|
||||
|
@@ -23,11 +23,20 @@
|
||||
{{ OptionsInput(form.service_branch) }}
|
||||
{{ OptionsInput(form.citizenship) }}
|
||||
{{ OptionsInput(form.designation) }}
|
||||
{{ DateInput(form.date_latest_training,tooltip="When was the last time you completed the IA training? <br> Information Assurance (IA) training is an important step in cyber awareness.",placeholder="MM / DD / YYYY", validation="date") }}
|
||||
{{
|
||||
DateInput(
|
||||
form.date_latest_training,
|
||||
tooltip=("fragments.edit_user_form.date_last_training_tooltip" | translate),
|
||||
placeholder="MM / DD / YYYY",
|
||||
validation="date"
|
||||
)
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='action-group'>
|
||||
<button class='usa-button usa-button-big' type='submit'>Save Details</button>
|
||||
<button class='usa-button usa-button-big' type='submit'>
|
||||
{{ "fragments.edit_user_form.save_details_button" | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
@@ -1,17 +1,17 @@
|
||||
{% from "components/icon.html" import Icon %}
|
||||
|
||||
<p>
|
||||
The CCPO will review and respond to your request in 3 business days. You’ll be notified via email or phone. Please note if your request is for over $1M of JEDI cloud resources it will require a manual review by the CCPO.
|
||||
{{ "fragments.pending_ccpo_acceptance_alert.paragraph_1" | translate }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
While your request is being reviewed, your next step is to create a Task Order (TO) associated with the JEDI Cloud. Please contact a Contracting Officer (KO), Contracting Officer Representative (COR), or a Financial Manager to help with this step.
|
||||
{{ "fragments.pending_ccpo_acceptance_alert.paragraph_2" | translate }}
|
||||
</p>
|
||||
|
||||
<div class='alert__actions'>
|
||||
<a href='/help' class='icon-link'>
|
||||
{{ Icon('help') }}
|
||||
Learn more about the JEDI Cloud Task Order and the Financial Verification process.
|
||||
{{ "fragments.pending_ccpo_acceptance_alert.learn_more_link_text" | translate }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<p>
|
||||
The CCPO will review and respond to your Financial Verification submission in 3 business days. You will be notified via email or phone.
|
||||
{{ "fragments.pending_ccpo_approval_modal.paragraph_1" | translate }}
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
Once the financial verification is approved you will be invited to create your JEDI Workspace and set-up your projects. Click here for more details.
|
||||
{{ "fragments.pending_ccpo_approval_modal.paragraph_2" | translate }}
|
||||
</p>
|
||||
|
@@ -1,19 +1,16 @@
|
||||
{% from "components/icon.html" import Icon %}
|
||||
|
||||
<p>
|
||||
The next step is to create a Task Order associated with JEDI Cloud.
|
||||
Please contact a Contracting Officer (KO), Contracting Officer
|
||||
Representative (COR), or a Financial Manager to help with this step.
|
||||
{{ "fragments.pending_financial_verification.paragraph_1" | translate }}
|
||||
</p>
|
||||
<p>
|
||||
Once the Task Order has been created, you will be asked to provide
|
||||
details about the task order in the Financial Verification step.
|
||||
{{ "fragments.pending_financial_verification.paragraph_2" | translate }}
|
||||
</p>
|
||||
|
||||
<div class='alert__actions'>
|
||||
<a href='/help' class='icon-link'>
|
||||
{{ Icon('help') }}
|
||||
Learn more about the JEDI Cloud Task Order and the Financial Verification process.
|
||||
{{ "fragments.pending_financial_verification.learn_more_link_text" | translate }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
{% extends "base_public.html" %}
|
||||
|
||||
{% block title %}Sign in | JEDI Cloud{% endblock %}
|
||||
{% block title %}{{ "login.title_tag" | translate }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
@@ -17,11 +17,15 @@
|
||||
{% include "fragments/flash.html" %}
|
||||
{% endwith %}
|
||||
|
||||
<h1 class="login-banner__heading">Access the JEDI Cloud</h1>
|
||||
<h1 class="login-banner__heading">{{ "login.h1_title" | translate }}</h1>
|
||||
|
||||
<img class="login-banner__logo" src="{{url_for('static', filename='img/ccpo-logo.svg')}}" alt="Cloud Computing Program Office Logo">
|
||||
<img class="login-banner__logo" src="{{url_for('static', filename='img/ccpo-logo.svg')}}" alt="{{ "login.ccpo_logo_alt_text" | translate }}">
|
||||
|
||||
<a class="usa-button usa-button-big login-banner__button" href='{{ redirect_url }}'><span>Sign in with CAC</span></a>
|
||||
<a class="usa-button usa-button-big login-banner__button" href='{{ redirect_url }}'>
|
||||
<span>
|
||||
{{ "login.login_button" | translate }}
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% with %}
|
||||
@@ -29,11 +33,11 @@
|
||||
{% include "fragments/flash.html" %}
|
||||
{% endwith %}
|
||||
|
||||
{{ Alert('Certificate Selection',
|
||||
message='When you are prompted to select a certificate, please select <strong>E-mail Certificate</strong> from the provided choices.',
|
||||
{{ Alert(("login.certificate_selection.title" | translate),
|
||||
message=("login.certificate_selection.message" | translate),
|
||||
actions=[
|
||||
{
|
||||
'label': 'Learn More',
|
||||
'label': ("login.certificate_selection.learn_more" | translate),
|
||||
'icon': 'help',
|
||||
'href': '/help'
|
||||
}
|
||||
|
@@ -5,7 +5,9 @@
|
||||
{% if not workspace %}
|
||||
<a href="{{ url_for('atst.home') }}" class="topbar__link topbar__link--home">
|
||||
{{ Icon('shield', classes='topbar__link-icon') }}
|
||||
<span class="topbar__link-label">JEDI Cloud</span>
|
||||
<span class="topbar__link-label">
|
||||
{{ "navigation.topbar.jedi_cloud_link_text" | translate }}
|
||||
</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ url_for('atst.home') }}" class="topbar__link topbar__link--shield" title="JEDI Cloud Home">
|
||||
@@ -22,13 +24,15 @@
|
||||
v-on:click='props.toggle'
|
||||
class="topbar__link topbar__workspace-menu__toggle"
|
||||
v-bind:class="{ 'topbar__workspace-menu__toggle--open': props.isVisible }">
|
||||
<span class="topbar__link-label">{{ ("Workspace " + workspace.name) }}</span>
|
||||
<span class="topbar__link-label">{{ "navigation.topbar.named_workspace" | translate({ "workspace": workspace.name }) }}</span>
|
||||
<template v-if='props.isVisible'>{{ Icon('caret_up', classes='topbar__link-icon') }}</template>
|
||||
<template v-else>{{ Icon('caret_down', classes='topbar__link-icon') }}</template>
|
||||
</button>
|
||||
|
||||
<div v-show='props.isVisible' class='topbar__workspace-menu__panel menu'>
|
||||
<h2 class='menu__heading'>Other Active Workspaces</h2>
|
||||
<h2 class='menu__heading'>
|
||||
{{ "navigation.topbar.other_active_workspaces" | translate }}
|
||||
</h2>
|
||||
{% if workspaces %}
|
||||
|
||||
<ul class='menu__list'>
|
||||
@@ -44,11 +48,15 @@
|
||||
|
||||
{% else %}
|
||||
|
||||
<p class='menu__message'>You have no other active JEDI workspaces.</p>
|
||||
<p class='menu__message'>
|
||||
{{ "navigation.topbar.no_other_active_workspaces" | translate }}
|
||||
</p>
|
||||
|
||||
{% endif %}
|
||||
|
||||
<a href="{{ url_for('requests.requests_form_new', screen=1) }}" class='menu__button usa-button'>Request a new JEDI Workspace</a>
|
||||
<a href="{{ url_for('requests.requests_form_new', screen=1) }}" class='menu__button usa-button'>
|
||||
{{ "navigation.topbar.request_workspace_link_text" | translate }}
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
@@ -60,7 +68,7 @@
|
||||
{{ Icon('avatar', classes='topbar__link-icon') }}
|
||||
</a>
|
||||
|
||||
<a href="{{ url_for('atst.logout') }}" class="topbar__link" title='Log out of JEDI Cloud'>
|
||||
<a href="{{ url_for('atst.logout') }}" class="topbar__link" title='{{ "navigation.topbar.logout_link_title" | translate }}'>
|
||||
{{ Icon('logout', classes='topbar__link-icon') }}
|
||||
</a>
|
||||
</div>
|
||||
|
@@ -3,12 +3,12 @@
|
||||
<nav class='sidenav workspace-navigation'>
|
||||
<ul>
|
||||
{{ SidenavItem(
|
||||
"Projects",
|
||||
("navigation.workspace_navigation.projects" | translate),
|
||||
href=url_for("workspaces.workspace_projects", workspace_id=workspace.id),
|
||||
active=request.url_rule.rule.startswith('/workspaces/<workspace_id>/projects'),
|
||||
subnav=None if not user_can(permissions.ADD_APPLICATION_IN_WORKSPACE) else [
|
||||
{
|
||||
"label": "Add New Project",
|
||||
"label": ("navigation.workspace_navigation.add_new_project_label" | translate),
|
||||
"href": url_for('workspaces.new_project', workspace_id=workspace.id),
|
||||
"active": g.matchesPath('\/workspaces\/[A-Za-z0-9-]*\/projects'),
|
||||
"icon": "plus"
|
||||
@@ -18,12 +18,12 @@
|
||||
|
||||
{% if user_can(permissions.VIEW_WORKSPACE_MEMBERS) %}
|
||||
{{ SidenavItem(
|
||||
"Members",
|
||||
("navigation.workspace_navigation.members" | translate),
|
||||
href=url_for("workspaces.workspace_members", workspace_id=workspace.id),
|
||||
active=request.url_rule.rule.startswith('/workspaces/<workspace_id>/members'),
|
||||
subnav=None if not user_can(permissions.ASSIGN_AND_UNASSIGN_ATAT_ROLE) else [
|
||||
{
|
||||
"label": "Add New Member",
|
||||
"label": ("navigation.workspace_navigation.add_new_member_label" | translate),
|
||||
"href": url_for("workspaces.new_member", workspace_id=workspace.id),
|
||||
"active": request.url_rule.rule.startswith('/workspaces/<workspace_id>/members/new'),
|
||||
"icon": "plus"
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
{% if user_can(permissions.VIEW_USAGE_DOLLARS) %}
|
||||
{{ SidenavItem(
|
||||
"Budget Report",
|
||||
("navigation.workspace_navigation.budget_report" | translate),
|
||||
href=url_for("workspaces.workspace_reports", workspace_id=workspace.id),
|
||||
active=request.url_rule.rule.startswith('/workspaces/<workspace_id>/reports')
|
||||
) }}
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
{% if user_can(permissions.EDIT_WORKSPACE_INFORMATION) %}
|
||||
{{ SidenavItem(
|
||||
"Workspace Settings",
|
||||
("navigation.workspace_navigation.workspace_settings" | translate),
|
||||
href=url_for("workspaces.workspace", workspace_id=workspace.id),
|
||||
active=request.url_rule.rule.startswith('/workspaces/<workspace_id>/edit'),
|
||||
subnav=None
|
||||
|
@@ -20,7 +20,7 @@
|
||||
|
||||
<div class="panel__heading">
|
||||
<h1>{% block heading %}{% endblock %}</h1>
|
||||
<div class="subtitle h2">New Request</div>
|
||||
<div class="subtitle h2">{{ "requests._new.new_request" | translate }}</div>
|
||||
</div>
|
||||
|
||||
<div class="panel__content">
|
||||
@@ -37,7 +37,7 @@
|
||||
{% block next %}
|
||||
|
||||
<div class='action-group'>
|
||||
<input type='submit' class='usa-button usa-button-primary' value='Save & Continue' />
|
||||
<input type='submit' class='usa-button usa-button-primary' value='{{ "requests._new.save_and_continue" | translate }}' />
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
@@ -12,7 +12,8 @@
|
||||
|
||||
<section class='panel'>
|
||||
<header class='panel__heading panel__heading--divider request-approval__heading'>
|
||||
<h1 class='h2'>Request: {{ jedi_request.displayname }}
|
||||
<h1 class='h2'>
|
||||
{{ "requests.approval.request_title" | translate({ "displayname": jedi_request.displayname }) }}
|
||||
</h1>
|
||||
<span class='label label--info'>{{ current_status }}</span>
|
||||
</header>
|
||||
@@ -31,7 +32,7 @@
|
||||
<form method="POST" action="{{ url_for('requests.create_internal_comment', request_id=jedi_request.id) }}">
|
||||
<div class='panel'>
|
||||
<div class='panel__heading panel__heading--divider'>
|
||||
<h2>CCPO Internal Comments</h2>
|
||||
<h2>{{ "requests.approval.ccpo_internal_comments" | translate }}</h2>
|
||||
</div>
|
||||
|
||||
<div class='comment-log'>
|
||||
@@ -54,14 +55,18 @@
|
||||
</ol>
|
||||
{% else %}
|
||||
<div class='panel__content'>
|
||||
<p class='h4'>No CCPO comments have been recorded yet.</p>
|
||||
<p class='h4'>
|
||||
{{ "requests.approval.no_ccpo_comments" | translate }}
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
<div class='panel__heading internal-notes__add-comment__heading'>
|
||||
<h3 class='h3'>Add a comment</h2>
|
||||
<h3 class='h3'>
|
||||
{{ "requests.approval.add_comment" | translate }}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class='panel__content'>
|
||||
@@ -70,7 +75,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class='action-group action-group--tight'>
|
||||
<button class='usa-button' type="submit">Save Notes</button>
|
||||
<button class='usa-button' type="submit">
|
||||
{{ "requests.approval.save_notes" | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@@ -86,7 +93,9 @@
|
||||
<div class='panel'>
|
||||
|
||||
<header class='panel__heading panel__heading--divider'>
|
||||
<h2 class='request-approval__columns__heading'>CCPO Review Activity</h2>
|
||||
<h2 class='request-approval__columns__heading'>
|
||||
{{ "requests.approval.ccpo_review_activity" | translate }}
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
<div class='approval-log'>
|
||||
@@ -104,7 +113,9 @@
|
||||
<div class='approval-log__behalfs'>
|
||||
{% if review.lname_mao %}
|
||||
<div class='approval-log__behalf'>
|
||||
<h3 class='approval-log__log-item__header'>Mission Owner approval on behalf of:</h3>
|
||||
<h3 class='approval-log__log-item__header'>
|
||||
{{ "requests.approval.mission_owner_approval_on_behalf_of" | translate }}
|
||||
</h3>
|
||||
<span>{{ review.full_name_mao }}</span>
|
||||
<span>{{ review.email_mao }}</span>
|
||||
<span>
|
||||
@@ -118,7 +129,9 @@
|
||||
|
||||
{% if review.lname_ccpo %}
|
||||
<div class='approval-log__behalf'>
|
||||
<h3 class='approval-log__log-item__header'>CCPO approval on behalf of:</h3>
|
||||
<h3 class='approval-log__log-item__header'>
|
||||
{{ "requests.approval.ccpo_approval_on_behalf_of" | translate }}
|
||||
</h3>
|
||||
<span>{{ review.full_name_ccpo }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -134,14 +147,18 @@
|
||||
</ol>
|
||||
{% else %}
|
||||
<div class='panel__content'>
|
||||
<p class='h4'>No CCPO approvals or request changes have been recorded yet.</p>
|
||||
<p class='h4'>
|
||||
{{ "requests.approval.no_ccpo_approval_request_changes" | translate }}
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if jedi_request.is_pending_ccpo_action %}
|
||||
<div class='panel__heading request-approval__review__heading'>
|
||||
<h3 class='h3'>Review this Request</h2>
|
||||
<h3 class='h3'>
|
||||
{{ "requests.approval.review_request" | translate }}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class='panel__content'>
|
||||
@@ -149,10 +166,14 @@
|
||||
<div class='usa-input'>
|
||||
<fieldset class='usa-input__choices usa-input__choices--inline'>
|
||||
<input v-on:change='setReview' type='radio' name='review' id='review-approving' value='approving' {{ 'checked' if initialState == 'approving' }}/>
|
||||
<label for='review-approving'>Ready for approval</label>
|
||||
<label for='review-approving'>
|
||||
{{ "requests.approval.ready_for_approval" | translate }}
|
||||
</label>
|
||||
|
||||
<input v-on:change='setReview' type='radio' name='review' id='review-denying' value='denying'/>
|
||||
<label for='review-denying'>Request revisions</label>
|
||||
<label for='review-denying'>
|
||||
{{ "requests.approval.request_revisions" | translate }}
|
||||
</label>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
@@ -161,8 +182,8 @@
|
||||
<div v-if='approving' key='approving' v-cloak>
|
||||
{{ TextInput(
|
||||
review_form.comment,
|
||||
label='Approval comments or notes',
|
||||
description='Provide any comments or notes regarding the approval of this request. <strong>This message will be shared with the person making the JEDI request.</strong>',
|
||||
label=("requests.approval.approve_comments_or_notes_label" | translate),
|
||||
description=("requests.approval.approve_comments_or_notes_description" | translate),
|
||||
paragraph=True,
|
||||
noMaxWidth=True
|
||||
) }}
|
||||
@@ -171,7 +192,7 @@
|
||||
<div v-else key='denying' v-cloak>
|
||||
{{ TextInput(
|
||||
review_form.comment,
|
||||
label='Revision instructions or notes',
|
||||
label=("requests.approval.revision_instructions_or_notes_label" | translate),
|
||||
paragraph=True,
|
||||
noMaxWidth=True
|
||||
) }}
|
||||
@@ -180,12 +201,20 @@
|
||||
|
||||
<div v-if='approving' class='form__sub-fields' v-cloak>
|
||||
|
||||
<h3>Authorizing Officials <span class='subtitle'>(optional)</span></h3>
|
||||
<p>Provide the name of the key officials for both parties that have authorized this request to move forward. <strong>This section is not visible to the person making the request. It is only viewable by CCPO staff.</strong></p>
|
||||
<h3>
|
||||
{{ "requests.approval.authorizing_officials_title" | translate }}
|
||||
<span class='subtitle'>(optional)</span>
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
{{ "requests.approval.authorizing_officials_paragraph" | translate }}
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<h4>Mission Authorizing Official</h4>
|
||||
<h4>
|
||||
{{ "requests.approval.mission_authorizing_official_title" | translate }}
|
||||
</h4>
|
||||
|
||||
<div class='form-row'>
|
||||
<div class='form-col form-col--half'>
|
||||
@@ -202,7 +231,9 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<h4>CCPO Authorizing Official</h4>
|
||||
<h4>
|
||||
{{ "requests.approval.ccpo_authorizing_official_title" | translate }}
|
||||
</h4>
|
||||
|
||||
<div class='form-row'>
|
||||
<div class='form-col form-col--half'>
|
||||
@@ -238,4 +269,3 @@
|
||||
</article>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
@@ -12,25 +12,25 @@
|
||||
{% include "fragments/flash.html" %}
|
||||
|
||||
{% if saved_draft %}
|
||||
{% call Alert('Draft saved', level='success') %}
|
||||
{% call Alert(("requests.financial_verification.draft_saved" | translate), level='success') %}
|
||||
{% endcall %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if jedi_request.is_pending_financial_verification and not f.errors and not extended %}
|
||||
{{ Alert('Pending Financial Verification', fragment="fragments/pending_financial_verification.html") }}
|
||||
{{ Alert(("requests.financial_verification.pending_financial_verification" | translate), fragment="fragments/pending_financial_verification.html") }}
|
||||
{% endif %}
|
||||
|
||||
<financial inline-template v-bind:initial-data='{{ f.data|mixedContentToJson }}'>
|
||||
<div class="col">
|
||||
{% if extended %}
|
||||
{{ Alert('Manually enter Task Order information',
|
||||
message="Additional fields are displayed below, where you can manually enter financial information as documented in your Task Order.",
|
||||
{{ Alert(("requests.financial_verification.manually_enter_task_information_label" | translate),
|
||||
message=("requests.financial_verification.manually_enter_task_information_description" | translate),
|
||||
level='warning',
|
||||
actions=[
|
||||
{
|
||||
'href': url_for('atst.helpdocs'),
|
||||
'label': 'Learn more about the JEDI Cloud Task Order and the Financial Verification process.',
|
||||
'label': ("requests.financial_verification.manually_enter_task_information_help_label" | translate),
|
||||
'icon': 'help'
|
||||
}
|
||||
]
|
||||
@@ -39,9 +39,12 @@
|
||||
|
||||
{% if f.is_missing_task_order_number %}
|
||||
{% set extended_url = url_for('requests.financial_verification', request_id=jedi_request.id, extended=True) %}
|
||||
{% call Alert('Task Order not found in EDA', level='warning') %}
|
||||
We could not find your Task Order in our system of record, EDA. Please confirm that you have entered it correctly.<br>
|
||||
<a class="usa-button" href="{{ extended_url }}">Enter Task Order information manually</a>
|
||||
{% call Alert(("requests.financial_verification.task_order_not_found_eda_label"), level='warning') %}
|
||||
{{ "requsts.financial_verification.task_order_not_found_eda_description" | translate }}
|
||||
<br>
|
||||
<a class="usa-button" href="{{ extended_url }}">
|
||||
{{ "requests.financial_verification.enter_task_order_manually_link_text" | translate }}
|
||||
</a>
|
||||
{% endcall %}
|
||||
{% endif %}
|
||||
|
||||
@@ -52,7 +55,7 @@
|
||||
{% autoescape false %}
|
||||
|
||||
{% if f.errors and not f.is_only_missing_task_order_number %}
|
||||
{{ Alert('There were some errors',
|
||||
{{ Alert(("requests.financial_verification.some_errors_label" | translate),
|
||||
message="<p>Please see below.</p>",
|
||||
level='error'
|
||||
) }}
|
||||
@@ -61,13 +64,19 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="panel__heading">
|
||||
<h1>Financial Verification</h1>
|
||||
<div class="subtitle" id="financial-verification"><h2>Request: {{ jedi_request.displayname }}</h2></div>
|
||||
<h1>{{ "requests.financial_verification.financial_verification_title" | translate }}</h1>
|
||||
<div class="subtitle" id="financial-verification">
|
||||
<h2>
|
||||
{{ "requests.financial_verification.request_title" | translate({ "displayname" : jedi_request.displayname }) }}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel__content">
|
||||
|
||||
<p>In order to get you access to the JEDI Cloud, we will need you to enter the details below that will help us verify and account for your Task Order.</p>
|
||||
<p>
|
||||
{{ "requests.financial_verification.permissions_paragraph" | translate }}
|
||||
</p>
|
||||
|
||||
{% if extended %}
|
||||
<fieldset class="form__sub-fields form__sub-fields--warning">
|
||||
@@ -77,7 +86,14 @@
|
||||
{{ TextInput(f.legacy_task_order.funding_type_other) }}
|
||||
</template>
|
||||
|
||||
{{ DateInput(f.legacy_task_order.expiration_date, placeholder='MM / DD / YYYY', validation='date', tooltip='Please enter the expiration date for the task order only and do not include options that you may choose to exercise in the future.') }}
|
||||
{{
|
||||
DateInput(
|
||||
f.legacy_task_order.expiration_date,
|
||||
placeholder='MM / DD / YYYY',
|
||||
validation='date',
|
||||
tooltip=("requests.financial_verification.expiration_date_placeholder" | translate)
|
||||
)
|
||||
}}
|
||||
|
||||
{{ TextInput(
|
||||
f.legacy_task_order.clin_0001,
|
||||
@@ -130,14 +146,14 @@
|
||||
{{ TextInput(
|
||||
f.legacy_task_order.number,
|
||||
placeholder="e.g.: 1234567899C0001",
|
||||
tooltip="A Contracting Officer will likely be the best source for this number.",
|
||||
tooltip=("requests.financial_verification.number_placeholder" | translate),
|
||||
validation="requiredField"
|
||||
) }}
|
||||
|
||||
{{ TextInput(f.request.uii_ids,
|
||||
paragraph=True,
|
||||
placeholder="examples: \nDI 0CVA5786950 \nUN1945326361234786950",
|
||||
tooltip="A Unique Item Identifer is a unique code that helps the Department of Defense track and report on where and how digital assets are stored. <br>Not all applications have an existing UII number assigned."
|
||||
tooltip=("requests.financial_verification.uui_ids_placeholder" | translate)
|
||||
) }}
|
||||
|
||||
{{ TextInput(f.request.pe_id,
|
||||
@@ -151,7 +167,9 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<h3>Contracting Officer (KO) Information</h3>
|
||||
<h3>
|
||||
{{ "requests.financial_verification.contracting_officer_information_title" | translate }}
|
||||
</h3>
|
||||
|
||||
<div class='form-row'>
|
||||
<div class='form-col form-col--half '>{{ TextInput(f.request.fname_co, validation="requiredField") }}</div>
|
||||
@@ -165,7 +183,9 @@
|
||||
|
||||
<hr />
|
||||
|
||||
<h3>Contracting Officer Representative (COR) Information</h3>
|
||||
<h3>
|
||||
{{ "requests.financial_verification.contracting_officer_representative_information_title" | translate }}
|
||||
</h3>
|
||||
<div class='form-row'>
|
||||
<div class='form-col form-col--half '>{{ TextInput(f.request.fname_cor, validation="requiredField") }}</div>
|
||||
<div class='form-col form-col--half '>{{ TextInput(f.request.lname_cor, validation="requiredField") }}</div>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
{% block content %}
|
||||
|
||||
{% call Modal(name='pendingFinancialVerification', dismissable=True) %}
|
||||
<h1>Request submitted!</h1>
|
||||
<h1>{{ "requests.index.request_submitted_title" | translate }}</h1>
|
||||
|
||||
{% include 'fragments/pending_financial_verification.html' %}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
{% endcall %}
|
||||
|
||||
{% call Modal(name='pendingCCPOApproval', dismissable=True) %}
|
||||
<h1>Financial Verification submitted!</h1>
|
||||
<h1>{{ "requests.index.financial_verification_submitted_title" | translate }}</h1>
|
||||
|
||||
{% include 'fragments/pending_ccpo_approval_modal.html' %}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
{% endcall %}
|
||||
|
||||
{% call Modal(name='pendingCCPOAcceptance', dismissable=True) %}
|
||||
<h1>Request submitted!</h1>
|
||||
<h1>{{ "requests.index.request_submitted_title" | translate }}</h1>
|
||||
|
||||
{% include 'fragments/pending_ccpo_acceptance_alert.html' %}
|
||||
|
||||
@@ -50,9 +50,9 @@
|
||||
{% if not requests %}
|
||||
|
||||
{{ EmptyState(
|
||||
'You currently have no JEDI Cloud workspaces.',
|
||||
sub_message='A JEDI Cloud Workspace is where you manage your projects and control user access to those projects.',
|
||||
action_label='Create a new JEDI Cloud Request',
|
||||
("requests.index.no_workspaces_label" | translate),
|
||||
sub_message=("requests.index.no_workspaces_sub_message" | translate),
|
||||
action_label=("requests.index.no_workspaces_action_label" | translate),
|
||||
action_href=url_for('requests.requests_form_new', screen=1),
|
||||
icon='document'
|
||||
) }}
|
||||
@@ -62,15 +62,15 @@
|
||||
<div class="row kpi">
|
||||
<div class="kpi__item col col--grow">
|
||||
<div class="kpi__item__value">{{ kpi_inprogress }}</div>
|
||||
<div class="kpi__item__description">Requests in progress</div>
|
||||
<div class="kpi__item__description">{{ "requests.index.requests_in_progress" | translate }}</div>
|
||||
</div>
|
||||
<div class="kpi__item col col--grow">
|
||||
<div class="kpi__item__value">{{ kpi_pending }}</div>
|
||||
<div class="kpi__item__description">Pending CCPO Action</div>
|
||||
<div class="kpi__item__description">{{ "requests.index.pending_ccpo_action" | translate }}</div>
|
||||
</div>
|
||||
<div class="kpi__item col col--grow">
|
||||
<div class="kpi__item__value">{{ kpi_completed }}</div>
|
||||
<div class="kpi__item__description">Approved Requests</div>
|
||||
<div class="kpi__item__description">{{ "requests.index.approved_requests" | translate }}</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -80,28 +80,28 @@
|
||||
{% if extended_view %}
|
||||
<form @submit.prevent class='search-bar'>
|
||||
<div class='usa-input search-input'>
|
||||
<label for='requests-search'>Search requests by name</label>
|
||||
<label for='requests-search'>{{ "requests.index.search_by_name" | translate }}</label>
|
||||
<input v-model='searchValue' type='search' id='requests-search' name='requests-search' placeholder="Search by name"/>
|
||||
<button>
|
||||
<span class="hide">Search</span>
|
||||
<span class="hide">{{ "requests.index.search_button_text" | translate }}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="search-bar__filters">
|
||||
<div class='usa-input'>
|
||||
<label for='filter-status'>Filter requests by status</label>
|
||||
<label for='filter-status'>{{ "requests.index.filter_requests_by_status_label" | translate }}</label>
|
||||
<select v-model="statusValue" id="filter-status" name="filter-status">
|
||||
<option value="" selected disabled>Filter by status</option>
|
||||
<option value="">All</option>
|
||||
<option value="" selected disabled>{{ "requests.index.filter_by_status" | translate }}</option>
|
||||
<option value="">{{ "requests.index.all_filter" | translate }}</option>
|
||||
<option v-for="status in statuses" :value="status">!{ status }</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class='usa-input'>
|
||||
<label for='filter-dod-component'>Filter requests by DOD component</label>
|
||||
<label for='filter-dod-component'>{{ "requests.index.filter_requests_by_dod_component" | translate }}</label>
|
||||
<select v-model="dodComponentValue" id="filter-dod-component" name="filter-dod-component">
|
||||
<option value="" selected disabled>Filter by DOD Component</option>
|
||||
<option value="">All</option>
|
||||
<option value="" selected disabled>{{ "requests.index.filter_by_dod_component" | translate }}</option>
|
||||
<option value="">{{ "requests.index.all_filter" | translate }}</option>
|
||||
<option v-for="dodComponent in dodComponents" :value="dodComponent">!{ dodComponent }</option>
|
||||
</select>
|
||||
</div>
|
||||
@@ -128,7 +128,9 @@
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<a class='icon-link icon-link--large' :href="r.edit_link">!{ r.name }</a>
|
||||
<span v-if="r.action_required" class="label label--info">Action Required</span>
|
||||
<span v-if="r.action_required" class="label label--info">
|
||||
{{ "requests.index.action_required" | translate }}
|
||||
</span>
|
||||
</th>
|
||||
<td>
|
||||
<local-datetime
|
||||
@@ -159,10 +161,10 @@
|
||||
</table>
|
||||
<div v-else>
|
||||
{{ EmptyState(
|
||||
'No requests found.',
|
||||
("requests.index.no_requests_found" | translate),
|
||||
action_label=None,
|
||||
action_href=None,
|
||||
sub_message='Please try a different search.',
|
||||
sub_message=("requests.index.try_different_search" | translate),
|
||||
icon=None
|
||||
) }}
|
||||
</div>
|
||||
@@ -174,4 +176,3 @@
|
||||
</requests-list>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<ul>
|
||||
<li class="progress-menu__item progress-menu__item--complete">
|
||||
<a href="{{ pending_url }}">
|
||||
Request Information
|
||||
{{ "requests.review_menu.request_information_link_text" | translate }}
|
||||
</a>
|
||||
</li>
|
||||
{% if g.matchesPath(financial_url) %}
|
||||
@@ -14,7 +14,7 @@
|
||||
{% endif %}
|
||||
<li class="progress-menu__item progress-menu__item--{{ financial_status }}">
|
||||
<a href="{{ financial_url }}">
|
||||
Financial Verification Information
|
||||
{{ "requests.review_menu.financial_verification_information_link_text" | translate }}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
@@ -15,46 +15,86 @@
|
||||
<details-of-use inline-template v-bind:initial-data='{{ f.data|tojson }}'>
|
||||
<div>
|
||||
|
||||
<p>We’d like to know a little about how you plan to use JEDI Cloud services to process your request. Please answer the following questions to the best of your ability. Note that the CCPO does not directly help with migrating systems to JEDI Cloud. These questions are for learning about your cloud readiness and financial usage of the JEDI Cloud; your estimates will not be used for any department level reporting.</p>
|
||||
<p><em>All fields are required, unless specified optional.</em></p>
|
||||
{{ "requests.screen-1.form_instructions" | translate }}
|
||||
|
||||
<h2>General</h2>
|
||||
<h2>{{ "requests.screen-1.general_title_text"| translate }}</h2>
|
||||
{{ OptionsInput(f.dod_component) }}
|
||||
{{ TextInput(f.jedi_usage, paragraph=True, placeholder="Briefly describe how you are expecting to use the JEDI Cloud. e.g. We are migrating XYZ application to the cloud so that...") }}
|
||||
{{
|
||||
TextInput(
|
||||
f.jedi_usage,
|
||||
paragraph=True,
|
||||
placeholder=("requests.screen-1.jedi_usage_placeholder" | translate)
|
||||
)
|
||||
}}
|
||||
|
||||
<h2>Cloud Readiness</h2>
|
||||
{{ TextInput(f.num_software_systems,validation="integer",tooltip="A software system can be any code that you plan to host on cloud infrastructure. For example, it could be a custom-developed web application, or a large ERP system.",placeholder="0") }}
|
||||
{{ OptionsInput(f.jedi_migration, tooltip="Cloud migration is the process of moving data, applications or other business elements from an organization\\'s onsite computers/data centers to the cloud, or moving them from one cloud environment to another.") }}
|
||||
<h2>{{ "requests.screen-1.cloud_readiness_title_text" | translate }}</h2>
|
||||
{{
|
||||
TextInput(
|
||||
f.num_software_systems,
|
||||
validation="integer",
|
||||
tooltip=("requests.screen-1.num_software_systems_tooltip" | translate),
|
||||
placeholder="0"
|
||||
)
|
||||
}}
|
||||
{{
|
||||
OptionsInput(
|
||||
f.jedi_migration,
|
||||
tooltip=("requests.screen-1.jedi_migration_tooltip" | translate)
|
||||
)
|
||||
}}
|
||||
|
||||
<transition name='slide'>
|
||||
<template v-if="jediMigrationOptionSelected">
|
||||
<fieldset class='form__sub-fields' v-if='isJediMigration' v-cloak>
|
||||
<legend class='usa-sr-only'>Questions related to JEDI Cloud migration</legend>
|
||||
{{ OptionsInput(f.rationalization_software_systems, tooltip="Rationalization is the DoD process to determine whether the application should move to the cloud.") }}
|
||||
<legend class='usa-sr-only'>
|
||||
{{ "requests.screen-1.questions_title_text" | translate }}
|
||||
</legend>
|
||||
{{
|
||||
OptionsInput(
|
||||
f.rationalization_software_systems,
|
||||
tooltip=("requests.screen-1.rationalization_software_systems_tooltip" | translate)
|
||||
)
|
||||
}}
|
||||
{{ OptionsInput(f.technical_support_team) }}
|
||||
<transition name='slide'>
|
||||
<template v-if="hasTechnicalSupportTeam">
|
||||
{{ OptionsInput(f.organization_providing_assistance) }}
|
||||
</template>
|
||||
</transition>
|
||||
{{ OptionsInput(f.engineering_assessment, tooltip="An engineering assessment is an evaluation to convert your application architecture from on-premises to using the commercial cloud") }}
|
||||
{{ OptionsInput(
|
||||
f.engineering_assessment,
|
||||
tooltip=("requests.screen-1.engineering_assessment_tooltip" | translate)
|
||||
)
|
||||
}}
|
||||
{{ OptionsInput(f.data_transfers) }}
|
||||
{{ OptionsInput(f.expected_completion_date) }}
|
||||
</fieldset>
|
||||
|
||||
<template v-if='!isJediMigration' v-cloak>
|
||||
{{ OptionsInput(f.cloud_native, tooltip="Cloud native is architecting and designing your application to use all the benefits of the commercial cloud. Specifically, designing applications so that they are decoupled from a physical resource.") }}
|
||||
{{
|
||||
OptionsInput(
|
||||
f.cloud_native,
|
||||
tooltip=("requests.screen-1.cloud_native_tooltip" | translate)
|
||||
)
|
||||
}}
|
||||
</template>
|
||||
</template>
|
||||
</transition>
|
||||
|
||||
<h2>Financial Usage</h2>
|
||||
{{ TextInput(f.estimated_monthly_spend, tooltip="Refer to financial verification step help docs", validation="dollars", placeholder="$0") }}
|
||||
<h2>{{ "requests.screen-1.financial_usage_title" | translate }}</h2>
|
||||
{{
|
||||
TextInput(
|
||||
f.estimated_monthly_spend,
|
||||
tooltip=("requests.screen-1.estimated_monthly_spend_tooltip" | translate),
|
||||
validation="dollars",
|
||||
placeholder="$0"
|
||||
)
|
||||
}}
|
||||
|
||||
<div class='alert alert-info'>
|
||||
<div class='alert__content'>
|
||||
<div class='alert__message'>
|
||||
<p>So this means you are spending approximately <span class="label label--info">!{ annualSpendStr }</span> annually</p>
|
||||
{{ "requests.screen-1.approximate_annual_spend_paragraph" | translate }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,15 +102,38 @@
|
||||
<transition name='slide'>
|
||||
<template v-if="annualSpend > {{ annual_spend_threshold }}">
|
||||
<fieldset class='form__sub-fields'>
|
||||
<h3>Please provide additional details regarding your planned usage.</h3>
|
||||
<h3>
|
||||
{{ "requests.screen-1.additional_plan_details_title" | translate }}
|
||||
</h3>
|
||||
{{ TextInput(f.number_user_sessions, validation='integer', placeholder="0") }}
|
||||
{{ TextInput(f.average_daily_traffic, tooltip="Requests are the client-to-server network traffic that is being transferred to your systems",validation="integer", placeholder="0") }}
|
||||
{{ TextInput(f.average_daily_traffic_gb, tooltip="GB uploaded is the gigabyte amount of data traffic that is being transferred to your systems",validation="gigabytes", placeholder="0GB") }}
|
||||
{{
|
||||
TextInput(
|
||||
f.average_daily_traffic,
|
||||
tooltip=("requests.screen-1.average_daily_traffic_tooltip" | translate),
|
||||
validation="integer",
|
||||
placeholder="0"
|
||||
)
|
||||
}}
|
||||
{{
|
||||
TextInput(
|
||||
f.average_daily_traffic_gb,
|
||||
tooltip=("requests.screen-1.average_daily_traffic_gb_tooltip" | translate),
|
||||
validation="gigabytes",
|
||||
placeholder="0GB"
|
||||
)
|
||||
}}
|
||||
</fieldset>
|
||||
</template>
|
||||
</transition>
|
||||
|
||||
{{ TextInput(f.dollar_value, validation='dollars', placeholder='$0', tooltip='You may specify a different Total Spend amount to cover other JEDI Cloud services that the JEDI Cloud cost calculator was not able to estimate. Examples may include support packages from the cloud service provider.') }}
|
||||
{{
|
||||
TextInput(
|
||||
f.dollar_value,
|
||||
validation='dollars',
|
||||
placeholder='$0',
|
||||
tooltip=("requests.screen-1.dollar_value_tooltip" | translate)
|
||||
)
|
||||
}}
|
||||
{{ DateInput(f.start_date, placeholder='MM / DD / YYYY', validation='date') }}
|
||||
{{ TextInput(f.name, placeholder='Request Name', validation='workspaceName') }}
|
||||
|
||||
|
Reference in New Issue
Block a user