Showing
10 changed files
with
202 additions
and
54 deletions
... | @@ -3,42 +3,111 @@ import { makeStyles } from '@material-ui/core/styles'; | ... | @@ -3,42 +3,111 @@ import { makeStyles } from '@material-ui/core/styles'; |
3 | import Paper from '@material-ui/core/Paper'; | 3 | import Paper from '@material-ui/core/Paper'; |
4 | import Grid from '@material-ui/core/Grid'; | 4 | import Grid from '@material-ui/core/Grid'; |
5 | import palette from '../../lib/styles/palette'; | 5 | import palette from '../../lib/styles/palette'; |
6 | +import AuthForm from '../auth/AuthForm'; | ||
6 | const useStyles = makeStyles((theme) => ({ | 7 | const useStyles = makeStyles((theme) => ({ |
7 | root: { | 8 | root: { |
8 | flexGrow: 1, | 9 | flexGrow: 1, |
9 | background: palette.gray[2], | 10 | background: palette.gray[2], |
11 | + padding: theme.spacing(8), | ||
10 | }, | 12 | }, |
11 | paper: { | 13 | paper: { |
12 | - padding: theme.spacing(2), | 14 | + padding: theme.spacing(8), |
15 | + margin: 'auto', | ||
13 | textAlign: 'center', | 16 | textAlign: 'center', |
14 | color: theme.palette.text.secondary, | 17 | color: theme.palette.text.secondary, |
15 | }, | 18 | }, |
16 | })); | 19 | })); |
17 | -const HomeForm = () => { | 20 | +const HomeForm = ({ PSdata, goalNum }) => { |
18 | const classes = useStyles(); | 21 | const classes = useStyles(); |
19 | - return ( | 22 | + return PSdata ? ( |
20 | <div className={classes.root}> | 23 | <div className={classes.root}> |
21 | - <Grid container spacing={3}> | 24 | + <Grid container spacing={5}> |
22 | <Grid item xs={12}> | 25 | <Grid item xs={12}> |
23 | - <Paper className={classes.paper}>xs=12</Paper> | 26 | + <Paper className={classes.paper}> |
27 | + <h1>{PSdata.recommend_data.problem_number}</h1> | ||
28 | + <h1>{PSdata.recommend_data.problem_title}</h1> | ||
29 | + <a | ||
30 | + href={'http://www.boj.kr/' + PSdata.recommend_data.problem_number} | ||
31 | + > | ||
32 | + 바로가기 | ||
33 | + </a> | ||
34 | + | ||
35 | + <h3>오늘의 추천 문제</h3> | ||
36 | + </Paper> | ||
37 | + </Grid> | ||
38 | + <Grid item xs={6}> | ||
39 | + <Paper className={classes.paper}> | ||
40 | + <h1>{PSdata.presentNum + '/' + goalNum}</h1> | ||
41 | + <h3>오늘 푼 문제</h3> | ||
42 | + </Paper> | ||
24 | </Grid> | 43 | </Grid> |
25 | <Grid item xs={6}> | 44 | <Grid item xs={6}> |
26 | - <Paper className={classes.paper}>xs=6</Paper> | 45 | + <Paper className={classes.paper}> |
46 | + <h1>{PSdata.latestSolve.problem_number}</h1> | ||
47 | + <h1>{PSdata.latestSolve.problem_title}</h1> | ||
48 | + <h3>마지막으로 푼 문제</h3> | ||
49 | + </Paper> | ||
50 | + </Grid> | ||
51 | + | ||
52 | + <Grid item xs={4}> | ||
53 | + <Paper className={classes.paper}> | ||
54 | + <h1>{PSdata.weekNum}</h1> | ||
55 | + <h3>7일</h3> | ||
56 | + </Paper> | ||
57 | + </Grid> | ||
58 | + <Grid item xs={4}> | ||
59 | + <Paper className={classes.paper}> | ||
60 | + <h1>{PSdata.monthNum}</h1> | ||
61 | + <h3>30일</h3> | ||
62 | + </Paper> | ||
63 | + </Grid> | ||
64 | + <Grid item xs={4}> | ||
65 | + <Paper className={classes.paper}> | ||
66 | + <h1>{PSdata.totalNum}</h1> | ||
67 | + <h3>전체</h3> | ||
68 | + </Paper> | ||
69 | + </Grid> | ||
70 | + </Grid> | ||
71 | + </div> | ||
72 | + ) : ( | ||
73 | + <div className={classes.root}> | ||
74 | + <Grid container spacing={5}> | ||
75 | + <Grid item xs={12}> | ||
76 | + <Paper className={classes.paper}> | ||
77 | + <h1></h1> | ||
78 | + <h3>오늘의 추천 문제</h3> | ||
79 | + </Paper> | ||
27 | </Grid> | 80 | </Grid> |
28 | <Grid item xs={6}> | 81 | <Grid item xs={6}> |
29 | - <Paper className={classes.paper}>xs=6</Paper> | 82 | + <Paper className={classes.paper}> |
83 | + <h1></h1> | ||
84 | + <h3>오늘</h3> | ||
85 | + </Paper> | ||
30 | </Grid> | 86 | </Grid> |
31 | - <Grid item xs={3}> | 87 | + <Grid item xs={6}> |
32 | - <Paper className={classes.paper}>xs=3</Paper> | 88 | + <Paper className={classes.paper}> |
89 | + <h1></h1> | ||
90 | + <h3>마지막 날</h3> | ||
91 | + </Paper> | ||
33 | </Grid> | 92 | </Grid> |
34 | - <Grid item xs={3}> | 93 | + |
35 | - <Paper className={classes.paper}>xs=3</Paper> | 94 | + <Grid item xs={4}> |
95 | + <Paper className={classes.paper}> | ||
96 | + <h1></h1> | ||
97 | + <h3>7일</h3> | ||
98 | + </Paper> | ||
36 | </Grid> | 99 | </Grid> |
37 | - <Grid item xs={3}> | 100 | + <Grid item xs={4}> |
38 | - <Paper className={classes.paper}>xs=3</Paper> | 101 | + <Paper className={classes.paper}> |
102 | + <h1></h1> | ||
103 | + <h3>30일</h3> | ||
104 | + </Paper> | ||
39 | </Grid> | 105 | </Grid> |
40 | - <Grid item xs={3}> | 106 | + <Grid item xs={4}> |
41 | - <Paper className={classes.paper}>xs=3</Paper> | 107 | + <Paper className={classes.paper}> |
108 | + <h1></h1> | ||
109 | + <h3>전체</h3> | ||
110 | + </Paper> | ||
42 | </Grid> | 111 | </Grid> |
43 | </Grid> | 112 | </Grid> |
44 | </div> | 113 | </div> | ... | ... |
... | @@ -9,13 +9,16 @@ const useStyles = makeStyles((theme) => ({ | ... | @@ -9,13 +9,16 @@ const useStyles = makeStyles((theme) => ({ |
9 | margin: theme.spacing(1), | 9 | margin: theme.spacing(1), |
10 | }, | 10 | }, |
11 | }, | 11 | }, |
12 | + button: { | ||
13 | + margin: theme.spacing(1), | ||
14 | + }, | ||
12 | })); | 15 | })); |
13 | 16 | ||
14 | const BJIDForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { | 17 | const BJIDForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { |
15 | const classes = useStyles(); | 18 | const classes = useStyles(); |
16 | return ( | 19 | return ( |
17 | <div> | 20 | <div> |
18 | - <form onSubmit={onBJIDSubmit}> | 21 | + <form> |
19 | <TextField | 22 | <TextField |
20 | name="userBJID" | 23 | name="userBJID" |
21 | onChange={onChange} | 24 | onChange={onChange} |
... | @@ -23,11 +26,21 @@ const BJIDForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { | ... | @@ -23,11 +26,21 @@ const BJIDForm = ({ onChange, onBJIDSubmit, profile, onSyncBJIDSubmit }) => { |
23 | placeholder="백준 아이디" | 26 | placeholder="백준 아이디" |
24 | label="백준 아이디" | 27 | label="백준 아이디" |
25 | /> | 28 | /> |
26 | - <Button variant="outlined" type="submit"> | ||
27 | - 등록 | ||
28 | - </Button> | ||
29 | </form> | 29 | </form> |
30 | - <Button variant="outlined" onClick={onSyncBJIDSubmit}> | 30 | + <Button |
31 | + className={classes.button} | ||
32 | + variant="outlined" | ||
33 | + onClick={onBJIDSubmit} | ||
34 | + color="primary" | ||
35 | + > | ||
36 | + 등록 | ||
37 | + </Button> | ||
38 | + <Button | ||
39 | + className={classes.button} | ||
40 | + variant="outlined" | ||
41 | + onClick={onSyncBJIDSubmit} | ||
42 | + color="secondary" | ||
43 | + > | ||
31 | 동기화 | 44 | 동기화 |
32 | </Button> | 45 | </Button> |
33 | </div> | 46 | </div> | ... | ... |
... | @@ -10,13 +10,16 @@ const useStyles = makeStyles((theme) => ({ | ... | @@ -10,13 +10,16 @@ const useStyles = makeStyles((theme) => ({ |
10 | margin: theme.spacing(1), | 10 | margin: theme.spacing(1), |
11 | }, | 11 | }, |
12 | }, | 12 | }, |
13 | + button: { | ||
14 | + margin: theme.spacing(1), | ||
15 | + }, | ||
13 | })); | 16 | })); |
14 | 17 | ||
15 | const GoalNumForm = ({ onChange, profile, onGoalNumSubmit }) => { | 18 | const GoalNumForm = ({ onChange, profile, onGoalNumSubmit }) => { |
16 | const classes = useStyles(); | 19 | const classes = useStyles(); |
17 | return ( | 20 | return ( |
18 | <div> | 21 | <div> |
19 | - <form onSubmit={onGoalNumSubmit}> | 22 | + <form> |
20 | <TextField | 23 | <TextField |
21 | name="goalNum" | 24 | name="goalNum" |
22 | type="number" | 25 | type="number" |
... | @@ -28,10 +31,15 @@ const GoalNumForm = ({ onChange, profile, onGoalNumSubmit }) => { | ... | @@ -28,10 +31,15 @@ const GoalNumForm = ({ onChange, profile, onGoalNumSubmit }) => { |
28 | shrink: true, | 31 | shrink: true, |
29 | }} | 32 | }} |
30 | /> | 33 | /> |
31 | - <Button variant="outlined" type="submit"> | ||
32 | - 등록 | ||
33 | - </Button> | ||
34 | </form> | 34 | </form> |
35 | + <Button | ||
36 | + className={classes.button} | ||
37 | + onClick={onGoalNumSubmit} | ||
38 | + color="primary" | ||
39 | + variant="outlined" | ||
40 | + > | ||
41 | + 등록 | ||
42 | + </Button> | ||
35 | </div> | 43 | </div> |
36 | ); | 44 | ); |
37 | }; | 45 | }; | ... | ... |
... | @@ -13,11 +13,12 @@ const useStyles = makeStyles((theme) => ({ | ... | @@ -13,11 +13,12 @@ const useStyles = makeStyles((theme) => ({ |
13 | root: { | 13 | root: { |
14 | flexGrow: 1, | 14 | flexGrow: 1, |
15 | background: palette.gray[2], | 15 | background: palette.gray[2], |
16 | + padding: theme.spacing(8), | ||
16 | }, | 17 | }, |
17 | paper: { | 18 | paper: { |
19 | + padding: theme.spacing(8), | ||
18 | margin: 'auto', | 20 | margin: 'auto', |
19 | textAlign: 'center', | 21 | textAlign: 'center', |
20 | - padding: 30, | ||
21 | }, | 22 | }, |
22 | })); | 23 | })); |
23 | 24 | ||
... | @@ -45,14 +46,10 @@ const SettingForm = ({ | ... | @@ -45,14 +46,10 @@ const SettingForm = ({ |
45 | </LoadingParentStyle> | 46 | </LoadingParentStyle> |
46 | ) : ( | 47 | ) : ( |
47 | <div className={classes.root}> | 48 | <div className={classes.root}> |
48 | - <Grid container spacing={3}> | 49 | + <Grid container spacing={5}> |
49 | - <Grid item xs={12}> | 50 | + <Grid container item xs={6}> |
50 | - <Paper className={classes.paper}> | ||
51 | - <h3>{profile.username}</h3> | ||
52 | - </Paper> | ||
53 | - </Grid> | ||
54 | - <Grid container item xs={12}> | ||
55 | <Paper className={classes.paper} elevation={3}> | 51 | <Paper className={classes.paper} elevation={3}> |
52 | + <h1>백준 아이디</h1> | ||
56 | <BJIDForm | 53 | <BJIDForm |
57 | profile={profile} | 54 | profile={profile} |
58 | onChange={onChange} | 55 | onChange={onChange} |
... | @@ -62,8 +59,9 @@ const SettingForm = ({ | ... | @@ -62,8 +59,9 @@ const SettingForm = ({ |
62 | </Paper> | 59 | </Paper> |
63 | </Grid> | 60 | </Grid> |
64 | 61 | ||
65 | - <Grid container item xs={12}> | 62 | + <Grid container item xs={6}> |
66 | <Paper className={classes.paper} elevation={3}> | 63 | <Paper className={classes.paper} elevation={3}> |
64 | + <h1>슬랙 Hook URL</h1> | ||
67 | <SlackForm | 65 | <SlackForm |
68 | profile={profile} | 66 | profile={profile} |
69 | onChange={onChange} | 67 | onChange={onChange} |
... | @@ -72,8 +70,9 @@ const SettingForm = ({ | ... | @@ -72,8 +70,9 @@ const SettingForm = ({ |
72 | </Paper> | 70 | </Paper> |
73 | </Grid> | 71 | </Grid> |
74 | 72 | ||
75 | - <Grid container item xs={12}> | 73 | + <Grid container item xs={6}> |
76 | <Paper className={classes.paper} elevation={3}> | 74 | <Paper className={classes.paper} elevation={3}> |
75 | + <h1>일일 목표</h1> | ||
77 | <GoalNumForm | 76 | <GoalNumForm |
78 | profile={profile} | 77 | profile={profile} |
79 | onChange={onChange} | 78 | onChange={onChange} | ... | ... |
... | @@ -10,13 +10,16 @@ const useStyles = makeStyles((theme) => ({ | ... | @@ -10,13 +10,16 @@ const useStyles = makeStyles((theme) => ({ |
10 | margin: theme.spacing(1), | 10 | margin: theme.spacing(1), |
11 | }, | 11 | }, |
12 | }, | 12 | }, |
13 | + button: { | ||
14 | + margin: theme.spacing(1), | ||
15 | + }, | ||
13 | })); | 16 | })); |
14 | 17 | ||
15 | const SlackForm = ({ onChange, profile, onSlackURLSubmit }) => { | 18 | const SlackForm = ({ onChange, profile, onSlackURLSubmit }) => { |
16 | const classes = useStyles(); | 19 | const classes = useStyles(); |
17 | return ( | 20 | return ( |
18 | <div> | 21 | <div> |
19 | - <form onSubmit={onSlackURLSubmit}> | 22 | + <form> |
20 | <TextField | 23 | <TextField |
21 | name="slackWebHookURL" | 24 | name="slackWebHookURL" |
22 | onChange={onChange} | 25 | onChange={onChange} |
... | @@ -24,10 +27,16 @@ const SlackForm = ({ onChange, profile, onSlackURLSubmit }) => { | ... | @@ -24,10 +27,16 @@ const SlackForm = ({ onChange, profile, onSlackURLSubmit }) => { |
24 | placeholder="슬랙 Webhook URL" | 27 | placeholder="슬랙 Webhook URL" |
25 | label="슬랙 Webhook URL" | 28 | label="슬랙 Webhook URL" |
26 | /> | 29 | /> |
27 | - <Button variant="outlined" type="submit"> | ||
28 | - 등록 | ||
29 | - </Button> | ||
30 | </form> | 30 | </form> |
31 | + <Button | ||
32 | + className={classes.button} | ||
33 | + onSubmit={onSlackURLSubmit} | ||
34 | + variant="outlined" | ||
35 | + type="submit" | ||
36 | + color="primary" | ||
37 | + > | ||
38 | + 등록 | ||
39 | + </Button> | ||
31 | </div> | 40 | </div> |
32 | ); | 41 | ); |
33 | }; | 42 | }; | ... | ... |
... | @@ -2,22 +2,35 @@ import React, { useEffect } from 'react'; | ... | @@ -2,22 +2,35 @@ import React, { useEffect } from 'react'; |
2 | import { useDispatch, useSelector } from 'react-redux'; | 2 | import { useDispatch, useSelector } from 'react-redux'; |
3 | import { withRouter } from 'react-router-dom'; | 3 | import { withRouter } from 'react-router-dom'; |
4 | import HomeForm from '../../components/home/HomeForm'; | 4 | import HomeForm from '../../components/home/HomeForm'; |
5 | -import { getPROFILE } from '../../modules/profile'; | 5 | +import { getPROFILE, initializeProfile } from '../../modules/profile'; |
6 | const HomeContainer = ({ history }) => { | 6 | const HomeContainer = ({ history }) => { |
7 | const dispatch = useDispatch(); | 7 | const dispatch = useDispatch(); |
8 | const { user, profile } = useSelector(({ user, profile }) => ({ | 8 | const { user, profile } = useSelector(({ user, profile }) => ({ |
9 | user: user.user, | 9 | user: user.user, |
10 | profile: profile, | 10 | profile: profile, |
11 | })); | 11 | })); |
12 | + | ||
13 | + useEffect(() => { | ||
14 | + if (!user) { | ||
15 | + alert('로그인이 필요합니다 '); | ||
16 | + history.push('/login'); | ||
17 | + } else { | ||
18 | + let username = user.username; | ||
19 | + dispatch(getPROFILE({ username })); | ||
20 | + return () => { | ||
21 | + dispatch(initializeProfile()); | ||
22 | + }; | ||
23 | + } | ||
24 | + }, [dispatch, user, history]); | ||
12 | useEffect(() => { | 25 | useEffect(() => { |
13 | console.log(profile); | 26 | console.log(profile); |
14 | - }, [profile.solvedBJ]); | 27 | + }, [profile]); |
15 | useEffect(() => { | 28 | useEffect(() => { |
16 | if (user) { | 29 | if (user) { |
17 | let username = user.username; | 30 | let username = user.username; |
18 | dispatch(getPROFILE({ username })); | 31 | dispatch(getPROFILE({ username })); |
19 | } | 32 | } |
20 | }, [dispatch, user]); | 33 | }, [dispatch, user]); |
21 | - return <HomeForm />; | 34 | + return <HomeForm PSdata={profile.solvedBJ_date} goalNum={profile.goalNum} />; |
22 | }; | 35 | }; |
23 | export default withRouter(HomeContainer); | 36 | export default withRouter(HomeContainer); | ... | ... |
1 | import React, { useEffect, useState } from 'react'; | 1 | import React, { useEffect, useState } from 'react'; |
2 | import { useDispatch, useSelector } from 'react-redux'; | 2 | import { useDispatch, useSelector } from 'react-redux'; |
3 | + | ||
3 | import { withRouter } from 'react-router-dom'; | 4 | import { withRouter } from 'react-router-dom'; |
4 | import { | 5 | import { |
5 | changeField, | 6 | changeField, |
... | @@ -14,6 +15,7 @@ import SettingForm from '../../components/setting/SettingForm'; | ... | @@ -14,6 +15,7 @@ import SettingForm from '../../components/setting/SettingForm'; |
14 | 15 | ||
15 | const SettingContainer = ({ history }) => { | 16 | const SettingContainer = ({ history }) => { |
16 | const [isLoading, setLoading] = useState(false); | 17 | const [isLoading, setLoading] = useState(false); |
18 | + | ||
17 | const dispatch = useDispatch(); | 19 | const dispatch = useDispatch(); |
18 | const { user, profile, loading } = useSelector( | 20 | const { user, profile, loading } = useSelector( |
19 | ({ user, profile, loading }) => ({ | 21 | ({ user, profile, loading }) => ({ |
... | @@ -63,7 +65,7 @@ const SettingContainer = ({ history }) => { | ... | @@ -63,7 +65,7 @@ const SettingContainer = ({ history }) => { |
63 | useEffect(() => { | 65 | useEffect(() => { |
64 | if (!user) { | 66 | if (!user) { |
65 | alert('로그인이 필요합니다 '); | 67 | alert('로그인이 필요합니다 '); |
66 | - history.push('/'); | 68 | + history.push('/login'); |
67 | } else { | 69 | } else { |
68 | let username = user.username; | 70 | let username = user.username; |
69 | dispatch(getPROFILE({ username })); | 71 | dispatch(getPROFILE({ username })); |
... | @@ -81,16 +83,18 @@ const SettingContainer = ({ history }) => { | ... | @@ -81,16 +83,18 @@ const SettingContainer = ({ history }) => { |
81 | }, [dispatch, loading]); | 83 | }, [dispatch, loading]); |
82 | 84 | ||
83 | return ( | 85 | return ( |
84 | - <SettingForm | 86 | + <div> |
85 | - type="setting" | 87 | + <SettingForm |
86 | - onChange={onChange} | 88 | + type="setting" |
87 | - onBJIDSubmit={onBJIDSubmit} | 89 | + onChange={onChange} |
88 | - onSyncBJIDSubmit={onSyncBJIDSubmit} | 90 | + onBJIDSubmit={onBJIDSubmit} |
89 | - onSlackURLSubmit={onSlackURLSubmit} | 91 | + onSyncBJIDSubmit={onSyncBJIDSubmit} |
90 | - onGoalNumSubmit={onGoalNumSubmit} | 92 | + onSlackURLSubmit={onSlackURLSubmit} |
91 | - profile={profile} | 93 | + onGoalNumSubmit={onGoalNumSubmit} |
92 | - isLoading={isLoading} | 94 | + profile={profile} |
93 | - ></SettingForm> | 95 | + isLoading={isLoading} |
96 | + ></SettingForm> | ||
97 | + </div> | ||
94 | ); | 98 | ); |
95 | }; | 99 | }; |
96 | 100 | ... | ... |
This diff is collapsed. Click to expand it.
1 | let moment = require("moment"); | 1 | let moment = require("moment"); |
2 | - | 2 | +const problem_set = require("../data/problem_set"); |
3 | +const compareBJ = require("./compareBJ"); | ||
3 | exports.analyzeBJ = function (solvedBJ) { | 4 | exports.analyzeBJ = function (solvedBJ) { |
4 | try { | 5 | try { |
5 | if (solvedBJ) { | 6 | if (solvedBJ) { |
... | @@ -7,6 +8,7 @@ exports.analyzeBJ = function (solvedBJ) { | ... | @@ -7,6 +8,7 @@ exports.analyzeBJ = function (solvedBJ) { |
7 | let presentDate_str = presentDate.format("YYYYMMDD"); | 8 | let presentDate_str = presentDate.format("YYYYMMDD"); |
8 | let latestDate = moment(solvedBJ[0].solved_date, "YYYYMMDD"); | 9 | let latestDate = moment(solvedBJ[0].solved_date, "YYYYMMDD"); |
9 | let difflatest = presentDate.diff(latestDate, "days"); | 10 | let difflatest = presentDate.diff(latestDate, "days"); |
11 | + let latestSolve = solvedBJ[0]; | ||
10 | 12 | ||
11 | let solvedBJbyDATE = {}; | 13 | let solvedBJbyDATE = {}; |
12 | for (let i = 0; i < solvedBJ.length; i++) { | 14 | for (let i = 0; i < solvedBJ.length; i++) { |
... | @@ -23,12 +25,44 @@ exports.analyzeBJ = function (solvedBJ) { | ... | @@ -23,12 +25,44 @@ exports.analyzeBJ = function (solvedBJ) { |
23 | presentDate_str in solvedBJbyDATE | 25 | presentDate_str in solvedBJbyDATE |
24 | ? solvedBJbyDATE[presentDate_str].length | 26 | ? solvedBJbyDATE[presentDate_str].length |
25 | : 0; | 27 | : 0; |
28 | + | ||
29 | + let weekNUM = 0; | ||
30 | + let monthNUM = 0; | ||
31 | + let totalNUM = 0; | ||
32 | + for (let i = 0; i < solvedBJ.length; i++) { | ||
33 | + let diffDate = presentDate.diff( | ||
34 | + moment(solvedBJ[i].solved_date, "YYYYMMDD"), | ||
35 | + "days" | ||
36 | + ); | ||
37 | + if (diffDate <= 7) { | ||
38 | + weekNUM++; | ||
39 | + monthNUM++; | ||
40 | + totalNUM++; | ||
41 | + } else if (diffDate <= 31) { | ||
42 | + monthNUM++; | ||
43 | + totalNUM++; | ||
44 | + } else { | ||
45 | + totalNUM++; | ||
46 | + } | ||
47 | + } | ||
48 | + | ||
49 | + let unsolved_data = compareBJ.compareBJ( | ||
50 | + solvedBJ, | ||
51 | + problem_set.problem_set | ||
52 | + ); | ||
53 | + let recommend_data = compareBJ.randomItem(unsolved_data); | ||
54 | + | ||
26 | let returnOBJ = { | 55 | let returnOBJ = { |
27 | latestDate: latestDate.format("YYYYMMDD"), | 56 | latestDate: latestDate.format("YYYYMMDD"), |
28 | difflatest: difflatest, | 57 | difflatest: difflatest, |
29 | latestNum: latestNum, | 58 | latestNum: latestNum, |
30 | presentNum: presentNum, | 59 | presentNum: presentNum, |
60 | + weekNum: weekNUM, | ||
61 | + monthNum: monthNUM, | ||
62 | + totalNum: totalNUM, | ||
31 | solvedBJbyDATE: solvedBJbyDATE, | 63 | solvedBJbyDATE: solvedBJbyDATE, |
64 | + latestSolve: latestSolve, | ||
65 | + recommend_data: recommend_data, | ||
32 | }; | 66 | }; |
33 | 67 | ||
34 | return returnOBJ; | 68 | return returnOBJ; | ... | ... |
... | @@ -14,7 +14,6 @@ exports.compareBJ = function (solvedBJ_new, problem_set) { | ... | @@ -14,7 +14,6 @@ exports.compareBJ = function (solvedBJ_new, problem_set) { |
14 | new_obj.push(problem_set[i]); | 14 | new_obj.push(problem_set[i]); |
15 | } | 15 | } |
16 | } | 16 | } |
17 | - console.log(new_obj); | ||
18 | return new_obj; | 17 | return new_obj; |
19 | } catch (e) { | 18 | } catch (e) { |
20 | console.log(e); | 19 | console.log(e); | ... | ... |
-
Please register or login to post a comment