Files
kaunter/resources/views/supports/driver/mykad-reader/download.blade.php
T
2023-03-09 16:39:45 +08:00

248 lines
6.9 KiB
PHP

<!DOCTYPE html>
<html lang="en">
<head>
<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>Muat Turun</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.2/d3.min.js"
integrity="sha512-+uTBQREQVLccPeGbB3Q0R5TC/1mfAoRg9fomTL3iOb+kpCCWS5WjMdM1dYE1e1dB/pxEi0Zc2VdFJcCT72QyuA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style>
@import url(https://fonts.googleapis.com/css?family=Open+Sans:800);
.container-countdown {
margin: auto;
width: 400px;
}
.path--background {
fill: rgb(34, 213, 201);
stroke: #fff;
stroke-width: 0px;
}
.pulse {
fill: rgb(255, 74, 74) !important;
}
.path--foreground {
fill: #eee;
stroke: #eee;
stroke-width: 2px;
}
.label {
font: 90px "Open Sans";
font-weight: 900;
text-anchor: middle;
fill: rgb(34, 213, 201);
}
h1 {
font: "Open Sans";
font-weight: 900;
text-anchor: middle;
}
.container-page {
display: flex;
justify-content: center;
align-items: center;
/* for single line flex container */
align-content: center;
/* for multi-line flex container */
height: 100vh;
}
</style>
</head>
<body>
<div class="container-page">
<div class="container-countdown"></div>
</div>
<script>
var width = 400,
height = 400,
timePassed = 0,
timeLimit = 15;
var fields = [{
value: timeLimit,
size: timeLimit,
update: function() {
return timePassed = timePassed + 1;
}
}];
var nilArc = d3.svg.arc()
.innerRadius(width / 3 - 133)
.outerRadius(width / 3 - 133)
.startAngle(0)
.endAngle(2 * Math.PI);
var arc = d3.svg.arc()
.innerRadius(width / 3 - 55)
.outerRadius(width / 3 - 25)
.startAngle(0)
.endAngle(function(d) {
return ((d.value / d.size) * 2 * Math.PI);
});
var svg = d3.select(".container-countdown").append("svg")
.attr("width", width)
.attr("height", height);
var field = svg.selectAll(".field")
.data(fields)
.enter().append("g")
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")")
.attr("class", "field");
var back = field.append("path")
.attr("class", "path path--background")
.attr("d", arc);
var path = field.append("path")
.attr("class", "path path--foreground");
var label = field.append("text")
.attr("class", "label")
.attr("dy", ".35em");
addWaitingText();
(function update() {
field
.each(function(d) {
d.previous = d.value, d.value = d.update(timePassed);
});
path.transition()
.ease("elastic")
.duration(500)
.attrTween("d", arcTween);
if ((timeLimit - timePassed) <= 10)
pulseText();
else
label
.text(function(d) {
return d.size - d.value;
});
if (timePassed <= timeLimit)
setTimeout(update, 1000 - (timePassed % 1000));
else{
destroyTimer();
destroyWaitingText();
downloadMyKadDriver()
.then(() => redirectToPagePelanggan());
}
})();
function pulseText() {
back.classed("pulse", true);
label.classed("pulse", true);
if ((timeLimit - timePassed) >= 0) {
label.style("font-size", "120px")
.attr("transform", "translate(0," + +4 + ")")
.text(function(d) {
return d.size - d.value;
});
}
label.transition()
.ease("elastic")
.duration(900)
.style("font-size", "90px")
.attr("transform", "translate(0," + -10 + ")");
}
function destroyTimer() {
label.transition()
.ease("back")
.duration(700)
.style("opacity", "0")
.style("font-size", "5")
.attr("transform", "translate(0," + -40 + ")")
.each("end", function() {
field.selectAll("text").remove()
});
path.transition()
.ease("back")
.duration(700)
.attr("d", nilArc);
back.transition()
.ease("back")
.duration(700)
.attr("d", nilArc)
.each("end", function() {
field.selectAll("path").remove()
});
}
function arcTween(b) {
var i = d3.interpolate({
value: b.previous
}, b);
return function(t) {
return arc(i(t));
};
}
function addWaitingText()
{
var waiting_text = document.createElement("h1");
waiting_text.innerHTML= "sila tunggu sebentar ... "
waiting_text.style.marginTop = "0px";
waiting_text.style.textAlign = "center";
document.querySelector("svg").after(waiting_text);
}
function destroyWaitingText()
{
var waiting_text = document.querySelector("h1");
waiting_text.innerHTML= "";
}
let redirectToPagePelanggan = () => {
let pelanggan_url = "{{ url('pelanggan') }}";
window.location.href = pelanggan_url
};
function downloadMyKadDriver()
{
let download_driver_file_url = "{{ route('mykadreader.driver.download') }}";
let downloadDriverFile = () => {
return fetch(download_driver_file_url)
.then(response => response.blob())
.then(blob => {
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = 'MyKadReaderDriver.zip';
link.click();
})
.catch(e => console.log(e))
};
return downloadDriverFile();
}
</script>
</body>
</html>