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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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'],
},
};