Commit 7833fb92 by Leo Zheng

测试和debug左侧API

parent 5061a810
.idea
/out
/node_modules
/test
/src/__test__
/public
/logs
/video
/files
*test*
src/__test__
*.logs
*.zip
/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
moduleFileExtensions: ['ts', 'tsx', 'js'],
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
testMatch: [
'**/src/**/*.test.(ts|tsx)',
],
globals: {
'ts-jest': {
tsconfig: 'tsconfig.json',
},
},
};
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -27,7 +27,7 @@
"xml2js": "^0.4.23"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "jest"
},
"author": "cjj",
"license": "ISC",
......@@ -41,5 +41,11 @@
"video/**/*"
],
"outputPath": "dist"
},
"devDependencies": {
"@types/jest": "^29.5.12",
"jest": "^29.7.0",
"ts-jest": "^29.1.5",
"typescript": "^5.5.3"
}
}
import { randomStatusGenerator } from "../../../util/randomStatusGenerator";
import mapToObj from "../../../util/mapToObj";
import {abstractDataStrategyLeft} from "./abstractDataStrategyLeft";
export class gateStatusStrategy extends abstractDataStrategyLeft {
private gateStatusMap: Map<string, string> = new Map();
constructor() {
super();
this.gateStatusMap.set('south', '');
this.gateStatusMap.set('east', '');
this.gateStatusMap.set('west', '');
this.gateStatusMap.set('north', '');
}
execute(): any {
this.gateStatusMap.forEach((value, key, map) => {
map.set(key, randomStatusGenerator.getRandomStatus());
});
return mapToObj(this.gateStatusMap);
}
getGateStatusMap() {
return this.gateStatusMap;
}
}
\ No newline at end of file
......@@ -20,7 +20,6 @@ export class sightVisitorFlowByHourStrategy extends abstractDataStrategyLeft {
data.forEach(row => {
const rowDate = excelSerialToJSDate(row['游玩时间']);
const rowHour = rowDate.getHours();
let rowDateString = '';
try {
rowDateString = rowDate.toISOString().split('T')[0];
......@@ -30,6 +29,7 @@ export class sightVisitorFlowByHourStrategy extends abstractDataStrategyLeft {
}
const rowSight = row['景点名称'];
rowDate.setHours(rowDate.getHours() - sightVisitorFlowByHourStrategy.TIMEDIFFERENCE);
const rowHour = rowDate.getHours();
if (rowDateString == date && rowSight == sight) {
visitorCount.set(rowHour, (visitorCount.get(rowHour) || 0) + 1);
......
......@@ -7,7 +7,7 @@ export class totalVisitorFlowByHourStrategy extends abstractDataStrategyLeft {
execute(params?: any): any {
if (!params || !params.query || !params.query.date) {
throw new Error('Date parameters are required');
throw new Error('Date parameter is required.');
}
const sightData = this.extractor.getData(totalVisitorFlowByHourStrategy.FILENAME, totalVisitorFlowByHourStrategy.SHEETNAME);
return mapToObj(this.getTotalVisitorFlowByHour(sightData, params.query.date));
......@@ -21,7 +21,6 @@ export class totalVisitorFlowByHourStrategy extends abstractDataStrategyLeft {
data.forEach(row => {
const rowDate = excelSerialToJSDate(row['游玩时间']);
const rowHour = rowDate.getHours();
let rowDateString = '';
try {
rowDateString = rowDate.toISOString().split('T')[0];
......@@ -29,10 +28,14 @@ export class totalVisitorFlowByHourStrategy extends abstractDataStrategyLeft {
catch (e) {
rowDateString = 'invalid time';
}
rowDate.setHours(rowDate.getHours() - totalVisitorFlowByHourStrategy.TIMEDIFFERENCE);
rowDate.setHours(rowDate.getHours() - 8);
const rowHour = rowDate.getHours();
if (rowDateString == date) {
visitorCount.set(rowHour, (visitorCount.get(rowHour) || 0) + 1);
console.log('date', rowDate, 'added to hour', rowHour);
}
});
return visitorCount;
......
......@@ -20,7 +20,6 @@ export class DataExtractor {
private loadAllData(): void {
const dirPath = join(__dirname, '../../src/data');
const files = readdirSync(dirPath).filter(file => file.endsWith('.xlsx'));
console.log(dirPath);
files.forEach(file => {
const filePath = join(dirPath, file);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment