@sjtdev/koishi-plugin-dota2tracker 1.2.9 → 1.2.10-pre.2
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/changelog.md +10 -0
- package/lib/index.js +15 -3
- package/package.json +1 -1
- package/template/guild_member/guild_member.ejs +3 -3
- package/template/match/match_1.ejs +1 -1
- package/template/match/match_2.ejs +1 -1
- package/template/player/player_1.ejs +3 -3
- package/template/report/daily.ejs +24 -13
package/changelog.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
### 1.2.10-pre.2
|
|
2
|
+
**改进**:
|
|
3
|
+
- 调整了总结模板和玩家信息模板中胜负字体颜色样式,使其看起来更清晰。
|
|
4
|
+
- 优化了总结模板中胜负数和胜率的样式。
|
|
5
|
+
|
|
6
|
+
### 1.2.10-pre
|
|
7
|
+
**修复**:
|
|
8
|
+
- 修复战报图中若玩家名有html标签会导致图片排版错乱的问题。
|
|
9
|
+
- 修复周报与日报中评分条样式不正确的问题。
|
|
10
|
+
|
|
1
11
|
# 1.2.9
|
|
2
12
|
**改进**:
|
|
3
13
|
- 现在周报与日报改为图片版,依旧由`ejs`生成。去除配置页中周报与日报的“实验性”标识。(目前周报与日报使用同一模板,未来可能会设计数据更丰富的周报,也可能不会_(:3」∠)_
|
package/lib/index.js
CHANGED
|
@@ -1222,7 +1222,7 @@ var Config = import_koishi.Schema.intersect([
|
|
|
1222
1222
|
}).description("基础设置"),
|
|
1223
1223
|
import_koishi.Schema.intersect([
|
|
1224
1224
|
import_koishi.Schema.object({
|
|
1225
|
-
dailyReportSwitch: import_koishi.Schema.boolean().default(false).description("日报功能")
|
|
1225
|
+
dailyReportSwitch: import_koishi.Schema.boolean().default(false).description("日报功能")
|
|
1226
1226
|
}).description("总结设置"),
|
|
1227
1227
|
import_koishi.Schema.union([
|
|
1228
1228
|
import_koishi.Schema.object({
|
|
@@ -1232,7 +1232,7 @@ var Config = import_koishi.Schema.intersect([
|
|
|
1232
1232
|
})
|
|
1233
1233
|
]),
|
|
1234
1234
|
import_koishi.Schema.object({
|
|
1235
|
-
weeklyReportSwitch: import_koishi.Schema.boolean().default(false).description("周报功能")
|
|
1235
|
+
weeklyReportSwitch: import_koishi.Schema.boolean().default(false).description("周报功能")
|
|
1236
1236
|
}),
|
|
1237
1237
|
import_koishi.Schema.union([
|
|
1238
1238
|
import_koishi.Schema.object({
|
|
@@ -1875,7 +1875,19 @@ function genImageHTML(data, template, type) {
|
|
|
1875
1875
|
ImageFormat,
|
|
1876
1876
|
d2a: dotaconstants_add_exports,
|
|
1877
1877
|
dotaconstants: dotaconstants3,
|
|
1878
|
-
moment: import_moment.default
|
|
1878
|
+
moment: import_moment.default,
|
|
1879
|
+
escapeHTML: /* @__PURE__ */ __name(function escapeHTML(str) {
|
|
1880
|
+
return str.replace(/[&<>"']/g, function(match) {
|
|
1881
|
+
const escape = {
|
|
1882
|
+
"&": "&",
|
|
1883
|
+
"<": "<",
|
|
1884
|
+
">": ">",
|
|
1885
|
+
'"': """,
|
|
1886
|
+
"'": "'"
|
|
1887
|
+
};
|
|
1888
|
+
return escape[match];
|
|
1889
|
+
});
|
|
1890
|
+
}, "escapeHTML")
|
|
1879
1891
|
};
|
|
1880
1892
|
let result = "";
|
|
1881
1893
|
ejs.renderFile(templatePath, templateData, { strict: false }, (err, html) => {
|
package/package.json
CHANGED
|
@@ -139,9 +139,9 @@
|
|
|
139
139
|
<div class="info">
|
|
140
140
|
<img class="avatar user" src="${user?.user?.avatar}" alt="" />
|
|
141
141
|
<div class="name">
|
|
142
|
-
<span class="nick_name">${user.nickName}</span>
|
|
143
|
-
<span class="user name">${user.nick || user.user?.name}</span>
|
|
144
|
-
<span class="steam name">${user.steamAccount.name}</span>
|
|
142
|
+
<span class="nick_name">${escapeHTML(user.nickName)}</span>
|
|
143
|
+
<span class="user name">${escapeHTML(user.nick || user.user?.name)}</span>
|
|
144
|
+
<span class="steam name">${escapeHTML(user.steamAccount.name)}</span>
|
|
145
145
|
<span class="user id">${user.userId}</span>
|
|
146
146
|
<span class="steam id">${user.steamId}</span>
|
|
147
147
|
</div>
|
|
@@ -728,7 +728,7 @@
|
|
|
728
728
|
<p class="level">${player.level}</p>
|
|
729
729
|
</div>
|
|
730
730
|
<div class="player_info">
|
|
731
|
-
<summary class="player_name">${player.steamAccount.name}</summary>
|
|
731
|
+
<summary class="player_name">${escapeHTML(player.steamAccount.name)}</summary>
|
|
732
732
|
<summary class="player_performance">
|
|
733
733
|
<span class="kda">${player.kills}/${player.deaths}/${player.assists}</span>
|
|
734
734
|
<span class="kc" style="color:${kcndcStyle.kc(player.killContribution * 100)}">${Math.floor(player.killContribution * 100)}%</span>
|
|
@@ -502,7 +502,7 @@
|
|
|
502
502
|
<div class="titles">${player.titles.map((item) => `<span style="color: ${darkenHexColor(item.color, 25)};">${item.name}</span>`).join('')}</div>
|
|
503
503
|
<div class="player_name row-1">
|
|
504
504
|
<span class="rank">${`[${d2a.rank[player.rank.medal]}${player.rank.star||""}]`}</span>
|
|
505
|
-
<span class="name">${player.steamAccount.name}</span>
|
|
505
|
+
<span class="name">${escapeHTML(player.steamAccount.name)}</span>
|
|
506
506
|
</div>
|
|
507
507
|
<p class="pick">${player.isRandom?'随机':`第${player.order == null ? "?" : player.order + 1}手`} ${d2a.position[player.position?.slice(-1)]??''}</p>
|
|
508
508
|
<p class="networth">
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
.player .info .matches span.win {
|
|
81
|
-
color: #
|
|
81
|
+
color: #007A00;
|
|
82
82
|
}
|
|
83
83
|
.player .info .matches span.lose {
|
|
84
|
-
color: #
|
|
84
|
+
color: #B30000;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.player .info .matches span.victory {
|
|
@@ -409,7 +409,7 @@
|
|
|
409
409
|
<%- `
|
|
410
410
|
<div class="avatar"><img src="${player.steamAccount?.avatar}" alt="" /></div>
|
|
411
411
|
<div class="info">
|
|
412
|
-
<p class="name">${player.steamAccount.name}${player.guildMember ? ` <span class="guild ${guildLevel(player.guildMember.guild.currentPercentile)}">[${player.guildMember.guild.tag}]</span>${player.genHero?` >${player.genHero.names_cn[0]}<`:""}</p>` : ""}
|
|
412
|
+
<p class="name">${escapeHTML(player.steamAccount.name)}${player.guildMember ? ` <span class="guild ${guildLevel(player.guildMember.guild.currentPercentile)}">[${escapeHTML(player.guildMember.guild.tag)}]</span>${player.genHero?` >${player.genHero.names_cn[0]}<`:""}</p>` : ""}
|
|
413
413
|
<p class="matches"><span>场次:${player.matchCount}(<span class="win">${player.winCount}</span>/<span class="lose">${player.matchCount - player.winCount}</span>)</span>胜率:<span style="color:${utils.winRateColor(player.winCount / player.matchCount)};">${((player.winCount / player.matchCount) * 100).toFixed(2)}%</span></p>
|
|
414
414
|
<p class="matches"><span>最近25场:<span class="win">${nearWinCount}</span>/<span class="lose">${nearMatchCount - nearWinCount}</span></span><span>胜率:<span style="color:${utils.winRateColor(nearWinCount / nearMatchCount)};">${(
|
|
415
415
|
(nearWinCount / nearMatchCount) * 100).toFixed(2)}%</span></span><span>评分:${(player.performance.imp > 0 ? "+" : "") + player.performance.imp}</span></span></p>
|
|
@@ -25,8 +25,6 @@
|
|
|
25
25
|
span {
|
|
26
26
|
min-width: 0;
|
|
27
27
|
white-space: nowrap; /* 不换行 */
|
|
28
|
-
overflow: hidden; /* 超出部分隐藏 */
|
|
29
|
-
text-overflow: ellipsis; /* 省略号 */
|
|
30
28
|
}
|
|
31
29
|
|
|
32
30
|
.title {
|
|
@@ -57,8 +55,21 @@
|
|
|
57
55
|
display: block;
|
|
58
56
|
width: 100%;
|
|
59
57
|
text-align: center;
|
|
58
|
+
overflow: hidden; /* 超出部分隐藏 */
|
|
59
|
+
text-overflow: ellipsis; /* 省略号 */
|
|
60
|
+
}
|
|
61
|
+
.player > .count {
|
|
62
|
+
display: grid;
|
|
63
|
+
grid-template-columns: 1fr 1fr 1.8fr;
|
|
64
|
+
width: 100%;
|
|
60
65
|
}
|
|
61
66
|
|
|
67
|
+
.player > .count > span {
|
|
68
|
+
text-align: left;
|
|
69
|
+
}
|
|
70
|
+
.player > .count > span:last-child {
|
|
71
|
+
text-align: right;
|
|
72
|
+
}
|
|
62
73
|
.player > .performance {
|
|
63
74
|
display: flex;
|
|
64
75
|
align-items: center;
|
|
@@ -82,7 +93,7 @@
|
|
|
82
93
|
justify-content: flex-end;
|
|
83
94
|
}
|
|
84
95
|
.player > .performance > .score_bar.neg > .left {
|
|
85
|
-
background: linear-gradient(to right, #777, #888, #
|
|
96
|
+
background: linear-gradient(to right, #777, #888, #888, #777);
|
|
86
97
|
}
|
|
87
98
|
.player > .performance > .score_bar.pos > .right {
|
|
88
99
|
background: linear-gradient(to right, #6cf, #7df, #6cf);
|
|
@@ -117,10 +128,10 @@
|
|
|
117
128
|
margin-left: 4px;
|
|
118
129
|
}
|
|
119
130
|
span.win {
|
|
120
|
-
color: #
|
|
131
|
+
color: #007A00;
|
|
121
132
|
}
|
|
122
133
|
span.lose {
|
|
123
|
-
color: #
|
|
134
|
+
color: #B30000;
|
|
124
135
|
}
|
|
125
136
|
</style>
|
|
126
137
|
</head>
|
|
@@ -138,18 +149,18 @@
|
|
|
138
149
|
<span>胜率<%= Math.round((player.winCount / player.matches.length) * 100) %>%</span>
|
|
139
150
|
</span>
|
|
140
151
|
<div class="performance">
|
|
141
|
-
<% const imp = {sign : "", left : 0, right : 0} %>
|
|
152
|
+
<% const imp = {sign : "", left : 0, right : 0, absValue : Math.abs(player.avgImp)} %>
|
|
142
153
|
<% if (player.avgImp > 0) imp.sign = "+"; %>
|
|
143
154
|
<% if (player.avgImp < 0) imp.sign = "-"; %>
|
|
144
|
-
<% if (
|
|
155
|
+
<% if (imp.absValue > 25) { %>
|
|
145
156
|
<% imp.isOver = true; %>
|
|
146
|
-
<% if (player.avgImp > 0) imp.right =
|
|
147
|
-
<% if (player.avgImp < 0) imp.left =
|
|
148
|
-
<% } else imp.left = imp.right =
|
|
149
|
-
<div class="score_bar<%=
|
|
150
|
-
<div class="left" style="width:
|
|
157
|
+
<% if (player.avgImp > 0) imp.right = imp.absValue; %>
|
|
158
|
+
<% if (player.avgImp < 0) imp.left = imp.absValue; %>
|
|
159
|
+
<% } else imp.left = imp.right = imp.absValue; %>
|
|
160
|
+
<div class="score_bar<%= player.avgImp > 0 ? " pos" : " neg" %><%= Math.abs(player.avgImp) > 25 ? " over" : "" %>">
|
|
161
|
+
<div class="left" <%- `style="width: ${imp.left}px"` %>></div>
|
|
151
162
|
<div class="pipe"></div>
|
|
152
|
-
<div class="right" style="width:
|
|
163
|
+
<div class="right" <%- `style="width: ${imp.right}px"` %>></div>
|
|
153
164
|
</div>
|
|
154
165
|
<span class="score_value"><%= `${player.avgImp > 0 ? imp.sign : ""}${player.avgImp}` %></span>
|
|
155
166
|
</div>
|