Merge conflict resolved
This commit is contained in:
commit
635edf83b6
12 changed files with 171 additions and 240 deletions
|
@ -1,13 +1,13 @@
|
||||||
import hashlib
|
import hashlib
|
||||||
|
|
||||||
hasher = hashlib.md5()
|
hasher = hashlib.md5()
|
||||||
with open ('simple_policy.py', 'rb') as afile:
|
with open('simple_policy.py', 'rb') as afile:
|
||||||
buf = afile.read()
|
buf = afile.read()
|
||||||
hasher.update(buf)
|
hasher.update(buf)
|
||||||
print("md5 of simple: " + hasher.hexdigest())
|
print("md5 of simple: " + hasher.hexdigest())
|
||||||
|
|
||||||
hasher = hashlib.md5()
|
hasher = hashlib.md5()
|
||||||
with open ('moderate_policy.py', 'rb') as afile:
|
with open('moderate_policy.py', 'rb') as afile:
|
||||||
buf = afile.read()
|
buf = afile.read()
|
||||||
hasher.update(buf)
|
hasher.update(buf)
|
||||||
print("md5 of moderate: " + hasher.hexdigest())
|
print("md5 of moderate: " + hasher.hexdigest())
|
||||||
|
@ -15,13 +15,13 @@ print("md5 of moderate: " + hasher.hexdigest())
|
||||||
|
|
||||||
|
|
||||||
hasher = hashlib.sha1()
|
hasher = hashlib.sha1()
|
||||||
with open ('simple_policy.py', 'rb') as afile:
|
with open('simple_policy.py', 'rb') as afile:
|
||||||
buf = afile.read()
|
buf = afile.read()
|
||||||
hasher.update(buf)
|
hasher.update(buf)
|
||||||
print("sha1 of simple: " + hasher.hexdigest())
|
print("sha1 of simple: " + hasher.hexdigest())
|
||||||
|
|
||||||
hasher = hashlib.sha1()
|
hasher = hashlib.sha1()
|
||||||
with open ('moderate_policy.py', 'rb') as afile:
|
with open('moderate_policy.py', 'rb') as afile:
|
||||||
buf = afile.read()
|
buf = afile.read()
|
||||||
hasher.update(buf)
|
hasher.update(buf)
|
||||||
print("sha1 of moderate: " + hasher.hexdigest())
|
print("sha1 of moderate: " + hasher.hexdigest())
|
132
back/backend/policy.py
Normal file
132
back/backend/policy.py
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
# simple_policy.py
|
||||||
|
from datetime import date
|
||||||
|
from policy import Policy, Section
|
||||||
|
|
||||||
|
# - For the rules, should one refer to fields by 'section.fields.x'
|
||||||
|
# or by the section name eg. 'general_section.fields.x'?
|
||||||
|
|
||||||
|
|
||||||
|
#### General
|
||||||
|
#### Section 0
|
||||||
|
general_section = Section(
|
||||||
|
title="General Info",
|
||||||
|
html_description="",
|
||||||
|
fields={
|
||||||
|
"destination": {"label": "Destination City", "type": "string"}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
general_section.add_rule(
|
||||||
|
title="Destination city check",
|
||||||
|
rule=lambda report, section: section.field.destination == "Timbuktu",
|
||||||
|
rule_break_text="What did the cowboy say about Tim, his wild horse?"
|
||||||
|
)
|
||||||
|
|
||||||
|
Policy.add_section(general_section)
|
||||||
|
|
||||||
|
#### Flight
|
||||||
|
#### Section 1
|
||||||
|
flight_section = Section(
|
||||||
|
title="Flight Info",
|
||||||
|
html_description="<p>Enter flight details here.</p>",
|
||||||
|
fields={
|
||||||
|
"international": {"label": "Is this an international flight?", "type": "boolean"},
|
||||||
|
"departure_date": {"label": "Departure date", "type": "date"},
|
||||||
|
"return_date": {"label": "Return date", "type": "date"},
|
||||||
|
"fare": {"label": "Fare", "type": "decimal"},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
flight_section.add_rule(
|
||||||
|
title="Airline fare pre-approval check",
|
||||||
|
rule=lambda report, section: section.fields.fare < 500,
|
||||||
|
rule_break_text="Fares cannot be more than $500"
|
||||||
|
)
|
||||||
|
|
||||||
|
Policy.add_section(flight_section)
|
||||||
|
|
||||||
|
#### Lodging
|
||||||
|
#### Section 2
|
||||||
|
lodging_section = Section(
|
||||||
|
title="Hotel Info",
|
||||||
|
html_description="<p>Enter hotel info here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>",
|
||||||
|
fields={
|
||||||
|
"check-in_date": {"label": "Check-in date", "type": "date"},
|
||||||
|
"check-out_date": {"label": "Check-out date", "type": "date"},
|
||||||
|
"rate": {"label": "Per diem nightly rate", "type": "decimal"},
|
||||||
|
"cost": {"label": "Total Cost", "type": "decimal"}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def nightly_rate_check(report, section):
|
||||||
|
checkin_date = date(section.fields.checkin_date)
|
||||||
|
checkout_date = date(section.fields.checkout_date)
|
||||||
|
duration = checkout_date - checkin_date
|
||||||
|
return section.fields.cost <= duration * section.fields.rate
|
||||||
|
|
||||||
|
section.add_rule(
|
||||||
|
title="",
|
||||||
|
rule=nightly_rate_check,
|
||||||
|
rule_break_text="The average nightly rate cannot be more than the USGSA rate."
|
||||||
|
)
|
||||||
|
|
||||||
|
Policy.add_section(lodging_section)
|
||||||
|
|
||||||
|
#### Local Transportation
|
||||||
|
#### Section 3
|
||||||
|
transport_section = Section(
|
||||||
|
title="Local Transportation",
|
||||||
|
html_description="<p>How much did you spend on local transportation, in total?</p>",
|
||||||
|
fields={
|
||||||
|
"duration": {"label": "How many days was your trip?", "type": "decimal"},
|
||||||
|
"cost": {"label": "Total cost", "type": "decimal"}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
transport_section.add_rule(
|
||||||
|
title="Total cost check",
|
||||||
|
rule=lambda report, section: section.fields.cost <= section.fields.duration * 10,
|
||||||
|
rule_break_text="Local transportation costs must be less than $10 per day, on average."
|
||||||
|
)
|
||||||
|
|
||||||
|
Policy.add_section(transport_section)
|
||||||
|
|
||||||
|
#### Per Diem
|
||||||
|
#### Section 4
|
||||||
|
per_diem_section = Section(
|
||||||
|
title="Per Diem",
|
||||||
|
html_description="<p>Enter info about meals and incidentals here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>",
|
||||||
|
fields={
|
||||||
|
"duration": {"label": "How many days was your trip?", "type": "decimal"},
|
||||||
|
"rate": {"label": "What is the per diem rate for your destination?", "type": "decimal"},
|
||||||
|
"cost": {"label": "Total Cost for meals and incidentals", "type": "decimal"}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
per_diem_section.add_rule(
|
||||||
|
title="Per Diem Cost Check",
|
||||||
|
rule=lambda report, section: section.fields.cost <= section.fields.duration * section.fields.rate,
|
||||||
|
rule_break_text="The average cost per day for per diem expenses cannot be more than the rate specified by the USGSA."
|
||||||
|
)
|
||||||
|
|
||||||
|
Policy.add_section(per_diem_section)
|
||||||
|
|
||||||
|
'''
|
||||||
|
Section(
|
||||||
|
title="",
|
||||||
|
html_description="<p></p>",
|
||||||
|
fields={
|
||||||
|
"": {"label": "", "type": ""}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
section.add_rule(
|
||||||
|
title="",
|
||||||
|
rule=lambda report, section: boolean_statement,
|
||||||
|
rule_break_text=""
|
||||||
|
)
|
||||||
|
|
||||||
|
#// or, for a rule which doesn’t apply to a specific section...
|
||||||
|
#//
|
||||||
|
#// add_general_rule(...)
|
||||||
|
'''
|
|
@ -1,144 +0,0 @@
|
||||||
# simple_policy.py
|
|
||||||
from datetime import date
|
|
||||||
|
|
||||||
|
|
||||||
#TODO:
|
|
||||||
# - For the rules, should one refer to fields by 'section.fields.x' or by the section name eg. 'general_section.fields.x'?
|
|
||||||
|
|
||||||
|
|
||||||
#### General
|
|
||||||
#### Section 0
|
|
||||||
general_section = Section(
|
|
||||||
title = "General Info",
|
|
||||||
html_description = "",
|
|
||||||
fields = {
|
|
||||||
"destination": {"label": "Destination City", "type": "string"}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
general_section.add_rule(
|
|
||||||
title = "Destination city check",
|
|
||||||
rule = lambda report, section:
|
|
||||||
if section.fields.destination == "Timbuktu":
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
,
|
|
||||||
rule_break_text = "What did the cowboy say about Tim, his wild horse?"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Flight
|
|
||||||
#### Section 1
|
|
||||||
flight_section = Section(
|
|
||||||
title = "Flight Info",
|
|
||||||
html_description = "<p>Enter flight details here.</p>",
|
|
||||||
fields = {
|
|
||||||
"international": {"label": "Is this an international flight?", "type": "boolean"},
|
|
||||||
"departure_date": {"label": "Departure date", "type": "date"},
|
|
||||||
"return_date": {"label": "Return date", "type": "date"},
|
|
||||||
"fare": {"label": "Fare", "type": "decimal"},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
flight_section.add_rule(
|
|
||||||
title = "Airline fare pre-approval check",
|
|
||||||
rule = lambda report, section:
|
|
||||||
return section.fields.fare < 500
|
|
||||||
,
|
|
||||||
rule_break_text = "Fares cannot be more than $500"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Lodging
|
|
||||||
#### Section 2
|
|
||||||
lodging_section = Section(
|
|
||||||
title = "Hotel Info",
|
|
||||||
html_description = "<p>Enter hotel info here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>",
|
|
||||||
fields = {
|
|
||||||
"check-in_date": {"label": "Check-in date", "type": "date"},
|
|
||||||
"check-out_date": {"label": "Check-out date", "type": "date"},
|
|
||||||
"rate": {"label": "Per diem nightly rate", "type": "decimal"},
|
|
||||||
"cost": {"label": "Total Cost", "type": "decimal"}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
section.add_rule(
|
|
||||||
title = "",
|
|
||||||
rule = lambda report, section:
|
|
||||||
check-in_date = date(section.fields.check-in_date)
|
|
||||||
check-out_date = date(section.fields.check-out_date)
|
|
||||||
duration = check-out_date - check-in_date
|
|
||||||
return section.fields.cost <= duration * section.fields.rate
|
|
||||||
,
|
|
||||||
rule_break_text = "The average nightly rate cannot be more than the USGSA rate."
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Local Transportation
|
|
||||||
#### Section 3
|
|
||||||
transport_section = Section(
|
|
||||||
title = "Local Transportation",
|
|
||||||
html_description = "<p>How much did you spend on local transportation, in total?</p>",
|
|
||||||
fields = {
|
|
||||||
"duration": {"label": "How many days was your trip?", "type": "decimal"},
|
|
||||||
"cost": {"label": "Total cost", "type": "decimal"}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
transport_section.add_rule(
|
|
||||||
title = "Total cost check",
|
|
||||||
rule = lambda report, section:
|
|
||||||
return section.fields.cost <= section.fields.duration * 10
|
|
||||||
,
|
|
||||||
rule_break_text = "Local transportation costs must be less than $10 per day, on average."
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Per Diem
|
|
||||||
#### Section 4
|
|
||||||
per_diem_section = Section(
|
|
||||||
title = "Per Diem",
|
|
||||||
html_description = "<p>Enter info about meals and incidentals here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>",
|
|
||||||
fields = {
|
|
||||||
"duration": {"label": "How many days was your trip?", "type": "decimal"},
|
|
||||||
"rate": {"label": "What is the per diem rate for your destination?", "type": "decimal"},
|
|
||||||
"cost": {"label": "Total Cost for meals and incidentals", "type": "decimal"}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
per_diem_section.add_rule(
|
|
||||||
title = "Per Diem Cost Check",
|
|
||||||
rule = lambda report, section:
|
|
||||||
return section.fields.cost <= section.fields.duration * section.fields.rate
|
|
||||||
,
|
|
||||||
rule_break_text = "The average cost per day for per diem expenses cannot be more than the rate specified by the USGSA."
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
|
||||||
Section(
|
|
||||||
title = "",
|
|
||||||
html_description = "<p></p>",
|
|
||||||
fields = {
|
|
||||||
"": {"label": "", "type": ""}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
section.add_rule(
|
|
||||||
title = "",
|
|
||||||
rule = lambda report, section: return boolean_statement,
|
|
||||||
rule_break_text = ""
|
|
||||||
)
|
|
||||||
|
|
||||||
#// or, for a rule which doesn’t apply to a specific section...
|
|
||||||
#//
|
|
||||||
#// add_general_rule(...)
|
|
||||||
'''
|
|
|
@ -12,14 +12,14 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
||||||
<a class="navbar-brand" href="#">Reimbursinator</a>
|
<div class="navbar-brand">Reimbursinator</div>
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="dashboard.html">Dashboard</a>
|
<a class="nav-link" href="home.html">Home</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="new_report.html">New Report</a>
|
<a class="nav-link" href="new_report.html">New Report</a>
|
||||||
|
@ -27,9 +27,6 @@
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link active" href="edit_report.html">Edit Report</a>
|
<a class="nav-link active" href="edit_report.html">Edit Report</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="view_history.html">View History</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ml-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
@ -38,10 +35,20 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container">
|
<div class="container pt-5">
|
||||||
<p>Edit an existing report</p>
|
<div class="row">
|
||||||
|
<div class="col-sm-8 mx-auto">
|
||||||
|
<div class="card bg-light text-dark">
|
||||||
|
<div class="card-header text-center">
|
||||||
|
<h3>Your Report History</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="js/logout.js"></script>
|
<script src="js/logout.js"></script>
|
||||||
|
<script src="js/viewHistory.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
||||||
<a class="navbar-brand" href="#">Reimbursinator</a>
|
<div class="navbar-brand">Reimbursinator</div>
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link active" href="dashboard.html">Dashboard</a>
|
<a class="nav-link active" href="home.html">Home</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="new_report.html">New Report</a>
|
<a class="nav-link" href="new_report.html">New Report</a>
|
||||||
|
@ -27,9 +27,6 @@
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="edit_report.html">Edit Report</a>
|
<a class="nav-link" href="edit_report.html">Edit Report</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="view_history.html">View History</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ml-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
@ -39,7 +36,7 @@
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>Welcome, you are logged in</p>
|
<p>Welcome to Reimbursinator</p>
|
||||||
</div>
|
</div>
|
||||||
<script src="js/logout.js"></script>
|
<script src="js/logout.js"></script>
|
||||||
</body>
|
</body>
|
|
@ -12,7 +12,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
||||||
<a class="navbar-brand" href="#">Reimbursinator</a>
|
<div class="navbar-brand">Reimbursinator</div>
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-index-navbar">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-index-navbar">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -24,11 +24,11 @@ function postToLoginEndpoint(event) {
|
||||||
console.log(`Server response:\n${this.response}`);
|
console.log(`Server response:\n${this.response}`);
|
||||||
token = JSON.parse(this.response).token;
|
token = JSON.parse(this.response).token;
|
||||||
localStorage.setItem("token", token);
|
localStorage.setItem("token", token);
|
||||||
window.location.replace("dashboard.html");
|
window.location.replace("home.html");
|
||||||
} else {
|
} else {
|
||||||
console.log("LOGIN FAILURE!");
|
console.error("LOGIN FAILURE!");
|
||||||
console.log(`Server status: ${this.status}`);
|
console.error(`Server status: ${this.status}`);
|
||||||
console.log(`Server response:\n${this.response}`);
|
console.error(`Server response:\n${this.response}`);
|
||||||
displayErrorMessage(this.response);
|
displayErrorMessage(this.response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,10 +76,11 @@ function createEditReportForm(parsedData) {
|
||||||
console.log(`Section title: ${sections[section].title}`);
|
console.log(`Section title: ${sections[section].title}`);
|
||||||
console.log(`Section html description: ${sections[section].html_description}`);
|
console.log(`Section html description: ${sections[section].html_description}`);
|
||||||
|
|
||||||
let sectionTitle = document.createElement("p").innerHTML = sections[section].title;
|
let sectionTitle = document.createElement("p");
|
||||||
form.appendChild(title);
|
sectionTitle.innerHTML = sections[section].title;
|
||||||
let sectionDescription = sections[section].html_description;
|
form.appendChild(sectionTitle);
|
||||||
form.appendChild(sectionDescription);
|
let sectionDescription = sections[section].html_description; // html_description should be updated to a standard string
|
||||||
|
form.insertAdjacentHTML("beforeend", sectionDescription);
|
||||||
|
|
||||||
for (let field in sections[section].fields) {
|
for (let field in sections[section].fields) {
|
||||||
console.log(`Field label: ${sections[section].fields[field].label}`);
|
console.log(`Field label: ${sections[section].fields[field].label}`);
|
||||||
|
@ -194,5 +195,3 @@ function openEditReportForm(event) {
|
||||||
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", getReportHistory);
|
document.addEventListener("DOMContentLoaded", getReportHistory);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,11 @@
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
||||||
<link rel="shortcut icon" href="img/favicon.ico">
|
<link rel="shortcut icon" href="img/favicon.ico">
|
||||||
<title>Log in</title>
|
<title>Log In</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
||||||
<a class="navbar-brand" href="index.html">Reimbursinator</a>
|
<div class="navbar-brand">Reimbursinator</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container pt-5">
|
<div class="container pt-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
||||||
<a class="navbar-brand" href="#">Reimbursinator</a>
|
<div class="navbar-brand">Reimbursinator</div>
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="dashboard.html">Dashboard</a>
|
<a class="nav-link" href="home.html">Home</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link active" href="new_report.html">New Report</a>
|
<a class="nav-link active" href="new_report.html">New Report</a>
|
||||||
|
@ -27,9 +27,6 @@
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="edit_report.html">Edit Report</a>
|
<a class="nav-link" href="edit_report.html">Edit Report</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="view_history.html">View History</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ml-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
|
|
@ -8,11 +8,11 @@
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
||||||
<link rel="shortcut icon" href="img/favicon.ico">
|
<link rel="shortcut icon" href="img/favicon.ico">
|
||||||
<title>Sign up</title>
|
<title>Sign Up</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
||||||
<a class="navbar-brand" href="index.html">Reimbursinator</a>
|
<div class="navbar-brand">Reimbursinator</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container pt-5">
|
<div class="container pt-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
|
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
|
||||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
|
||||||
<link rel="shortcut icon" href="img/favicon.ico">
|
|
||||||
<title>Reimbursinator</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
|
|
||||||
<a class="navbar-brand" href="#">Reimbursinator</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-dashboard-navbar">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="collapsing-dashboard-navbar">
|
|
||||||
<ul class="navbar-nav">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="dashboard.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="new_report.html">New Report</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="edit_report.html">Edit Report</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" href="view_history.html">View History</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul class="navbar-nav ml-auto">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link log-out-link" href="#"><i class="fas fa-sign-out-alt"></i> Log Out </a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container pt-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-8 mx-auto">
|
|
||||||
<div class="card bg-light text-dark">
|
|
||||||
<div class="card-header text-center">
|
|
||||||
<h3>Your Report History</h3>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<script src="js/logout.js"></script>
|
|
||||||
<script src="js/viewHistory.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Loading…
Reference in a new issue