wip
This commit is contained in:
parent
eb3f3aaee1
commit
8fddb3badc
22
Cargo.lock
generated
22
Cargo.lock
generated
@ -646,6 +646,12 @@ version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
|
||||
|
||||
[[package]]
|
||||
name = "hex"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "0.2.11"
|
||||
@ -1133,7 +1139,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
||||
[[package]]
|
||||
name = "ovlach_data"
|
||||
version = "0.1.0"
|
||||
source = "git+https://glpat-Ju_qUN9Yh8qa5rEnd6T7:glpat-Ju_qUN9Yh8qa5rEnd6T7@gitlab.nanobyte.cz/ondrej/ov-site-api-data.git?branch=add_missing_fields#c37450f5ea327f95325d4f2cc587a392e6e3bc9f"
|
||||
source = "git+https://glpat-Ju_qUN9Yh8qa5rEnd6T7:glpat-Ju_qUN9Yh8qa5rEnd6T7@gitlab.nanobyte.cz/ondrej/ov-site-api-data.git?branch=add_missing_fields#c13748b039d812d3bf1aaa93312699da7b921868"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"rocket",
|
||||
@ -1153,6 +1159,7 @@ dependencies = [
|
||||
"rocket_dyn_templates",
|
||||
"serde",
|
||||
"serde_yaml",
|
||||
"sha256",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
@ -1766,6 +1773,19 @@ dependencies = [
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha256"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7895c8ae88588ccead14ff438b939b0c569cd619116f14b4d13fdff7b8333386"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"hex",
|
||||
"sha2",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sharded-slab"
|
||||
version = "0.1.7"
|
||||
|
@ -16,3 +16,4 @@ reqwest = { version = "0.11", features = ["json"] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
ovlach_data = { git = "https://glpat-Ju_qUN9Yh8qa5rEnd6T7:glpat-Ju_qUN9Yh8qa5rEnd6T7@gitlab.nanobyte.cz/ondrej/ov-site-api-data.git", branch = "add_missing_fields"}
|
||||
chrono = "0.4.31"
|
||||
sha256 = "1.4.0"
|
@ -4,7 +4,7 @@ use std::collections::HashMap;
|
||||
use rocket::{*, fairing::AdHoc};
|
||||
use rocket_dyn_templates::{Template, tera::Value};
|
||||
use ::serde::Deserialize;
|
||||
use tools::tera::{static_filter, translate_filter, calculate_age, insert_space_every, lang_entity};
|
||||
use tools::tera::{static_filter, translate_filter, calculate_age, insert_space_every, lang_entity, gravatar_link};
|
||||
|
||||
pub mod routes;
|
||||
pub mod services;
|
||||
@ -34,6 +34,7 @@ pub fn rocket_builder() -> Rocket<Build> {
|
||||
engines.tera.register_filter("translate", translate_filter);
|
||||
engines.tera.register_filter("calculate_age", calculate_age);
|
||||
engines.tera.register_filter("insert_space_every", insert_space_every);
|
||||
engines.tera.register_filter("gravatar_link", gravatar_link);
|
||||
// filters specific to API
|
||||
engines.tera.register_filter("lang_entity", lang_entity);
|
||||
Ok(())
|
||||
|
@ -4,6 +4,7 @@ use chrono::{Utc, Datelike};
|
||||
use log::error;
|
||||
use rocket_dyn_templates::tera::{Value, Error};
|
||||
use ovlach_data::cv::chrono::from_string;
|
||||
use sha256::{digest, try_digest};
|
||||
|
||||
// TODO: tenhle modul je trochu prasacky..
|
||||
|
||||
@ -26,7 +27,16 @@ pub fn lang_entity(
|
||||
value: &Value,
|
||||
args: &HashMap<String, rocket_dyn_templates::tera::Value>
|
||||
) -> Result<Value, Error> {
|
||||
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}", value.as_str().unwrap()))); // TODO: fix-me here!
|
||||
error!("{:?}", value); // TODO: rewrite me!!!
|
||||
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}", value["en"].as_str().unwrap()))); // TODO: fix-me here!
|
||||
}
|
||||
|
||||
pub fn gravatar_link(
|
||||
value: &Value,
|
||||
args: &HashMap<String, rocket_dyn_templates::tera::Value>
|
||||
) -> Result<Value, Error> {
|
||||
let val = digest(value.as_str().unwrap());
|
||||
return Ok(rocket_dyn_templates::tera::Value::String(format!("https://gravatar.com/avatar/{}", val))); // TODO: fix-me here!
|
||||
}
|
||||
|
||||
pub fn insert_space_every(
|
||||
|
@ -40,10 +40,6 @@
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#education" title="Education"><span class="menu-title">Education</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#portfolio" title="Portfolio"><span class="menu-title">Portfolio</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#references" title="References"><span class="menu-title">References</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#contact" title="Contact"><span class="menu-title">Contact</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -56,24 +52,17 @@
|
||||
<footer class="pt-4 pb-4 text-muted text-center d-print-none">
|
||||
<div class="container">
|
||||
<div class="my-3">
|
||||
<div class="h4">Walter Patterson</div>
|
||||
<div class="h4">{{ cv.person.name }} {{ cv.person.surname }}</div>
|
||||
<div class="footer-nav">
|
||||
<nav role="navigation">
|
||||
<ul class="nav justify-content-center">
|
||||
<li class="nav-item"><a class="nav-link" href="https://twitter.com/templateflip" title="Twitter"><i class="fab fa-twitter"></i><span class="menu-title sr-only">Twitter</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://www.facebook.com/templateflip" title="Facebook"><i class="fab fa-facebook"></i><span class="menu-title sr-only">Facebook</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://www.instagram.com/templateflip" title="Instagram"><i class="fab fa-instagram"></i><span class="menu-title sr-only">Instagram</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://github.com/templateflip" title="Github"><i class="fab fa-github"></i><span class="menu-title sr-only">Github</span></a>
|
||||
</li>
|
||||
{%block navlinks %} {% endblock navlinks %}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-small">
|
||||
<div class="mb-1">© Material Resume. All rights reserved.</div>
|
||||
<div class="mb-1">© Material Resume. All rights reserved. TODO: remove me!</div>
|
||||
<div>Design - <a href="https://templateflip.com/" target="_blank">TemplateFlip</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="cover bg-image"><img src="{{ "images/header-background.jpg" | static(static_host = static_host) }}" />
|
||||
<div class="mask" style="background-color: rgba(0, 0, 0, 0.7);backdrop-filter: blur(2px);">
|
||||
<div class="text-center p-5">
|
||||
<div class="avatar p-1"><img class="img-thumbnail shadow-2-strong" src="images/avatar.jpg" width="160" height="160"/></div>
|
||||
<div class="avatar p-1"><img class="img-thumbnail shadow-2-strong" src="{{ cv.person.email | gravatar_link }}" width="160" height="160"/></div>
|
||||
<div class="header-bio mt-3">
|
||||
<div data-aos="zoom-in" data-aos-delay="0">
|
||||
<h2 class="h1"> {{ cv.person.name }} {{ cv.person.surname }} </h2>
|
||||
@ -19,6 +19,7 @@
|
||||
<div class="header-social mb-3 d-print-none" data-aos="zoom-in" data-aos-delay="200">
|
||||
<nav role="navigation">
|
||||
<ul class="nav justify-content-center">
|
||||
{% block navlinks %}
|
||||
{% if cv.social.facebook %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ cv.social.facebook }}" title="Facebook"><i class="fab fa-facebook"></i><span class="menu-title sr-only">Facebook</span></a>
|
||||
@ -44,6 +45,7 @@
|
||||
<a class="nav-link" href="{{ cv.social.mastodon }}" title="github"><i class="fab fa-mastodon"></i><span class="menu-title sr-only">Mastodon</span></a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endblock navlinks %}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -61,7 +63,7 @@
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h2 class="h2 fw-light mb-4">{{ "About Me" | translate }} </h2>
|
||||
<p>LoremIPSUM chat gpt pomuze!</p>
|
||||
<p>{{ cv.person.about | lang_entity }}</p>
|
||||
</div>
|
||||
<div class="col-md-5 offset-lg-1">
|
||||
<div class="row mt-2">
|
||||
@ -142,7 +144,7 @@
|
||||
{% for job in cv.jobs %}
|
||||
<div class="timeline-card timeline-card-info" data-aos="fade-in" data-aos-delay="{{ loop.index * 100 }}">
|
||||
<div class="timeline-head px-4 pt-3">
|
||||
<div class="h5">{{ job.title | lang_entity }} <span class="text-muted h6">at {{ job.company }}</span></div>
|
||||
<div class="h5">{{ job.title }} <span class="text-muted h6">at {{ job.company }}</span></div>
|
||||
</div>
|
||||
<div class="timeline-body px-4 pb-4">
|
||||
<div class="text-muted text-small mb-3">May, 2015 - Present</div>
|
||||
@ -155,69 +157,62 @@
|
||||
</div>
|
||||
<div class="shadow-1-strong bg-white my-5 p-5" id="education">
|
||||
<div class="education-section">
|
||||
<h2 class="h2 fw-light mb-4">Education</h2>
|
||||
<h2 class="h2 fw-light mb-4">{{ "Education " | translate }}</h2>
|
||||
<div class="timeline">
|
||||
{% for education in cv.education %}
|
||||
<div class="timeline-card timeline-card-success" data-aos="fade-in" data-aos-delay="0">
|
||||
<div class="timeline-head px-4 pt-3">
|
||||
<div class="h5">Masters in Information Technology <span class="text-muted h6">from International University</span> </div>
|
||||
{% if education.degree %}
|
||||
<div class="h5">{{ education.degree | lang_entity }} <span class="text-muted h6">{{ education.school }}</span> </div>
|
||||
{% else %}
|
||||
<div class="h5">{{ education.school }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="timeline-body px-4 pb-4">
|
||||
|
||||
{% if education.description %}
|
||||
<div class="text-muted text-small mb-3">2011 - 2013</div>
|
||||
<div>Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeline-card timeline-card-success" data-aos="fade-in" data-aos-delay="200">
|
||||
<div class="timeline-head px-4 pt-3">
|
||||
<div class="h5">Bachelor of Computer Science <span class="text-muted h6">from Regional College</span> </div>
|
||||
</div>
|
||||
<div class="timeline-body px-4 pb-4">
|
||||
<div class="text-muted text-small mb-3">2007 - 2011</div>
|
||||
<div>Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeline-card timeline-card-success" data-aos="fade-in" data-aos-delay="400">
|
||||
<div class="timeline-head px-4 pt-3">
|
||||
<div class="h5">Science and Mathematics <span class="text-muted h6">from Mt. High Scool</span> </div>
|
||||
</div>
|
||||
<div class="timeline-body px-4 pb-4">
|
||||
<div class="text-muted text-small mb-3">1995 - 2007</div>
|
||||
<div>User generated content in real-time will have multiple touchpoints for offshoring. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.</div>
|
||||
<div>{{ education.description | lang_entity }}</div>
|
||||
{% else %}
|
||||
2011 - 2013
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shadow-1-strong bg-white my-5 p-5" id="contact">
|
||||
<div class="contant-section">
|
||||
<div class="contant-section">
|
||||
<h2 class="h2 fw-light text mb-4">Contact</h2>
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-5" data-aos="fade-left" data-aos-delay="200">
|
||||
<div class="mt-1">
|
||||
<div class="h6"><i class="fas fa-phone pe-2 text-muted" style="width:24px;opacity:0.85;"></i> +0718-111-0011</div>
|
||||
<div class="h6"><i class="far fa-envelope pe-2 text-muted" style="width:24px;opacity:0.85;"></i> walter@company.com</div>
|
||||
<div class="d-print-none">
|
||||
<form action="https://formspree.io/your@email.com" method="POST">
|
||||
<div class="form-outline mb-4">
|
||||
<input type="text" id="name" class="form-control" required/>
|
||||
<label class="form-label" for="name">Name</label>
|
||||
</div>
|
||||
<div class="form-outline mb-4">
|
||||
<input type="email" id="email" class="form-control" required/>
|
||||
<label class="form-label" for="email">Email address</label>
|
||||
</div>
|
||||
<div class="form-outline mb-4">
|
||||
<textarea class="form-control" style="resize: none;" id="message" rows="4" required></textarea>
|
||||
<label class="form-label" for="message">Message</label>
|
||||
</div>
|
||||
<button class="btn btn-info btn-block mb-4" type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-7 d-print-none" data-aos="zoom-in" data-aos-delay="100">
|
||||
<div class="h6"><i class="fas fa-phone pe-2 text-muted" style="width:24px;opacity:0.85;"></i>{{ cv.person.phone | insert_space_every(times=3) }}</div>
|
||||
<div class="h6"><i class="far fa-envelope pe-2 text-muted" style="width:24px;opacity:0.85;"></i>{{ cv.person.email }}</div>
|
||||
</div>
|
||||
<div class="mt-5 d-print-none"><form action="https://formspree.io/your@email.com"
|
||||
method="POST">
|
||||
<div class="form-outline mb-4">
|
||||
<input type="text" id="name" class="form-control" required/>
|
||||
<label class="form-label" for="name">Name</label>
|
||||
</div>
|
||||
<div class="form-outline mb-4">
|
||||
<input type="email" id="email" class="form-control" required/>
|
||||
<label class="form-label" for="email">Email address</label>
|
||||
</div>
|
||||
<div class="form-outline mb-4">
|
||||
<textarea class="form-control" style="resize: none;" id="message" rows="4" required></textarea>
|
||||
<label class="form-label" for="message">Message</label>
|
||||
</div>
|
||||
<button class="btn btn-info btn-block mb-4" type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-7 d-print-none" data-aos="zoom-in" data-aos-delay="100"><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d496.9774799129763!2d-73.98032087190995!3d40.765927126473905!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c258f9cfcb250d%3A0xdb570ddcb766e3a8!2sNew%20York%20City%20Center!5e0!3m2!1sen!2sin!4v1614183731149!5m2!1sen!2sin" width="500" height="400" style="border:0;width:100%;" allowfullscreen="" loading="lazy"></iframe></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
{% endblock content %}
|
Loading…
Reference in New Issue
Block a user