dsm-portfolio-theme 0.1.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -18
- data/_includes/breadcrumbs.html +11 -0
- data/_includes/competencies.html +28 -0
- data/_includes/navigation.html +42 -0
- data/_includes/notice.html +7 -0
- data/_includes/project-list.html +65 -21
- data/_includes/projects.html +32 -0
- data/_includes/scripts.html +5 -1
- data/_layouts/default.html +14 -16
- data/_layouts/examples/summary-example.md +17 -0
- data/_layouts/examples/vignette-example.md +8 -0
- data/_layouts/generate/about.html +180 -0
- data/_layouts/generate/api/documentation.html +313 -0
- data/_layouts/generate/api/v1/competencies.json +4 -0
- data/_layouts/generate/api/v1/portfolio.json +24 -0
- data/_layouts/generate/api/v1/progression.json +4 -0
- data/_layouts/generate/api/v1/projects.json +4 -0
- data/_layouts/generate/api/v1/summaries.json +14 -0
- data/_layouts/generate/api/v1/vignettes.json +14 -0
- data/_layouts/generate/competencies.md +9 -0
- data/_layouts/generate/progression.html +95 -0
- data/_layouts/generate/projects.md +9 -0
- data/_layouts/portfolio.html +28 -24
- data/_layouts/summary.html +67 -48
- data/_layouts/vignette.html +69 -34
- data/assets/scripts/vignette.js +204 -18
- data/assets/styles/main.scss +15 -29
- metadata +20 -23
- data/_includes/anaytics.html +0 -0
- data/_includes/footer.html +0 -0
- data/_includes/header.html +0 -13
- data/_layouts/project.html +0 -5
- data/_sass/atoms/_forms.scss +0 -0
- data/_sass/atoms/_images.scss +0 -0
- data/_sass/atoms/_links.scss +0 -0
- data/_sass/atoms/_lists.scss +0 -0
- data/_sass/atoms/_tables.scss +0 -0
- data/_sass/atoms/_typography.scss +0 -0
- data/_sass/base/_colours.scss +0 -0
- data/_sass/base/_fonts.scss +0 -0
- data/_sass/base/_normalize.scss +0 -0
- data/_sass/base/_spacing.scss +0 -0
- data/_sass/layouts/_evaluation.scss +0 -0
- data/_sass/layouts/_page.scss +0 -0
- data/_sass/layouts/_portfolio.scss +0 -0
- data/_sass/molecules/_footer.scss +0 -0
- data/_sass/molecules/_header.scss +0 -0
- data/_sass/organisms/_vignette-blocks.scss +0 -9
- data/_sass/organisms/_vignette-tabs.scss +0 -11
data/_layouts/summary.html
CHANGED
@@ -1,62 +1,81 @@
|
|
1
1
|
---
|
2
2
|
layout: default
|
3
3
|
---
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
{{ page.type | capitalize }}
|
9
|
-
</div>
|
10
|
-
<div class="">
|
4
|
+
|
5
|
+
{% include breadcrumbs.html %}
|
6
|
+
<div class="row">
|
7
|
+
<div class="col">
|
11
8
|
<h1>
|
12
9
|
{{ page.project_title }}
|
13
10
|
</h1>
|
14
11
|
</div>
|
15
12
|
</div>
|
16
|
-
<div class="">
|
17
|
-
<div class="">
|
18
|
-
<
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
<div class="row">
|
14
|
+
<div class="col">
|
15
|
+
<div class="row">
|
16
|
+
<div class="container">
|
17
|
+
<h3>
|
18
|
+
Summary
|
19
|
+
</h3>
|
20
|
+
{{ content }}
|
21
|
+
</div>
|
22
|
+
</div>
|
22
23
|
</div>
|
23
|
-
<div class="">
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
<div class="col">
|
25
|
+
{% if page.length %}
|
26
|
+
<div class="row">
|
27
|
+
<div class="container mb-3">
|
28
|
+
<h3>
|
29
|
+
Length
|
30
|
+
</h3>
|
31
|
+
{{ page.length }}
|
32
|
+
</div>
|
29
33
|
</div>
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
{% endif %}
|
35
|
+
{% if page.tags.size > 0 %}
|
36
|
+
<div class="row">
|
37
|
+
<div class="container">
|
38
|
+
<h3>
|
39
|
+
Tags
|
40
|
+
</h3>
|
41
|
+
<ul>
|
42
|
+
{% for tag in page.tags %}
|
43
|
+
<li>
|
44
|
+
{{ tag }}
|
45
|
+
</li>
|
46
|
+
{% endfor %}
|
47
|
+
</ul>
|
48
|
+
</div>
|
41
49
|
</div>
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
{% endif %}
|
51
|
+
{% if page.external_resources.size > 0 %}
|
52
|
+
<div class="row">
|
53
|
+
<div class="container">
|
54
|
+
<h3>
|
55
|
+
External Resources
|
56
|
+
</h3>
|
57
|
+
<ul>
|
58
|
+
{% for external_resource in page.external_resources %}
|
59
|
+
<li>
|
60
|
+
<a href="{{ external_resource.url }}" target="_blank">
|
61
|
+
{{ external_resource.title }}
|
62
|
+
</a>
|
63
|
+
</li>
|
64
|
+
{% endfor %}
|
65
|
+
</ul>
|
66
|
+
</div>
|
55
67
|
</div>
|
68
|
+
{% endif %}
|
56
69
|
</div>
|
57
|
-
|
58
|
-
|
59
|
-
|
70
|
+
</div>
|
71
|
+
{% if page.notebook_file %}
|
72
|
+
<div class="row">
|
73
|
+
<div class="col">
|
74
|
+
<div class="row">
|
75
|
+
<div class="container">
|
76
|
+
{% jupyter_notebook site.notebook_base_path | append: page.notebook_file | relative_url %}
|
77
|
+
</div>
|
60
78
|
</div>
|
61
|
-
|
62
|
-
</div>
|
79
|
+
</div>
|
80
|
+
</div>
|
81
|
+
{% endif %}
|
data/_layouts/vignette.html
CHANGED
@@ -2,43 +2,78 @@
|
|
2
2
|
layout: default
|
3
3
|
---
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
{%
|
14
|
-
|
15
|
-
|
5
|
+
{% include breadcrumbs.html %}
|
6
|
+
{% assign linked_project = site.data.projects | where:"id", page.project_code | first %}
|
7
|
+
{% if page.project_code and linked_project %}
|
8
|
+
<div class="container mb-4">
|
9
|
+
<p class="lead">
|
10
|
+
Linked to academic project <a href="{{ '/projects#' | append: page.project_code | relative_url }}">{{ page.project_code }}</a>
|
11
|
+
{% if linked_project.deadline %}
|
12
|
+
with a deadline of {{ linked_project.deadline }}
|
13
|
+
{% endif %}
|
14
|
+
</p>
|
15
|
+
{% if linked_project.description %}
|
16
|
+
<em>"{{ linked_project.description }}"</em>
|
16
17
|
{% endif %}
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
</div>
|
19
|
+
{% else %}
|
20
|
+
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
21
|
+
<strong>There is no academic project linked.</strong> This is assumed to be a personal project. See <a href="{{ '/about' | relative_url }}">about</a> for more information.
|
22
|
+
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
23
|
+
<span aria-hidden="true">×</span>
|
24
|
+
</button>
|
25
|
+
</div>
|
26
|
+
{% endif %}
|
27
|
+
<div class="row">
|
28
|
+
<div class="col">
|
29
|
+
<div class="table-responsive">
|
30
|
+
<table class="table table-hover" id="table">
|
31
|
+
<!-- Dynamically generated content -->
|
32
|
+
</table>
|
33
|
+
</div>
|
34
|
+
</div>
|
22
35
|
</div>
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
Competencies
|
28
|
-
</h3>
|
29
|
-
<table id="table">
|
30
|
-
<!-- Dynamically generated content -->
|
31
|
-
</table>
|
36
|
+
<div class="row">
|
37
|
+
<div class="col">
|
38
|
+
{{ content }}
|
39
|
+
</div>
|
32
40
|
</div>
|
33
|
-
|
34
|
-
|
35
|
-
<
|
36
|
-
|
41
|
+
<div class="row mt-4">
|
42
|
+
<div class="col">
|
43
|
+
<nav aria-label="...">
|
44
|
+
<ul class="pagination">
|
45
|
+
<li id="tab-previous" class="page-item disabled">
|
46
|
+
<a class="page-link" onclick="javascript:$vignette.previousVignette()">Previous</a>
|
47
|
+
</li>
|
48
|
+
{% for vignette in page.vignettes %}
|
49
|
+
{% if forloop.index == 1 %}
|
50
|
+
{% assign classString = 'page-item active' %}
|
51
|
+
{% else %}
|
52
|
+
{% assign classString = 'page-item' %}
|
53
|
+
{% endif %}
|
54
|
+
<li id="tab-{{ forloop.index | minus: 1 }}" class="{{ classString }}">
|
55
|
+
<a class="page-link" onclick="javascript:$vignette.updateVignette({{ forloop.index | minus: 1 }})">
|
56
|
+
{{ forloop.index }}
|
57
|
+
</a>
|
58
|
+
</li>
|
59
|
+
{% endfor %}
|
60
|
+
{% if page.vignettes.size > 0 %}
|
61
|
+
{% assign classString = 'page-item' %}
|
62
|
+
{% else %}
|
63
|
+
{% assign classString = 'page-item disabled' %}
|
64
|
+
{% endif %}
|
65
|
+
<li id="tab-next" class="{{ classString }}">
|
66
|
+
<a class="page-link" onclick="javascript:$vignette.nextVignette()">Next</a>
|
67
|
+
</li>
|
68
|
+
</ul>
|
69
|
+
</nav>
|
70
|
+
</div>
|
37
71
|
</div>
|
38
|
-
|
39
|
-
<!-- Inject data variables into page context for JavaScript -->
|
40
72
|
<script>
|
41
|
-
//
|
42
|
-
this.window['
|
43
|
-
this.window['
|
73
|
+
// Inject data variables into page context for JavaScript.
|
74
|
+
this.window['vignette_vignettes'] = {{ page.vignettes | jsonify }};
|
75
|
+
this.window['vignette_targets'] = {{ page.targets | jsonify }};
|
76
|
+
this.window['vignette_c_url'] = "{{ '/competencies' | relative_url }}";
|
77
|
+
this.window['vignette_sort_competencies'] = true;
|
78
|
+
this.window['vignette_mark_table'] = true;
|
44
79
|
</script>
|
data/assets/scripts/vignette.js
CHANGED
@@ -12,10 +12,14 @@ $vignette = (function () {
|
|
12
12
|
var _targetsHit = [];
|
13
13
|
var _index = 0;
|
14
14
|
var _tableData = [];
|
15
|
+
var _cUrl = '/competencies';
|
16
|
+
var _markTable = false;
|
15
17
|
|
16
18
|
// UI elements
|
17
19
|
var _blocks = [];
|
18
20
|
var _tabs = [];
|
21
|
+
var _next = {};
|
22
|
+
var _previous = {};
|
19
23
|
var _table = undefined;
|
20
24
|
|
21
25
|
/**
|
@@ -26,8 +30,10 @@ $vignette = (function () {
|
|
26
30
|
*/
|
27
31
|
function initialize() {
|
28
32
|
// Presume access to page variables.
|
29
|
-
_vignettes = window['
|
30
|
-
_targets = window['
|
33
|
+
_vignettes = window['vignette_vignettes'];
|
34
|
+
_targets = window['vignette_targets'];
|
35
|
+
_cUrl = window['vignette_c_url'];
|
36
|
+
_markTable = window['vignette_mark_table'];
|
31
37
|
|
32
38
|
// Defensive checking.
|
33
39
|
if(!_vignettes) {
|
@@ -59,8 +65,11 @@ $vignette = (function () {
|
|
59
65
|
// Expose functions.
|
60
66
|
return {
|
61
67
|
dump: _dump,
|
68
|
+
combine: _combine,
|
62
69
|
updateVignette: _updateVignette,
|
63
|
-
|
70
|
+
nextVignette: _nextVignette,
|
71
|
+
previousVignette: _previousVignette,
|
72
|
+
sort: _sortCurrentVignette
|
64
73
|
};
|
65
74
|
}
|
66
75
|
|
@@ -69,12 +78,18 @@ $vignette = (function () {
|
|
69
78
|
* for manipulation.
|
70
79
|
*/
|
71
80
|
function registerUI() {
|
72
|
-
|
81
|
+
// Get omnipresent pagination components.
|
82
|
+
_previous = document.getElementById('tab-previous');
|
83
|
+
_next = document.getElementById('tab-next');
|
84
|
+
|
85
|
+
// Get all dynamic elements.
|
86
|
+
for(var i = 0; i < _vignettes.length; i++) {
|
73
87
|
// Get tab and content block elements.
|
74
88
|
_blocks.push(document.getElementById('block-' + i.toString()));
|
75
89
|
_tabs.push(document.getElementById('tab-' + i.toString()));
|
76
90
|
}
|
77
91
|
|
92
|
+
// Get table.
|
78
93
|
_table = document.getElementById('table');
|
79
94
|
}
|
80
95
|
|
@@ -86,30 +101,56 @@ $vignette = (function () {
|
|
86
101
|
* @param {*} index
|
87
102
|
* @returns
|
88
103
|
*/
|
89
|
-
function _updateVignette(index) {
|
104
|
+
function _updateVignette(index, override = false) {
|
90
105
|
// Redundancy check.
|
91
|
-
if(_index === index) {
|
106
|
+
if(_index === index && !override) {
|
92
107
|
return;
|
93
108
|
}
|
94
109
|
|
110
|
+
let activeClass = 'active';
|
111
|
+
|
95
112
|
// Update previous tab element.
|
96
|
-
_tabs[_index].classList.remove(
|
113
|
+
_tabs[_index].classList.remove(activeClass);
|
97
114
|
|
98
115
|
// Update previous block element.
|
99
|
-
_blocks[_index].classList.remove(
|
116
|
+
_blocks[_index].classList.remove(activeClass);
|
117
|
+
|
118
|
+
if(index === 0) {
|
119
|
+
_previous.classList.add('disabled');
|
120
|
+
} else {
|
121
|
+
_previous.classList.remove('disabled');
|
122
|
+
}
|
123
|
+
|
124
|
+
if(index === _vignettes.length - 1) {
|
125
|
+
_next.classList.add('disabled');
|
126
|
+
} else {
|
127
|
+
_next.classList.remove('disabled');
|
128
|
+
}
|
100
129
|
|
101
130
|
// Update data model.
|
102
131
|
_index = index;
|
103
132
|
|
104
133
|
// Update tab element.
|
105
|
-
_tabs[_index].classList.add(
|
134
|
+
_tabs[_index].classList.add(activeClass);
|
106
135
|
|
107
136
|
// Update block element.
|
108
|
-
_blocks[_index].classList.add(
|
137
|
+
_blocks[_index].classList.add(activeClass);
|
109
138
|
|
110
139
|
// Update competency table.
|
111
140
|
_updateTable(index);
|
112
141
|
}
|
142
|
+
|
143
|
+
function _nextVignette() {
|
144
|
+
if(_index != _vignettes.length - 1) {
|
145
|
+
_updateVignette(_index + 1);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
149
|
+
function _previousVignette() {
|
150
|
+
if(_index != 0) {
|
151
|
+
_updateVignette(_index - 1);
|
152
|
+
}
|
153
|
+
}
|
113
154
|
|
114
155
|
/**
|
115
156
|
* Update the skill table based
|
@@ -124,6 +165,10 @@ $vignette = (function () {
|
|
124
165
|
_table.innerHTML = _tableData[index];
|
125
166
|
}
|
126
167
|
|
168
|
+
function _sortTable() {
|
169
|
+
// Perform sort on current table using key (column).
|
170
|
+
}
|
171
|
+
|
127
172
|
// Define utility functions.
|
128
173
|
|
129
174
|
/**
|
@@ -149,14 +194,36 @@ $vignette = (function () {
|
|
149
194
|
}
|
150
195
|
}
|
151
196
|
|
152
|
-
function
|
197
|
+
function _sortCurrentVignette(sortKey, ascending) {
|
198
|
+
// Sort the table.
|
199
|
+
for(var i = 0; i < _vignettes.length; i++) {
|
200
|
+
// Recompute table data ahead of time.
|
201
|
+
_tableData[i] = _tableify(i, sortKey, ascending);
|
202
|
+
}
|
203
|
+
|
204
|
+
// Update table HTML.
|
205
|
+
_updateVignette(_index, true);
|
206
|
+
}
|
207
|
+
|
208
|
+
function _tableify(index, sortKey = 'competencyId', ascending = true) {
|
153
209
|
// Build HTML for all unique skills...
|
210
|
+
var tableRowsData = [];
|
154
211
|
var tableRowsHTML = [];
|
155
212
|
|
156
213
|
for(let competency of _all) {
|
157
214
|
// Build table row data.
|
158
215
|
var tableRowData = {
|
159
216
|
competencyId: competency,
|
217
|
+
linked: (linked => {
|
218
|
+
for(let v of _vignettes) {
|
219
|
+
for(let c of v['competencies']) {
|
220
|
+
if(c['id'] === competency) {
|
221
|
+
return c['linked'];
|
222
|
+
}
|
223
|
+
}
|
224
|
+
}
|
225
|
+
return false;
|
226
|
+
})(),
|
160
227
|
target: _targets.indexOf(competency) != -1,
|
161
228
|
count: (total => {
|
162
229
|
for(let c of _vignettes[index]['competencies']) {
|
@@ -166,22 +233,116 @@ $vignette = (function () {
|
|
166
233
|
}
|
167
234
|
return 0;
|
168
235
|
})(),
|
169
|
-
removed: _indexDiffWithType(competency, index, 'removed'),
|
236
|
+
removed: Math.abs(_indexDiffWithType(competency, index, 'removed')),
|
170
237
|
unchanged: _indexDiffWithType(competency, index, 'unchanged'),
|
171
238
|
added: _indexDiffWithType(competency, index, 'added')
|
172
239
|
};
|
240
|
+
tableRowsData.push(tableRowData);
|
241
|
+
}
|
242
|
+
|
243
|
+
// Sort rows by Id (default).
|
244
|
+
tableRowsData.sort(function(a, b){
|
245
|
+
var nameA = a[sortKey], nameB = b[sortKey];
|
246
|
+
if(nameA < nameB) {
|
247
|
+
if(ascending) {
|
248
|
+
return -1;
|
249
|
+
}
|
250
|
+
else {
|
251
|
+
return 1;
|
252
|
+
}
|
253
|
+
}
|
254
|
+
if(nameA > nameB) {
|
255
|
+
if(ascending) {
|
256
|
+
return 1;
|
257
|
+
} else {
|
258
|
+
return -1;
|
259
|
+
}
|
260
|
+
}
|
261
|
+
return 0;
|
262
|
+
});
|
263
|
+
|
264
|
+
for(let tableRowData of tableRowsData) {
|
173
265
|
// Convert table row data into HTML.
|
174
266
|
tableRowsHTML.push(_tableRowDataToHTML(tableRowData));
|
175
267
|
}
|
176
268
|
|
177
269
|
// Create new table.
|
178
|
-
var headerRow = '<tr id="table-header"><th>Competency
|
270
|
+
var headerRow = '<tr id="table-header"><th>Competency ';
|
271
|
+
if(sortKey === 'competencyId') {
|
272
|
+
if(ascending) {
|
273
|
+
headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'competencyId\', false)"></i>';
|
274
|
+
} else {
|
275
|
+
headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'competencyId\', true)"></i>'
|
276
|
+
}
|
277
|
+
} else {
|
278
|
+
headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'competencyId\', false)"></i>';
|
279
|
+
}
|
280
|
+
headerRow += '</th>';
|
281
|
+
|
179
282
|
if(_targets) {
|
180
|
-
headerRow +=
|
283
|
+
headerRow += '<th>Target ';
|
284
|
+
if(sortKey === 'target') {
|
285
|
+
if(ascending) {
|
286
|
+
headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'target\', false)"></i>';
|
287
|
+
} else {
|
288
|
+
headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'target\', true)"></i>'
|
289
|
+
}
|
290
|
+
} else {
|
291
|
+
headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'target\', false)"></i>';
|
292
|
+
}
|
293
|
+
headerRow += '</th>';
|
294
|
+
}
|
295
|
+
|
296
|
+
headerRow += '<th>Count ';
|
297
|
+
if(sortKey === 'count') {
|
298
|
+
if(ascending) {
|
299
|
+
headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'count\', false)"></i>';
|
300
|
+
} else {
|
301
|
+
headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'count\', true)"></i>'
|
302
|
+
}
|
303
|
+
} else {
|
304
|
+
headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'count\', false)"></i>';
|
181
305
|
}
|
182
|
-
headerRow +=
|
306
|
+
headerRow += '</th>';
|
307
|
+
|
308
|
+
headerRow += '<th>Removed ';
|
309
|
+
if(sortKey === 'removed') {
|
310
|
+
if(ascending) {
|
311
|
+
headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'removed\', false)"></i>';
|
312
|
+
} else {
|
313
|
+
headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'removed\', true)"></i>'
|
314
|
+
}
|
315
|
+
} else {
|
316
|
+
headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'removed\', false)"></i>';
|
317
|
+
}
|
318
|
+
headerRow += '</th>';
|
319
|
+
|
320
|
+
headerRow += '<th>Unchanged ';
|
321
|
+
if(sortKey === 'unchanged') {
|
322
|
+
if(ascending) {
|
323
|
+
headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'unchanged\', false)"></i>';
|
324
|
+
} else {
|
325
|
+
headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'unchanged\', true)"></i>'
|
326
|
+
}
|
327
|
+
} else {
|
328
|
+
headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'unchanged\', false)"></i>';
|
329
|
+
}
|
330
|
+
headerRow += '</th>';
|
331
|
+
|
332
|
+
headerRow += '<th>Added ';
|
333
|
+
if(sortKey === 'added') {
|
334
|
+
if(ascending) {
|
335
|
+
headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'added\', false)"></i>';
|
336
|
+
} else {
|
337
|
+
headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'added\', true)"></i>'
|
338
|
+
}
|
339
|
+
} else {
|
340
|
+
headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'added\', false)"></i>';
|
341
|
+
}
|
342
|
+
headerRow += '</th></tr>';
|
183
343
|
|
184
344
|
var finalHTML = headerRow;
|
345
|
+
|
185
346
|
for(let row of tableRowsHTML) {
|
186
347
|
finalHTML += row;
|
187
348
|
}
|
@@ -213,9 +374,26 @@ $vignette = (function () {
|
|
213
374
|
* @param {*} tableRowData HTML to inject.
|
214
375
|
*/
|
215
376
|
function _tableRowDataToHTML(tableRowData) {
|
216
|
-
var encoded = '<tr
|
377
|
+
var encoded = '<tr';
|
378
|
+
|
379
|
+
if(_markTable && tableRowData.target && tableRowData.count > 0) {
|
380
|
+
encoded += ' class="table-success"';
|
381
|
+
}
|
382
|
+
|
383
|
+
encoded += '><td>';
|
384
|
+
if(tableRowData['linked']) {
|
385
|
+
encoded += '<a href="' +
|
386
|
+
_cUrl +
|
387
|
+
'#' +
|
388
|
+
tableRowData['competencyId'] +
|
389
|
+
'">' +
|
390
|
+
tableRowData['competencyId'] +
|
391
|
+
'</a></td><td>';
|
392
|
+
} else {
|
393
|
+
encoded += '<span>' +
|
217
394
|
tableRowData['competencyId'] +
|
218
395
|
'</span></td><td>';
|
396
|
+
}
|
219
397
|
if(_targets) {
|
220
398
|
if(tableRowData['target']) {
|
221
399
|
encoded += 'Yes';
|
@@ -225,11 +403,19 @@ $vignette = (function () {
|
|
225
403
|
encoded += '</td><td>';
|
226
404
|
}
|
227
405
|
encoded += tableRowData['count'] +
|
228
|
-
'</td><td
|
406
|
+
'</td><td';
|
407
|
+
if(_markTable && tableRowData['removed'] < 0) {
|
408
|
+
encoded += ' class="table-danger"';
|
409
|
+
}
|
410
|
+
encoded += '>' +
|
229
411
|
tableRowData['removed'] +
|
230
412
|
'</td><td>' +
|
231
413
|
tableRowData['unchanged'] +
|
232
|
-
'</td><td
|
414
|
+
'</td><td';
|
415
|
+
if(_markTable && tableRowData['added'] > 0) {
|
416
|
+
encoded += ' class="table-success"';
|
417
|
+
}
|
418
|
+
encoded += '>' +
|
233
419
|
tableRowData['added'] +
|
234
420
|
'</td></tr>';
|
235
421
|
return encoded;
|
data/assets/styles/main.scss
CHANGED
@@ -1,38 +1,24 @@
|
|
1
1
|
---
|
2
2
|
# Front matter hyphens tell Jekyll pre-processor this is the main SCSS file.
|
3
3
|
---
|
4
|
-
|
5
4
|
/***
|
6
|
-
*
|
7
|
-
* The design philosphy employed is 'atomic design'.
|
8
|
-
*
|
9
|
-
* Jekyll does not natively support 'globbing', so paths
|
10
|
-
* to new files must be specified manually.
|
5
|
+
* Override default library styles.
|
11
6
|
*/
|
12
7
|
|
13
|
-
|
14
|
-
|
15
|
-
@import "base/fonts";
|
16
|
-
@import "base/normalize";
|
17
|
-
@import "base/spacing";
|
18
|
-
|
19
|
-
// Atoms.
|
20
|
-
@import "atoms/forms";
|
21
|
-
@import "atoms/images";
|
22
|
-
@import "atoms/links";
|
23
|
-
@import "atoms/lists";
|
24
|
-
@import "atoms/tables";
|
25
|
-
@import "atoms/typography";
|
8
|
+
.vignette-block {
|
9
|
+
display: none;
|
26
10
|
|
27
|
-
|
28
|
-
|
29
|
-
|
11
|
+
&.active {
|
12
|
+
display: block;
|
13
|
+
}
|
14
|
+
}
|
30
15
|
|
31
|
-
|
32
|
-
|
33
|
-
|
16
|
+
tr:target {
|
17
|
+
background-color: #dee2e6;
|
18
|
+
}
|
34
19
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
20
|
+
.fa-sort,
|
21
|
+
.fa-sort-up,
|
22
|
+
.fa-sort-down {
|
23
|
+
cursor: pointer;
|
24
|
+
}
|