diff --git a/src/assets/skills/angular.svg b/src/assets/skills/angular.svg new file mode 100644 index 0000000..8e21cd0 --- /dev/null +++ b/src/assets/skills/angular.svg @@ -0,0 +1,8 @@ + + + Foundation/Logo/Qt-logo + wiki:Behnam N + + + + diff --git a/src/assets/skills/arduino.svg b/src/assets/skills/arduino.svg new file mode 100644 index 0000000..9ff2c38 --- /dev/null +++ b/src/assets/skills/arduino.svg @@ -0,0 +1,6 @@ + + + Foundation/Logo/Qt-logo + wiki:Behnam N + + diff --git a/src/assets/skills/blender.svg b/src/assets/skills/blender.svg new file mode 100644 index 0000000..64d27ef --- /dev/null +++ b/src/assets/skills/blender.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/skills/c.svg b/src/assets/skills/c.svg new file mode 100644 index 0000000..45b426c --- /dev/null +++ b/src/assets/skills/c.svg @@ -0,0 +1,11 @@ + + + Foundation/Logo/Qt-logo + + + + + + + + diff --git a/src/assets/skills/cordova.svg b/src/assets/skills/cordova.svg new file mode 100644 index 0000000..3484f46 --- /dev/null +++ b/src/assets/skills/cordova.svg @@ -0,0 +1,8 @@ + + + Foundation/Logo/Qt-logo + wiki:Behnam N + + + + diff --git a/src/assets/skills/cpp.svg b/src/assets/skills/cpp.svg new file mode 100644 index 0000000..1ba0ebc --- /dev/null +++ b/src/assets/skills/cpp.svg @@ -0,0 +1,15 @@ + + + Foundation/Logo/Qt-logo + + + + + + + + + + + + diff --git a/src/assets/skills/css.svg b/src/assets/skills/css.svg new file mode 100644 index 0000000..296c2f0 --- /dev/null +++ b/src/assets/skills/css.svg @@ -0,0 +1,9 @@ + + + Foundation/Logo/Qt-logo + + + + + + diff --git a/src/assets/skills/docker.svg b/src/assets/skills/docker.svg new file mode 100644 index 0000000..76dabca --- /dev/null +++ b/src/assets/skills/docker.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/electronics.svg b/src/assets/skills/electronics.svg new file mode 100644 index 0000000..6f1c8ba --- /dev/null +++ b/src/assets/skills/electronics.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/skills/folder.svg b/src/assets/skills/folder.svg new file mode 100644 index 0000000..efd739b --- /dev/null +++ b/src/assets/skills/folder.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/git.svg b/src/assets/skills/git.svg new file mode 100644 index 0000000..394794b --- /dev/null +++ b/src/assets/skills/git.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/go.svg b/src/assets/skills/go.svg new file mode 100644 index 0000000..068640b --- /dev/null +++ b/src/assets/skills/go.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/html.svg b/src/assets/skills/html.svg new file mode 100644 index 0000000..93b3e76 --- /dev/null +++ b/src/assets/skills/html.svg @@ -0,0 +1,9 @@ + + + Foundation/Logo/Qt-logo + + + + + + diff --git a/src/assets/skills/image-processing.svg b/src/assets/skills/image-processing.svg new file mode 100644 index 0000000..1b43326 --- /dev/null +++ b/src/assets/skills/image-processing.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/skills/inkscape.svg b/src/assets/skills/inkscape.svg new file mode 100644 index 0000000..5b9a608 --- /dev/null +++ b/src/assets/skills/inkscape.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/skills/js.svg b/src/assets/skills/js.svg new file mode 100644 index 0000000..4535d1a --- /dev/null +++ b/src/assets/skills/js.svg @@ -0,0 +1,5 @@ + + + Foundation/Logo/Qt-logo + + diff --git a/src/assets/skills/kubernetes.svg b/src/assets/skills/kubernetes.svg new file mode 100644 index 0000000..80ab488 --- /dev/null +++ b/src/assets/skills/kubernetes.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/linux.svg b/src/assets/skills/linux.svg new file mode 100644 index 0000000..c8b4c30 --- /dev/null +++ b/src/assets/skills/linux.svg @@ -0,0 +1,8 @@ + + + Foundation/Logo/Qt-logo + wiki:Behnam N + + + + diff --git a/src/assets/skills/mariadb.svg b/src/assets/skills/mariadb.svg new file mode 100644 index 0000000..2286c47 --- /dev/null +++ b/src/assets/skills/mariadb.svg @@ -0,0 +1,51 @@ + + + + + + + + + + diff --git a/src/assets/skills/maths.svg b/src/assets/skills/maths.svg new file mode 100644 index 0000000..8e9714f --- /dev/null +++ b/src/assets/skills/maths.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/mecanics.svg b/src/assets/skills/mecanics.svg new file mode 100644 index 0000000..43e9b61 --- /dev/null +++ b/src/assets/skills/mecanics.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/mongo.svg b/src/assets/skills/mongo.svg new file mode 100644 index 0000000..b17cbbd --- /dev/null +++ b/src/assets/skills/mongo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/skills/opti.svg b/src/assets/skills/opti.svg new file mode 100644 index 0000000..2c3c66b --- /dev/null +++ b/src/assets/skills/opti.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/skills/parcel.svg b/src/assets/skills/parcel.svg new file mode 100644 index 0000000..d8bc1dd --- /dev/null +++ b/src/assets/skills/parcel.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/skills/php.svg b/src/assets/skills/php.svg new file mode 100644 index 0000000..2364111 --- /dev/null +++ b/src/assets/skills/php.svg @@ -0,0 +1,5 @@ + + + Foundation/Logo/Qt-logo + + diff --git a/src/assets/skills/postgres.svg b/src/assets/skills/postgres.svg new file mode 100644 index 0000000..55379d5 --- /dev/null +++ b/src/assets/skills/postgres.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/skills/python.svg b/src/assets/skills/python.svg new file mode 100644 index 0000000..6fa7620 --- /dev/null +++ b/src/assets/skills/python.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/skills/qt.svg b/src/assets/skills/qt.svg new file mode 100644 index 0000000..9f1b6dd --- /dev/null +++ b/src/assets/skills/qt.svg @@ -0,0 +1,12 @@ + + + Foundation/Logo/Qt-logo + + + + + + + + + diff --git a/src/assets/skills/raspberry.svg b/src/assets/skills/raspberry.svg new file mode 100644 index 0000000..7cab79c --- /dev/null +++ b/src/assets/skills/raspberry.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/security.svg b/src/assets/skills/security.svg new file mode 100644 index 0000000..3107a9b --- /dev/null +++ b/src/assets/skills/security.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/skills/ts.svg b/src/assets/skills/ts.svg new file mode 100644 index 0000000..8fcc6f9 --- /dev/null +++ b/src/assets/skills/ts.svg @@ -0,0 +1,5 @@ + + + Foundation/Logo/Qt-logo + + diff --git a/src/assets/skills/unknown.svg b/src/assets/skills/unknown.svg new file mode 100644 index 0000000..d8476bc --- /dev/null +++ b/src/assets/skills/unknown.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/vue.svg b/src/assets/skills/vue.svg new file mode 100644 index 0000000..cc14053 --- /dev/null +++ b/src/assets/skills/vue.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/skills/webpack.svg b/src/assets/skills/webpack.svg new file mode 100644 index 0000000..f5dd92f --- /dev/null +++ b/src/assets/skills/webpack.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/components/SkillCard.vue b/src/components/SkillCard.vue index ca6c7a4..f68f999 100644 --- a/src/components/SkillCard.vue +++ b/src/components/SkillCard.vue @@ -13,8 +13,8 @@ @Component({}) export default class SkillCard extends Vue { - // id of the skill to display - @Prop(Number) readonly id: tID|undefined; + // id of the skill to display (string representation) + @Prop(String) readonly id: string|undefined; // undefined -> automatic size // value -> fixed size applied (valid css value with unit) @@ -23,6 +23,9 @@ // whether it has the active style @Prop(Boolean) active: boolean|undefined; + // whether id is a folder name to display + @Prop(String) folder: string|undefined; + protected mounted() { if( this.width == undefined ){ return; @@ -31,10 +34,24 @@ el.style.width = this.width; } + private tid(): tID|null { + if( this.id == undefined ){ + return null; + } + const id = parseInt(this.id!) as tID; + if( Skills[id] == undefined ){ + return null; + } + return id; + } + protected icon(): string { + if( this.folder == '1' ){ + return require('../assets/skills/folder.svg'); + } let icon: string|null = null; - if( this.id != undefined ){ - icon = Skills[this.id].icon; + if( this.tid() != undefined ){ + icon = Skills[this.tid()!].icon; } if( icon == null ){ return require('../assets/skills/unknown.svg'); @@ -43,8 +60,11 @@ } protected name(): string { - if( this.id != undefined ){ - return Skills[this.id].name!; + if( this.folder == '1' ){ + return this.id!; + } + if( this.tid() != undefined ){ + return Skills[this.tid()!].name!; } return '?'; } @@ -68,7 +88,7 @@ width: auto; height: $height; - font-size: 1.2rem; + font-size: 1.4rem; background: #2a2e36; border-radius: .3rem / .3rem; @@ -101,8 +121,15 @@ color: #fff; font-weight: 400; + white-space: nowrap; padding: 0 .6em; + span { + text-overflow: ellipsis; + overflow: hidden; + } + overflow: hidden; + flex-flow: row nowrap; align-items: center; @@ -110,8 +137,16 @@ transition: border-color .1s ease-in-out; } + &:hover{ + background: #383d45; + .icon { + background: #3c4150; + } + } + &[data-active="1"]{ background: #444952; + .icon { background: #3c4150; } diff --git a/src/model/skills.ts b/src/model/skills.ts index 00d34ac..6eebd73 100644 --- a/src/model/skills.ts +++ b/src/model/skills.ts @@ -47,9 +47,10 @@ export enum tID { } interface tSkill { - icon: string; + icon: string|null; name: string; link: string; + tags: string[]; } export type tSkills = { [id in tID]: tSkill }; @@ -59,232 +60,277 @@ export const Skills: tSkills = { name: 'MariaDB', link: 'https://mariadb.org', icon: 'skills/mariadb.svg', + tags: ['web', 'storage'], }, [tID.Postgres]: { name: 'PostgreSQL', link: 'https://postgresql.org', icon: 'skills/postgres.svg', + tags: ['web', 'storage'], }, [tID.Mongo]: { name: 'MongoDB', link: 'https://mongodb.com', icon: 'skills/mongo.svg', + tags: ['web', 'storage'], }, [tID.Vue]: { name: 'Vue (.js)', link: 'https://vuejs.org', icon: 'skills/vue.svg', + tags: ['web', 'UI'], }, [tID.Angular]: { name: 'Angular (7+)', link: 'https://angular.io', icon: 'skills/angular.svg', + tags: ['web', 'UI'], }, [tID.Parcel]: { name: 'Parcel', link: 'https://parceljs.org/', icon: 'skills/parcel.svg', + tags: ['web'], }, [tID.Cordova]: { name: 'Apache Cordova', link: 'https://cordova.apache.org/', icon: 'skills/cordova.svg', + tags: ['system', 'web', 'mobile'], }, [tID.Webpack]: { name: 'Webpack', link: 'https://webpack.js.org/', icon: 'skills/webpack.svg', + tags: ['web'], }, [tID.WebGL]: { name: 'WebGL', link: 'https://www.khronos.org/webgl/', - icon: 'skills/web-gl.svg', + icon: null, + tags: ['web'], }, [tID.AudioAPI]: { name: 'Audio API', link: 'https://webaudio.github.io/web-audio-api/', - icon: 'skills/audio-api.svg', + icon: null, + tags: ['web'], }, [tID.Websocket]: { name: 'Websocket', link: 'https://tools.ietf.org/html/rfc6455', - icon: 'skills/websocket.svg', + icon: null, + tags: ['web', 'networking', 'IoT'], }, [tID.Docker]: { name: 'Docker', link: 'https://docker.com', icon: 'skills/docker.svg', + tags: ['web', 'system'], }, [tID.Bash]: { name: 'bash', link: 'https://www.gnu.org/software/bash/', - icon: 'skills/bash.svg', + icon: null, + tags: ['system'], }, [tID.Linux]: { name: 'GNU/Linux', link: 'https://www.linux.org', icon: 'skills/linux.svg', + tags: ['system'], }, [tID.Systemd]: { name: 'systemd', link: 'https://freedesktop.org/wiki/Software/systemd/', - icon: 'skills/systemd.svg', + icon: null, + tags: ['system'], }, [tID.Git]: { name: 'Git', link: 'https://git-scm.com/', icon: 'skills/git.svg', + tags: ['system', 'organization'], }, [tID.Rpm]: { name: 'RPM packaging', link: 'https://rpm.org/', - icon: 'skills/rpm.svg', + icon: null, + tags: ['system'], }, [tID.RaspBerry]: { name: 'Raspberry', link: 'https://raspberrypi.org', icon: 'skills/raspberry.svg', + tags: ['system', 'IoT'], }, [tID.Arduino]: { name: 'Arduino', link: 'https://arduino.cc', icon: 'skills/arduino.svg', + tags: ['system', 'IoT'], }, [tID.Php]: { name: 'PHP', link: 'https://www.php.net', icon: 'skills/php.svg', + tags: ['language', 'web', 'IoT'], }, [tID.Html]: { name: 'HTML5', link: 'https://www.w3.org/standards/webdesign/htmlcss', icon: 'skills/html.svg', + tags: ['language', 'web', 'UI'], }, [tID.Css]: { name: 'CSS3', link: 'https://www.w3.org/standards/webdesign/htmlcss', icon: 'skills/css.svg', + tags: ['language', 'web', 'UI'], }, [tID.Js]: { name: 'Javascript', link: 'http://www.ecma-international.org/publications-and-standards/standards/ecma-262/', icon: 'skills/js.svg', + tags: ['language', 'web', 'UI'], }, [tID.Ajax]: { name: 'AJAX', link: 'https://www.w3schools.com/xml/ajax_intro.asp', - icon: 'skills/ajax.svg', + icon: null, + tags: ['web', 'networking'], }, [tID.Ts]: { name: 'Typescript', link: 'https://www.typescript.org/', icon: 'skills/ts.svg', + tags: ['language', 'web', 'UI'], }, [tID.C]: { name: 'C (lang)', link: 'https://www.open-std.org/jtc1/sc22/wg14/', icon: 'skills/c.svg', + tags: ['language', 'system'], }, [tID.Cpp]: { name: 'C++', link: 'https://isocpp.org/', icon: 'skills/cpp.svg', + tags: ['language', 'system'], }, [tID.Python]: { name: 'Python', link: 'https://python.org/', icon: 'skills/python.svg', + tags: ['language', 'system'], }, [tID.Go]: { name: 'Go (lang)', link: 'https://go.dev', icon: 'skills/go.svg', + tags: ['language', 'system', 'IoT', 'networking'], }, [tID.Qt]: { name: 'Qt', link: 'https://qt.io', icon: 'skills/qt.svg', + tags: ['language', 'system', 'IoT', 'networking'], }, [tID.OpenSource]: { name: 'Open-source', link: 'https://opensource.org/', - icon: 'skills/open-source.svg', + icon: null, + tags: ['human'], }, [tID.Electronics]: { name: 'Electronics', link: 'https://en.wikipedia.org/wiki/Electronics', icon: 'skills/electronics.svg', + tags: ['other', 'IoT'], }, [tID.Web]: { name: 'Web', link: 'https://en.wikipedia.org/wiki/World_Wide_Web', - icon: 'skills/web.svg', + icon: null, + tags: ['web'], }, [tID.Rest]: { name: 'REST', link: 'https://en.wikipedia.org/wiki/Representational_state_transfer', - icon: 'skills/rest.svg', + icon: null, + tags: ['web', 'networking'], }, [tID.Crypto]: { - name: 'Cryptography', + name: 'Security/crypto', link: 'https://en.wikipedia.org/wiki/Cryptography', - icon: 'skills/crypto.svg', + icon: 'skills/security.svg', + tags: ['system', 'networking'], }, [tID.ImageProcessing]: { name: 'Image processing', link: 'https://en.wikipedia.org/wiki/Digital_image_processing', icon: 'skills/image-processing.svg', + tags: ['system'], }, [tID.AI]: { name: 'Artificial Intelligence', link: 'https://en.wikipedia.org/wiki/Artificial_intelligence', - icon: 'skills/ai.svg', + icon: null, + tags: ['other'], }, [tID.DeepLearning]: { name: 'Deep Learning', link: 'https://en.wikipedia.org/wiki/Deep_learning', - icon: 'skills/deep-learning.svg', + icon: null, + tags: ['other'], }, [tID.NeuralNetwork]: { name: 'Neural Networks', link: 'https://en.wikipedia.org/wiki/Artificial_neural_network', - icon: 'skills/neural-network.svg', + icon: null, + tags: ['other'], }, [tID.Opti]: { name: 'Program optimization', link: 'https://en.wikipedia.org/wiki/Program_optimization', icon: 'skills/opti.svg', + tags: ['system', 'networking'], }, [tID.Sockets]: { name: 'Sockets', link: 'https://en.wikipedia.org/wiki/Computer_network_programming', - icon: 'skills/sockets.svg', + icon: null, + tags: ['system', 'networking', 'IoT', 'web'], }, [tID.Concurrency]: { - name: 'Concurrent programming', + name: 'Concurrency', link: 'https://en.wikipedia.org/wiki/Concurrent_computing', - icon: 'skills/concurrency.svg', + icon: null, + tags: ['system', 'networking'], }, [tID.UIUX]: { name: 'UI/UX', link: 'https://en.wikipedia.org/wiki/UX', - icon: 'skills/ux.svg', + icon: null, + tags: ['system', 'web', 'IoT'], }, [tID.Inkscape]: { name: 'Inkscape', link: 'https://inkscape.org/', icon: 'skills/inkscape.svg', + tags: ['UI', 'web', 'organization'], }, [tID.RnD]: { name: 'R&D', link: 'https://en.wikipedia.org/wiki/R&D', - icon: 'skills/rnd.svg', + icon: null, + tags: ['organization'], }, };