summaryrefslogtreecommitdiff
path: root/views/head.pug
blob: 7489651453cc96e94af45743e7dee11dc786e211 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
//- vim:ts=4:sw=4:

meta(name="viewport" content="width=device-width,initial-scale=1")
meta(name="theme-color" content="#444")
link(rel="icon" type="image/svg+xml" href="/favicon.svg")
link(rel="stylesheet" href="/fonts/fonts.css")
link(rel="stylesheet" href="/style.css")
if SITE_THEME
	link(rel="stylesheet" href="/themes/"+SITE_THEME)

mixin social(title,description,game)
	meta(property="og:title" content=title)
	meta(property="og:type" content="website")
	if game
		meta(property="og:image" content=SITE_URL+"/"+game+"/cover.2x.jpg")
	else
		if SITE_ICON
			meta(property="og:image" content=SITE_URL+"/images/"+SITE_ICON)
		else
			meta(property="og:image" content=SITE_URL+"/images/rally-the-troops.png")
	meta(property="og:description" content=description)

mixin gamecover(title_id)
	a(href="/"+title_id)
		img(src=`/${title_id}/cover.1x.jpg` srcset=`/${title_id}/cover.2x.jpg 2x`)

mixin forumpost(row,show_buttons)
	.post(id=row.post_id)
		.head
			.from: b: a.black(href="/user/"+row.author_name)= row.author_name
			.time= human_date(row.ctime)
				if row.edited
					|
					| (edited #{human_date(row.mtime)})
		.body!= row.body
	if show_buttons && user
		.edit
			if user.user_id === 1
				| #[a(href="/forum/delete-post/"+row.post_id) DELETE]
				|
			if row.author_id === user.user_id
				| #[a(href="/forum/edit/"+row.post_id) Edit]
				|
			| #[a(href="/forum/reply/"+row.post_id) Reply]

mixin gamelist(list,hide_title=0)
	div.game_list
		each item in list
			div
				-
					let className = "game_item"
					let pace_icon = ""
					let pace_text = ""
					let chat_icon = ""
					if (item.your_turn) className += " your_turn"
					if (item.status === 0 && item.join_count === 0) className += " open replacement"
					else if (item.status === 0 && item.join_count !== item.player_count) className += " open"
					else if (item.status === 0 && item.join_count === item.player_count) className += " ready"
					else if (item.status === 1 && item.join_count !== item.player_count) className += " replacement"
					else if (item.status === 1 && item.join_count === item.player_count) className += " active"
					else if (item.status === 2) className += " finished"
					else if (item.status === 3) className += " archived"
					if (item.is_unread) chat_icon = "\u{1f4dd}"
					if (item.is_private) pace_icon += EMOJI_PRIVATE
					if (item.is_match)
						pace_icon += EMOJI_MATCH
					else if (item.pace > 0)
						pace_icon += PACE_ICON[item.pace], pace_text = PACE_TEXT[item.pace]

				div(class=className)
					div.game_head
						if item.scenario.length <= 2
							div
								| #{pace_icon} <a href="/join/#{item.game_id}">##{item.game_id} &#x2013; #{item.title_name} (#{item.scenario})</a> #{chat_icon}
						else
							div
								| #{pace_icon} <a href="/join/#{item.game_id}">##{item.game_id} &#x2013; #{item.title_name}</a> #{chat_icon}

						case item.status
							when 0
								a(class="command" href=`/join/${item.game_id}`) Join
							when 1
								if !item.is_ready
									a(class="command" href="/join/"+item.game_id) Join
								else if item.is_yours
									if item.your_role
										a(class="command" href=`/${item.title_id}/play.html?game=${item.game_id}&role=${encodeURIComponent(item.your_role)}`) Play
									else
										a(class="command" href="/join/"+item.game_id) Play
								else
									a(class="command" href=`/${item.title_id}/play.html?game=${item.game_id}`) Watch
							when 2
								if item.is_yours
									if item.your_role
										a(class="command" href=`/${item.title_id}/play.html?game=${item.game_id}&role=${encodeURIComponent(item.your_role)}`) Review
									else
										a(class="command" href="/join/"+item.game_id) Review
								else
									a(class="command" href=`/${item.title_id}/play.html?game=${item.game_id}`) Review
							when 3
								| Archived

					div.game_main
						div.game_info
							if item.is_match
								i
									a(href="/tm/pool/"+item.notice)= item.notice
							else if item.notice
								i= item.notice
							else
								i= pace_text
							unless item.is_match
								if item.scenario !== "Standard" && item.scenario !== "Historical" && item.scenario.length > 2
									div Scenario: #{item.scenario}
								unless item.human_options === "None"
									div Options: #{item.human_options}
							if item.player_names
								div Players: !{item.player_names}
							else
								div Players: <span class="error">Nobody</span>
							case item.status
								when 0
									div Created: #{human_date(item.ctime)}
								when 1
									div Last move: #{human_date(item.mtime)}
									if item.your_turn
										if item.time_left <= 0
											div Time left: none.
										else if item.time_left <= 2
											div Time left: #{ item.time_left * 24 | 0 } hours
										else if item.time_left <= 5
											div Time left: #{ item.time_left | 0 } days
								when 2
									div Finished: #{human_date(item.mtime)}
									div Result: !{item.result}
								when 3
									div Finished: #{human_date(item.mtime)}
									div Result: !{item.result}
						unless hide_title
							a(href=`/${item.title_id}`)
								img(src=`/${item.title_id}/thumbnail.jpg`)

mixin seedlist(list, title)
	if list && list.length > 0
		table.half.seeds
			if title
				thead
					tr
						th= title
						td
						td= TM_ICON_QUEUE
			tbody
				each seed in list
					tr
						td
							a(href="/tm/seed/" + seed.seed_name)= seed.seed_name
						td.n #{seed.queue_size}
						if user && seed.is_queued
							td= TM_ICON_TICKET
						else
							td

mixin poollist(list, title, icon)
	if list && list.length > 0
		table.half.pools
			if title
				thead
					tr
						th!= title
						td= icon
			tbody
				each pool in list
					tr
						td
							a(href="/tm/pool/" + pool.pool_name)= pool.pool_name
						if pool.is_finished
							if pool.status
								td!= pool.status.split(",").map(p => `<a class="black" href="/user/${p}">${p}</a>`).join(", ")
							else
								td Nobody
						else
							td.w= pool.status

mixin tourlist(seeds, pools, fin)
		if (seeds && seeds.length > 0) || (pools && pools.length > 0) || (fin && fin.length > 0)
			h2 Tournaments
			div.tour_list
				div
					+seedlist(seeds, "Registrations")
					+poollist(pools, "Active", TM_ICON_ACTIVE)
				div
					+poollist(fin, "Finished", TM_ICON_FINISHED)