-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
209 lines (207 loc) · 8.91 KB
/
index.html
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" type="text/css" href="/yaffi.css">
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script>
<script src="/yaffi.js"></script>
<title>Yet Another Fanfic Index - YAFFI</title>
</head>
<body>
<div class="pageHeader">
<div class="headerMenu">
<div class="menuLeft">
<ul>
<li><a href="#!index">Index</a></li>
<li><a href="#!list/categories">Categories</a></li>
<li><a href="#!list/sources">Sources</a></li>
<li><a href="#!list/authors">Authors</a></li>
</ul>
</div>
</div>
</div>
<div class="pageContent">
<div id="app">
<template v-if="view === 'index'">
<p>
This site provides a listing of some fanfiction that I've read: a summary,
some details, and, where possible, a link to find it online. Many of the fics
listed are quite old--from before the turn of the century, even--so a handy
web link is not always available. Links into the Wayback Machine or elsewhere
will be provided whenever I can find them.
</p>
<p>
This project was inspired by The Penultimate Ranma Fanfic Index (which is,
sadly, defunct) and similar resources of yesteryear. A debt of gratitude is
also owed to <a href="http://vffa.ficfan.org/">The Vanished FanFic Archive</a>
which has related goals.
</p>
<p>
If you are curious, you may read some more information
<a href="#!about">about YAFFI</a>. If you wish to report errors or
omissions, you may
<a href="https://github.com/sopoforic/yaffi/issues/new">file an issue</a> on
github.
</p>
<p>
The current version of this index was last updated on {{stats.today}} and
contains {{stats.total_fics}} fanfics ({{stats.total_complete}} complete),
totalling {{stats.total_pages}} pages. In addition, there are
{{stats.total_tba}} fanfics queued to be added in future updates.
</p>
<h1>Recently added fanfics, by week</h1>
<ul>
<li v-for="week in Object.keys(weeks).slice().sort(function(a, b) { return a > b ? -1 : +(a < b) })">
<a :href="'#!week/'.concat(week)">{{weeks[week].end}}</a> ({{weeks[week].count}} additions)
</li>
</ul>
</template>
<template v-if="view === 'about'">
<p>
This project was inspired by The Penultimate Ranma Fanfic Index (which is,
sadly, defunct) and similar resources of yesteryear. A debt of gratitude is
also owed to <a href="http://vffa.ficfan.org/">The Vanished FanFic Archive</a>
which has related goals.
</p>
<p>
A particular focus of YAFFI is older fanfiction that is less visible on
today's internet. As such, some fanfiction, such as that published in
fanzines, will be listed even if no copy is available on the web.
</p>
<p>
The RAAC archive (a copy of which can be found
<a href="https://archives.eyrie.org/anime/">here</a>) is another major
resource for populating this index. As an homage to Rakhal's Penultimate Ranma
Fanfic Index, it is a goal of YAFFI to eventually index the entire Ranma
section. Of approximately 2400 stories in the Ranma section,
{{stats.raac_ranma}} are currently present in the index.
</p>
<p>
The current version of this index was last updated on {{stats.today}} and
contains {{stats.total_fics}} fanfics ({{stats.total_complete}} complete),
totalling {{stats.total_pages}} pages. In addition, there are
{{stats.total_tba}} fanfics queued to be added in future updates.
</p>
</template>
<template v-if="view === 'list' && number === 'sources'">
<ul>
<li v-for="i in Object.keys(sources).slice().sort(function (a, b) { return sources[a].name.localeCompare(sources[b].name, {sensitivity: 'base'}) })">
<a :href="'#!source/'.concat(i)">{{sources[i].name}}</a>
</li>
</ul>
</template>
<template v-if="view === 'list' && number === 'authors'">
<ul>
<li v-for="i in Object.keys(authors).slice().sort(function (a, b) { return authors[a].name.localeCompare(authors[b].name, {sensitivity: 'base'}) })">
<a :href="'#!author/'.concat(i)">{{authors[i].name}}</a>
</li>
</ul>
</template>
<template v-if="view === 'list' && number === 'categories'">
<ul>
<li v-for="i in Object.keys(categories).slice().sort(function (a, b) { return categories[a].name.localeCompare(categories[b].name, {sensitivity: 'base'}) })">
<a :href="'#!category/'.concat(i)">{{categories[i].name}}</a>
</li>
</ul>
</template>
<template v-if="view === 'week'">
<p>During the week ending {{weeks[number].end}}, there were {{weeks[number].count}} fanfics added to this index.</p>
</template>
<template v-if="view === 'author'">
<h1 id="author-name">
{{ authors[number].name }}
<template v-if="authors[number].other_names !== null">
<br />
<small>AKA: {{authors[number].other_names}}</small>
</template>
</h1>
<div v-if="authors[number].description !== null" v-html="authors[number].description" />
<template v-if="authors[number].links.length > 0">
<h2>Links</h2>
<ul>
<li v-for="l in authors[number].links">
<a :href="l.url">{{l.title}}</a>
</li>
</ul>
</template>
</template>
<template v-if="view === 'category'">
<h1 id="category-name">{{ categories[number].name }}</h1>
<div v-if="categories[number].description !== null" v-html="categories[number].description" />
</template>
<template v-if="view === 'character'">
<h1 id="character-name">{{ characters[number].name }}</h1>
<div v-if="characters[number].description !== null" v-html="characters[number].description" />
<section v-if="characters[character].pairings.length > 0">
<h2>Pairings</h2>
<ul>
<li v-for="p in characters[number].pairings.slice().sort(function (a, b) {return pairings[a].name.localeCompare(pairings[b].name, {sensitivity: 'base'})})">
<a :href="'#!pairing/'.concat(p)">{{pairings[p].name}}</a>
</li>
</ul>
</section>
<section v-if="characters[number].categories.length > 0">
<h2>Categories</h2>
<ul>
<li v-for="c in characters[number].categories.slice().sort(function (a, b) {return categories[a].name.localeCompare(categories[b].name, {sensitivity: 'base'})})">
<a :href="'#!category/'.concat(c)">{{categories[c].name}}</a>
</li>
</ul>
</section>
</template>
<template v-if="view === 'pairing'">
<h1 id="pairing-name">{{ pairings[number].name }}<br />
<small>
<ul class="commaList">
<li v-for="c in pairings[number].characters.slice().sort(function (a, b) {return characters[a].name.localeCompare(characters[b].name, {sensitivity: 'base'})})">
<a :href="'#!character/'.concat(c)">{{characters[c].name}}</a>
</li>
</ul>
</small></h1>
<div v-if="pairings[number].description !== null" v-html="pairings[number].description" />
</template>
<template v-if="view === 'source'">
<h1 id="source-name">{{ sources[number].name }}</h1>
<div v-if="sources[number].description !== null" v-html="sources[number].description" />
<section v-if="sources[number].characters.length > 0">
<h2>Characters</h2>
<ul class="commaList">
<li v-for="c in sources[number].characters.slice().sort(function (a, b) {return characters[a].name.localeCompare(characters[b].name, {sensitivity: 'base'})})">
<a :href="'#!character/'.concat(c)">{{characters[c].name}}</a>
</li>
</ul>
</section>
<section v-if="sources[number].categories.length > 0">
<h2>Categories</h2>
<ul>
<li v-for="c in sources[number].categories.slice().sort(function (a, b) {return categories[a].name.localeCompare(categories[b].name, {sensitivity: 'base'})})">
<a :href="'#!category/'.concat(c)">{{categories[c].name}}</a>
</li>
</ul>
</section>
</template>
<template v-if="view === 'fanfic' && !(number in fanfics)">
<p>
That fanfic is not yet listed in YAFFI.
</p>
</template>
<fic-div
v-for="i in Object.keys(fanfics).slice().sort(function (a, b) { return fanfics[a].title.localeCompare(fanfics[b].title, {sensitivity: 'base'}) })"
v-if="ficviews.includes(view) && shouldDisplay(i)"
:key="i"
:fanfic="fanfics[i]"
:authors="authors"
:sources="sources"
:characters="characters"
:pairings="pairings"
:categories="categories">
</fic-div>
</div>
</div>
</body>
</html>