Merge pull request #503 from dod-ccpo/spike-new-workflow

Task Order Form
This commit is contained in:
dandds
2018-12-20 10:13:33 -05:00
committed by GitHub
31 changed files with 1088 additions and 57 deletions

View File

@@ -0,0 +1,23 @@
{% from "components/text_input.html" import TextInput %}
{% macro UserInfo(first_name, last_name, email, dod_id) -%}
<div class='form-row'>
<div class='form-col form-col--half'>
{{ TextInput(first_name) }}
</div>
<div class='form-col form-col--half'>
{{ TextInput(last_name) }}
</div>
</div>
<div class='form-row'>
<div class='form-col form-col--half'>
{{ TextInput(email, placeholder='name@mail.mil') }}
</div>
<div class='form-col form-col--half'>
{{ TextInput(dod_id, placeholder='1234567890') }}
</div>
</div>
{% endmacro %}

View File

@@ -11,6 +11,12 @@
]
) }}
{{ SidenavItem("New Task Order",
href=url_for("task_orders.new", screen=1),
icon="plus",
active=g.matchesPath('/task_orders/new'),
) }}
{% if g.current_user.has_workspaces %}
{{ SidenavItem("Workspaces", href="/workspaces", icon="cloud", active=g.matchesPath('/workspaces')) }}
{% endif %}

View File

@@ -0,0 +1,49 @@
{% extends "base.html" %}
{% block content %}
<div class="col">
{% include 'task_orders/new/menu.html' %}
{% include "fragments/flash.html" %}
{% block form_action %}
{% if task_order_id %}
<form method='POST' action="{{ url_for('task_orders.new', screen=current, task_order_id=task_order_id) }}" autocomplete="off">
{% else %}
<form method='POST' action="{{ url_for('task_orders.update', screen=current) }}" autocomplete="off">
{% endif %}
{% endblock %}
<div class="panel">
<div class="panel__heading">
<div class="subtitle h2">Task Order Builder</div>
<h1>{% block heading %}{% endblock %}</h1>
</div>
<div class="panel__content">
{{ form.csrf_token }}
{% block form %}
form goes here
{% endblock %}
</div>
</div>
{% block next %}
<div class='action-group'>
<input type='submit' class='usa-button usa-button-primary' value='Save & Continue' />
</div>
{% endblock %}
</form>
</div>
{% endblock %}

View File

@@ -0,0 +1,19 @@
<div class='form-row'>
<div class='form-col form-col--half'>
{{ TextInput(first_name) }}
</div>
<div class='form-col form-col--half'>
{{ TextInput(last_name) }}
</div>
</div>
<div class='form-row'>
<div class='form-col form-col--half'>
{{ TextInput(email, placeholder='name@mail.mil') }}
</div>
<div class='form-col form-col--half'>
{{ TextInput(dod_id, placeholder='1234567890') }}
</div>
</div>

View File

@@ -0,0 +1,51 @@
{% extends 'task_orders/_new.html' %}
{% from "components/text_input.html" import TextInput %}
{% from "components/options_input.html" import OptionsInput %}
{% from "components/date_input.html" import DateInput %}
{% block heading %}
What You're Building
{% endblock %}
{% block form %}
{% include "fragments/flash.html" %}
<h3>Basic Information</h3>
{{ TextInput(form.portfolio_name, placeholder="The name of your office or organization") }}
{{ TextInput(form.scope, paragraph=True) }}
<p>
<i>
Not sure how to describe your scope? <a href="#">Read some Sample Scopes</a> to
get an idea of what is appropriate.
</i>
</p>
{{ OptionsInput(form.defense_component) }}
<hr>
<h3>About Your Project</h3>
{{ OptionsInput(form.app_migration) }}
{{ OptionsInput(form.native_apps) }}
{{ OptionsInput(form.complexity) }}
{{ TextInput(form.complexity_other) }}
<hr>
<h3>About Your Team</h3>
{{ OptionsInput(form.dev_team) }}
{{ TextInput(form.dev_team_other) }}
{{ OptionsInput(form.team_experience) }}
<hr>
<h3>Market Research</h3>
<p>
The JEDI Cloud Computing Program Office (CCPO) has completed the market
research requirement for all related task orders. The Department of Defense CIO
has approved this research. <a href="#">View JEDI Cloud Market Research</a>
</p>
{% endblock %}

View File

