@airmark/quiver 0.35.7 → 0.36.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.
- package/package.json +4 -4
- package/quills/af4141/0.1.0/Quill.yaml +39 -49
- package/quills/af4141/0.1.0/plate.typ +7 -7
- package/quills/afmc_moa/0.0.1/Quill.yaml +126 -153
- package/quills/afmc_moa/0.0.1/plate.typ +11 -11
- package/quills/classic_resume/0.1.0/Quill.yaml +34 -40
- package/quills/classic_resume/0.1.0/plate.typ +11 -11
- package/quills/cyber_career_plan/0.1.0/Quill.yaml +258 -287
- package/quills/cyber_career_plan/0.1.0/plate.typ +92 -70
- package/quills/daf1206/0.1.0/plate.typ +18 -18
- package/quills/daf4392/0.1.0/Quill.yaml +33 -38
- package/quills/daf4392/0.1.0/plate.typ +16 -16
- package/quills/usaf_letter/0.1.0/Quill.yaml +143 -158
- package/quills/usaf_letter/0.1.0/plate.typ +26 -28
- package/quills/usaf_memo/0.2.0/Quill.yaml +217 -247
- package/quills/usaf_memo/0.2.0/plate.typ +28 -28
- package/quills/usaf_memo/0.3.0/Quill.yaml +219 -245
- package/quills/usaf_memo/0.3.0/plate.typ +35 -36
- package/templates/cyber_career_plan.md +56 -0
- package/templates/templates.json +7 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.
|
|
1
|
+
#import "@local/quillmark-helper:0.2.0" as qm
|
|
2
2
|
#import "@local/ttq-classic-resume:0.1.0": (
|
|
3
3
|
auto-link, default-config, entry, item-grid, resume, resume-header, section-header,
|
|
4
4
|
)
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
|
|
44
44
|
#show: resume.with(
|
|
45
45
|
// An enum's blank is authorable even where the schema declares a default.
|
|
46
|
-
paper: if data.paper != "" { data.paper } else { "us-letter" },
|
|
47
|
-
size: data.font_size * 1pt,
|
|
48
|
-
margin: data.margin * 1in,
|
|
46
|
+
paper: if qm.data.paper != "" { qm.data.paper } else { "us-letter" },
|
|
47
|
+
size: qm.data.font_size * 1pt,
|
|
48
|
+
margin: qm.data.margin * 1in,
|
|
49
49
|
|
|
50
50
|
// The package's stack names two families to fall back to; only the one this
|
|
51
51
|
// quill bundles is in the render's font book, and naming the absent two
|
|
@@ -74,10 +74,10 @@
|
|
|
74
74
|
)
|
|
75
75
|
|
|
76
76
|
#resume-header(
|
|
77
|
-
name: if data.name.trim() != "" { ink(data)
|
|
78
|
-
title: data.name.trim(),
|
|
79
|
-
author: data.name.trim(),
|
|
80
|
-
contacts: data.contacts.zip(ink(data
|
|
77
|
+
name: if qm.data.name.trim() != "" { qm.ink(qm.data, "name") },
|
|
78
|
+
title: qm.data.name.trim(),
|
|
79
|
+
author: qm.data.name.trim(),
|
|
80
|
+
contacts: qm.data.contacts.zip(qm.ink(qm.data, "contacts"))
|
|
81
81
|
.map(((contact, printed)) => linked(contact, printed))
|
|
82
82
|
.filter(contact => contact != none),
|
|
83
83
|
)
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
|
|
104
104
|
// The rows an author filled in. A row left wholly blank, as a new one is, would
|
|
105
105
|
// print as an empty gap.
|
|
106
|
-
#let filled(rows) = rows.filter(row => row.
|
|
106
|
+
#let filled(rows) = rows.filter(row => row.pairs().filter(((key, _)) => not key.starts-with("$")).any(((_, value)) => {
|
|
107
107
|
or-none(if type(value) == str { value.trim() } else { value }) != none
|
|
108
108
|
}))
|
|
109
109
|
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
entry(
|
|
127
127
|
heading: trim-inline(project.name),
|
|
128
128
|
form: "linked",
|
|
129
|
-
url: linked(project.link, ink(project
|
|
129
|
+
url: linked(project.link, qm.ink(project, "link")),
|
|
130
130
|
body: under-entry(project.details),
|
|
131
131
|
)
|
|
132
132
|
},
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
)
|
|
141
141
|
|
|
142
|
-
#for card in data.at("$cards") {
|
|
142
|
+
#for card in qm.data.at("$cards") {
|
|
143
143
|
let kind = card.at("$kind", default: none)
|
|
144
144
|
if type(kind) == str and kind in rows {
|
|
145
145
|
let title = or-none(card.title)
|
|
@@ -12,317 +12,288 @@ typst:
|
|
|
12
12
|
# vectors branching from it over the years the boards and schools fall in. The
|
|
13
13
|
# bottom half is the record that makes the plan credible.
|
|
14
14
|
main:
|
|
15
|
-
ui:
|
|
16
|
-
# The editor opens one group at a time, starting with the first, so each is a
|
|
17
|
-
# task finished without looking at another: who you are, where you are
|
|
18
|
-
# going, what you have done. The checklist is apart from the record because
|
|
19
|
-
# most visits skip it whole. The timeline's start year sits with the officer
|
|
20
|
-
# so every required field is in the group that opens.
|
|
21
|
-
groups:
|
|
22
|
-
officer: {}
|
|
23
|
-
plan: {}
|
|
24
|
-
record: {}
|
|
25
|
-
qualifications: { title: "Qualifications & experience" }
|
|
26
15
|
# The chart's one piece of prose. It is set on the ruled notes area at the
|
|
27
16
|
# foot of the page, and a rater goes on writing below it during the discussion.
|
|
28
17
|
description: "What you want from this discussion: goals, preferences, assignments you'd turn down, questions for your rater. Put constraints that end in a known year under Constraints instead, so they show on the timeline."
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
18
|
+
# The editor opens one section at a time, starting with the first, so each is
|
|
19
|
+
# a task finished without looking at another: who you are, where you are
|
|
20
|
+
# going, what you have done. The checklist is apart from the record because
|
|
21
|
+
# most visits skip it whole. The timeline's start year sits with the officer
|
|
22
|
+
# so every required field is in the section that opens.
|
|
23
|
+
sections:
|
|
24
|
+
officer:
|
|
25
|
+
fields:
|
|
26
|
+
name:
|
|
27
|
+
# Read as `string` rather than `plaintext`: it reaches
|
|
28
|
+
# `set document(author:)`, which takes no content.
|
|
29
|
+
type: string
|
|
30
|
+
description: "Your grade and name, for example 'Capt John A. Snuffy'. It also names the PDF."
|
|
37
31
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
group: officer
|
|
44
|
-
description: "Your current job, for example Instructor or Flight Commander."
|
|
32
|
+
duty_title:
|
|
33
|
+
type: plaintext
|
|
34
|
+
inline: true
|
|
35
|
+
default: ""
|
|
36
|
+
description: "Your current job, for example Instructor or Flight Commander."
|
|
45
37
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
group: officer
|
|
52
|
-
description: "Your unit and base, for example '333 TRS, Keesler AFB'."
|
|
38
|
+
unit:
|
|
39
|
+
type: plaintext
|
|
40
|
+
inline: true
|
|
41
|
+
default: ""
|
|
42
|
+
description: "Your unit and base, for example '333 TRS, Keesler AFB'."
|
|
53
43
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
description: "Your AFSC with its skill level and any prefix, for example 17S3 or K17D3."
|
|
44
|
+
afsc:
|
|
45
|
+
type: plaintext
|
|
46
|
+
inline: true
|
|
47
|
+
default: ""
|
|
48
|
+
ui:
|
|
49
|
+
compact: true
|
|
50
|
+
description: "Your AFSC with its skill level and any prefix, for example 17S3 or K17D3."
|
|
62
51
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
description: "Your commissioning year group. Every milestone on the timeline is counted from it."
|
|
52
|
+
commissioning_yg:
|
|
53
|
+
type: integer
|
|
54
|
+
ui:
|
|
55
|
+
compact: true
|
|
56
|
+
description: "Your commissioning year group. Every milestone on the timeline is counted from it."
|
|
69
57
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
description: "Your adjusted year group, if a board or a break in service changed it. Leave blank if it hasn't."
|
|
58
|
+
adjusted_yg:
|
|
59
|
+
type: integer?
|
|
60
|
+
ui:
|
|
61
|
+
compact: true
|
|
62
|
+
description: "Your adjusted year group, if a board or a break in service changed it. Leave blank if it hasn't."
|
|
76
63
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
description: "Date of rank in your current grade."
|
|
64
|
+
date_of_rank:
|
|
65
|
+
type: date
|
|
66
|
+
default: ""
|
|
67
|
+
ui:
|
|
68
|
+
compact: true
|
|
69
|
+
description: "Date of rank in your current grade."
|
|
84
70
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
description: "When you arrived at your current station."
|
|
71
|
+
date_arrived_station:
|
|
72
|
+
type: date
|
|
73
|
+
default: ""
|
|
74
|
+
ui:
|
|
75
|
+
compact: true
|
|
76
|
+
description: "When you arrived at your current station."
|
|
92
77
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
description: "The first year on the timeline, usually this year."
|
|
78
|
+
timeline_start_year:
|
|
79
|
+
type: integer
|
|
80
|
+
ui:
|
|
81
|
+
compact: true
|
|
82
|
+
description: "The first year on the timeline, usually this year."
|
|
99
83
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
84
|
+
advanced_degree:
|
|
85
|
+
type: plaintext
|
|
86
|
+
inline: true
|
|
87
|
+
default: ""
|
|
88
|
+
description: "Your advanced degree, for example 'MS Cyber Operations, AFIT'. Add '(in progress)' if you're still working on it."
|
|
89
|
+
plan:
|
|
90
|
+
fields:
|
|
91
|
+
timeline_years:
|
|
92
|
+
type: integer
|
|
93
|
+
default: 12
|
|
94
|
+
ui:
|
|
95
|
+
compact: true
|
|
96
|
+
description: "How many years the timeline covers, up to 18. Twelve takes a Captain past the Lt Col board; go wider to bring the SDE boards into view."
|
|
107
97
|
|
|
98
|
+
move_year:
|
|
99
|
+
type: integer?
|
|
100
|
+
ui:
|
|
101
|
+
compact: true
|
|
102
|
+
description: "The year you expect to leave your current assignment. Every vector starts from this move. To stay longer on one vector, make the extension its first tour."
|
|
108
103
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
move_cycle:
|
|
105
|
+
type: enum
|
|
106
|
+
values: [Summer, Winter]
|
|
107
|
+
default: Summer
|
|
108
|
+
ui:
|
|
109
|
+
compact: true
|
|
110
|
+
description: "The VML cycle you expect to move on."
|
|
116
111
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
112
|
+
constraints:
|
|
113
|
+
type: array
|
|
114
|
+
max: 3
|
|
115
|
+
ui:
|
|
116
|
+
layout: table
|
|
117
|
+
items:
|
|
118
|
+
type: object
|
|
119
|
+
properties:
|
|
120
|
+
note:
|
|
121
|
+
type: plaintext
|
|
122
|
+
inline: true
|
|
123
|
+
title: Constraint
|
|
124
|
+
description: "What limits the plan, kept short, for example 'Join-spouse, no OCONUS'."
|
|
125
|
+
through:
|
|
126
|
+
type: integer
|
|
127
|
+
title: Through
|
|
128
|
+
description: "The last year it applies."
|
|
129
|
+
default: []
|
|
130
|
+
description: "Anything that limits where or when you can move and ends in a known year, like a join-spouse assignment or a degree in progress. Each shows as a bar across the timeline."
|
|
123
131
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
vectors:
|
|
133
|
+
type: array
|
|
134
|
+
max: 3
|
|
135
|
+
items:
|
|
136
|
+
type: object
|
|
137
|
+
properties:
|
|
138
|
+
track:
|
|
139
|
+
type: plaintext
|
|
140
|
+
inline: true
|
|
141
|
+
default: ""
|
|
142
|
+
description: "What this path is for, for example 'Command track' or 'Joint'."
|
|
143
|
+
tours:
|
|
144
|
+
type: array
|
|
145
|
+
ui:
|
|
146
|
+
layout: table
|
|
147
|
+
items:
|
|
148
|
+
type: object
|
|
149
|
+
properties:
|
|
150
|
+
title:
|
|
151
|
+
type: plaintext
|
|
152
|
+
inline: true
|
|
153
|
+
title: Assignment
|
|
154
|
+
description: "The assignment, for example '333 TRS/DO' or 'Joint Staff J6'. Keep it short: about 12 characters per year fits."
|
|
155
|
+
years:
|
|
156
|
+
type: number
|
|
157
|
+
default: 2
|
|
158
|
+
title: Years
|
|
159
|
+
description: "Length in years, from 0.5 to 4 in half-year steps."
|
|
160
|
+
school:
|
|
161
|
+
type: boolean
|
|
162
|
+
default: false
|
|
163
|
+
description: "Whether this is a school, such as IDE, SDE, or Weapons School, rather than a job."
|
|
164
|
+
description: "The assignments on this path, in order. Each starts when the one before it ends."
|
|
165
|
+
default:
|
|
166
|
+
- { track: "", tours: [] }
|
|
167
|
+
- { track: "", tours: [] }
|
|
168
|
+
- { track: "", tours: [] }
|
|
169
|
+
description: "Up to three career paths after your current assignment: primary, alternate, and backup, in that order."
|
|
170
|
+
record:
|
|
171
|
+
fields:
|
|
172
|
+
stratifications:
|
|
173
|
+
type: array
|
|
174
|
+
max: 3
|
|
175
|
+
ui:
|
|
176
|
+
layout: table
|
|
177
|
+
items:
|
|
178
|
+
type: object
|
|
179
|
+
properties:
|
|
180
|
+
year:
|
|
181
|
+
type: integer
|
|
182
|
+
description: "The reporting year."
|
|
183
|
+
rater:
|
|
184
|
+
type: plaintext
|
|
185
|
+
inline: true
|
|
186
|
+
default: ""
|
|
187
|
+
title: Rater
|
|
188
|
+
description: "Your rater's stratification as written, for example '#1/14 Capts'."
|
|
189
|
+
hlr:
|
|
190
|
+
type: plaintext
|
|
191
|
+
inline: true
|
|
192
|
+
default: ""
|
|
193
|
+
title: Higher Level Reviewer
|
|
194
|
+
description: "Your higher level reviewer's stratification, for example '#1/45 CGOs'. Leave blank if you didn't get one."
|
|
195
|
+
default: []
|
|
196
|
+
description: "Your stratifications from the last three years."
|
|
132
197
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
ui:
|
|
137
|
-
group: plan
|
|
138
|
-
layout: table
|
|
139
|
-
items:
|
|
140
|
-
type: object
|
|
141
|
-
properties:
|
|
142
|
-
note:
|
|
198
|
+
awards:
|
|
199
|
+
type: array
|
|
200
|
+
items:
|
|
143
201
|
type: plaintext
|
|
144
202
|
inline: true
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
through:
|
|
148
|
-
type: integer
|
|
149
|
-
title: Through
|
|
150
|
-
description: "The last year it applies."
|
|
151
|
-
default: []
|
|
152
|
-
description: "Anything that limits where or when you can move and ends in a known year, like a join-spouse assignment or a degree in progress. Each shows as a bar across the timeline."
|
|
203
|
+
default: []
|
|
204
|
+
description: "Major awards, one per line, strongest first. Wing level and above is worth the space."
|
|
153
205
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
ui:
|
|
158
|
-
group: plan
|
|
159
|
-
items:
|
|
160
|
-
type: object
|
|
161
|
-
properties:
|
|
162
|
-
track:
|
|
206
|
+
certifications:
|
|
207
|
+
type: array
|
|
208
|
+
items:
|
|
163
209
|
type: plaintext
|
|
164
210
|
inline: true
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
tours:
|
|
168
|
-
type: array
|
|
169
|
-
ui:
|
|
170
|
-
layout: table
|
|
171
|
-
items:
|
|
172
|
-
type: object
|
|
173
|
-
properties:
|
|
174
|
-
title:
|
|
175
|
-
type: plaintext
|
|
176
|
-
inline: true
|
|
177
|
-
title: Assignment
|
|
178
|
-
description: "The assignment, for example '333 TRS/DO' or 'Joint Staff J6'. Keep it short: about 12 characters per year fits."
|
|
179
|
-
years:
|
|
180
|
-
type: number
|
|
181
|
-
default: 2
|
|
182
|
-
title: Years
|
|
183
|
-
description: "Length in years, from 0.5 to 4 in half-year steps."
|
|
184
|
-
school:
|
|
185
|
-
type: boolean
|
|
186
|
-
default: false
|
|
187
|
-
description: "Whether this is a school, such as IDE, SDE, or Weapons School, rather than a job."
|
|
188
|
-
description: "The assignments on this path, in order. Each starts when the one before it ends."
|
|
189
|
-
default:
|
|
190
|
-
- { track: "", tours: [] }
|
|
191
|
-
- { track: "", tours: [] }
|
|
192
|
-
- { track: "", tours: [] }
|
|
193
|
-
description: "Up to three career paths after your current assignment: primary, alternate, and backup, in that order."
|
|
211
|
+
default: []
|
|
212
|
+
description: "Certifications a board would recognize, one per line. Mark PME and the Cyber 200 and 300 courses under Qualifications instead."
|
|
194
213
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
ui:
|
|
199
|
-
group: record
|
|
200
|
-
layout: table
|
|
201
|
-
items:
|
|
202
|
-
type: object
|
|
203
|
-
properties:
|
|
204
|
-
year:
|
|
205
|
-
type: integer
|
|
206
|
-
description: "The reporting year."
|
|
207
|
-
rater:
|
|
208
|
-
type: plaintext
|
|
209
|
-
inline: true
|
|
210
|
-
default: ""
|
|
211
|
-
title: Rater
|
|
212
|
-
description: "Your rater's stratification as written, for example '#1/14 Capts'."
|
|
213
|
-
hlr:
|
|
214
|
+
deployments:
|
|
215
|
+
type: array
|
|
216
|
+
items:
|
|
214
217
|
type: plaintext
|
|
215
218
|
inline: true
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
description: "Your higher level reviewer's stratification, for example '#1/45 CGOs'. Leave blank if you didn't get one."
|
|
219
|
-
default: []
|
|
220
|
-
description: "Your stratifications from the last three years."
|
|
221
|
-
|
|
222
|
-
awards:
|
|
223
|
-
type: array
|
|
224
|
-
items:
|
|
225
|
-
type: plaintext
|
|
226
|
-
inline: true
|
|
227
|
-
default: []
|
|
228
|
-
ui:
|
|
229
|
-
group: record
|
|
230
|
-
description: "Major awards, one per line, strongest first. Wing level and above is worth the space."
|
|
231
|
-
|
|
232
|
-
certifications:
|
|
233
|
-
type: array
|
|
234
|
-
items:
|
|
235
|
-
type: plaintext
|
|
236
|
-
inline: true
|
|
237
|
-
default: []
|
|
238
|
-
ui:
|
|
239
|
-
group: record
|
|
240
|
-
description: "Certifications a board would recognize, one per line. Mark PME and the Cyber 200 and 300 courses under Qualifications instead."
|
|
241
|
-
|
|
242
|
-
deployments:
|
|
243
|
-
type: array
|
|
244
|
-
items:
|
|
245
|
-
type: plaintext
|
|
246
|
-
inline: true
|
|
247
|
-
default: []
|
|
248
|
-
ui:
|
|
249
|
-
group: record
|
|
250
|
-
description: "Deployments and short tours, one per line, with the month you returned."
|
|
251
|
-
|
|
252
|
-
# The page prints every member in four rows and marks the held ones, so an
|
|
253
|
-
# empty box is as much of the chart as a filled one. A row is a property
|
|
254
|
-
# here rather than a heading in the plate, so the partition is in the value
|
|
255
|
-
# and the address as well as on the page. The plate repeats each `title` as
|
|
256
|
-
# its row's label, since the data carries only the members.
|
|
219
|
+
default: []
|
|
220
|
+
description: "Deployments and short tours, one per line, with the month you returned."
|
|
257
221
|
qualifications:
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
222
|
+
title: "Qualifications & experience"
|
|
223
|
+
fields:
|
|
224
|
+
# The page prints every member in four rows and marks the held ones, so an
|
|
225
|
+
# empty box is as much of the chart as a filled one. A row is a property
|
|
226
|
+
# here rather than a heading in the plate, so the partition is in the value
|
|
227
|
+
# and the address as well as on the page. The plate repeats each `title` as
|
|
228
|
+
# its row's label, since the data carries only the members.
|
|
229
|
+
qualifications:
|
|
230
|
+
type: object
|
|
267
231
|
ui:
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
232
|
+
layout: flat
|
|
233
|
+
description: "Mark what you've done. The page lists every qualification and marks the ones you hold. Marking a course or school also marks its milestone done on the timeline."
|
|
234
|
+
properties:
|
|
235
|
+
command:
|
|
236
|
+
type: matrix
|
|
237
|
+
title: Leadership & command
|
|
238
|
+
ui:
|
|
239
|
+
compact: true
|
|
240
|
+
members:
|
|
241
|
+
sq_cc_candidate: Sq/CC Candidate
|
|
242
|
+
do_det_cc_candidate: DO / Det CC Candidate
|
|
243
|
+
flight_cc: Flight CC
|
|
244
|
+
director_of_operations: Director of Operations
|
|
245
|
+
detachment_cc: Detachment CC
|
|
246
|
+
squadron_cc: Squadron CC
|
|
247
|
+
properties: &detail
|
|
248
|
+
detail:
|
|
249
|
+
type: plaintext
|
|
250
|
+
inline: true
|
|
251
|
+
default: ""
|
|
252
|
+
description: "The unit, year, or distinction behind it, for example '23 IOS' or 'DG'. Optional."
|
|
253
|
+
operations:
|
|
254
|
+
type: matrix
|
|
255
|
+
title: Operations
|
|
256
|
+
ui:
|
|
257
|
+
compact: true
|
|
258
|
+
members:
|
|
259
|
+
dodin_ops: DODIN Ops
|
|
260
|
+
dco: DCO (Defensive)
|
|
261
|
+
oco: OCO (Offensive)
|
|
262
|
+
crew_cc: Crew CC
|
|
263
|
+
cyber_engineer: Cyber Engineer
|
|
264
|
+
team_lead: Team Lead (MDT / CPT)
|
|
265
|
+
expeditionary_comms: Expeditionary Comms
|
|
266
|
+
mission_cc: Mission CC
|
|
267
|
+
properties: *detail
|
|
268
|
+
staff:
|
|
269
|
+
type: matrix
|
|
270
|
+
title: Staff & functional
|
|
271
|
+
ui:
|
|
272
|
+
compact: true
|
|
273
|
+
members:
|
|
274
|
+
exec_aide_cag: Exec / Aide / CAG
|
|
275
|
+
haf_staff: HAF Staff
|
|
276
|
+
majcom_naf_staff: MAJCOM / NAF Staff
|
|
277
|
+
joint_staff: Joint Staff
|
|
278
|
+
instructor: Instructor
|
|
279
|
+
jqo: Joint Qualified Officer (JQO)
|
|
280
|
+
properties: *detail
|
|
281
|
+
# Completion and distinction are one tick and its detail, so SOS held
|
|
282
|
+
# with detail DG reads as both. Candidate and graduate are two ticks:
|
|
283
|
+
# they are different rungs, and a board reads them differently.
|
|
284
|
+
education:
|
|
285
|
+
type: matrix
|
|
286
|
+
title: Education & PME
|
|
287
|
+
ui:
|
|
288
|
+
compact: true
|
|
289
|
+
members:
|
|
290
|
+
commissioning_dg: Commissioning Source DG
|
|
291
|
+
sos: SOS
|
|
292
|
+
cyber_200: Cyber 200
|
|
293
|
+
cyber_300: Cyber 300
|
|
294
|
+
ide_candidate: IDE Candidate
|
|
295
|
+
ide_graduate: IDE Graduate
|
|
296
|
+
sde_candidate: SDE Candidate
|
|
297
|
+
sde_graduate: SDE Graduate
|
|
298
|
+
weapons_school: Weapons School / WIC DG
|
|
299
|
+
properties: *detail
|