feat: notes/instance/perUserNotesチャートに添付ファイル付きノートの数を追加

This commit is contained in:
syuilo 2022-02-08 23:12:37 +09:00
parent 1da7be6334
commit adf3493af8
9 changed files with 59 additions and 3 deletions

View file

@ -14,11 +14,12 @@ You should also include the user name that made the change.
### Note ### Note
このリリースはマイグレーションの規模が大きいため、インスタンスによってはマイグレーションに時間がかかる可能性があります。 このリリースはマイグレーションの規模が大きいため、インスタンスによってはマイグレーションに時間がかかる可能性があります。
マイグレーションが終わらない場合は、チャートの情報はリセットされてしまいますが`___chart___`で始まるテーブルの**レコード**を全て削除(テーブル自体は消さないでください)してから再度試す方法もあります。 マイグレーションが終わらない場合は、チャートの情報はリセットされてしまいますが`__chart__`で始まるテーブルの**レコード**を全て削除(テーブル自体は消さないでください)してから再度試す方法もあります。
### Improvements ### Improvements
- チャートエンジンの強化 @syuilo - チャートエンジンの強化 @syuilo
- テーブルサイズの削減 - テーブルサイズの削減
- notes/instance/perUserNotesチャートに添付ファイル付きートの数を追加
- activeUsersチャートに新しい項目を追加 - activeUsersチャートに新しい項目を追加
- federationチャートに新しい項目を追加 - federationチャートに新しい項目を追加
- apRequestチャートを追加 - apRequestチャートを追加

View file

@ -0,0 +1,27 @@
const { MigrationInterface, QueryRunner } = require("typeorm");
module.exports = class chartV121644328606241 {
name = 'chartV121644328606241'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "__chart__notes" ADD "___local_diffs_withFile" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart__notes" ADD "___remote_diffs_withFile" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__notes" ADD "___local_diffs_withFile" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__notes" ADD "___remote_diffs_withFile" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart__instance" ADD "___notes_diffs_withFile" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__instance" ADD "___notes_diffs_withFile" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" ADD "___diffs_withFile" smallint NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__per_user_notes" ADD "___diffs_withFile" smallint NOT NULL DEFAULT '0'`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "__chart_day__per_user_notes" DROP COLUMN "___diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" DROP COLUMN "___diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart_day__instance" DROP COLUMN "___notes_diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart__instance" DROP COLUMN "___notes_diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart_day__notes" DROP COLUMN "___remote_diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart_day__notes" DROP COLUMN "___local_diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart__notes" DROP COLUMN "___remote_diffs_withFile"`);
await queryRunner.query(`ALTER TABLE "__chart__notes" DROP COLUMN "___local_diffs_withFile"`);
}
}

View file

@ -12,6 +12,7 @@ export const schema = {
'notes.diffs.normal': {}, 'notes.diffs.normal': {},
'notes.diffs.reply': {}, 'notes.diffs.reply': {},
'notes.diffs.renote': {}, 'notes.diffs.renote': {},
'notes.diffs.withFile': {},
'users.total': { accumulate: true }, 'users.total': { accumulate: true },
'users.inc': { range: 'small' }, 'users.inc': { range: 'small' },
'users.dec': { range: 'small' }, 'users.dec': { range: 'small' },

View file

@ -9,12 +9,14 @@ export const schema = {
'local.diffs.normal': {}, 'local.diffs.normal': {},
'local.diffs.reply': {}, 'local.diffs.reply': {},
'local.diffs.renote': {}, 'local.diffs.renote': {},
'local.diffs.withFile': {},
'remote.total': { accumulate: true }, 'remote.total': { accumulate: true },
'remote.inc': {}, 'remote.inc': {},
'remote.dec': {}, 'remote.dec': {},
'remote.diffs.normal': {}, 'remote.diffs.normal': {},
'remote.diffs.reply': {}, 'remote.diffs.reply': {},
'remote.diffs.renote': {}, 'remote.diffs.renote': {},
'remote.diffs.withFile': {},
} as const; } as const;
export const entity = Chart.schemaToEntity(name, schema); export const entity = Chart.schemaToEntity(name, schema);

View file

@ -9,6 +9,7 @@ export const schema = {
'diffs.normal': { range: 'small' }, 'diffs.normal': { range: 'small' },
'diffs.reply': { range: 'small' }, 'diffs.reply': { range: 'small' },
'diffs.renote': { range: 'small' }, 'diffs.renote': { range: 'small' },
'diffs.withFile': { range: 'small' },
} as const; } as const;
export const entity = Chart.schemaToEntity(name, schema, true); export const entity = Chart.schemaToEntity(name, schema, true);

View file

@ -74,6 +74,7 @@ export default class InstanceChart extends Chart<typeof schema> {
'notes.diffs.normal': note.replyId == null && note.renoteId == null ? (isAdditional ? 1 : -1) : 0, 'notes.diffs.normal': note.replyId == null && note.renoteId == null ? (isAdditional ? 1 : -1) : 0,
'notes.diffs.renote': note.renoteId != null ? (isAdditional ? 1 : -1) : 0, 'notes.diffs.renote': note.renoteId != null ? (isAdditional ? 1 : -1) : 0,
'notes.diffs.reply': note.replyId != null ? (isAdditional ? 1 : -1) : 0, 'notes.diffs.reply': note.replyId != null ? (isAdditional ? 1 : -1) : 0,
'notes.diffs.withFile': note.fileIds.length > 0 ? (isAdditional ? 1 : -1) : 0,
}, toPuny(host)); }, toPuny(host));
} }

View file

@ -38,6 +38,7 @@ export default class NotesChart extends Chart<typeof schema> {
[`${prefix}.diffs.normal`]: note.replyId == null && note.renoteId == null ? (isAdditional ? 1 : -1) : 0, [`${prefix}.diffs.normal`]: note.replyId == null && note.renoteId == null ? (isAdditional ? 1 : -1) : 0,
[`${prefix}.diffs.renote`]: note.renoteId != null ? (isAdditional ? 1 : -1) : 0, [`${prefix}.diffs.renote`]: note.renoteId != null ? (isAdditional ? 1 : -1) : 0,
[`${prefix}.diffs.reply`]: note.replyId != null ? (isAdditional ? 1 : -1) : 0, [`${prefix}.diffs.reply`]: note.replyId != null ? (isAdditional ? 1 : -1) : 0,
[`${prefix}.diffs.withFile`]: note.fileIds.length > 0 ? (isAdditional ? 1 : -1) : 0,
}); });
} }
} }

View file

@ -34,6 +34,7 @@ export default class PerUserNotesChart extends Chart<typeof schema> {
'diffs.normal': note.replyId == null && note.renoteId == null ? (isAdditional ? 1 : -1) : 0, 'diffs.normal': note.replyId == null && note.renoteId == null ? (isAdditional ? 1 : -1) : 0,
'diffs.renote': note.renoteId != null ? (isAdditional ? 1 : -1) : 0, 'diffs.renote': note.renoteId != null ? (isAdditional ? 1 : -1) : 0,
'diffs.reply': note.replyId != null ? (isAdditional ? 1 : -1) : 0, 'diffs.reply': note.replyId != null ? (isAdditional ? 1 : -1) : 0,
'diffs.withFile': note.fileIds.length > 0 ? (isAdditional ? 1 : -1) : 0,
}, user.id); }, user.id);
} }
} }

View file

@ -63,9 +63,16 @@ const alpha = (hex, a) => {
return `rgba(${r}, ${g}, ${b}, ${a})`; return `rgba(${r}, ${g}, ${b}, ${a})`;
}; };
const colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#e300db']; const colors = {
blue: '#008FFB',
green: '#00E396',
yellow: '#FEB019',
red: '#FF4560',
purple: '#e300db',
};
const colorSets = [colors.blue, colors.green, colors.yellow, colors.red, colors.purple];
const getColor = (i) => { const getColor = (i) => {
return colors[i % colors.length]; return colorSets[i % colorSets.length];
}; };
export default defineComponent({ export default defineComponent({
@ -251,6 +258,7 @@ export default defineComponent({
ticks: { ticks: {
display: props.detailed, display: props.detailed,
maxRotation: 0, maxRotation: 0,
autoSkipPadding: 16,
}, },
adapters: { adapters: {
date: { date: {
@ -268,6 +276,7 @@ export default defineComponent({
}, },
ticks: { ticks: {
display: props.detailed, display: props.detailed,
//mirror: true,
}, },
}, },
}, },
@ -412,6 +421,7 @@ export default defineComponent({
? sum(raw.local.inc, negate(raw.local.dec), raw.remote.inc, negate(raw.remote.dec)) ? sum(raw.local.inc, negate(raw.local.dec), raw.remote.inc, negate(raw.remote.dec))
: sum(raw[type].inc, negate(raw[type].dec)) : sum(raw[type].inc, negate(raw[type].dec))
), ),
color: '#888888',
}, { }, {
name: 'Renotes', name: 'Renotes',
type: 'area', type: 'area',
@ -419,6 +429,7 @@ export default defineComponent({
? sum(raw.local.diffs.renote, raw.remote.diffs.renote) ? sum(raw.local.diffs.renote, raw.remote.diffs.renote)
: raw[type].diffs.renote : raw[type].diffs.renote
), ),
color: colors.green,
}, { }, {
name: 'Replies', name: 'Replies',
type: 'area', type: 'area',
@ -426,6 +437,7 @@ export default defineComponent({
? sum(raw.local.diffs.reply, raw.remote.diffs.reply) ? sum(raw.local.diffs.reply, raw.remote.diffs.reply)
: raw[type].diffs.reply : raw[type].diffs.reply
), ),
color: colors.yellow,
}, { }, {
name: 'Normal', name: 'Normal',
type: 'area', type: 'area',
@ -433,6 +445,15 @@ export default defineComponent({
? sum(raw.local.diffs.normal, raw.remote.diffs.normal) ? sum(raw.local.diffs.normal, raw.remote.diffs.normal)
: raw[type].diffs.normal : raw[type].diffs.normal
), ),
color: colors.blue,
}, {
name: 'With file',
type: 'area',
data: format(type == 'combined'
? sum(raw.local.diffs.withFile, raw.remote.diffs.withFile)
: raw[type].diffs.withFile
),
color: colors.purple,
}], }],
}; };
}; };