@@ -0,0 +1,79 @@
{% extends 'task_orders/_new.html' %}
{% from "components/text_input.html" import TextInput %}
{% from "components/options_input.html" import OptionsInput %}
{% from "components/date_input.html" import DateInput %}
{% block heading %}
Funding
{% endblock %}
{% block form %}
{% include "fragments/flash.html" %}
<!-- Get Funding Section -->
<h3>Period of Performance</h3>
<p>Choose the dates your task order will cover.</p>
<p>
Because your funds will be lost if you dont use them, we strongly recommend
submitting small, short-duration task orders, usually a three month period.
Well notify you when your period of performance is nearing the end so you can
request your next set of funds with a new task order.
</p>
{{ DateInput(form.start_date, placeholder='MM / DD / YYYY', validation='date') }}
{{ DateInput(form.end_date, placeholder='MM / DD / YYYY', validation='date') }}
<hr>
<h3>Cloud Usage Estimate</h3>
<p>
Calculate how much your cloud usage will cost. A technical representative
should help you complete this calculation.
<a href="{{ url_for('atst.jedi_csp_calculator') }}">
Cloud Service Provider's estimate calculator
</a>
</p>
<h4>Upload a copy of your CSP Cost Estimate Research</h4>
<p>
Upload your anticipated cloud usage from the CSP tool linked above. PDFs and
screengrabs of the tool are sufficient.
</p>
<p>
This is only an estimation tool to help you make and informed evaluation of
what you expect to use. While you're tied to the dollar amount you specify in
your task order, you're not obligated by the resources you indicate in the
calculator.
</p>
<input type="file">
<hr>
<h3>Cloud Usage Calculations</h3>
<p>
Enter the results of your cloud usage calculations. These will correspond with
your task order's period of performance.
</p>
<h4>Cloud Offerings</h4>
<p>
Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) offerings
</p>
{{ TextInput(form.clin_01, validation='dollars') }}
{{ TextInput(form.clin_02, validation='dollars') }}
<h4>Cloud Support and Assistance</h4>
<p>
Technical guidance from the cloud service provider, including architecture,
configuration of IaaS and PaaS, integration, troubleshooting assistance, and
other services.
</p>
{{ TextInput(form.clin_03, validation='dollars', tooltip='The cloud support and assistance packages cannot be used as a primary development resource.') }}
{{ TextInput(form.clin_04, validation='dollars', tooltip='The cloud support and assistance packages cannot be used as a primary development resource.') }}
<p>Total Task Order Value</p>
{% endblock %}

View File

@@ -0,0 +1,21 @@
<div class="progress-menu progress-menu--four">
<ul>
{% for s in screens %}
{% if s.complete %}
{% set step_indicator = 'complete' %}
{% elif loop.index == current %}
{% set step_indicator = 'active' %}
{% else %}
{% set step_indicator = 'incomplete' %}
{% endif %}
<li class="progress-menu__item progress-menu__item--{{ step_indicator }}">
<a href="{{ url_for('task_orders.new', screen=loop.index, task_order_id=task_order_id) }}"
{% if g.matchesPath(url_for('task_orders.new', screen=loop.index)) %}class="active"{% endif %}
>
{{ s['title'] }}
</a>
</li>
{% endfor %}
</ul>
</div>

View File

@@ -0,0 +1,24 @@
{% extends 'task_orders/_new.html' %}
{% from "components/user_info.html" import UserInfo %}
{% block heading %}
Oversight
{% endblock %}
{% block form %}
{% include "fragments/flash.html" %}
<!-- Oversight Section -->
<h3>Contracting Officer (KO) Information</h3>
{{ UserInfo(form.ko_first_name, form.ko_last_name, form.ko_email, form.ko_dod_id) }}
<h3>Contractive Officer Representative (COR) Information</h3>
{{ UserInfo(form.cor_first_name, form.cor_last_name, form.cor_email, form.cor_dod_id) }}
<h3>Security Officer Information</h3>
{{ UserInfo(form.so_first_name, form.so_last_name, form.so_email, form.so_dod_id) }}
{% endblock %}

View File

@@ -0,0 +1,17 @@
{% extends 'task_orders/_new.html' %}
{% from "components/text_input.html" import TextInput %}
{% from "components/options_input.html" import OptionsInput %}
{% from "components/date_input.html" import DateInput %}
{% block heading %}
Review & Download
{% endblock %}
{% block form %}
{% include "fragments/flash.html" %}
<a href="#">Download your Task Order Packet.</a>
{% endblock %}