Update code

Updated sourcecode and added meta tags
This commit is contained in:
Kamil Niemczycki 2021-09-09 16:38:40 +02:00
parent 90173e5092
commit 1e13e55029
8 changed files with 151 additions and 114 deletions

32
package-lock.json generated
View File

@ -18,6 +18,7 @@
"jquery": "^3.6.0", "jquery": "^3.6.0",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-meta": "^2.4.0",
"vue-router": "^3.5.2", "vue-router": "^3.5.2",
"vuex": "^3.6.2" "vuex": "^3.6.2"
}, },
@ -16641,6 +16642,22 @@
"integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
"dev": true "dev": true
}, },
"node_modules/vue-meta": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-2.4.0.tgz",
"integrity": "sha512-XEeZUmlVeODclAjCNpWDnjgw+t3WA6gdzs6ENoIAgwO1J1d5p1tezDhtteLUFwcaQaTtayRrsx7GL6oXp/m2Jw==",
"dependencies": {
"deepmerge": "^4.2.2"
}
},
"node_modules/vue-meta/node_modules/deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "3.5.2", "version": "3.5.2",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
@ -31177,6 +31194,21 @@
} }
} }
}, },
"vue-meta": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-2.4.0.tgz",
"integrity": "sha512-XEeZUmlVeODclAjCNpWDnjgw+t3WA6gdzs6ENoIAgwO1J1d5p1tezDhtteLUFwcaQaTtayRrsx7GL6oXp/m2Jw==",
"requires": {
"deepmerge": "^4.2.2"
},
"dependencies": {
"deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
}
}
},
"vue-router": { "vue-router": {
"version": "3.5.2", "version": "3.5.2",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",

View File

@ -18,6 +18,7 @@
"jquery": "^3.6.0", "jquery": "^3.6.0",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-meta": "^2.4.0",
"vue-router": "^3.5.2", "vue-router": "^3.5.2",
"vuex": "^3.6.2" "vuex": "^3.6.2"
}, },

View File

@ -1,48 +0,0 @@
[
{
"id": 1,
"title": "Test 1",
"category": "prywatne",
"author": "Kamil Niemczycki",
"image": "assets/img/projects/kamilcraft.jpg",
"release_data": "30 sierpnia 2021",
"version": "v1.0.0",
"short_description": "abcdefghijklmnoprestuwxyz"
},
{
"id": 2,
"title": "Test 1",
"category": "wordpress",
"image": "assets/me.jpg",
"release_data": "30 sierpnia 2021",
"version": "v1.0.0",
"short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit,\nsed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\nUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
},
{
"id": 3,
"title": "Test 1",
"category": "prywatne",
"image": "assets/me.jpg",
"release_data": "30 sierpnia 2021",
"version": "v1.0.0",
"short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit,\nsed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\nUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
},
{
"id": 4,
"title": "Test 1",
"category": "zlecenia",
"image": "assets/me.jpg",
"release_data": "30 sierpnia 2021",
"version": "v1.0.0",
"short_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit,\nsed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\nUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
},
{
"id": 5,
"title": "Test 1",
"category": "zlecenia",
"image": "assets/me.jpg",
"release_data": "30 sierpnia 2021",
"version": "v1.0.0",
"short_description": "abcdefghijklmnoprestuwxyz"
}
]

View File

