Skip to content

Commit 48e5071

Browse files
author
Adriána Kohanová
committed
#469 Make ideas/actions pretty and recognisable
1 parent 0f9d1cc commit 48e5071

File tree

4 files changed

+62
-9
lines changed

4 files changed

+62
-9
lines changed

js/components/tracking/EditableText.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,20 @@ const useStyles = makeStyles(theme => ({
1111
}
1212
}));
1313

14-
const EditableInput = props => {
14+
const EditableInput = ({ dataText, index, updateText }) => {
1515
const inputRef = useRef(null);
1616
const [inputVisible, setInputVisible] = useState(false);
17-
const [text, setText] = useState(props.text);
17+
const [text, setText] = useState(dataText);
1818
const classes = useStyles();
1919

20-
function onClickOutSide(e) {
20+
const onClickOutSide = e => {
2121
if (inputRef.current && !inputRef.current.contains(e.target)) {
2222
setInputVisible(false);
23+
if (updateText && text !== dataText) {
24+
updateText(text);
25+
}
2326
}
24-
}
27+
};
2528

2629
useEffect(() => {
2730
// Handle outside clicks on mounted state
@@ -47,7 +50,7 @@ const EditableInput = props => {
4750
}}
4851
/>
4952
) : (
50-
<Grid item key={props.index}>
53+
<Grid item key={index}>
5154
{<span onClick={() => setInputVisible(true)}>{text}</span>}
5255
{
5356
<IconButton color={'primary'} size="small" onClick={() => setInputVisible(true)}>

js/components/tracking/timelineView.js

+27-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import React, { useState, useRef, memo } from 'react';
2+
import { useDispatch } from 'react-redux';
23
import { makeStyles, IconButton, Tooltip, Grid } from '@material-ui/core';
34
import { Check, Clear, Warning, Favorite, Star } from '@material-ui/icons';
45
import { actionAnnotation } from '../../reducers/tracking/constants';
56
import { TimelineEvent } from 'react-event-timeline';
67
import EditableText from './editableText';
78
import palette from '../../theme/palette';
9+
import { updateTrackingActions } from '../../reducers/tracking/dispatchActions';
810

911
const useStyles = makeStyles(theme => ({
1012
headerGrid: {
@@ -23,6 +25,8 @@ const useStyles = makeStyles(theme => ({
2325
}));
2426

2527
const TimelineView = memo(({ data, index }) => {
28+
const dispatch = useDispatch();
29+
2630
const ref = useRef(null);
2731
const [isHovering, setIsHovering] = useState(false);
2832
const [updatedIcon, setUpdatedIcon] = useState(null);
@@ -51,7 +55,14 @@ const TimelineView = memo(({ data, index }) => {
5155
};
5256

5357
const annotationActions = [
54-
<IconButton className={classes.iconButton} color={'primary'} onClick={() => setUpdatedIcon(actionAnnotation.CHECK)}>
58+
<IconButton
59+
className={classes.iconButton}
60+
color={'primary'}
61+
onClick={() => {
62+
setUpdatedIcon(actionAnnotation.CHECK);
63+
updateDataAnnotation(actionAnnotation.CHECK);
64+
}}
65+
>
5566
<Tooltip title="Check">
5667
<Check />
5768
</Tooltip>
@@ -61,6 +72,7 @@ const TimelineView = memo(({ data, index }) => {
6172
color={'primary'}
6273
onClick={() => {
6374
setUpdatedIcon(actionAnnotation.CLEAR);
75+
updateDataAnnotation(actionAnnotation.CLEAR);
6476
}}
6577
>
6678
<Tooltip title="Clear">
@@ -72,6 +84,7 @@ const TimelineView = memo(({ data, index }) => {
7284
color={'primary'}
7385
onClick={() => {
7486
setUpdatedIcon(actionAnnotation.WARNING);
87+
updateDataAnnotation(actionAnnotation.WARNING);
7588
}}
7689
>
7790
<Tooltip title="Warning">
@@ -83,6 +96,7 @@ const TimelineView = memo(({ data, index }) => {
8396
color={'primary'}
8497
onClick={() => {
8598
setUpdatedIcon(actionAnnotation.FAVORITE);
99+
updateDataAnnotation(actionAnnotation.FAVORITE);
86100
}}
87101
>
88102
<Tooltip title="Favorite">
@@ -94,6 +108,7 @@ const TimelineView = memo(({ data, index }) => {
94108
color={'primary'}
95109
onClick={() => {
96110
setUpdatedIcon(actionAnnotation.STAR);
111+
updateDataAnnotation(actionAnnotation.STAR);
97112
}}
98113
>
99114
<Tooltip title="Star">
@@ -102,6 +117,16 @@ const TimelineView = memo(({ data, index }) => {
102117
</IconButton>
103118
];
104119

120+
const updateDataText = text => {
121+
data.text = text;
122+
dispatch(updateTrackingActions(data));
123+
};
124+
125+
const updateDataAnnotation = annotation => {
126+
data.annotation = annotation;
127+
dispatch(updateTrackingActions(data));
128+
};
129+
105130
return (
106131
<div ref={ref} onMouseEnter={() => setIsHovering(true)} onMouseLeave={() => setIsHovering(false)}>
107132
<TimelineEvent
@@ -111,7 +136,7 @@ const TimelineView = memo(({ data, index }) => {
111136
<Grid container justify="flex-start" direction="row" alignItems="center" className={classes.headerGrid}>
112137
{
113138
<Grid item xs={8} className={classes.grid}>
114-
<EditableText text={data.text} index={index} />
139+
<EditableText dataText={data.text} index={index} updateText={updateDataText} />
115140
</Grid>
116141
}
117142
{isHovering && (
@@ -137,7 +162,6 @@ const TimelineView = memo(({ data, index }) => {
137162
}
138163
createdAt={new Date(data.timestamp).toLocaleString()}
139164
icon={updatedIcon && updatedIcon != null ? getActionIcon(updatedIcon) : getActionIcon(data.annotation)}
140-
//icon={getActionIcon(data.annotation)}
141165
iconColor={palette.primary.main}
142166
className={classes.timelineEvent}
143167
></TimelineEvent>

js/components/tracking/trackingModal.js

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import Modal from '../common/Modal';
44
import { Grid, makeStyles, IconButton, Tooltip } from '@material-ui/core';
55
import { Timeline } from 'react-event-timeline';
66
import { Close } from '@material-ui/icons';
7-
import palette from '../../theme/palette';
87
import { Panel } from '../common';
98
import TimelineView from './timelineView';
109
import { setProjectTrackingActions } from '../../reducers/tracking/dispatchActions';

js/reducers/tracking/dispatchActions.js

+27
Original file line numberDiff line numberDiff line change
@@ -1528,3 +1528,30 @@ export const sendInitTrackingActionByProjectId = target_on => (dispatch, getStat
15281528
dispatch(saveTrackingActions(actions, snapshotID));
15291529
}
15301530
};
1531+
1532+
export const updateTrackingActions = action => (dispatch, getState) => {
1533+
const state = getState();
1534+
const project = state.projectReducers.currentProject;
1535+
const projectActions = state.trackingReducers.project_actions_list;
1536+
const projectID = project && project.projectID;
1537+
const actionID = action && action.Id;
1538+
1539+
if (projectID && actionID) {
1540+
const dataToSend = {
1541+
last_update_date: moment().format(),
1542+
actions: JSON.stringify(projectActions)
1543+
};
1544+
return api({
1545+
url: `${base_url}/api/session-actions/${projectID}/${actionID}`,
1546+
method: METHOD.PUT,
1547+
data: JSON.stringify(dataToSend)
1548+
})
1549+
.then(() => {})
1550+
.catch(error => {
1551+
throw new Error(error);
1552+
})
1553+
.finally(() => {});
1554+
} else {
1555+
return Promise.resolve();
1556+
}
1557+
};

0 commit comments

Comments
 (0)