Skip to content

Commit

Permalink
Merge pull request #85 from sundayTen:feat/click-dashboard
Browse files Browse the repository at this point in the history
feat: 대시보드 투두리스트 업데이트 쿼리 추가
  • Loading branch information
hojunin committed Jul 13, 2023
2 parents 77758fd + 2b9fe9e commit 3686608
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 11 deletions.
16 changes: 12 additions & 4 deletions components/dashboard/aside/InitiativeList/InitiativeItem/index.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
import CheckBox from '@components/common/checkbox';
import Radio from '@components/common/radio';
import Text from '@components/common/text';
import { ID } from '@type/common';
import { INITIATIVE_DETAIL } from '@type/initiative';
import { getElapsedTime } from '@utils/date';
import React, { useState } from 'react';
import styles from './InitiativeItem.module.scss';

const InitiativeItem = ({ item }: { item: INITIATIVE_DETAIL }) => {
const { dueDate, title, goalMetrics, currentMetrics } = item;
const InitiativeItem = ({
item,
onClickItem,
}: {
item: INITIATIVE_DETAIL;
onClickItem: (initiativeId: ID) => void;
}) => {
const { id, dueDate, title, goalMetrics, currentMetrics } = item;
const [isChecked, setIsChecked] = useState(false);

const onClickItem = () => {
const onClick = () => {
onClickItem(id);
setIsChecked(!isChecked);
};

return (
<div className={styles.root} onClick={onClickItem}>
<div className={styles.root} onClick={onClick}>
<div className={styles.titleContainer}>
<Radio status="checked" />
<Text variant="LABEL">{title}</Text>
Expand Down
9 changes: 8 additions & 1 deletion components/dashboard/aside/InitiativeList/index.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
import { ID } from '@type/common';
import { INITIATIVE_DETAIL } from '@type/initiative';
import React from 'react';
import InitiativeItem from './InitiativeItem';
import styles from './InitiativeList.module.scss';

const InitiativeList = ({
initiatives,
onClickItem,
}: {
initiatives: INITIATIVE_DETAIL[];
onClickItem: (initiativeId: ID) => void;
}) => {
return (
<div className={styles.root}>
{initiatives.map((initiative) => (
<InitiativeItem item={initiative} key={initiative.id} />
<InitiativeItem
item={initiative}
key={initiative.id}
onClickItem={onClickItem}
/>
))}
</div>
);
Expand Down
15 changes: 14 additions & 1 deletion components/dashboard/aside/KeyResultList/KeyResultItem/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { updateInitiativeDone } from '@api/initiatives';
import ToggleArrow from '@components/common/toggleArrow';
import CountBall from '@components/goal-management/KeyResultsList/KeyResultsParentItem/CountBall';
import { useMutation } from '@tanstack/react-query';
import { ID } from '@type/common';
import { KEY_RESULT_DETAIL } from '@type/keyResult';
import React, { useState } from 'react';
import InitiativeList from '../../InitiativeList';
Expand All @@ -11,11 +14,18 @@ interface KeyResultItemProps {

const KeyResultItem = ({ keyResultItem }: KeyResultItemProps) => {
const [isOpened, setIsOpened] = useState(false);
const { mutateAsync } = useMutation(updateInitiativeDone, {});

const onClickItem = () => {
setIsOpened(!isOpened);
};

const onClickInitiative = async (initiativeId: ID) => {
try {
await mutateAsync(initiativeId);
} catch (error) {}
};

return (
<>
<div className={styles.root} onClick={onClickItem}>
Expand All @@ -30,7 +40,10 @@ const KeyResultItem = ({ keyResultItem }: KeyResultItemProps) => {
</div>
</div>
{isOpened && keyResultItem.initiatives.length > 0 && (
<InitiativeList initiatives={keyResultItem.initiatives} />
<InitiativeList
initiatives={keyResultItem.initiatives}
onClickItem={onClickInitiative}
/>
)}
</>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useEffect, useState } from 'react';
import { KEY_RESULT_DETAIL } from '@type/keyResult';
import { OKR, OKR_TYPE } from '@type/okr';
import React, { useEffect, useState } from 'react';
import { OKR_TYPE } from '@type/okr';

const useCreateKeyResultsByPeriod = (okr?: OKR_TYPE[]) => {
const [keyResultsByOkr, setKeyResultsByOkr] = useState<KEY_RESULT_DETAIL[]>(
Expand Down
5 changes: 2 additions & 3 deletions components/goal-management/keyResultDetail/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@ import KeyResultDetailInitiatives from './initiatives';
import { useOverlay } from '@toss/use-overlay';
import DropKeyResultModal from '@components/shared/dropKeyResultModal';
import { ID } from '@type/common';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useQueryClient } from '@tanstack/react-query';
import goalManagementStore from '@store/goal-management';
import { KEY_RESULT, OKR } from '@api/path';
import { OKR } from '@api/path';
import { generatePeriodStartEndDate } from '../KeyResultsList/useFetchKeyResultsWithPeriod';
import { fetchKeyResult } from '@api/keyResult';
import CreateInitiative from '@components/shared/createInitiative';
import { KEY_RESULT_DETAIL } from '@type/keyResult';

Expand Down

0 comments on commit 3686608

Please sign in to comment.