Commit b59686f2 by Luciano Barletta

second pdf image. fixed some data. manual form added.

1 parent 7b6bdfbf
......@@ -7,49 +7,92 @@ app = Flask(__name__)
data = {
"header" : {
"patente" : "ABC123",
"fecha" : "15-01-2019",
"hora" : "11:10"
"patente" : "?",
"fecha" : "?",
"hora" : "?"
},
"alineador" : {
"eje_delantero" : "0.000"
"eje_delantero" : "?"
},
"suspension" : [
{
"rendimiento_izquierdo" : "0.000",
"peso_estatico" : "0.000",
"peso_dinamico" : "0.000",
"rendimiento_derecho" : "0.000"
"rendimiento_izquierdo" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?",
"rendimiento_derecho" : "?"
},
{
"rendimiento_izquierdo" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?",
"rendimiento_derecho" : "?"
}
],
"frenos" : [
{
"fuerza_izquierda" : "0.000",
"resistencia_izquierda" : "0.000",
"ovalidad_izquierda" : "0.000",
"peso_estatico" : "0.000",
"peso_dinamico" : "0.000",
"fuerza_derecha" : "0.000",
"resistencia_derecha" : "0.000",
"ovalidad_derecha" : "0.000"
"fuerza_izquierda" : "?",
"resistencia_izquierda" : "?",
"ovalidad_izquierda" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?",
"fuerza_derecha" : "?",
"resistencia_derecha" : "?",
"ovalidad_derecha" : "?"
},
{
"fuerza_izquierda" : "?",
"resistencia_izquierda" : "?",
"ovalidad_izquierda" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?",
"fuerza_derecha" : "?",
"resistencia_derecha" : "?",
"ovalidad_derecha" : "?"
},
{
"fuerza_izquierda" : "?",
"resistencia_izquierda" : "?",
"ovalidad_izquierda" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?",
"fuerza_derecha" : "?",
"resistencia_derecha" : "?",
"ovalidad_derecha" : "?"
},
{
"fuerza_izquierda" : "?",
"resistencia_izquierda" : "?",
"ovalidad_izquierda" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?",
"fuerza_derecha" : "?",
"resistencia_derecha" : "?",
"ovalidad_derecha" : "?"
}
],
"trasero" : {
"fuerza_izquierda" : "0.000",
"fuerza_derecha" : "0.000",
"peso_estatico" : "0.000",
"peso_dinamico" : "0.000"
"fuerza_izquierda" : "?",
"fuerza_derecha" : "?",
"peso_estatico" : "?",
"peso_dinamico" : "?"
},
"gaseshumos" : {
"co" : "0.000",
"hc" : "0.000",
"opacidad_logaritmica" : "0.000"
"co" : "?",
"hc" : "?",
"opacidad_logaritmica" : "?"
}
}
@app.route('/manual')
def pdf():
return render_template(
"resultados.html",
data = data
)
@app.route('/')
def main():
plate = "GXN560"
plate = "JPY149"
s = SI(SI.Chrome)
form = [
......@@ -82,15 +125,17 @@ def main():
answer = gototec(s, answer)
except:
return f"Error yendo a las especificaciones técnicas del dominio '{plate}'."
#try:
try:
answer = readdata(s, answer)
#except:
# return f"Error leyendo datos de la patente '{plate}'."
#try:
except:
return f"Error leyendo datos de la patente '{plate}'."
try:
answer = extradata(form, answer)
#except:
# return f"Error completando datos extra de la patente '{plate}'."
except:
return f"Error completando datos extra de la patente '{plate}'."
print(answer)
del s
return render_template(
"resultados.html",
data = answer
......@@ -141,13 +186,12 @@ def readdata(s, r):
reach = lambda id: lambda s: s.readInput( s.find(s.By.ID, id) )
# alineacion
r['alineador']['eje_delantero'] = attempt_do(reach("deriva"), default = "?")(s)
r['alineador']['eje_delantero'] = empty_for_question(attempt_do(reach("deriva"), default = "?")(s))
# suspension
for i in range(2):
sus = {}
sus['fuerza_izquierda'] = attempt_do(reach(f"fuerzaIzq-{i}"), default = "?")(s)
sus['fuerza_derecha'] = attempt_do(reach(f"fuerzaDer-{i}"), default = "?")(s)
sus['peso_estatico'] = empty_for_question(attempt_do(reach(f"pesoBascula-{i}"), default = "?")(s))
r['suspension'].append(sus)
......@@ -155,25 +199,25 @@ def readdata(s, r):
frenos = s.find(SI.By.XPATH, "//table[@class='tabla_ensayo']/tbody//tr[@class='odd' or @class='even']","1-4")
for i in range(len(frenos)):
fre = {}
fre['peso_estatico'] = attempt_do(reach(f"pesoBascula-{i}"), default = "?")(s)
fre['peso_dinamico'] = attempt_do(reach(f"pesoMaximo-{i}"), default = "?")(s)
fre['fuerza_izquierda'] = attempt_do(reach(f"fuerzaIzq-{i}"), default = "?")(s)
fre['fuerza_derecha'] = attempt_do(reach(f"fuerzaDer-{i}"), default = "?")(s)
fre['peso_estatico'] = empty_for_question(attempt_do(reach(f"pesoBascula-{i}"), default = "?")(s))
fre['peso_dinamico'] = empty_for_question(attempt_do(reach(f"pesoMaximo-{i}"), default = "?")(s))
fre['fuerza_izquierda'] = empty_for_question(attempt_do(reach(f"fuerzaIzq-{i}"), default = "?")(s))
fre['fuerza_derecha'] = empty_for_question(attempt_do(reach(f"fuerzaDer-{i}"), default = "?")(s))
r['frenos'].append(fre)
# freno trasero
r['trasero']['peso_estatico'] = attempt_do(reach(f"pesoBasculaEst-0"), default = "?")(s)
r['trasero']['peso_dinamico'] = attempt_do(reach(f"pesoMaximoEst-0"), default = "?")(s)
r['trasero']['fuerza_izquierda'] = attempt_do(reach(f"fuerzaIzqEst-0"), default = "?")(s)
r['trasero']['fuerza_derecha'] = attempt_do(reach(f"fuerzaDerEst-0"), default = "?")(s)
r['trasero']['peso_estatico'] = empty_for_question(attempt_do(reach(f"pesoBasculaEst-0"), default = "?")(s))
r['trasero']['peso_dinamico'] = empty_for_question(attempt_do(reach(f"pesoMaximoEst-0"), default = "?")(s))
r['trasero']['fuerza_izquierda'] = empty_for_question(attempt_do(reach(f"fuerzaIzqEst-0"), default = "?")(s))
r['trasero']['fuerza_derecha'] = empty_for_question(attempt_do(reach(f"fuerzaDerEst-0"), default = "?")(s))
# gases y humos
r['gaseshumos']['opacidad_logaritmica'] = attempt_do(reach(f"opacidadLogaritmica"), default = "?")(s)
r['gaseshumos']['co'] = attempt_do(reach(f"co"), default = "?")(s)
r['gaseshumos']['hc'] = attempt_do(reach(f"hc"), default = "?")(s)
r['gaseshumos']['opacidad_logaritmica'] = empty_for_question(attempt_do(reach(f"opacidadLogaritmica"), default = "?")(s))
r['gaseshumos']['co'] = empty_for_question(attempt_do(reach(f"co"), default = "?")(s))
r['gaseshumos']['hc'] = empty_for_question(attempt_do(reach(f"hc"), default = "?")(s))
return r
......@@ -205,6 +249,9 @@ def attempt_do(f, default = "", error = ""):
return default
return inner
def empty_for_question(string):
return "?" if string == "" else string
# Inicio del servicio
if __name__ == "__main__":
app.run("0.0.0.0")
\ No newline at end of file
......@@ -10,8 +10,8 @@ class SeleniumInterface:
Chrome = "Chrome"
By = By()
Keys = Keys()
Timeout = 1
PageChangeWait = 1
Timeout = 0.5
PageChangeWait = 0.5
def __init__(self, driverType):
self.driver = self._getDriver(driverType)
......
......@@ -44,12 +44,12 @@ class Vector {
class Line {
/**
* @param {Vector} beggining
* @param {Vector} end
* @param {Vector} position
* @param {Vector} size
*/
constructor(beggining, end) {
this.beggining = beggining;
this.end = end;
constructor(position, size) {
this.position = position;
this.size = size;
}
/**
......@@ -57,10 +57,10 @@ class Line {
*/
draw(pdf) {
pdf.line(
this.beggining.x,
this.beggining.y,
this.end.x,
this.end.y
this.position.x,
this.position.y,
this.size.x,
this.size.y
);
}
}
......@@ -73,23 +73,69 @@ class Text {
* @param {Vector} position
* @param {object} font
*/
constructor(text, position, font) {
constructor(text, position, font = null, align = null) {
this.text = text;
this.position = position;
this.font = font
this.align = align
}
/**
* @param {jsPDF} pdf
*/
draw(pdf) {
/** replace ? with 0s (temporary) **/
if (this.text == "?") this.text = "0.000";
if (this.font){
pdf.setFont(this.font.font);
pdf.setFontType(this.font.type);
pdf.setFontSize(this.font.size);
}
if (this.align) {
pdf.text(
this.text,
this.position.x,
this.position.y,
this.align
);
}
else {
pdf.text(
this.text,
this.position.x,
this.position.y
)
}
}
}
class Image {
/**
* Both arguments should be real coordinates and not a percentage based on parent element
* @param {string} text
* @param {Vector} position
* @param {object} font
*/
constructor(pointer, position, size) {
this.pointer = pointer;
this.position = position;
this.size = size
}
/**
* @param {jsPDF} pdf
*/
draw(pdf) {
pdf.addImage(
this.pointer,
this.position.x,
this.position.y,
this.size.x,
this.size.y
);
}
}
......
......@@ -52,7 +52,7 @@ class PDF1 {
const header = this.A4.addRelativeChild(new Div(pointer, new Vector(Pos.end, 3)));
header.addRelativeChildren([
new Text("Dominio: " + data['dominio'], new Vector(Pos.beg_margin, Pos.two_thirds), this.font),
new Text("Dominio: " + data['patente'], new Vector(Pos.beg_margin, Pos.two_thirds), this.font),
new Text("Fecha: " + data['fecha'], new Vector(Pos.third, Pos.two_thirds), this.font)
]);
......@@ -69,7 +69,7 @@ class PDF1 {
new Text("Eje Delantero", new Vector(Pos.beg_margin + 2, Pos.two_thirds), this.font),
new Text(data['eje_delan'], new Vector(Pos.quarter, Pos.two_thirds), this.font)
new Text(data['eje_delantero'], new Vector(Pos.quarter, Pos.two_thirds), this.font)
]);
return pointer.addxy(0, 5);
......@@ -107,7 +107,13 @@ class PDF1 {
for (let i = 0; i < ejes.length; i++) {
const x = data[i];
table(ejes[i], i - 1, x["ren_izq"], x["peso"], x["ren_der"])
table(
ejes[i],
i + 1,
x["rendimiento_izquierdo"],
x["peso_estatico"],
x["rendimiento_derecho"]
);
}
return pointer.addxy(0, 15);
......@@ -133,38 +139,49 @@ class PDF1 {
new Text("Fuerza IZ", new Vector(Pos.beg_margin, Pos.quarter), this.font),
new Text(FI, new Vector(Pos.beg_margin + 3, Pos.quarter + 10), this.font),
new Text(`${FI}`, new Vector(Pos.beg_margin + 3, Pos.quarter + 10), this.font),
new Text("Res.Rodadura IZ", new Vector(Pos.beg_margin, Pos.middle), this.font),
new Text(RI, new Vector(Pos.beg_margin + 3, Pos.middle + 10), this.font),
new Text(`${RI}`, new Vector(Pos.beg_margin + 3, Pos.middle + 10), this.font),
new Text("Ovalidad IZ", new Vector(Pos.beg_margin, Pos.three_quarters), this.font),
new Text(OI, new Vector(Pos.beg_margin + 3, Pos.three_quarters + 10), this.font),
new Text(`${OI}`, new Vector(Pos.beg_margin + 3, Pos.three_quarters + 10), this.font),
new Text("Peso del Eje", new Vector(Pos.middle - 10, Pos.quarter), this.font),
new Text(peso, new Vector(Pos.middle - 5, Pos.quarter + 10), this.font),
new Text(`${peso}`, new Vector(Pos.middle - 5, Pos.quarter + 10), this.font),
new Text("Fuerza DE", new Vector(Pos.three_quarters, Pos.quarter), this.font),
new Text(FD, new Vector(Pos.three_quarters + 3, Pos.quarter + 10), this.font),
new Text(`${FD}`, new Vector(Pos.three_quarters + 3, Pos.quarter + 10), this.font),
new Text("Res.Rodadura DE", new Vector(Pos.three_quarters, Pos.middle), this.font),
new Text(RD, new Vector(Pos.three_quarters + 3, Pos.middle + 10), this.font),
new Text(`${RD}`, new Vector(Pos.three_quarters + 3, Pos.middle + 10), this.font),
new Text("Ovalidad DE", new Vector(Pos.three_quarters, Pos.three_quarters), this.font),
new Text(OD, new Vector(Pos.three_quarters + 3, Pos.three_quarters + 10), this.font)
new Text(`${OD}`, new Vector(Pos.three_quarters + 3, Pos.three_quarters + 10), this.font)
]);
};
for (let i = 0; i < ejes.length; i++) {
const x = data[i];
table(ejes[i], i - 1, x["f_izq"], x["res_izq"], x["ov_izq"], x["peso"], x["f_der"], x["res_der"], x["ov_der"]);
if (x == undefined) continue;
table(
ejes[i],
i + 1,
x["fuerza_izquierda"],
x["resistencia_izquierda"],
x["ovalidad_izquierda"],
x["peso_estatico"],
x["fuerza_derecha"],
x["resistencia_derecha"],
x["ovalidad_derecha"]
);
}
return pointer.addxy(0, 60);
......@@ -180,11 +197,11 @@ class PDF1 {
new Text("Fuerza IZ", new Vector(Pos.beg_margin, Pos.two_thirds), this.font),
new Text(data['f_izq'], new Vector(Pos.beg_margin, Pos.end), this.font),
new Text(data['fuerza_izquierda'], new Vector(Pos.beg_margin, Pos.end), this.font),
new Text("Fuerza DE", new Vector(Pos.three_quarters, Pos.two_thirds), this.font),
new Text(data['f_der'], new Vector(Pos.three_quarters, Pos.end), this.font),
new Text(data['fuerza_derecha'], new Vector(Pos.three_quarters, Pos.end), this.font),
]);
......@@ -203,7 +220,7 @@ class PDF1 {
new Text(`CO ${data['co']} % HC ${data['hc']} ppm`, new Vector(Pos.beg, Pos.two_thirds), this.font),
new Text(`Medición ${data['med']}`, new Vector(Pos.three_quarters, Pos.two_thirds), this.font)
new Text(`Medición ${data['opacidad_logaritmica']}`, new Vector(Pos.three_quarters, Pos.two_thirds), this.font)
]);
......
class PDF1 {
class PDF2 {
"use strict";
constructor() {
/** Coordinate container that occupies the whole page **/
this.A4 = new Div(
......@@ -12,7 +11,7 @@ class PDF1 {
this.containerSize = 86;
this.font = {
"font": "courier",
"font": "times",
"type": "normal",
"size": 10
};
......@@ -27,7 +26,7 @@ class PDF1 {
*/
const pdfthis = this;
const functionMapping = [
(pointer, data) => pdfthis.maha(pointer, data['header']),
(pointer, data) => pdfthis.mahaToPDF(pointer, data['header']),
(pointer, data) => pdfthis.headerToPDF(pointer, data['header']),
(pointer, data) => pdfthis.alineadorToPDF(pointer, data['alineador']),
(pointer, data) => pdfthis.suspensionToPDF(pointer, data['suspension']),
......@@ -48,166 +47,55 @@ class PDF1 {
return this.A4;
}
headerToPDF(pointer, data) {
mahaToPDF(pointer, data) {
const header = this.A4.addRelativeChild(new Div(pointer, new Vector(Pos.end, 3)));
const maha = this.A4.addRelativeChild(new Div(pointer, new Vector(Pos.end, 6)));
header.addRelativeChildren([
new Text("Dominio: " + data['dominio'], new Vector(Pos.beg_margin, Pos.two_thirds), this.font),
maha.addRelativeChildren([
new Text("Fecha: " + data['fecha'], new Vector(Pos.third, Pos.two_thirds), this.font)
]);
new Line(
new Vector(Pos.beg_margin, Pos.end),
new Vector(Pos.end_margin, Pos.end)
),
return pointer.addxy(0, 3);
}
new Text(
["MAHA","EUROSYSTEM","Bitte hier Ihre","Anschrift eintragen"],
new Vector(Pos.middle, Pos.quarter),
this.font,
"center"
),
alineadorToPDF(pointer, data) {
new Text(
["EUROSYSTEM","V 3.18.009",data['fecha']],
new Vector(Pos.three_quarters, Pos.middle),
this.font,
"right"
),
const alineador = this.A4.addRelativeChild(new Div(pointer, new Vector(Pos.end, 5)));
alineador.addRelativeChildren([
new Text("Resultado Pruebas en Banco de Alineador al Paso", new Vector(Pos.beg_margin + 2, Pos.third), this.font),
new Text("Eje Delantero", new Vector(Pos.beg_margin + 2, Pos.two_thirds), this.font),
new Text(data['eje_delan'], new Vector(Pos.quarter, Pos.two_thirds), this.font)
new Image(
document.getElementById("maha"),
new Vector(Pos.end - 10, Pos.beg_margin),
new Vector(10, Pos.end_margin)
)
]);
return pointer.addxy(0, 5);
}
suspensionToPDF(pointer, data) {
const suspension = this.A4.addRelativeChild(new Div(pointer, new Vector(Pos.end, 15)));
const divsize = new Vector(this.containerSize, Pos.middle);
const ejes = suspension.addRelativeChildren([
new Div(new Vector(Pos.beg_margin + 2, Pos.beg), divsize),
new Div(new Vector(Pos.beg_margin + 2, Pos.middle), divsize)
]);
const table = (container, eje, RI, peso, RD) => {
container.addRelativeChildren([
new Text(`Resultado Pruebas en Banco de Suspensión - Eje ${eje}`, new Vector(0, Pos.third, ), this.font),
new Text("Rendimiento Izquierdo", new Vector(Pos.beg, Pos.two_thirds), this.font),
new Text(RI, new Vector(Pos.beg + 10, Pos.end, ), this.font),
new Text("Peso Total del Eje", new Vector(Pos.middle - 10, Pos.two_thirds), this.font),
new Text(peso, new Vector(Pos.middle - 3, Pos.end), this.font),
new Text("Rendimiento Derecho", new Vector(Pos.three_quarters - 5, Pos.two_thirds), this.font),
new Text(RD, new Vector(Pos.three_quarters + 5, Pos.end), this.font)
]);
};
for (let i = 0; i < ejes.length; i++) {
const x = data[i];
table(ejes[i], i - 1, x["ren_izq"], x["peso"], x["ren_der"])
headerToPDF(pointer, data) {
}
return pointer.addxy(0, 15);
alineadorToPDF(pointer, data) {
}
frenosToPDF(pointer, data) {
const frenos = this.A4.addRelativeChild(new Div(pointer, new Vector(Pos.end, 60)));
const divsize = new Vector(this.containerSize, Pos.quarter);
const ejes = frenos.addRelativeChildren([
new Div(new Vector(Pos.beg_margin + 2, Pos.beg), divsize),
new Div(new Vector(Pos.beg_margin + 2, Pos.quarter), divsize),
new Div(new Vector(Pos.beg_margin + 2, Pos.middle), divsize),
new Div(new Vector(Pos.beg_margin + 2, Pos.three_quarters), divsize)
]);
const table = (container, eje, FI, RI, OI, peso, FD, RD, OD) => {
container.addRelativeChildren([
new Text(`Diagnóstico de Frenos - Eje ${eje}`, new Vector(Pos.beg, Pos.beg_margin + 10), this.font),
new Text("Fuerza IZ", new Vector(Pos.beg_margin, Pos.quarter), this.font),
new Text(FI, new Vector(Pos.beg_margin + 3, Pos.quarter + 10), this.font),
new Text("Res.Rodadura IZ", new Vector(Pos.beg_margin, Pos.middle), this.font),
new Text(RI, new Vector(Pos.beg_margin + 3, Pos.middle + 10), this.font),
new Text("Ovalidad IZ", new Vector(Pos.beg_margin, Pos.three_quarters), this.font),
new Text(OI, new Vector(Pos.beg_margin + 3, Pos.three_quarters + 10), this.font),
new Text("Peso del Eje", new Vector(Pos.middle - 10, Pos.quarter), this.font),
new Text(peso, new Vector(Pos.middle - 5, Pos.quarter + 10), this.font),
new Text("Fuerza DE", new Vector(Pos.three_quarters, Pos.quarter), this.font),
new Text(FD, new Vector(Pos.three_quarters + 3, Pos.quarter + 10), this.font),
new Text("Res.Rodadura DE", new Vector(Pos.three_quarters, Pos.middle), this.font),
new Text(RD, new Vector(Pos.three_quarters + 3, Pos.middle + 10), this.font),
new Text("Ovalidad DE", new Vector(Pos.three_quarters, Pos.three_quarters), this.font),
new Text(OD, new Vector(Pos.three_quarters + 3, Pos.three_quarters + 10), this.font)
]);
};
for (let i = 0; i < ejes.length; i++) {
const x = data[i];
table(ejes[i], i - 1, x["f_izq"], x["res_izq"], x["ov_izq"], x["peso"], x["f_der"], x["res_der"], x["ov_der"]);
suspensionToPDF(pointer, data) {
}
return pointer.addxy(0, 60);
frenosToPDF(pointer, data) {
}
traseroToPDF(pointer, data) {
const trasero = this.A4.addRelativeChild(new Div(pointer.addxy(Pos.beg_margin + 2, 0), new Vector(this.containerSize, 9)));
trasero.addRelativeChildren([
new Text("Diagnóstico de Frenos - Eje Trasero - Frenos de Mano", new Vector(Pos.beg, Pos.third, ), this.font),
new Text("Fuerza IZ", new Vector(Pos.beg_margin, Pos.two_thirds), this.font),
new Text(data['f_izq'], new Vector(Pos.beg_margin, Pos.end), this.font),
new Text("Fuerza DE", new Vector(Pos.three_quarters, Pos.two_thirds), this.font),
new Text(data['f_der'], new Vector(Pos.three_quarters, Pos.end), this.font),
]);
return pointer.addxy(0, 9);
}
gaseshumosToPDF(pointer, data) {
const gaseshumos = this.A4.addRelativeChild(new Div(pointer.addxy(Pos.beg_margin + 2, 0), new Vector(this.containerSize, 9)));
gaseshumos.addRelativeChildren([
new Text("Resultado Analizador de Gases", new Vector(Pos.beg, Pos.third), this.font),
new Text("Resultado Analizador de Humos", new Vector(Pos.two_thirds, Pos.third), this.font),
new Text(`CO ${data['co']} % HC ${data['hc']} ppm`, new Vector(Pos.beg, Pos.two_thirds), this.font),
new Text(`Medición ${data['med']}`, new Vector(Pos.three_quarters, Pos.two_thirds), this.font)
]);
return pointer.addxy(0, 9);
}
}
\ No newline at end of file
:root {
--FontSize : 20;
--FontSize : 25;
}
html {
......@@ -30,6 +30,9 @@ table {
}
.PDFButtonContainer {
margin: auto;
margin-top: 3%;
margin-bottom: 3%;
width: 100%;
text-align: center;
}
......@@ -51,8 +54,30 @@ table {
font-size: 16px;
}
.TableContainer {
height: auto;
width: 100%;
display: table;
input {
position: absolute;
left: 30%;
font-size: 15;
border-top: none;
border-left: none;
border-right: none;
border-bottom: 1px solid gray;
font-weight: 700;
}
.DisabledButton {
background-color: gray;
color: black;
font-weight: normal;
}
.Message {
font-size: 20;
position: fixed;
right: 50;
top: 50;
padding: 1%;
border: 2px solid gray;
background-color: rgba(200, 150, 250, 0.5);
width: 30%;
}
\ No newline at end of file
......@@ -14,12 +14,79 @@
<title>Pruebas de Alineamiento</title>
</head>
<body>
<div class="Message">
Los datos con signo de pregunta '?' son datos no encontrados o faltantes.<br>
Pueden ser completados a mano antes de convertir a PDF.<br>
De no ser completados, se verán como lo que diga el campo 'Por defecto' al final de la página.
</div>
<h1>Datos Generales:</h1>
Patente <input type="text" name="patente" value="{{ data['header']['patente'] }}">
<br>
Fecha <input type="text" name="fecha" value="{{ data['header']['fecha'] }}">
<br>
<h1>Alineador:</h1>
Eje Delantero <input type="text" name="eje_delantero" value="{{ data['alineador']['eje_delantero'] }}">
<br>
<h1>Suspensión:</h1>
{% for eje in data['suspension'] %}
Rendimiento Izquerdo <input type="text" name="rendimiento_izquierdo" value="{{ eje['rendimiento_izquierdo'] }}">
<br>
Rendimiento Derecho <input type="text" name="rendimiento_derecho" value="{{ eje['rendimiento_derecho'] }}">
<br>
Peso Estático (Total) <input type="text" name="peso_estatico" value="{{ eje['peso_estatico'] }}">
<br>
<br>
{% endfor %}
<h1>Frenos:</h1>
{% for eje in data['frenos'] %}
Fuerza Izquierda <input type="text" name="fuerza_izquierda" value="{{ eje['fuerza_izquierda'] }}">
<br>
Fuerza Derecha <input type="text" name="fuerza_derecha" value="{{ eje['fuerza_derecha'] }}">
<br>
Resistencia Izquierda <input type="text" name="resistencia_izquierda" value="{{ eje['resistencia_izquierda'] }}">
<br>
Resistencia Derecha <input type="text" name="resistencia_derecha" value="{{ eje['resistencia_derecha'] }}">
<br>
Ovalidad Izquierda <input type="text" name="ovalidad_izquierda" value="{{ eje['ovalidad_izquierda'] }}">
<br>
Ovalidad Derecha <input type="text" name="ovalidad_derecha" value="{{ eje['ovalidad_derecha'] }}">
<br>
Peso Estático (Total) <input type="text" name="peso_estatico" value="{{ eje['peso_estatico'] }}">
<br>
<br>
{% endfor %}
<h1>Freno Trasero:</h1>
Fuerza Izquierda <input type="text" name="fuerza_izquierda" value="{{ data['trasero']['fuerza_izquierda'] }}">
<br>
Fuerza Derecha <input type="text" name="fuerza_derecha" value="{{ data['trasero']['fuerza_derecha'] }}">
<br>
<h1>Gases y Humos</h1>
Opacidad Logarítmica <input type="text" name="opacidad_logaritmica" value="{{ data['gaseshumos']['opacidad_logaritmica'] }}">
<br>
CO <input type="text" name="co" value="{{ data['gaseshumos']['co'] }}">
<br>
HC <input type="text" name="hc" value="{{ data['gaseshumos']['hc'] }}">
<br>
<br>
<br>
Por defecto: <input type="text" name="defecto" value="0.000">
<br>
<div class="PDFButtonContainer">
<button class="PDFButton" onclick=
"window.open(
compile(
(new PDF1()).pdf( {{ data }} ),
new jsPDF('portrait', 'pt', 'a4'),
new jsPDF('portrait', 'pt', 'a4')
)
.output('bloburl')
)";
......@@ -30,14 +97,15 @@
<button class="PDFButton" onclick=
"window.open(
compile(
(new PDF1()).pdf( {{ data }} ),
new jsPDF('portrait', 'pt', 'a4'),
(new PDF2()).pdf( {{ data }} ),
new jsPDF('portrait', 'pt', 'a4')
)
.output('bloburl')
)";
>
Convertir a PDF - 2
</button>
<img id="maha" src="{{ url_for('static', filename = 'assets/maha.png') }}" style="display: none;">
</div>
</body>
</html>
\ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!