WIPing all the way
This commit is contained in:
parent
9e58fcdaee
commit
3eef8dbb61
207
app/app.js
207
app/app.js
|
|
@ -102,10 +102,10 @@ var app = new Vue({
|
|||
//this.loadFromStorage();
|
||||
|
||||
// Set the "current" main navigation item based on the current route.
|
||||
helpers.selectMenuItemForCurrentUrl();
|
||||
this.selectMenuItemForCurrentUrl();
|
||||
|
||||
// Once the app is fully displayed, hide the overlay.
|
||||
helpers.hideFullPageOverlay();
|
||||
this.hideFullPageOverlay();
|
||||
|
||||
this.status = "loaded"; // Now we can start watching for changes in 'sections' data.
|
||||
},
|
||||
|
|
@ -185,92 +185,120 @@ var app = new Vue({
|
|||
|
||||
|
||||
|
||||
/**
|
||||
* Open the sidebar on smaller screens.
|
||||
*/
|
||||
w3_open: function()
|
||||
{
|
||||
var mySidebar = document.getElementById("mySidebar");
|
||||
var overlayBg = document.getElementById("myOverlay");
|
||||
|
||||
console.log("mySidebar=", mySidebar);
|
||||
|
||||
if (mySidebar.style.display === 'block')
|
||||
{
|
||||
mySidebar.style.display = 'none';
|
||||
overlayBg.style.display = "none";
|
||||
}
|
||||
else
|
||||
{
|
||||
mySidebar.style.display = 'block';
|
||||
overlayBg.style.display = "block";
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Open the sidebar on smaller screens.
|
||||
*/
|
||||
w3_close: function()
|
||||
{
|
||||
var mySidebar = document.getElementById("mySidebar");
|
||||
var overlayBg = document.getElementById("myOverlay");
|
||||
|
||||
mySidebar.style.display = "none";
|
||||
overlayBg.style.display = "none";
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Show the full-page loading overlay.
|
||||
*/
|
||||
showFullPageOverlay: function()
|
||||
{
|
||||
document.getElementById("full-page-overlay").style.display = "block";
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Hide the full-page loading overlay.
|
||||
*/
|
||||
hideFullPageOverlay: function()
|
||||
{
|
||||
document.getElementById("full-page-overlay").style.display = "none";
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Find and mark the main navigation item for the selected "current" page/route
|
||||
*/
|
||||
selectMenuItemForCurrentUrl: function()
|
||||
{
|
||||
// Get domain root URL of the current page.
|
||||
var domainUrl = window.location.origin;
|
||||
|
||||
// Get components of the URL for the current page.
|
||||
var pageBasePathName = window.location.pathname;
|
||||
var pageHash = window.location.hash;
|
||||
var pagePathName = window.location.pathname;
|
||||
var pageBaseUrl = domainUrl + pageBasePathName + pageHash;
|
||||
|
||||
// Get all main navigation links
|
||||
var elements = document.querySelectorAll(".w3-bar-item");
|
||||
|
||||
for (let i = 0; i < elements.length; i++)
|
||||
{
|
||||
var element = elements[i];
|
||||
//console.log("element[" + i + "]=", element);
|
||||
|
||||
// Get HREF from the element
|
||||
var linkHref = element.getAttribute("href");
|
||||
|
||||
// Build a full URL the element's href (hash) so we can compare to the current URL.
|
||||
var linkFullHref = domainUrl + pagePathName + linkHref;
|
||||
|
||||
// Remove the "current page" indicator from the element.
|
||||
element.classList.remove("w3-blue");
|
||||
|
||||
// Ensure trailing slashes are added for comparison equivalence
|
||||
var urlLast = linkFullHref[linkFullHref.length - 1];
|
||||
if (urlLast != "/")
|
||||
{
|
||||
linkFullHref = linkFullHref + "/";
|
||||
}
|
||||
urlLast = pageBaseUrl[pageBaseUrl.length - 1];
|
||||
if (urlLast != "/")
|
||||
{
|
||||
pageBaseUrl = pageBaseUrl + "/";
|
||||
}
|
||||
|
||||
// Check if element is for the current page.
|
||||
if (linkFullHref == pageBaseUrl)
|
||||
{
|
||||
// Add the "current page" indicator to the element.
|
||||
element.classList.add("w3-blue");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
getDefaultSections: function()
|
||||
{
|
||||
// return {
|
||||
// basics: {
|
||||
// name: "",
|
||||
// label: "",
|
||||
// picture: "",
|
||||
// email: "",
|
||||
// phone: "",
|
||||
// website: "",
|
||||
// summary: "",
|
||||
// location: {
|
||||
// address: "",
|
||||
// postalCode: "",
|
||||
// city: "",
|
||||
// countryCode: "",
|
||||
// region: "",
|
||||
// },
|
||||
// profiles: [
|
||||
// {
|
||||
// network: "",
|
||||
// username: "",
|
||||
// url: "",
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// work: [{
|
||||
// company: "",
|
||||
// position: "",
|
||||
// website: "",
|
||||
// startDate: "",
|
||||
// endDate: "",
|
||||
// summary: "",
|
||||
// highlights: [""]
|
||||
// }],
|
||||
// volunteer: [{
|
||||
// organization: "",
|
||||
// position: "",
|
||||
// website: "",
|
||||
// startDate: "",
|
||||
// endDate: "",
|
||||
// summary: "",
|
||||
// highlights: []
|
||||
// }],
|
||||
// education: [{
|
||||
// institution: "",
|
||||
// area: "",
|
||||
// studyType: "",
|
||||
// startDate: "",
|
||||
// endDate: "",
|
||||
// gpa: "",
|
||||
// courses: []
|
||||
// }],
|
||||
// awards: [{
|
||||
// title: "",
|
||||
// date: "",
|
||||
// awarder: "",
|
||||
// summary: ""
|
||||
// }],
|
||||
// publications: [{
|
||||
// name: "",
|
||||
// publisher: "",
|
||||
// releaseDate: "",
|
||||
// website: "",
|
||||
// summary: ""
|
||||
// }],
|
||||
// skills: [{
|
||||
// name: "",
|
||||
// level: "",
|
||||
// keywords: []
|
||||
// }],
|
||||
// languages: [{
|
||||
// language: "",
|
||||
// fluency: ""
|
||||
// }],
|
||||
// interests: [{
|
||||
// name: "",
|
||||
// keywords: [
|
||||
// ]
|
||||
// }],
|
||||
// references: [{
|
||||
// name: "",
|
||||
// reference: ""
|
||||
// }]
|
||||
// };
|
||||
|
||||
var structure = {
|
||||
basics: {},
|
||||
work: [],
|
||||
|
|
@ -299,7 +327,6 @@ var app = new Vue({
|
|||
return structure;
|
||||
},
|
||||
|
||||
|
||||
getDefaultBasic: function()
|
||||
{
|
||||
return {
|
||||
|
|
@ -469,10 +496,8 @@ var app = new Vue({
|
|||
*/
|
||||
$route: function (to, from)
|
||||
{
|
||||
//console.log("Route change: ", from, " --> ", to);
|
||||
|
||||
// Set the "current" main navigation item based on the current route.
|
||||
helpers.selectMenuItemForCurrentUrl();
|
||||
this.selectMenuItemForCurrentUrl();
|
||||
|
||||
// Set the current page details based on the component mapped to the active route.
|
||||
var component = components.getComponentByPath(to.fullPath);
|
||||
|
|
@ -492,5 +517,5 @@ var app = new Vue({
|
|||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
|
|
@ -27,6 +27,10 @@ var sectionAwardsComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
|
||||
addAward: function()
|
||||
{
|
||||
var item = this.$root.getDefaultAward();
|
||||
this.$root.sections.awards.push(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -27,10 +27,15 @@ var sectionEducationComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
addEducation: function()
|
||||
{
|
||||
var item = this.$root.getDefaultEducation();
|
||||
this.$root.sections.education.push(item);
|
||||
},
|
||||
|
||||
addCourse: function(index)
|
||||
{
|
||||
var item = this.$root.getDefaultEducationCourse();
|
||||
//console.log("addHighlight(" + index + ")", this.$root.sections.volunteer[index]);
|
||||
this.$root.sections.education[index].courses.push(item);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,12 @@ var sectionInterestsComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
addInterest: function()
|
||||
{
|
||||
var item = this.$root.getDefaultInterest();
|
||||
this.$root.sections.interests.push(item);
|
||||
},
|
||||
|
||||
addKeyword: function(index)
|
||||
{
|
||||
var item = this.$root.getDefaultInterestKeywoard();
|
||||
|
|
|
|||
|
|
@ -27,6 +27,10 @@ var sectionLanguagesComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
|
||||
addLanguage: function()
|
||||
{
|
||||
var item = this.$root.getDefaultInterest();
|
||||
this.$root.sections.languages.push(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -27,6 +27,10 @@ var sectionPublicationsComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
|
||||
addPublication: function()
|
||||
{
|
||||
var item = this.$root.getDefaultWork();
|
||||
this.$root.sections.publications.push(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -27,6 +27,10 @@ var sectionReferencesComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
|
||||
addReference: function()
|
||||
{
|
||||
var item = this.$root.getDefaultReference();
|
||||
this.$root.sections.references.push(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -27,6 +27,12 @@ var sectionSkillsComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
addSkill: function()
|
||||
{
|
||||
var item = this.$root.getDefaultSkill();
|
||||
this.$root.sections.skills.push(item);
|
||||
},
|
||||
|
||||
addKeyword: function(index)
|
||||
{
|
||||
var item = this.$root.getDefaultSkillKeywoard();
|
||||
|
|
|
|||
|
|
@ -27,6 +27,12 @@ var sectionVolunteerComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
addPosition: function()
|
||||
{
|
||||
var item = this.$root.getDefaultVolunteer();
|
||||
this.$root.sections.volunteer.push(item);
|
||||
},
|
||||
|
||||
addHighlight: function(index)
|
||||
{
|
||||
var item = this.$root.getDefaulVolunteerHighlight();
|
||||
|
|
|
|||
|
|
@ -27,10 +27,15 @@ var sectionWorkComponent = {
|
|||
|
||||
|
||||
methods: {
|
||||
addPosition: function()
|
||||
{
|
||||
var item = this.$root.getDefaultWork();
|
||||
this.$root.sections.work.push(item);
|
||||
},
|
||||
|
||||
addHighlight: function(index)
|
||||
{
|
||||
var item = this.$root.getDefaultWorkHighlight();
|
||||
console.log("addHighlight(" + index + ")", this.$root.sections.work[index]);
|
||||
this.$root.sections.work[index].highlights.push(item);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
163
index.html
163
index.html
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<!-- Top container -->
|
||||
<div class="w3-bar w3-top w3-black w3-large" style="z-index:4">
|
||||
<button class="w3-bar-item w3-button w3-hide-large w3-hover-none w3-hover-text-light-grey" onclick="helpers.w3_open();"><i class="fa fa-bars"></i> Menu</button>
|
||||
<button class="w3-bar-item w3-button w3-hide-large w3-hover-none w3-hover-text-light-grey" v-on:click="w3_open"><i class="fa fa-bars"></i> Menu</button>
|
||||
<span class="w3-bar-item w3-right">JSON Resume Editor</span>
|
||||
</div>
|
||||
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
<h5>Resume Sections</h5>
|
||||
</div>
|
||||
<div class="w3-bar-block">
|
||||
<a href="#/" class="w3-bar-item w3-button w3-padding-16 w3-hide-large w3-dark-grey w3-hover-black" onclick="helpers.w3_close()" title="close menu"><i class="fas fa-times"></i> Close Menu</a>
|
||||
<a href="#/" class="w3-bar-item w3-button w3-padding-16 w3-hide-large w3-dark-grey w3-hover-black" v-on:click="w3_close" title="close menu"><i class="fas fa-times"></i> Close Menu</a>
|
||||
<a href="#/section/basics" class="w3-bar-item w3-button w3-padding"><i class="far fa-address-card"></i> Basics</a>
|
||||
<a href="#/section/work" class="w3-bar-item w3-button w3-padding"><i class="fas fa-building"></i> Work</a>
|
||||
<a href="#/section/volunteer" class="w3-bar-item w3-button w3-padding"><i class="fas fa-hands-helping"></i> Volunteer</a>
|
||||
|
|
@ -69,25 +69,24 @@
|
|||
|
||||
|
||||
<!-- Overlay effect when opening sidebar on small screens -->
|
||||
<div class="w3-overlay w3-hide-large w3-animate-opacity" onclick="helpers.w3_close()" style="cursor:pointer" title="close side menu" id="myOverlay"></div>
|
||||
<div class="w3-overlay w3-hide-large w3-animate-opacity" v-on:click="w3_close" style="cursor:pointer" title="close side menu" id="myOverlay"></div>
|
||||
|
||||
|
||||
<!-- End Page Content -->
|
||||
<div class="w3-main w3-padding-16">
|
||||
|
||||
<div id="full-page-overlay">
|
||||
<div id="full-page-overlay-text">Please wait while we load the goodness.</div>
|
||||
</div>
|
||||
|
||||
<div id="full-page-overlay">
|
||||
<div id="full-page-overlay-text">Please wait while we load the goodness.</div>
|
||||
</div>
|
||||
<!-- Header -->
|
||||
<header class="w3-container">
|
||||
<h5 v-if="activePage.title != ''"><b><i class='page-title' style="margin-right: 20px;" v-if="activePage.fontAwesomeIconCss != ''" v-bind:class="activePage.fontAwesomeIconCss"></i> {{activePage.title}}</b></h5>
|
||||
</header>
|
||||
|
||||
<!-- Header -->
|
||||
<header class="w3-container">
|
||||
<h5 v-if="activePage.title != ''"><b><i class='page-title' style="margin-right: 20px;" v-if="activePage.fontAwesomeIconCss != ''" v-bind:class="activePage.fontAwesomeIconCss"></i> {{activePage.title}}</b></h5>
|
||||
</header>
|
||||
|
||||
<div class="w3-container">
|
||||
<router-view>Loading...</router-view>
|
||||
</div>
|
||||
<div class="w3-container">
|
||||
<router-view>Loading...</router-view>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
|
@ -267,9 +266,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-work-template" lang="html">
|
||||
<div id="section-work-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addPosition">+ Add Position</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(work, w_index) in $root.sections.work">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(work, w_index) in $root.sections.work">
|
||||
<p>
|
||||
<label for="company" class="w3-text-blue required-field"><b>Company</b></label>
|
||||
<input id="company" class="w3-input w3-border" type="text" v-model="work.company" required>
|
||||
|
|
@ -314,7 +315,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left" v-for="(work, w_index) in $root.sections.work">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(work, w_index) in $root.sections.work">
|
||||
<preview-field label="Company" v-bind:value="work.company"></preview-field>
|
||||
<preview-field label="Position" v-bind:value="work.position"></preview-field>
|
||||
<preview-field label="Website" v-bind:value="work.website" format="url"></preview-field>
|
||||
|
|
@ -338,9 +339,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-volunteer-template" lang="html">
|
||||
<div id="section-volunteer-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addPosition">+ Add Position</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(vol, v_index) in $root.sections.volunteer">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(vol, v_index) in $root.sections.volunteer">
|
||||
<div>
|
||||
<p>
|
||||
<label for="organization" class="w3-text-blue required-field"><b>Organisation</b></label>
|
||||
|
|
@ -387,22 +390,20 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left">
|
||||
<div v-for="(vol, v_index) in $root.sections.volunteer">
|
||||
<preview-field label="Organisation" v-bind:value="vol.organization"></preview-field>
|
||||
<preview-field label="Position" v-bind:value="vol.position"></preview-field>
|
||||
<preview-field label="Website" v-bind:value="vol.website" format="url"></preview-field>
|
||||
<preview-field label="Start Date" v-bind:value="vol.startDate"></preview-field>
|
||||
<preview-field label="End Date" v-bind:value="vol.endDate"></preview-field>
|
||||
<preview-field label="Summary" v-bind:value="vol.summary" format="multi-line"></preview-field>
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(vol, v_index) in $root.sections.volunteer">
|
||||
<preview-field label="Organisation" v-bind:value="vol.organization"></preview-field>
|
||||
<preview-field label="Position" v-bind:value="vol.position"></preview-field>
|
||||
<preview-field label="Website" v-bind:value="vol.website" format="url"></preview-field>
|
||||
<preview-field label="Start Date" v-bind:value="vol.startDate"></preview-field>
|
||||
<preview-field label="End Date" v-bind:value="vol.endDate"></preview-field>
|
||||
<preview-field label="Summary" v-bind:value="vol.summary" format="multi-line"></preview-field>
|
||||
|
||||
<h5 class="margin-top-32">Highlights</h5>
|
||||
<ol>
|
||||
<li v-for="(highlight, h_index) in vol.highlights">
|
||||
<preview-field label="" v-bind:value="$root.sections.volunteer[v_index].highlights[h_index]" format="list-item"></preview-field>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<h5 class="margin-top-32">Highlights</h5>
|
||||
<ol>
|
||||
<li v-for="(highlight, h_index) in vol.highlights">
|
||||
<preview-field label="" v-bind:value="$root.sections.volunteer[v_index].highlights[h_index]" format="list-item"></preview-field>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -413,9 +414,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-education-template" lang="html">
|
||||
<div id="section-education-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addEducation">+ Add Education</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(edu, e_index) in $root.sections.education">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(edu, e_index) in $root.sections.education">
|
||||
<p>
|
||||
<label for="institution" class="w3-text-blue required-field"><b>Institution</b></label>
|
||||
<input id="institution" class="w3-input w3-border" type="text" v-model="edu.institution" required>
|
||||
|
|
@ -459,7 +462,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left" v-for="(edu, e_index) in $root.sections.education">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(edu, e_index) in $root.sections.education">
|
||||
<preview-field label="Institution" v-bind:value="edu.institution"></preview-field>
|
||||
<preview-field label="Area" v-bind:value="edu.area"></preview-field>
|
||||
<preview-field label="Study Type" v-bind:value="edu.studyType"></preview-field>
|
||||
|
|
@ -483,9 +486,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-awards-template" lang="html">
|
||||
<div id="section-awards-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addAward">+ Add Award</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(award, a_index) in $root.sections.awards">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(award, a_index) in $root.sections.awards">
|
||||
<p>
|
||||
<label for="title" class="w3-text-blue required-field"><b>Title</b></label>
|
||||
<input id="title" class="w3-input w3-border" type="text" v-model="award.title" required>
|
||||
|
|
@ -509,7 +514,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left" v-for="(award, a_index) in $root.sections.awards">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(award, a_index) in $root.sections.awards">
|
||||
<preview-field label="Title" v-bind:value="award.title"></preview-field>
|
||||
<preview-field label="Date" v-bind:value="award.date"></preview-field>
|
||||
<preview-field label="Awarder" v-bind:value="award.awarder"></preview-field>
|
||||
|
|
@ -524,9 +529,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-publications-template" lang="html">
|
||||
<div id="section-publications-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addPublication">+ Add Publication</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(publication, p_index) in $root.sections.publications">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(publication, p_index) in $root.sections.publications">
|
||||
<p>
|
||||
<label for="name" class="w3-text-blue required-field"><b>Name</b></label>
|
||||
<input id="name" class="w3-input w3-border" type="text" v-model="publication.name" required>
|
||||
|
|
@ -555,7 +562,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left" v-for="(publication, p_index) in $root.sections.publications">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(publication, p_index) in $root.sections.publications">
|
||||
<preview-field label="Name" v-bind:value="publication.name"></preview-field>
|
||||
<preview-field label="Publisher" v-bind:value="publication.publisher"></preview-field>
|
||||
<preview-field label="Release Date" v-bind:value="publication.releaseDate"></preview-field>
|
||||
|
|
@ -571,9 +578,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-skills-template" lang="html">
|
||||
<div id="section-skills-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addSkill">+ Add Skill</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(skill, s_index) in $root.sections.skills">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(skill, s_index) in $root.sections.skills">
|
||||
<p>
|
||||
<label for="name" class="w3-text-blue required-field"><b>Name</b></label>
|
||||
<input id="name" class="w3-input w3-border" type="text" v-model="skill.name" required>
|
||||
|
|
@ -597,7 +606,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left" v-for="(skill, s_index) in $root.sections.skills">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(skill, s_index) in $root.sections.skills">
|
||||
<preview-field label="Name" v-bind:value="skill.name"></preview-field>
|
||||
<preview-field label="Level" v-bind:value="skill.level"></preview-field>
|
||||
|
||||
|
|
@ -617,29 +626,27 @@
|
|||
|
||||
<template type="text/x-template" id="section-languages-template" lang="html">
|
||||
<div id="section-languages-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addLanguage">+ Add Language</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4">
|
||||
<div>
|
||||
<p>
|
||||
<label for="language" class="w3-text-blue required-field"><b>Language</b></label>
|
||||
<input id="language" class="w3-input w3-border" type="text" v-model="$root.sections.languages[0].language" required>
|
||||
<small id="languageHelp" class="form-help text-muted">Name of the language.</small>
|
||||
</p>
|
||||
<p>
|
||||
<label for="fluency" class="w3-text-blue required-field"><b>Fluency</b></label>
|
||||
<input id="fluency" class="w3-input w3-border" type="text" v-model="$root.sections.languages[0].fluency" required>
|
||||
<small id="fluencyHelp" class="form-help text-muted">Fluency in the language.</small>
|
||||
</p>
|
||||
</div>
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="language in $root.sections.languages">
|
||||
<p>
|
||||
<label for="language" class="w3-text-blue required-field"><b>Language</b></label>
|
||||
<input id="language" class="w3-input w3-border" type="text" v-model="language.language" required>
|
||||
<small id="languageHelp" class="form-help text-muted">Name of the language.</small>
|
||||
</p>
|
||||
<p>
|
||||
<label for="fluency" class="w3-text-blue required-field"><b>Fluency</b></label>
|
||||
<input id="fluency" class="w3-input w3-border" type="text" v-model="language.fluency" required>
|
||||
<small id="fluencyHelp" class="form-help text-muted">Fluency in the language.</small>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left">
|
||||
<div>
|
||||
<preview-field label="Language" v-bind:value="$root.sections.languages[0].language"></preview-field>
|
||||
<preview-field label="Fluency" v-bind:value="$root.sections.languages[0].fluency"></preview-field>
|
||||
</div>
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="language in $root.sections.languages">
|
||||
<preview-field label="Language" v-bind:value="language.language"></preview-field>
|
||||
<preview-field label="Fluency" v-bind:value="language.fluency"></preview-field>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -650,9 +657,11 @@
|
|||
|
||||
<template type="text/x-template" id="section-interests-template" lang="html">
|
||||
<div id="section-interests-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addInterest">+ Add Interest</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4" v-for="(interest, i_index) in $root.sections.interests">
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="(interest, i_index) in $root.sections.interests">
|
||||
<p>
|
||||
<label for="name" class="w3-text-blue required-field"><b>Name</b></label>
|
||||
<input id="name" class="w3-input w3-border" type="text" v-model="interest.name" required>
|
||||
|
|
@ -672,7 +681,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left" v-for="(interest, i_index) in $root.sections.interests">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="(interest, i_index) in $root.sections.interests">
|
||||
<preview-field label="Name" v-bind:value="interest.name"></preview-field>
|
||||
|
||||
<h5 class="margin-top-32">Keywords</h5>
|
||||
|
|
@ -691,29 +700,27 @@
|
|||
|
||||
<template type="text/x-template" id="section-references-template" lang="html">
|
||||
<div id="section-references-root">
|
||||
<button type="button" class="w3-btn w3-white w3-border w3-border-blue w3-round w3-padding-small" v-on:click="addReference">+ Add Reference</button>
|
||||
|
||||
<div class="w3-row">
|
||||
<div class="w3-col m6">
|
||||
<form class="w3-container w3-card-4">
|
||||
<div>
|
||||
<p>
|
||||
<label for="name" class="w3-text-blue required-field"><b>Name</b></label>
|
||||
<input id="name" class="w3-input w3-border" type="text" v-model="$root.sections.references[0].name" required>
|
||||
<small id="nameHelp" class="form-help text-muted">Name of the person.</small>
|
||||
</p>
|
||||
<p>
|
||||
<label for="reference" class="w3-text-blue required-field"><b>Reference</b></label>
|
||||
<textarea id="reference" rows="8" class="w3-input w3-border" type="text" v-model="$root.sections.references[0].reference"></textarea>
|
||||
<small id="referenceHelp" class="form-help text-muted">The reference given by the person.</small>
|
||||
</p>
|
||||
</div>
|
||||
<form class="w3-container w3-card-4 margin-top-32" v-for="reference in $root.sections.references">
|
||||
<p>
|
||||
<label for="name" class="w3-text-blue required-field"><b>Name</b></label>
|
||||
<input id="name" class="w3-input w3-border" type="text" v-model="reference.name" required>
|
||||
<small id="nameHelp" class="form-help text-muted">Name of the person.</small>
|
||||
</p>
|
||||
<p>
|
||||
<label for="reference" class="w3-text-blue required-field"><b>Reference</b></label>
|
||||
<textarea id="reference" rows="8" class="w3-input w3-border" type="text" v-model="reference.reference"></textarea>
|
||||
<small id="referenceHelp" class="form-help text-muted">The reference given by the person.</small>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
<div class="w3-col m6">
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left">
|
||||
<div>
|
||||
<preview-field label="Name" v-bind:value="$root.sections.references[0].name"></preview-field>
|
||||
<preview-field label="Reference" v-bind:value="$root.sections.references[0].reference" format="multi-line"></preview-field>
|
||||
</div>
|
||||
<div class="preview w3-container w3-card-4 w3-padding-16 w3-margin-left margin-top-32" v-for="reference in $root.sections.references">
|
||||
<preview-field label="Name" v-bind:value="reference.name"></preview-field>
|
||||
<preview-field label="Reference" v-bind:value="reference.reference" format="multi-line"></preview-field>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
116
scripts.js
116
scripts.js
|
|
@ -2,122 +2,6 @@
|
|||
* Create a Helpers object to keep functions out of the global namespace space.
|
||||
*/
|
||||
var helpers = {
|
||||
/********************************************************************************
|
||||
* Open and close the sidebar on smaller screens
|
||||
********************************************************************************/
|
||||
|
||||
/**
|
||||
* Get the Sidebar element.
|
||||
*/
|
||||
mySidebar: document.getElementById("mySidebar"),
|
||||
|
||||
/**
|
||||
* Get the DIV with overlay effect.
|
||||
*/
|
||||
overlayBg: document.getElementById("myOverlay"),
|
||||
|
||||
|
||||
/**
|
||||
* Toggle between showing and hiding the sidebar, and add overlay effect.
|
||||
*/
|
||||
w3_open: function()
|
||||
{
|
||||
if (this.mySidebar.style.display === 'block')
|
||||
{
|
||||
this.mySidebar.style.display = 'none';
|
||||
this.overlayBg.style.display = "none";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.mySidebar.style.display = 'block';
|
||||
this.overlayBg.style.display = "block";
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Close the sidebar with the close button.
|
||||
*/
|
||||
w3_close: function()
|
||||
{
|
||||
this.mySidebar.style.display = "none";
|
||||
this.overlayBg.style.display = "none";
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/********************************************************************************
|
||||
* Show and hide the full-page loading overlay.
|
||||
********************************************************************************/
|
||||
showFullPageOverlay: function()
|
||||
{
|
||||
document.getElementById("full-page-overlay").style.display = "block";
|
||||
},
|
||||
|
||||
hideFullPageOverlay: function()
|
||||
{
|
||||
document.getElementById("full-page-overlay").style.display = "none";
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Find and mark the main navigation item for the selected "current" page/route
|
||||
*/
|
||||
selectMenuItemForCurrentUrl: function()
|
||||
{
|
||||
// Get domain root URL of the current page.
|
||||
var domainUrl = window.location.origin;
|
||||
|
||||
// Get components of the URL for the current page.
|
||||
var pageBasePathName = window.location.pathname;
|
||||
var pageHash = window.location.hash;
|
||||
var pagePathName = window.location.pathname;
|
||||
var pageBaseUrl = domainUrl + pageBasePathName + pageHash;
|
||||
|
||||
// Get all main navigation links
|
||||
var elements = document.querySelectorAll(".w3-bar-item");
|
||||
|
||||
for (let i = 0; i < elements.length; i++)
|
||||
{
|
||||
var element = elements[i];
|
||||
//console.log("element[" + i + "]=", element);
|
||||
|
||||
// Get HREF from the element
|
||||
var linkHref = element.getAttribute("href");
|
||||
|
||||
// Build a full URL the element's href (hash) so we can compare to the current URL.
|
||||
var linkFullHref = domainUrl + pagePathName + linkHref;
|
||||
|
||||
// Remove the "current page" indicator from the element.
|
||||
element.classList.remove("w3-blue");
|
||||
|
||||
// Ensure trailing slashes are added for comparison equivalence
|
||||
var urlLast = linkFullHref[linkFullHref.length - 1];
|
||||
if (urlLast != "/")
|
||||
{
|
||||
linkFullHref = linkFullHref + "/";
|
||||
}
|
||||
urlLast = pageBaseUrl[pageBaseUrl.length - 1];
|
||||
if (urlLast != "/")
|
||||
{
|
||||
pageBaseUrl = pageBaseUrl + "/";
|
||||
}
|
||||
|
||||
// Check if element is for the current page.
|
||||
if (linkFullHref == pageBaseUrl)
|
||||
{
|
||||
// Add the "current page" indicator to the element.
|
||||
element.classList.add("w3-blue");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
setLocalStorage: function(key, value)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue