Skip to content

Commit 1097174

Browse files
committed
feat: add private_event fixed point type
so that non-public club events can also be awarded with points if a staff choses to do so.
1 parent 119c18a commit 1097174

6 files changed

Lines changed: 36 additions & 5 deletions

File tree

docs/architecture.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,10 @@ Default fixed types initialized on initial startup:
161161
| `logtime` | 10 | Points per hour of campus presence |
162162
| `idle_logout` | -10 | Penalty for leaving a computer idling (negative) |
163163
| `exam` | 1000 | Factor in exam score formula |
164-
| `event_basic` | 1000 | Points for organizing a basic event |
165-
| `event_intermediate` | 3000 | Points for organizing an intermediate event |
166-
| `event_advanced` | 6000 | Points for organizing an advanced event |
164+
| `event_private` | 500 | Flat award for organizing a private event (e.g. for club members only) |
165+
| `event_basic` | 1000 | Flat award for organizing a basic event |
166+
| `event_intermediate` | 3000 | Flat award for organizing an intermediate event |
167+
| `event_advanced` | 6000 | Flat award for organizing an advanced event |
167168
| `ranking_bonus` | 0 | Not used directly; actual amounts come from ranking settings |
168169

169170
#### `CodamCoalitionRanking`

docs/features/scoring.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Fixed types are named categories defined in `CodamCoalitionFixedType`. They are
1818
| `logtime` | 10 | Points per hour of campus computer usage |
1919
| `idle_logout` | −10 | Penalty per automatic idle logout from a campus computer (negative value) |
2020
| `exam` | 1000 | Factor in the exam score formula (see below) |
21+
| `event_private` | 500 | Flat award for organizing a private event (e.g. for club members only) |
2122
| `event_basic` | 1000 | Flat award for organizing a basic event |
2223
| `event_intermediate` | 3000 | Flat award for organizing an intermediate event |
2324
| `event_advanced` | 6000 | Flat award for organizing an advanced event |
@@ -121,10 +122,19 @@ Awarded manually by admins via the admin interface. Flat amounts based on event
121122

122123
These are the guidelines for the different tiers of events, including recommended criteria.
123124

125+
##### Private event
126+
A private event is suitable for small gatherings of selected students (e.g. club members only), it's simple to organize, usually held within the campus building with minimal logistic requirements. Example: "Book Club Meeting".
127+
128+
###### Criteria for a private event
129+
- Have an event listed in the Intra calendar.
130+
- Have a private audience (e.g. club members only).
131+
- Minimal logistic arrangements needed, such as reserving the auditorium or open space.
132+
124133
##### Basic event
125134
A basic event is suitable for small gatherings of students, it's simple to organize, held within the campus building with minimal logistic requirements , no budget involved. Example: "Movie Night".
126135

127136
###### Criteria for a basic event
137+
- Have an event listed in the Intra calendar that is open to all students.
128138
- Aim for around 1-10 attendees.
129139
- Minimal logistic arrangements needed, such as reserving the auditorium.
130140
- Short event duration, typically lasting 1-2 hours including setup and cleanup.
@@ -134,6 +144,7 @@ A basic event is suitable for small gatherings of students, it's simple to organ
134144
An intermediate-level event aimed at engaging a larger number of students through activities that require moderate planning and coordination. Example: "Eastern Lunch" & "Table Tennis League".
135145

136146
###### Criteria for an intermediate event
147+
- Have an event listed in the Intra calendar that is open to all students.
137148
- Aim for around 10-50 attendees.
138149
- Moderate logistical arrangements, including securing a location (inside or outside of the campus), prepare and coordinate activities or themes for - the event.
139150
- Limited budget requirement, covering food/drinks, possibility equipment and resources.
@@ -143,6 +154,7 @@ An intermediate-level event aimed at engaging a larger number of students throug
143154
An advanced-level event designed to bring together a large number of students for a significant social gathering or activity, requires extensive planning, resources and possibly external coordination. Example: "Student Party"
144155

145156
###### Criteria for an advanced event
157+
- Have an event listed in the Intra calendar that is open to all students.
146158
- Aim for more than 50 attendees.
147159
- Extensive planning with detailed scheduling and coordination, with several deadlines.
148160
- Might involve coordination with external stakeholders, such as partners.

