16
16
<div class =" col-3" >
17
17
<div class =" nav flex-column nav-pills sticky-top" id =" challengesCategory" role =" tablist" aria-orientation =" vertical" >
18
18
<a class =" nav-link active show" id =" starters-tab" data-toggle =" pill" href =" #starters" role =" tab" aria-controls =" starters" aria-selected =" true" >Starters</a >
19
+ <a class =" nav-link" id =" cyber-championships-tab" data-toggle =" pill" href =" #cyber-championship" role =" tab" aria-controls =" cyber-championship" aria-selected =" false" >Cyber Champ.</a >
19
20
<a class =" nav-link" id =" web-exploit-tab" data-toggle =" pill" href =" #web-exploit" role =" tab" aria-controls =" web-exploit" aria-selected =" false" >Web Exploit.</a >
20
21
<a class =" nav-link" id =" forensics-tab" data-toggle =" pill" href =" #forensics" role =" tab" aria-controls =" forensics" aria-selected =" false" >Forensics</a >
21
22
<a class =" nav-link" id =" binary-tab" data-toggle =" pill" href =" #binary" role =" tab" aria-controls =" binary" aria-selected =" false" >Binary</a >
29
30
<b-form-checkbox-group
30
31
id =" challengesS"
31
32
v-model =" selectedChallenges"
32
- :options =" challengesTextS"
33
33
name =" challengesS"
34
34
class =" ml-4"
35
35
stacked
36
- ></b-form-checkbox-group >
36
+ >
37
+ <!-- {{ selectedChallenges }} Used for debugging-->
38
+ <div
39
+ v-for =" text in challengesTextS"
40
+ :key =" text"
41
+ class =" challenge-container"
42
+ >
43
+ <div class =" checkbox-container" >
44
+ <b-form-checkbox
45
+ :value =" text.value"
46
+ >
47
+ {{ text.text }}
48
+ </b-form-checkbox >
49
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
50
+ </div >
51
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
52
+ <!-- {{ text.orgDesc }} This is just dummy data for now-->
53
+ </div >
54
+ </div >
55
+
56
+ </b-form-checkbox-group >
57
+ </div >
58
+
59
+ <div class =" tab-pane fade" id =" cyber-championship" role =" tabpanel" aria-labelledby =" cyber-championship" >
60
+ <b-form-checkbox-group
61
+ id =" challengesCS"
62
+ v-model =" selectedChallenges"
63
+ name =" challengesCS"
64
+ class =" ml-4"
65
+ stacked
66
+ >
67
+ <div
68
+ v-for =" text in challengesTextCS"
69
+ :key =" text"
70
+ class =" challenge-container"
71
+ >
72
+ <div class =" checkbox-container" >
73
+ <b-form-checkbox
74
+ :value =" text.value"
75
+ >
76
+ {{ text.text }}
77
+ </b-form-checkbox >
78
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
79
+ </div >
80
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
81
+ <!-- {{ text.orgDesc }} This is just dummy data for now-->
82
+ </div >
83
+ </div >
84
+
85
+ </b-form-checkbox-group >
37
86
</div >
38
87
39
88
<div class =" tab-pane fade" id =" web-exploit" role =" tabpanel" aria-labelledby =" web-exploit-tab" >
40
89
<b-form-checkbox-group
41
90
id =" challengesWE"
42
91
v-model =" selectedChallenges"
43
- :options =" challengesTextWE"
44
92
name =" challengesWE"
45
93
class =" ml-4"
46
94
stacked
47
- ></b-form-checkbox-group >
95
+ >
96
+ <div
97
+ v-for =" text in challengesTextWE"
98
+ :key =" text"
99
+ class =" challenge-container"
100
+ >
101
+ <div class =" checkbox-container" >
102
+ <b-form-checkbox
103
+ :value =" text.value"
104
+ >
105
+ {{ text.text }}
106
+ </b-form-checkbox >
107
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
108
+ </div >
109
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
110
+ </div >
111
+ </div >
112
+ </b-form-checkbox-group >
48
113
</div >
49
114
50
115
<div class =" tab-pane fade" id =" forensics" role =" tabpanel" aria-labelledby =" forensics-tab" >
51
116
<b-form-checkbox-group
52
117
id =" challengesF"
53
118
v-model =" selectedChallenges"
54
- :options =" challengesTextF"
55
119
name =" challengesF"
56
120
class =" ml-4"
57
121
stacked
58
- ></b-form-checkbox-group >
122
+ >
123
+ <div
124
+ v-for =" text in challengesTextF"
125
+ :key =" text"
126
+ class =" challenge-container"
127
+ >
128
+ <div class =" checkbox-container" >
129
+ <b-form-checkbox
130
+ :value =" text.value"
131
+ >
132
+ {{ text.text }}
133
+ </b-form-checkbox >
134
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
135
+ </div >
136
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
137
+ </div >
138
+ </div >
139
+ </b-form-checkbox-group >
59
140
</div >
60
141
61
142
<div class =" tab-pane fade" id =" binary" role =" tabpanel" aria-labelledby =" binary-tab" >
62
143
<b-form-checkbox-group
63
144
id =" challengesB"
64
145
v-model =" selectedChallenges"
65
- :options =" challengesTextB"
66
- name =" challengesWE"
146
+ name =" challengesB"
67
147
class =" ml-4"
68
148
stacked
69
- ></b-form-checkbox-group >
149
+ >
150
+ <div
151
+ v-for =" text in challengesTextB"
152
+ :key =" text"
153
+ class =" challenge-container"
154
+ >
155
+ <div class =" checkbox-container" >
156
+ <b-form-checkbox
157
+ :value =" text.value"
158
+ >
159
+ {{ text.text }}
160
+ </b-form-checkbox >
161
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
162
+ </div >
163
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
164
+ </div >
165
+ </div >
166
+ </b-form-checkbox-group >
70
167
</div >
71
168
<div class =" tab-pane fade" id =" reverse-eng" role =" tabpanel" aria-labelledby =" reverse-eng-tab" >
72
169
<b-form-checkbox-group
73
170
id =" challengesRE"
74
171
v-model =" selectedChallenges"
75
- :options =" challengesTextRE"
76
172
name =" challengesRE"
77
173
class =" ml-4"
78
174
stacked
79
- ></b-form-checkbox-group >
175
+ >
176
+ <div
177
+ v-for =" text in challengesTextRE"
178
+ :key =" text"
179
+ class =" challenge-container"
180
+ >
181
+ <div class =" checkbox-container" >
182
+ <b-form-checkbox
183
+ :value =" text.value"
184
+ >
185
+ {{ text.text }}
186
+ </b-form-checkbox >
187
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
188
+ </div >
189
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
190
+ </div >
191
+ </div >
192
+ </b-form-checkbox-group >
80
193
</div >
81
194
<div class =" tab-pane fade" id =" cryptography" role =" tabpanel" aria-labelledby =" cryptography-tab" >
82
195
<b-form-checkbox-group
83
196
id =" challengesC"
84
197
v-model =" selectedChallenges"
85
- :options =" challengesTextC"
86
198
name =" challengesC"
87
199
class =" ml-4"
88
200
stacked
89
- ></b-form-checkbox-group >
201
+ >
202
+ <div
203
+ v-for =" text in challengesTextC"
204
+ :key =" text"
205
+ class =" challenge-container"
206
+ >
207
+ <div class =" checkbox-container" >
208
+ <b-form-checkbox
209
+ :value =" text.value"
210
+ >
211
+ {{ text.text }}
212
+ </b-form-checkbox >
213
+ <div class =" info-icon" v-on:click =" text.isInfoShown = !text.isInfoShown" ><b-icon icon =" info-circle" ></b-icon ></div >
214
+ </div >
215
+ <div class =" chalInfo" v-bind:class =" { visible: text.isInfoShown}" v-html =" text.orgDesc" >
216
+ </div >
217
+ </div >
218
+ </b-form-checkbox-group >
90
219
</div >
91
220
</div >
92
221
</div >
@@ -134,6 +263,7 @@ export default {
134
263
challengesRE: [], challengesTextRE: [],
135
264
challengesC: [], challengesTextC: [],
136
265
challengesS: [], challengesTextS: [],
266
+ challengeCS: [], challengesTextCS: [],
137
267
cat: ' ' , childrenChallenges: ' ' , isDisabled: false ,
138
268
}
139
269
},
@@ -147,6 +277,7 @@ export default {
147
277
.concat (this .challengesF )
148
278
.concat (this .challengesRE )
149
279
.concat (this .challengesS )
280
+ .concat (this .challengeCS )
150
281
.concat (this .challengesC ): []
151
282
},
152
283
encodeHTML : function (s ) {
@@ -187,7 +318,8 @@ export default {
187
318
188
319
let taglist = element .getTagsList ();
189
320
let name = element .getName ();
190
- let parentChallenge = { text: name + that .childrenChallenges , value: taglist[0 ] };
321
+ let orgDesc = element .getOrgdescription ()
322
+ let parentChallenge = { text: name + that .childrenChallenges , value: taglist[0 ], orgDesc: orgDesc, isInfoShown: false };
191
323
switch (that .cat ) {
192
324
case " Web exploitation" :
193
325
that .challengesTextWE .push (parentChallenge);
@@ -212,6 +344,11 @@ export default {
212
344
case " Starters" :
213
345
that .challengesTextS .push (parentChallenge);
214
346
that .challengesS .push (taglist[0 ])
347
+ break ;
348
+ case " Cybermesterskaberne" :
349
+ that .challengesTextCS .push (parentChallenge);
350
+ that .challengesCS .push (taglist[0 ]);
351
+ break ;
215
352
}
216
353
})
217
354
});
@@ -260,6 +397,67 @@ export default {
260
397
border : 1px solid #ced4da ;
261
398
border-radius : .35rem ;
262
399
}
400
+
401
+
402
+ .info-icon {
403
+ position : relative ;
404
+ top : 1px ;
405
+ left : -515px ;
406
+ width : 16px ;
407
+ padding : 0px ;
408
+ margin : 0px ;
409
+ z-index : 99999 ;
410
+ }
411
+ .chalInfo {
412
+ background-color : #221d52 ;
413
+ color : #ffffff ;
414
+ position : relative ;
415
+ margin : auto ;
416
+ padding-left : 10px ;
417
+ padding-right : 10px ;
418
+ width : 500px ;
419
+ max-height : 0 ;
420
+ overflow : hidden ;
421
+ transition : all .5s ease-in-out ;
422
+ visibility : hidden ;
423
+ }
424
+ .chalInfo.visible {
425
+ max-height : 200px ;
426
+ /* transform-origin: top-center;*/
427
+ transition : all .5s ease-in-out ;
428
+ padding : 10px ;
429
+ overflow-y : auto ;
430
+ box-shadow : 5px 5px 5px rgba (73 , 80 , 87 , 0.83 );
431
+ visibility : visible ;
432
+ }
433
+
434
+ .checkbox-container {
435
+ display : flex ;
436
+ }
437
+
438
+ .custom-control {
439
+ width : 100% ;
440
+ }
441
+
442
+ .chalInfo ::-webkit-scrollbar {
443
+ background-color : #221d52 ;
444
+ width : 5px ;
445
+ }
446
+
447
+ .chalInfo ::-webkit-scrollbar-track {
448
+ background-color : #221d52 ;
449
+ }
450
+
451
+ /* scrollbar itself */
452
+ .chalInfo ::-webkit-scrollbar-thumb {
453
+ background-color : #babac0 ;
454
+ border-radius : 16px ;
455
+ }
456
+
457
+ /* set button(top and bottom of the scrollbar) */
458
+ .chalInfo ::-webkit-scrollbar-button {
459
+ display :none ;
460
+ }
263
461
.my-is-invalid {
264
462
border : 2px solid rgba (220 ,53 ,69 ,0.9 );
265
463
box-shadow : 1px 1px 2px rgba (220 ,53 ,69 ,0.7 );
0 commit comments