Merge branch 'develop' into enhance-migration
This commit is contained in:
		
						commit
						e99809855e
					
				|  | @ -53,7 +53,6 @@ describe('After setup instance', () => { | |||
| 
 | ||||
| 		cy.get('[data-cy-signup]').click(); | ||||
| 		cy.get('[data-cy-signup-rules-continue]').should('be.disabled'); | ||||
| 		cy.get('[data-cy-signup-rules-notes] [data-cy-folder-header]').click(); | ||||
| 		cy.get('[data-cy-signup-rules-notes-agree] [data-cy-switch-toggle]').click(); | ||||
| 		cy.get('[data-cy-signup-rules-continue]').should('not.be.disabled'); | ||||
| 		cy.get('[data-cy-signup-rules-continue]').click(); | ||||
|  | @ -78,7 +77,6 @@ describe('After setup instance', () => { | |||
| 		// ユーザー名が重複している場合の挙動確認
 | ||||
| 		cy.get('[data-cy-signup]').click(); | ||||
| 		cy.get('[data-cy-signup-rules-continue]').should('be.disabled'); | ||||
| 		cy.get('[data-cy-signup-rules-notes] [data-cy-folder-header]').click(); | ||||
| 		cy.get('[data-cy-signup-rules-notes-agree] [data-cy-switch-toggle]').click(); | ||||
| 		cy.get('[data-cy-signup-rules-continue]').should('not.be.disabled'); | ||||
| 		cy.get('[data-cy-signup-rules-continue]').click(); | ||||
|  |  | |||
|  | @ -1013,6 +1013,7 @@ horizontal: "横" | |||
| position: "位置" | ||||
| serverRules: "サーバールール" | ||||
| pleaseConfirmBelowBeforeSignup: "このサーバーに登録する前に、以下を確認してください。" | ||||
| pleaseAgreeAllToContinue: "続けるには、全ての「同意する」にチェックが入っている必要があります。" | ||||
| continue: "続ける" | ||||
| 
 | ||||
| _serverRules: | ||||
|  |  | |||
|  | @ -44,7 +44,13 @@ async function renderChart() { | |||
| 
 | ||||
| 	const data = []; | ||||
| 	for (const record of raw) { | ||||
| 		let i = 0; | ||||
| 		data.push({ | ||||
| 			x: 0, | ||||
| 			y: record.createdAt, | ||||
| 			v: record.users, | ||||
| 		}); | ||||
| 
 | ||||
| 		let i = 1; | ||||
| 		for (const date of Object.keys(record.data).sort((a, b) => new Date(a).getTime() - new Date(b).getTime())) { | ||||
| 			data.push({ | ||||
| 				x: i, | ||||
|  | @ -61,8 +67,14 @@ async function renderChart() { | |||
| 
 | ||||
| 	const color = defaultStore.state.darkMode ? '#b4e900' : '#86b300'; | ||||
| 
 | ||||
| 	// 視覚上の分かりやすさのため上から最も大きい3つの値の平均を最大値とする | ||||
| 	const max = raw.map(x => x.users).slice().sort((a, b) => b - a).slice(0, 3).reduce((a, b) => a + b, 0) / 3; | ||||
| 	const getYYYYMMDD = (date: Date) => { | ||||
| 		const y = date.getFullYear().toString().padStart(2, '0'); | ||||
| 		const m = (date.getMonth() + 1).toString().padStart(2, '0'); | ||||
| 		const d = date.getDate().toString().padStart(2, '0'); | ||||
| 		return `${y}/${m}/${d}`; | ||||
| 	}; | ||||
| 
 | ||||
| 	const max = (createdAt: string) => raw.find(x => x.createdAt === createdAt)!.users; | ||||
| 
 | ||||
| 	const marginEachCell = 12; | ||||
| 
 | ||||
|  | @ -78,7 +90,7 @@ async function renderChart() { | |||
| 				borderRadius: 3, | ||||
| 				backgroundColor(c) { | ||||
| 					const value = c.dataset.data[c.dataIndex].v; | ||||
| 					const a = value / max; | ||||
| 					const a = value / max(c.dataset.data[c.dataIndex].y); | ||||
| 					return alpha(color, a); | ||||
| 				}, | ||||
| 				fill: true, | ||||
|  | @ -115,7 +127,7 @@ async function renderChart() { | |||
| 						maxRotation: 0, | ||||
| 						autoSkipPadding: 0, | ||||
| 						autoSkip: false, | ||||
| 						callback: (value, index, values) => value + 1, | ||||
| 						callback: (value, index, values) => value, | ||||
| 					}, | ||||
| 				}, | ||||
| 				y: { | ||||
|  | @ -150,11 +162,11 @@ async function renderChart() { | |||
| 					callbacks: { | ||||
| 						title(context) { | ||||
| 							const v = context[0].dataset.data[context[0].dataIndex]; | ||||
| 							return v.d; | ||||
| 							return getYYYYMMDD(new Date(new Date(v.y).getTime() + (v.x * 86400000))); | ||||
| 						}, | ||||
| 						label(context) { | ||||
| 							const v = context.dataset.data[context.dataIndex]; | ||||
| 							return ['Active: ' + v.v]; | ||||
| 							return [`Active: ${v.v} (${Math.round((v.v / max(v.y)) * 100)}%)`]; | ||||
| 						}, | ||||
| 					}, | ||||
| 					//mode: 'index', | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ | |||
| 				<MkSwitch v-model="agreeServerRules" style="margin-top: 16px;">{{ i18n.ts.agree }}</MkSwitch> | ||||
| 			</MkFolder> | ||||
| 
 | ||||
| 			<MkFolder v-if="availableTos"> | ||||
| 			<MkFolder v-if="availableTos" :default-open="true"> | ||||
| 				<template #label>{{ i18n.ts.termsOfService }}</template> | ||||
| 				<template #suffix><i v-if="agreeTos" class="ti ti-check" style="color: var(--success)"></i></template> | ||||
| 
 | ||||
|  | @ -27,7 +27,7 @@ | |||
| 				<MkSwitch v-model="agreeTos" style="margin-top: 16px;">{{ i18n.ts.agree }}</MkSwitch> | ||||
| 			</MkFolder> | ||||
| 
 | ||||
| 			<MkFolder data-cy-signup-rules-notes> | ||||
| 			<MkFolder :default-open="true"> | ||||
| 				<template #label>{{ i18n.ts.basicNotesBeforeCreateAccount }}</template> | ||||
| 				<template #suffix><i v-if="agreeNote" class="ti ti-check" style="color: var(--success)"></i></template> | ||||
| 
 | ||||
|  | @ -36,7 +36,12 @@ | |||
| 				<MkSwitch v-model="agreeNote" style="margin-top: 16px;" data-cy-signup-rules-notes-agree>{{ i18n.ts.agree }}</MkSwitch> | ||||
| 			</MkFolder> | ||||
| 
 | ||||
| 			<MkButton primary rounded gradate style="margin: 0 auto;" :disabled="!agreed" data-cy-signup-rules-continue @click="emit('accept')">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> | ||||
| 			<div v-if="!agreed" style="text-align: center;">{{ i18n.ts.pleaseAgreeAllToContinue }}</div> | ||||
| 
 | ||||
| 			<div class="_buttonsCenter"> | ||||
| 				<MkButton inline rounded @click="emit('cancel')">{{ i18n.ts.cancel }}</MkButton> | ||||
| 				<MkButton inline primary rounded gradate :disabled="!agreed" data-cy-signup-rules-continue @click="emit('done')">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</MkSpacer> | ||||
| </div> | ||||
|  | @ -62,7 +67,8 @@ const agreed = computed(() => { | |||
| }); | ||||
| 
 | ||||
| const emit = defineEmits<{ | ||||
| 	(ev: 'accept'): void; | ||||
| 	(ev: 'cancel'): void; | ||||
| 	(ev: 'done'): void; | ||||
| }>(); | ||||
| </script> | ||||
| 
 | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ | |||
| 			:leave-to-class="$style.transition_x_leaveTo" | ||||
| 		> | ||||
| 			<template v-if="!isAcceptedServerRule"> | ||||
| 				<XServerRules @accept="isAcceptedServerRule = true"/> | ||||
| 				<XServerRules @done="isAcceptedServerRule = true" @cancel="dialog.close()"/> | ||||
| 			</template> | ||||
| 			<template v-else> | ||||
| 				<XSignup :auto-set="autoSet" @signup="onSignup" @signup-email-pending="onSignupEmailPending"/> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue