102 lines
2.9 KiB
JavaScript
102 lines
2.9 KiB
JavaScript
export default ({ store }, inject) => {
|
|
inject('user', store.state.user)
|
|
inject('tag', store.state.tag)
|
|
inject('auth', store.state.auth)
|
|
inject('formatNumber', (number) => {
|
|
const x = +number
|
|
if (x >= 1000000) {
|
|
return (x / 1000000).toFixed(2).toString() + 'M'
|
|
} else if (x >= 10000) {
|
|
return (x / 1000).toFixed(1).toString() + 'K'
|
|
} else {
|
|
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
|
}
|
|
})
|
|
inject('formatVersion', (versionArray) => {
|
|
const allVersions = store.state.tag.gameVersions.slice().reverse()
|
|
const allReleases = allVersions.filter((x) => x.version_type === 'release')
|
|
|
|
const intervals = []
|
|
let currentInterval = 0
|
|
|
|
for (let i = 0; i < versionArray.length; i++) {
|
|
const index = allVersions.findIndex((x) => x.version === versionArray[i])
|
|
const releaseIndex = allReleases.findIndex(
|
|
(x) => x.version === versionArray[i]
|
|
)
|
|
|
|
if (i === 0) {
|
|
intervals.push([[versionArray[i], index, releaseIndex]])
|
|
} else {
|
|
const intervalBase = intervals[currentInterval]
|
|
|
|
if (
|
|
(index - intervalBase[intervalBase.length - 1][1] === 1 ||
|
|
releaseIndex - intervalBase[intervalBase.length - 1][2] === 1) &&
|
|
(allVersions[intervalBase[0][1]].version_type === 'release' ||
|
|
allVersions[index].version_type !== 'release')
|
|
) {
|
|
intervalBase[1] = [versionArray[i], index, releaseIndex]
|
|
} else {
|
|
currentInterval += 1
|
|
intervals[currentInterval] = [[versionArray[i], index, releaseIndex]]
|
|
}
|
|
}
|
|
}
|
|
|
|
const newIntervals = []
|
|
for (let i = 0; i < intervals.length; i++) {
|
|
const interval = intervals[i]
|
|
|
|
if (
|
|
interval.length === 2 &&
|
|
interval[0][2] !== -1 &&
|
|
interval[1][2] === -1
|
|
) {
|
|
let lastSnapshot = null
|
|
for (let j = interval[1][1]; j > interval[0][1]; j--) {
|
|
if (allVersions[j].version_type === 'release') {
|
|
newIntervals.push([
|
|
interval[0],
|
|
[
|
|
allVersions[j].version,
|
|
j,
|
|
allReleases.findIndex(
|
|
(x) => x.version === allVersions[j].version
|
|
),
|
|
],
|
|
])
|
|
|
|
if (lastSnapshot !== null && lastSnapshot !== j + 1) {
|
|
newIntervals.push([
|
|
[allVersions[lastSnapshot].version, lastSnapshot, -1],
|
|
interval[1],
|
|
])
|
|
} else {
|
|
newIntervals.push([interval[1]])
|
|
}
|
|
|
|
break
|
|
} else {
|
|
lastSnapshot = j
|
|
}
|
|
}
|
|
} else {
|
|
newIntervals.push(interval)
|
|
}
|
|
}
|
|
|
|
const output = []
|
|
|
|
for (const interval of newIntervals) {
|
|
if (interval.length === 2) {
|
|
output.push(`${interval[0][0]}—${interval[1][0]}`)
|
|
} else {
|
|
output.push(interval[0][0])
|
|
}
|
|
}
|
|
|
|
return output.join(', ')
|
|
})
|
|
}
|