Update to v1.4

This commit is contained in:
Lost-MSth
2020-10-30 20:17:21 +08:00
parent bb7ba249e9
commit 123554e24d
46 changed files with 9758 additions and 9638 deletions

View File

@@ -0,0 +1,81 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}All players{% endblock %}</h1>
{% endblock %}
{% block content %}
{% if posts %}
{% for user in posts %}
<div id="user-info">
<div class="name">{{user['name']}}
<span class="rank">UID: {{user['user_id']}}</span>
<span class="rank">User code: {{user['user_code']}}</span>
</div>
<div class="join-date">注册于 Registered in: {{user['join_date']}}</div>
<div class="ptt">PTT: {{user['rating_ptt']//100 ~ '.' ~ user['rating_ptt']%100}}</div>
<div>
<div>Recent plays: </div>
<div>
<div class="score-item">
<span class="song-title">
{{user['song_id']}}
</span>
{% if user['difficulty'] == 0 %}
<span class="difficulty_pst">PST</span>
{% elif user['difficulty'] == 1 %}
<span class="difficulty_prs">PRS</span>
{% elif user['difficulty'] == 2 %}
<span class="difficulty_ftr">FTR</span>
{% else %}
<span class="difficulty_byd">BYD</span>
{% endif %}
<div class="song-detail">
<br />
<table>
<tbody>
<tr>
<td>PURE: </td>
<td>{{user['perfect_count']}}</td>
<td> {{'(' ~ user['shiny_perfect_count'] ~ ')'}}</td>
</tr>
<tr>
<td>FAR: </td>
<td>{{user['near_count']}}</td>
<td></td>
</tr>
<tr>
<td>LOST: </td>
<td>{{user['miss_count']}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="song-score">{{user['score']}}</div>
<div class="song-clear-type">
{% if user['clear_type'] == 3 %}Pure Memory
{% elif user['clear_type'] == 2 %}Full Recall
{% elif user['clear_type'] == 5 %}Hard Clear
{% elif user['clear_type'] == 1 %}Normal Clear
{% elif user['clear_type'] == 4 %}Easy Clear
{% else%}Track Lost
{% endif %}
</div>
<div class="song-rating">成绩评价 Rating: {{user['rating']}}</div>
<div class="song-clear-date">日期 Date:
{{user['time_played']}}
</div>
</div>
</div>
</div>
</div>
{% if not loop.last %}
<hr />
<br />
{% endif %}
{% endfor %}
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,48 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}All songs{% endblock %}</h1>
{% endblock %}
{% block content %}
{% if posts %}<br />
{% for song in posts %}
<div class="score-item">
<span>Sid: </span>
<span class="song-title">{{song['song_id']}}</span>
<br />
<span>Name_en: </span>
<span class="song-title">{{song['name_en']}}</span>
<br />
<div>铺面定数 Chart const: </div>
{% if song['rating_pst'] %}
<span class="difficulty_pst">PST</span>
<span class="song-rating">{{song['rating_pst']}}</span>
{% endif %}
<br />
{% if song['rating_prs'] %}
<span class="difficulty_prs">PRS</span>
<span class="song-rating">{{song['rating_prs']}}</span>
{% endif %}
<br />
{% if song['rating_ftr'] %}
<span class="difficulty_ftr">FTR</span>
<span class="song-rating">{{song['rating_ftr']}}</span>
{% endif %}
<br />
{% if song['rating_byn'] %}
<span class="difficulty_byd">BYD</span>
<span class="song-rating">{{song['rating_byn']}}</span>
{% endif %}
</div>
{% if not loop.last %}
<br />
<hr />
<br />
{% endif %}
{% endfor %}
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,35 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Change the songs{% endblock %}</h1>
{% endblock %}
{% block content %}
<form action="/web/changesong/addsong" method="post">
<div class="title">Add the song</div>
<label for="sid">SID of the song</label>
<input name="sid" id="sid" required>
<label for="name_en">English name of the song(Not important but neccessary)</label>
<input name="name_en" id="name_en" required>
<label for="rating_pst">Past chart const</label>
<input name="rating_pst" id="rating_pst" required>
<label for="rating_prs">Present chart const</label>
<input name="rating_prs" id="rating_prs" required>
<label for="rating_ftr">Future chart const</label>
<input name="rating_ftr" id="rating_ftr" required>
<label for="rating_byd">Beyond chart const</label>
<input name="rating_byd" id="rating_byd" required>
<div class="content">如果没有某个铺面,应该填入-1。</div>
<div class="content">If there is no some chart, fill in -1 please.</div>
<input type="submit" value="Add">
</form>
<br />
<hr />
<form action="/web/changesong/deletesong" method="post">
<div class="title">Delete the song</div>
<label for="sid">SID of the song</label>
<input name="sid" id="sid" required>
<input type="submit" value="Delete">
</form>
{% endblock %}

View File

@@ -0,0 +1,24 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Index{% endblock %}</h1>
{% endblock %}
{% block content %}
<h1>说明 Statement</h1>
<p>这是Arcaea Server的后台管理协助系统可以进行一些简单的操作</br>
This is the background management assistance system of Arcaea Server, which can be used to do some simple
operations.
</p>
<h1>游戏方面 Game</h1>
<a href="{{ url_for('index.single_player_score') }}">单个玩家成绩查询 Single player score</a></br></br>
<a href="{{ url_for('index.single_player_ptt') }}">单个玩家PTT详情查询 Single player ptt</a></br></br>
<a href="{{ url_for('index.all_player') }}">所有玩家信息查询 All players</a></br></br>
<a href="{{ url_for('index.all_song') }}">铺面信息查询 All songs</a></br></br>
<a href="{{ url_for('index.single_chart_top') }}">单个铺面排行榜查询 Single song chart tops</a>
<hr>
<h1>系统方面 System</h1>
<a href="{{ url_for('index.update_database') }}">数据库更新 Update databases</a></br></br>
<a href="{{ url_for('index.change_song') }}">歌曲修改 Change the songs</a>
{% endblock %}

View File

@@ -0,0 +1,14 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Log In{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post">
<label for="username">Username</label>
<input name="username" id="username" required>
<label for="password">Password</label>
<input type="password" name="password" id="password" required>
<input type="submit" value="Log In">
</form>
{% endblock %}

View File

@@ -0,0 +1,108 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Single chart top{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post">
<label for="sid">SID of the song</label>
<span>模糊查询,只返回第一个</span>
<span>Fuzzy query,and only return the first one.</span>
<input name="sid" id="sid">
<label for="difficulty">Difficulty</label>
<select name='difficulty' id='difficulty'>
<option value="0" selected>Past</option>
<option value="1">Present</option>
<option value="2">Future</option>
<option value="3">Beyond</option>
</select>
<br />
<input type="submit" value="Find">
</br>
</br>
</br>
{% if song_id %}
<div>
<span class="song-title">
{{song_id}}
</span>
{% if difficulty == 0 %}
<span class="difficulty_pst">PST</span>
{% elif difficulty == 1 %}
<span class="difficulty_prs">PRS</span>
{% elif difficulty == 2 %}
<span class="difficulty_ftr">FTR</span>
{% else %}
<span class="difficulty_byd">BYD</span>
{% endif %}
<br />
<div class="song-title">
{{song_name_en}}
</div>
</div>
{% endif %}
<br />
<hr />
{% for post in posts %}
<div class="score-item">
<div>
<span class='rank_big'>{{'#' ~ post['rank']}}</span>
<span class="name">
{{post['name']}}
</span>
<span class="rank">UID: {{post['user_id']}}</span>
</div>
<div class="song-detail">
<table>
<tbody>
<tr>
<td>PURE: </td>
<td>{{post['perfect_count']}}</td>
<td> {{'(' ~ post['shiny_perfect_count'] ~ ')'}}</td>
</tr>
<tr>
<td>FAR: </td>
<td>{{post['near_count']}}</td>
<td></td>
</tr>
<tr>
<td>LOST: </td>
<td>{{post['miss_count']}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="song-score">{{post['score']}}</div>
<div class="song-clear-type">
{% if post['clear_type'] == 3 %}Pure Memory
{% elif post['clear_type'] == 2 %}Full Recall
{% elif post['clear_type'] == 5 %}Hard Clear
{% elif post['clear_type'] == 1 %}Normal Clear
{% elif post['clear_type'] == 4 %}Easy Clear
{% else%}Track Lost
{% endif %}
<span class="song-clear-type" style="margin-left: 1.875em;">
{% if post['best_clear_type'] == 3 %}(Pure Memory)
{% elif post['best_clear_type'] == 2 %}(Full Recall)
{% elif post['best_clear_type'] == 5 %}(Hard Clear)
{% elif post['best_clear_type'] == 1 %}(Normal Clear)
{% elif post['best_clear_type'] == 4 %}(Easy Clear)
{% else%}(Track Lost)
{% endif %}
</span>
</div>
<div class="song-clear-date">日期 Date:
{{post['time_played']}}
</div>
</div>
{% if not loop.last %}
</br>
{% endif %}
{% endfor %}
</form>
{% endblock %}

View File

@@ -0,0 +1,85 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Single player score{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post">
<label for="name">Arcaea Username</label>
<input name="name" id="name">
or<br />
<label for="user_code">Arcaea User Code</label>
<input name="user_code" id="user_code">
<input type="submit" value="Find">
</br>
</br>
</br>
{% for post in posts %}
<div class="score-item">
<span class="song-title">
{{post['song_id']}}
</span>
{% if post['difficulty'] == 0 %}
<span class="difficulty_pst">PST</span>
{% elif post['difficulty'] == 1 %}
<span class="difficulty_prs">PRS</span>
{% elif post['difficulty'] == 2 %}
<span class="difficulty_ftr">FTR</span>
{% else %}
<span class="difficulty_byd">BYD</span>
{% endif %}
<span class='rank'>{{'#' ~ post['rank']}}</span>
<div class="song-detail">
</br>
<table>
<tbody>
<tr>
<td>PURE: </td>
<td>{{post['perfect_count']}}</td>
<td> {{'(' ~ post['shiny_perfect_count'] ~ ')'}}</td>
</tr>
<tr>
<td>FAR: </td>
<td>{{post['near_count']}}</td>
<td></td>
</tr>
<tr>
<td>LOST: </td>
<td>{{post['miss_count']}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="song-score">{{post['score']}}</div>
<div class="song-clear-type">
{% if post['clear_type'] == 3 %}Pure Memory
{% elif post['clear_type'] == 2 %}Full Recall
{% elif post['clear_type'] == 5 %}Hard Clear
{% elif post['clear_type'] == 1 %}Normal Clear
{% elif post['clear_type'] == 4 %}Easy Clear
{% else%}Track Lost
{% endif %}
<span class="song-clear-type" style="margin-left: 1.875em;">
{% if post['best_clear_type'] == 3 %}(Pure Memory)
{% elif post['best_clear_type'] == 2 %}(Full Recall)
{% elif post['best_clear_type'] == 5 %}(Hard Clear)
{% elif post['best_clear_type'] == 1 %}(Normal Clear)
{% elif post['best_clear_type'] == 4 %}(Easy Clear)
{% else%}(Track Lost)
{% endif %}
</span>
</div>
<div class="song-rating">成绩评价 Rating: {{post['rating']}}</div>
<div class="song-clear-date">日期 Date:
{{post['time_played']}}
</div>
</div>
{% if not loop.last %}
</br>
{% endif %}
{% endfor %}
</form>
{% endblock %}

View File

@@ -0,0 +1,191 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Single player ptt{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post">
<label for="name">Arcaea Username</label>
<input name="name" id="name">
or<br />
<label for="user_code">Arcaea User Code</label>
<input name="user_code" id="user_code">
<input type="submit" value="Find">
<br />
<br />
<br />
{% if user %}
<hr />
<div id="user-info">
<div class="title">玩家信息 Player information</div>
<div class="name">{{user['name']}}
<span class="rank">UID: {{user['user_id']}}</span>
<span class="rank">User code: {{user['user_code']}}</span>
</div>
<div class="join-date">注册于 Registered in: {{user['join_date']}}</div>
<div class="ptt">PTT: {{user['rating_ptt']//100 ~ '.' ~ user['rating_ptt']%100}}</div>
<div class="ptt">Best 30 PTT: {{bestptt}}</div>
<div class="ptt">Recent 10 PTT: {{recentptt}}</div>
<div>
<div>Recent plays: </div>
<div>
<div class="score-item">
<span class="song-title">
{{user['song_id']}}
</span>
{% if user['difficulty'] == 0 %}
<span class="difficulty_pst">PST</span>
{% elif user['difficulty'] == 1 %}
<span class="difficulty_prs">PRS</span>
{% elif user['difficulty'] == 2 %}
<span class="difficulty_ftr">FTR</span>
{% else %}
<span class="difficulty_byd">BYD</span>
{% endif %}
<div class="song-detail">
<br />
<table>
<tbody>
<tr>
<td>PURE: </td>
<td>{{user['perfect_count']}}</td>
<td> {{'(' ~ user['shiny_perfect_count'] ~ ')'}}</td>
</tr>
<tr>
<td>FAR: </td>
<td>{{user['near_count']}}</td>
<td></td>
</tr>
<tr>
<td>LOST: </td>
<td>{{user['miss_count']}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="song-score">{{user['score']}}</div>
<div class="song-clear-type">
{% if user['clear_type'] == 3 %}Pure Memory
{% elif user['clear_type'] == 2 %}Full Recall
{% elif user['clear_type'] == 5 %}Hard Clear
{% elif user['clear_type'] == 1 %}Normal Clear
{% elif user['clear_type'] == 4 %}Easy Clear
{% else%}Track Lost
{% endif %}
</div>
<div class="song-rating">成绩评价 Rating: {{user['rating']}}</div>
<div class="song-clear-date">日期 Date:
{{user['time_played']}}
</div>
</div>
</div>
</div>
</div>
<hr />
{% if posts %}
<div class="title">Best 30</div>
{% endif %}
{% for post in posts %}
<div class="score-item">
<span class="song-title">
{{post['song_id']}}
</span>
{% if post['difficulty'] == 0 %}
<span class="difficulty_pst">PST</span>
{% elif post['difficulty'] == 1 %}
<span class="difficulty_prs">PRS</span>
{% elif post['difficulty'] == 2 %}
<span class="difficulty_ftr">FTR</span>
{% else %}
<span class="difficulty_byd">BYD</span>
{% endif %}
<span class='rank'>{{'#' ~ post['rank']}}</span>
<div class="song-detail">
<br />
<table>
<tbody>
<tr>
<td>PURE: </td>
<td>{{post['perfect_count']}}</td>
<td> {{'(' ~ post['shiny_perfect_count'] ~ ')'}}</td>
</tr>
<tr>
<td>FAR: </td>
<td>{{post['near_count']}}</td>
<td></td>
</tr>
<tr>
<td>LOST: </td>
<td>{{post['miss_count']}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="song-score">{{post['score']}}</div>
<div class="song-clear-type">
{% if post['clear_type'] == 3 %}Pure Memory
{% elif post['clear_type'] == 2 %}Full Recall
{% elif post['clear_type'] == 5 %}Hard Clear
{% elif post['clear_type'] == 1 %}Normal Clear
{% elif post['clear_type'] == 4 %}Easy Clear
{% else%}Track Lost
{% endif %}
<span class="song-clear-type" style="margin-left: 1.875em;">
{% if post['best_clear_type'] == 3 %}(Pure Memory)
{% elif post['best_clear_type'] == 2 %}(Full Recall)
{% elif post['best_clear_type'] == 5 %}(Hard Clear)
{% elif post['best_clear_type'] == 1 %}(Normal Clear)
{% elif post['best_clear_type'] == 4 %}(Easy Clear)
{% else%}(Track Lost)
{% endif %}
</span>
</div>
<div class="song-rating">成绩评价 Rating: {{post['rating']}}</div>
<div class="song-clear-date">日期 Date:
{{post['time_played']}}
</div>
</div>
{% if not loop.last %}
<br />
{% endif %}
{% endfor %}
<hr />
{% if recent %}
<div class="title">Recent 30</div>
{% for i in recent %}
{% if i %}
<div class="score-item">
<span class="song-title">
{{i['song_id']}}
</span>
{% if i['difficulty'] == 0 %}
<span class="difficulty_pst">PST</span>
{% elif i['difficulty'] == 1 %}
<span class="difficulty_prs">PRS</span>
{% elif i['difficulty'] == 2 %}
<span class="difficulty_ftr">FTR</span>
{% else %}
<span class="difficulty_byd">BYD</span>
{% endif %}
<span class='rank'>{{loop.index}}</span>
<div class="song-rating">成绩评价 Rating: {{i['rating']}}</div>
</div>
{% if not loop.last %}
<br />
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
</form>
{% endblock %}

View File

@@ -0,0 +1,21 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}Update databases{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
<label for="name">Old database</label>
<input type="file" name="file">
<input type="submit" value="Submit">
</form>
<div class="content">
这里可以将旧版本的数据库同步到新版本的数据库,并刷新用户拥有的角色列表。<br />
可上传文件: arcaea_database.db和arcsong.db<br />
新数据库不存在的数据会被添加,存在的数据将不会被改变。<br /><br />
Here you can synchronize the old version of the database to the new version of the database and refresh the list of
characters owned by players.<br />
Uploadable files: arcaea_database.db & arcsong.db<br />
Data that does not exist in the new database will be added and the existing data will not be changed.
</div>
{% endblock %}