Skip to content

Commit 193a9cc

Browse files
committed
Prettier code
1 parent 50ceea4 commit 193a9cc

File tree

2 files changed

+204
-148
lines changed

2 files changed

+204
-148
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
/**
2+
* Copyright (c) 2022-present Hengyang Zhang
3+
*
4+
* This software is released under the MIT License.
5+
* https://opensource.org/licenses/MIT
6+
*/
7+
8+
import { t } from "@app/locale"
9+
import { formatTime } from "@util/time"
10+
import { periodFormatter } from "./formatter"
11+
import {
12+
exportCsv as exportCsv_,
13+
exportJson as exportJson_,
14+
} from "@util/file"
15+
16+
type _ExportInfo = {
17+
host: string
18+
alias?: string
19+
date?: string
20+
total?: string
21+
focus?: string
22+
time?: number
23+
}
24+
25+
/**
26+
* Compute the name of downloaded file
27+
*/
28+
function computeFileName(filterParam: timer.app.report.FilterOption): string {
29+
let baseName = t(msg => msg.report.exportFileName)
30+
const { dateRange, mergeDate, mergeHost, timeFormat } = filterParam
31+
if (dateRange && dateRange.length === 2) {
32+
const start = dateRange[0]
33+
const end = dateRange[1]
34+
baseName += '_' + formatTime(start, '{y}{m}{d}')
35+
baseName += '_' + formatTime(end, '{y}{m}{d}')
36+
}
37+
mergeDate && (baseName += '_' + t(msg => msg.report.mergeDate))
38+
mergeHost && (baseName += '_' + t(msg => msg.report.mergeDomain))
39+
timeFormat && (baseName += '_' + t(msg => msg.timeFormat[timeFormat]))
40+
return baseName
41+
}
42+
43+
const generateJsonData = (rows: timer.stat.Row[]) => rows.map(row => {
44+
const data: _ExportInfo = { host: row.host }
45+
data.date = row.date
46+
data.alias = row.alias
47+
// Always display by seconds
48+
data.total = periodFormatter(row.total, "second", true)
49+
data.focus = periodFormatter(row.focus, "second", true)
50+
data.time = row.time
51+
return data
52+
})
53+
54+
/**
55+
* Export json data
56+
*
57+
* @param filterParam filter params
58+
* @param rows row data
59+
*/
60+
export function exportJson(filterParam: timer.app.report.FilterOption, rows: timer.stat.Row[]): void {
61+
const fileName = computeFileName(filterParam)
62+
const jsonData = generateJsonData(rows)
63+
exportJson_(jsonData, fileName)
64+
}
65+
66+
function generateCsvData(rows: timer.stat.Row[], filterParam: timer.app.report.FilterOption): string[][] {
67+
const { mergeDate, mergeHost } = filterParam
68+
const columnName: string[] = []
69+
if (!mergeDate) {
70+
columnName.push(t(msg => msg.item.date))
71+
}
72+
columnName.push(t(msg => msg.item.host))
73+
if (!mergeHost) {
74+
columnName.push(t(msg => msg.siteManage.column.alias))
75+
}
76+
columnName.push(t(msg => msg.item.total))
77+
columnName.push(t(msg => msg.item.focus))
78+
columnName.push(t(msg => msg.item.time))
79+
const data = [columnName]
80+
rows.forEach(row => {
81+
const line = []
82+
if (!mergeDate) {
83+
line.push(row.date)
84+
}
85+
line.push(row.host)
86+
if (!mergeHost) {
87+
line.push(row.alias || '')
88+
}
89+
line.push(periodFormatter(row.total, "second", true))
90+
line.push(periodFormatter(row.focus, "second", true))
91+
line.push(row.time)
92+
data.push(line)
93+
})
94+
return data
95+
}
96+
97+
/**
98+
* Export csv data
99+
*
100+
* @param filterParam filter params
101+
* @param rows row data
102+
*/
103+
export function exportCsv(filterParam: timer.app.report.FilterOption, rows: timer.stat.Row[]): void {
104+
const fileName = computeFileName(filterParam)
105+
const csvData = generateCsvData(rows, filterParam)
106+
exportCsv_(csvData, fileName)
107+
}

0 commit comments

Comments
 (0)