@ -8,64 +8,19 @@
technologie, które wspomagają pisanie i rozwijanie oprogramowania. technologie, które wspomagają pisanie i rozwijanie oprogramowania.
</p> </p>
<div class="skills"> <div class="skills">
<div class="skill-group"> <div v-for="(skill, key) in list" :key="key" class="skill-group">
<header class="skill-header"> <header class="skill-header">
<div class="tech-icons"> <div class="tech-icons">
<font-awesome-icon class="icon-php" :icon="['fab', 'php']" title="Ikona PHP" /> <font-awesome-icon
<font-awesome-icon class="icon-laravel" :icon="['fab', 'laravel']" title="Ikona Laravel" /> v-for="(icon, keyIcon) in skill.icons"
:key="keyIcon" :class="icon.class"
:icon="['fab', icon.name]"
:title="icon.title" />
</div> </div>
<h3>{{ php.header }}</h3> <h3>{{ skill.header }}</h3>
</header> </header>
<p v-if="php.showMore || php.description.length < 255">{{ php.description }}</p> <p v-if="skill.showMore || skill.description.length < 200">{{ skill.description }}</p>
<p v-else>{{ php.description.substr(0, 255) }}... <a @click="() => { php.showMore = true }">Więcej</a></p> <p v-else>{{ parseText(skill.description) }}... <a @click="changeMoreStatus(skill)">Więcej</a></p>
</div>
<div class="skill-group">
<header class="skill-header">
<div class="tech-icons">
<font-awesome-icon class="icon-js" :icon="['fab', 'js-square']" />
</div>
<h3>{{ javascript.header }}</h3>
</header>
<p v-if="javascript.showMore || javascript.description.length < 255">{{ javascript.description }}</p>
<p v-else>{{ javascript.description.substr(0, 255) }}... <a @click="() => { javascript.showMore = true }">Więcej</a></p>
</div>
<div class="skill-group">
<header class="skill-header">
<div class="tech-icons">
<font-awesome-icon class="icon-vue" :icon="['fab', 'vuejs']" />
</div>
<h3>{{ vue.header }}</h3>
</header>
<p v-if="vue.showMore || vue.description.length < 255">{{ vue.description }}</p>
<p v-else>{{ vue.description.substr(0, 255) }}... <a @click="() => { vue.showMore = true }">Więcej</a></p>
</div>
<div class="skill-group">
<header class="skill-header">
<div class="tech-icons">
<font-awesome-icon class="icon-html5" :icon="['fab', 'html5']" />
<font-awesome-icon class="icon-css3" :icon="['fab', 'css3-alt']" />
</div>
<h3>HTML & CSS</h3>
</header>
<p>I have more than 10 years' experience building software for clients all over the world. Below is a quick overview of my main technical skill sets and technologies I use. Want to find out more about my experience? Check out my online resume and project portfolio.</p>
</div>
<div class="skill-group">
<header class="skill-header">
<div class="tech-icons">
<font-awesome-icon class="icon-node" :icon="['fab', 'node']" />
</div>
<h3>Node.js</h3>
</header>
<p>I have more than 10 years' experience building software for clients all over the world. Below is a quick overview of my main technical skill sets and technologies I use. Want to find out more about my experience? Check out my online resume and project portfolio.</p>
</div>
<div class="skill-group">
<header class="skill-header">
<div class="tech-icons">
<font-awesome-icon class="icon-sass" :icon="['fab', 'sass']" />
</div>
<h3>Sass</h3>
</header>
<p>I have more than 10 years' experience building software for clients all over the world. Below is a quick overview of my main technical skill sets and technologies I use. Want to find out more about my experience? Check out my online resume and project portfolio.</p>
</div> </div>
</div> </div>
</div> </div>
@ -77,27 +32,117 @@ export default {
name: 'Experiences', name: 'Experiences',
data () { data () {
return { return {
php: { list: []
}
},
mounted () {
this.list = [
{
icons: [
{
class: 'icon-php',
name: 'php',
title: 'Ikona PHP'
},
{
class: 'icon-laravel',
name: 'laravel',
title: 'Ikona Laravel'
}
],
header: 'PHP & Laravel', header: 'PHP & Laravel',
showMore: false, showMore: false,
description: `PHP wraz z frameworkiem Laravel wykorzystuję do tworzenia nowych projektów. Laravel znacznie description: `PHP wraz z frameworkiem Laravel wykorzystuję do tworzenia nowych projektów. Laravel znacznie
przyspiesza pisanie części backendowej, odciążając programistę od pisania skomplikownych filtrów i monotonnych przyspiesza pisanie części backendowej, odciążając programistę od pisania skomplikownych filtrów i monotonnych
walidacji przyjmowanych danych od użytkowników. Jednakże, choć dobrze pracuje mi się w środowisku Laravel w walidacji przyjmowanych danych od użytkowników. Jednakże, choć dobrze pracuje mi się w środowisku Laravel
miarę możliwości staram się pisać kod w samym PHP z wykorzystaniem bibliotek i paczek autorskich.` w miarę możliwości staram się pisać kod w samym PHP z wykorzystaniem bibliotek i paczek autorskich.`
}, },
javascript: { {
icons: [
{
class: 'icon-js',
name: 'js-square',
title: 'Ikona JavaScript'
}
],
header: 'JavaScript Vanilla', header: 'JavaScript Vanilla',
showMore: false, showMore: false,
description: `JavaScript wykorzystuję głównie do logiki frontendowej jak i pisania kodu wykonywalnego po stronie description: `JavaScript wykorzystuję głównie do logiki frontendowej jak i pisania kodu wykonywalnego po stronie
przeglądarki internetowej. Wykorzystując możliwości reaktywnych frameworków mogę przyspieszyć pisanie UI.` przeglądarki internetowej. Wykorzystując możliwości reaktywnych frameworków mogę przyspieszyć pisanie UI.`
}, },
vue: { {
icons: [
{
class: 'icon-vue',
name: 'vuejs',
title: 'Ikona Vue'
}
],
header: 'Vue', header: 'Vue',
showMore: false, showMore: false,
description: `Framework ten wspomaga mnie w pisaniu aplikacji frontendowej. Przyspiesza tworzenie warstwy description: `Framework ten wspomaga mnie w pisaniu aplikacji frontendowej. Przyspiesza tworzenie warstwy
wizualnej, obsługę interakcji z użytkownikiem i bindowanie zdefiniowanych pól, które odpowiednio renderowane wizualnej, obsługę interakcji z użytkownikiem i bindowanie zdefiniowanych pól, które odpowiednio renderowane
przez przeglądarkę. To wszystko, umożliwia łatwe łączenie CSS i HTML z logiką i otrzymanymi danymi z API.` przez przeglądarkę. To wszystko, umożliwia łatwe łączenie CSS i HTML z logiką i otrzymanymi danymi z API.`
},
{
icons: [
{
class: 'icon-html5',
name: 'html5',
title: 'Ikona HTML5'
},
{
class: 'icon-css3',
name: 'css3-alt',
title: 'Ikona CSS3'
}
],
header: 'HTML & CSS',
showMore: false,
description: `Framework ten wspomaga mnie w pisaniu aplikacji frontendowej. Przyspiesza tworzenie warstwy
wizualnej, obsługę interakcji z użytkownikiem i bindowanie zdefiniowanych pól, które odpowiednio renderowane
przez przeglądarkę. To wszystko, umożliwia łatwe łączenie CSS i HTML z logiką i otrzymanymi danymi z API.`
},
{
icons: [
{
class: 'icon-node',
name: 'node',
title: 'Ikona Node.js'
}
],
header: 'Node.js',
showMore: false,
description: `Framework ten wspomaga mnie w pisaniu aplikacji frontendowej. Przyspiesza tworzenie warstwy
wizualnej, obsługę interakcji z użytkownikiem i bindowanie zdefiniowanych pól, które odpowiednio renderowane
przez przeglądarkę. To wszystko, umożliwia łatwe łączenie CSS i HTML z logiką i otrzymanymi danymi z API.`
},
{
icons: [
{
class: 'icon-sass',
name: 'sass',
title: 'Ikona Sass'
}
],
header: 'Sass',
showMore: false,
description: `Framework ten wspomaga mnie w pisaniu aplikacji frontendowej. Przyspiesza tworzenie warstwy
wizualnej, obsługę interakcji z użytkownikiem i bindowanie zdefiniowanych pól, które odpowiednio renderowane
przez przeglądarkę. To wszystko, umożliwia łatwe łączenie CSS i HTML z logiką i otrzymanymi danymi z API.`
} }
]
},
methods: {
parseText (text) {
let shortText = text.substr(0, 200)
if (shortText.slice(-1) === ' ') {
shortText = text.substr(0, 199)
}
return shortText
},
changeMoreStatus (skill) {
skill.showMore = !skill.showMore
} }
} }
} }
@ -125,7 +170,7 @@ export default {
font-size: 1.8em; font-size: 1.8em;
margin-bottom: 3px; margin-bottom: 3px;
& > *[class|=icon] { & > svg[class*='icon'] {
margin-right: 10px; margin-right: 10px;
&:last-child { &:last-child {

View File

@ -2,6 +2,7 @@ import Vue from 'vue'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
import store from './store' import store from './store'
import './vue-meta'
import '../scss/default.scss' import '../scss/default.scss'
import { library } from '@fortawesome/fontawesome-svg-core' import { library } from '@fortawesome/fontawesome-svg-core'

View File

@ -2,8 +2,11 @@
<section id="about"> <section id="about">
<div class="container"> <div class="container">
<h2>Studia</h2> <h2>Studia</h2>
<p>Nazywam się Kamil Niemczycki, jestem absolwentem Państwowej Wyższej Szkoły Zawodowej im. Witelona w Legnicy.</p> <p>
<p>Studiowałem na kierunku <i>Informatyka</i> o specjalności <i>Programowanie Aplikacji Mobilnych i Internetowych.</i></p> Nazywam się Kamil Niemczycki, jestem absolwentem Państwowej Wyższej Szkoły Zawodowej im. Witelona w Legnicy.
Studiowałem na kierunku <em>Informatyka</em> o specjalności <em>Programowanie Aplikacji Mobilnych i
Internetowych.</em>
</p>
</div> </div>
</section> </section>
</template> </template>
@ -18,6 +21,9 @@ section#about {
<script> <script>
export default { export default {
name: 'About', name: 'About',
data () {
return {}
},
mounted () { mounted () {
const header = { const header = {
title: this.$route.meta.title, title: this.$route.meta.title,

View File

@ -6,10 +6,6 @@
</section> </section>
</template> </template>
<style lang="scss">
</style>
<script> <script>
import About from '../components/sections/About' import About from '../components/sections/About'
import Experiences from '../components/sections/Experiences' import Experiences from '../components/sections/Experiences'

4
src/vue-meta/index.js Normal file
View File

@ -0,0 +1,4 @@
import Vue from 'vue'
import VueMeta from 'vue-meta'
Vue.use(VueMeta)