feat: notes/instance/perUserNotesチャートに添付ファイル付きノートの数を追加
This commit is contained in:
		
							parent
							
								
									1da7be6334
								
							
						
					
					
						commit
						adf3493af8
					
				
					 9 changed files with 59 additions and 3 deletions
				
			
		
							
								
								
									
										27
									
								
								packages/backend/migration/1644328606241-chart-v12.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								packages/backend/migration/1644328606241-chart-v12.js
									
										
									
									
									
										Normal 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"`); | ||||
|     } | ||||
| } | ||||
|  | @ -12,6 +12,7 @@ export const schema = { | |||
| 	'notes.diffs.normal': {}, | ||||
| 	'notes.diffs.reply': {}, | ||||
| 	'notes.diffs.renote': {}, | ||||
| 	'notes.diffs.withFile': {}, | ||||
| 	'users.total': { accumulate: true }, | ||||
| 	'users.inc': { range: 'small' }, | ||||
| 	'users.dec': { range: 'small' }, | ||||
|  |  | |||
|  | @ -9,12 +9,14 @@ export const schema = { | |||
| 	'local.diffs.normal': {}, | ||||
| 	'local.diffs.reply': {}, | ||||
| 	'local.diffs.renote': {}, | ||||
| 	'local.diffs.withFile': {}, | ||||
| 	'remote.total': { accumulate: true }, | ||||
| 	'remote.inc': {}, | ||||
| 	'remote.dec': {}, | ||||
| 	'remote.diffs.normal': {}, | ||||
| 	'remote.diffs.reply': {}, | ||||
| 	'remote.diffs.renote': {}, | ||||
| 	'remote.diffs.withFile': {}, | ||||
| } as const; | ||||
| 
 | ||||
| export const entity = Chart.schemaToEntity(name, schema); | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ export const schema = { | |||
| 	'diffs.normal': { range: 'small' }, | ||||
| 	'diffs.reply': { range: 'small' }, | ||||
| 	'diffs.renote': { range: 'small' }, | ||||
| 	'diffs.withFile': { range: 'small' }, | ||||
| } as const; | ||||
| 
 | ||||
| export const entity = Chart.schemaToEntity(name, schema, true); | ||||
|  |  | |||
|  | @ -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.renote': note.renoteId != 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)); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -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.renote`]: note.renoteId != 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, | ||||
| 		}); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -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.renote': note.renoteId != 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); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -63,9 +63,16 @@ const alpha = (hex, 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) => { | ||||
| 	return colors[i % colors.length]; | ||||
| 	return colorSets[i % colorSets.length]; | ||||
| }; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
|  | @ -251,6 +258,7 @@ export default defineComponent({ | |||
| 							ticks: { | ||||
| 								display: props.detailed, | ||||
| 								maxRotation: 0, | ||||
| 								autoSkipPadding: 16, | ||||
| 							}, | ||||
| 							adapters: { | ||||
| 								date: { | ||||
|  | @ -268,6 +276,7 @@ export default defineComponent({ | |||
| 							}, | ||||
| 							ticks: { | ||||
| 								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[type].inc, negate(raw[type].dec)) | ||||
| 					), | ||||
| 					color: '#888888', | ||||
| 				}, { | ||||
| 					name: 'Renotes', | ||||
| 					type: 'area', | ||||
|  | @ -419,6 +429,7 @@ export default defineComponent({ | |||
| 						? sum(raw.local.diffs.renote, raw.remote.diffs.renote) | ||||
| 						: raw[type].diffs.renote | ||||
| 					), | ||||
| 					color: colors.green, | ||||
| 				}, { | ||||
| 					name: 'Replies', | ||||
| 					type: 'area', | ||||
|  | @ -426,6 +437,7 @@ export default defineComponent({ | |||
| 						? sum(raw.local.diffs.reply, raw.remote.diffs.reply) | ||||
| 						: raw[type].diffs.reply | ||||
| 					), | ||||
| 					color: colors.yellow, | ||||
| 				}, { | ||||
| 					name: 'Normal', | ||||
| 					type: 'area', | ||||
|  | @ -433,6 +445,15 @@ export default defineComponent({ | |||
| 						? sum(raw.local.diffs.normal, raw.remote.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, | ||||
| 				}], | ||||
| 			}; | ||||
| 		}; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue