HTTP/1.1 200 OK
Server: gunicorn
Date: Wed, 01 May 2024 10:14:38 GMT
Connection: close
Content-Type: text/html; charset=utf-8
Content-Length: 4642
<html lang="en"><head>
<script type="text/javascript">
(function() {
var container = document.querySelector('#_tcx-yo2hyn7yac');
if (!container) {
return;
}
function addToContainer(url, text) {
const wrapper = document.createElement('div');
wrapper.setAttribute('data-tcx-url', url);
wrapper.innerText = text;
container.appendChild(wrapper);
}
const fetch = window.fetch
window.fetch = function() {
return Promise.resolve(fetch.apply(window, arguments))
.then(async response => {
if (response.ok) {
try {
const clone = response.clone();
const json = await clone.json();
addToContainer(clone.url, JSON.stringify(json));
} catch (err) {}
}
return response;
});
};
var XHR = XMLHttpRequest.prototype;
var send = XHR.send;
var open = XHR.open;
XHR.open = function(method, url) {
this.url = url;
return open.apply(this, arguments);
};
XHR.send = function() {
this.addEventListener('load', function() {
try {
const response = this.response;
if (response && response.length) {
const firstChar = response[0];
if (firstChar === '[' || firstChar === '{') {
addToContainer(this.url, response);
}
}
} catch (err) {
// No-op.
}
});
return send.apply(this, arguments);
};
})();
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Bootstrap CDN</title>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
<style>
:root {
/* --bs-font-sans-serif: Inter; */
/* --bs-link-color: #55fd0d; */
}
</style>
</head>
<body>
<div class="container">
<h1 class="mb-3 mt-5">Generate attendance report</h1>
<p>In order to generate report please provide below your TimeCamp API key to get the data from TimeCamp.
You can only see time from users you have access to in your organisation structure. To have best results use administrator API token.</p>
<p>You can find it in your <a style="font-weight: bold;" href="https://app.timecamp.com/app#/settings/users/me" target="_blank">profile settings</a> at the bottom of the page.</p>
<div class="row">
<div class="col-lg-6">
<form method="post" onsubmit="return confirm('Generating report can take up to a couple of minutes depending on the number of users') ">
<div class="form-group">
<input type="email" class="form-control" name="email" autofocus="" placeholder="Enter email">
<br>
<input type="text" class="form-control" name="apiKey" autofocus="" placeholder="Enter API key">
<div class="row my-3">
<div class="col-lg-3">
<label for="exampleFormControlInput1" class="form-label">From</label>
<input type="text" class="form-control" id="exampleFormControlInput1" placeholder="YYYY-MM-DD" name="dateFrom">
</div>
<div class="col-lg-3">
<label for="exampleFormControlInput2" class="form-label">To</label>
<input type="text" class="form-control" id="exampleFormControlInput2" placeholder="YYYY-MM-DD" name="dateTo">
</div>
</div>
</div>
<button type="submit" class="btn btn-primary" onclick="document.getElementsByClassName('loader')[0].style.display = 'block';">Download report</button>
</form>
</div>
</div>
<div style="margin-top: 40px; display: none;" class="loader">
<div class="spinner-border" role="status"></div>
Generating report, it can take up to a couple of minutes depending on the number of users
</div>
</div>
</body></html>