src/dev/create_rankings.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const createRankings = async function(): Promise<void> {
2929
await createRanking('Top Performers', 'Based on points gained through projects', 'Top Performer %login', 8400, ['project', 'exam']);
3030
await createRanking('Top Endeavors', 'Based on points gained through logtime', 'Top Endeavor %login', 16800, ['logtime', 'idle_logout']);
3131
await createRanking('Philanthropists', 'Based on points gained through donating evaluation points to the pool', 'Philanthropist %login', 16800, ['point_donated']);
32-
await createRanking('Community Leaders', 'Based on points gained through organizing events', 'Community Leader %login', 12600, ['event_basic', 'event_intermediate', 'event_advanced']);
32+
await createRanking('Community Leaders', 'Based on points gained through organizing events', 'Community Leader %login', 12600, ['event_private', 'event_basic', 'event_intermediate', 'event_advanced']);
3333
};
3434

3535
const main = async function(): Promise<void> {

src/sync/fixed_point_types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ export const initCodamCoalitionFixedTypes = async function(): Promise<void> {
6464
desc: "Each exam passed will grant the student with a fixed amount of points, influenced by the final mark. The score is calculated as (mark / 100) * fixed_point_amount.",
6565
points: 1000, // recommended
6666
},
67+
{
68+
type: "event_private",
69+
desc: "Each private event organized (e.g. for club members only) will grant the student with this amount of points.",
70+
points: 500, // recommended
71+
},
6772
{
6873
type: "event_basic",
6974
desc: "Each basic event organized will grant the student with this amount of points.",

templates/admin/points/manual/custom.njk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</nav>
1212

1313
<div class="alert alert-warning">
14-
<p>Points for any <b>events</b> organized should be assigned using the <a href="/admin/points/manual/event_basic">event_basic</b>, <a href="/admin/points/manual/event_intermediate">event_intermediate</a> or <a href="/admin/points/manual/event_advanced">event_advanced</a> forms instead of this one.</b></p>
14+
<p>Points for any <b>events</b> organized should be assigned using the <a href="/admin/points/manual/event_private">event_private</b>, <a href="/admin/points/manual/event_basic">event_basic</b>, <a href="/admin/points/manual/event_intermediate">event_intermediate</a> or <a href="/admin/points/manual/event_advanced">event_advanced</a> forms instead of this one.</b></p>
1515
</div>
1616

1717
<ul class="nav nav-tabs mb-3">

templates/admin/points/manual/event.njk

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,22 @@
1515
<p>These are the guidelines for the different types of events, including recommended criteria:</p>
1616

1717
<ul>
18+
<li class="mb-3">
19+
<b>Private event</b>
20+
<p>A private event is suitable for small gatherings of selected students (e.g. club members only), it's simple to organize, usually held within the campus building with minimal logistic requirements. Example: "Book Club Meeting".</p>
21+
<i>Criteria for a private event:</i>
22+
<ul>
23+
<li>Have an event listed in the Intra calendar.</li>
24+
<li>Have a private audience (e.g. club members only).</li>
25+
<li>Minimal logistic arrangements needed, such as reserving the auditorium or open space.</li>
26+
</ul>
27+
</li>
1828
<li class="mb-3">
1929
<b>Basic event</b>
2030
<p>A basic event is suitable for small gatherings of students, it's simple to organize, held within the campus building with minimal logistic requirements , no budget involved. Example: "Movie Night".</p>
2131
<i>Criteria for a basic event:</i>
2232
<ul>
33+
<li>Have an event listed in the Intra calendar that is open to all students.</li>
2334
<li>Aim for around 1-10 attendees.</li>
2435
<li>Minimal logistic arrangements needed, such as reserving the auditorium.</li>
2536
<li>Short event duration, typically lasting 1-2 hours including setup and cleanup.</li>
@@ -31,6 +42,7 @@
3142
<p>An intermediate-level event aimed at engaging a larger number of students through activities that require moderate planning and coordination. Example: "Eastern Lunch" & "Table Tennis League".</p>
3243
<i>Criteria for an intermediate event:</i>
3344
<ul>
45+
<li>Have an event listed in the Intra calendar that is open to all students.</li>
3446
<li>Aim for around 10-50 attendees.</li>
3547
<li>Moderate logistical arrangements, including securing a location (inside or outside of the campus), prepare and coordinate activities or themes for the event.</li>
3648
<li>Limited budget requirement, covering food/drinks, possibility equipment and resources.</li>
@@ -42,6 +54,7 @@
4254
<p>An advanced-level event designed to bring together a large number of students for a significant social gathering or activity, requires extensive planning, resources and possibly external coordination. Example: "Student Party"</p>
4355
<i>Criteria for an advanced event:</i>
4456
<ul>
57+
<li>Have an event listed in the Intra calendar that is open to all students.</li>
4558
<li>Aim for more than 50 attendees.</li>
4659
<li>Extensive planning with detailed scheduling and coordination, with several deadlines.</li>
4760
<li>Might involve coordination with external stakeholders, such as partners.</li>

0 commit comments

Comments
 (0)