Skip to content

Commit

Permalink
Merge pull request #28 from Class66/ms-1250
Browse files Browse the repository at this point in the history
[ms-1250] fix layout styles and add selected signal
  • Loading branch information
Class66 committed Jan 6, 2021
2 parents 081c8c8 + 19b762d commit 5d6541f
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 17 deletions.
16 changes: 14 additions & 2 deletions src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,17 @@ function App() {
({ type, number }) => type === selectedSemaphore.type
&& number === selectedSemaphore.number
);

newSemaphoresSignal[selectedSemaphoreIndex] = {
const selectedSemaphoreNewSignal = {
type: selectedSemaphore.type,
number: selectedSemaphore.number,
signal: signal,
};

newSemaphoresSignal[selectedSemaphoreIndex] = selectedSemaphoreNewSignal;

console.table(newSemaphoresSignal[selectedSemaphoreIndex]);
setSemaphoresSignal(newSemaphoresSignal);
setSelectedSemaphore(selectedSemaphoreNewSignal);
};

const setSemaphoreHandler = (semaphore) => {
Expand All @@ -82,6 +84,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.Sm}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -96,6 +99,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.SmGORO}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -110,6 +114,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.SmGROW}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -124,6 +129,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.SmOROW}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -137,6 +143,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.SmRGW}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -151,6 +158,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.SmGRO}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -164,6 +172,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.SmRG}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -177,6 +186,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.Sp}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -190,6 +200,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.To}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand All @@ -203,6 +214,7 @@ function App() {
setSignalHandler={setSignalHandler}
signalType={s}
semaphoreType={semaphoreTypes.Tm}
selectedSemaphore={selectedSemaphore}
/>
))}
</div>
Expand Down
1 change: 0 additions & 1 deletion src/App.scss
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
height: 100%;

.semaphores-group {
display: flex;
float: left;
clear: both;
margin: 10px;
Expand Down
11 changes: 3 additions & 8 deletions src/components/ConnectedSemaphore/ConnectedSemaphore.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { PropTypes } from 'prop-types';
import classNames from 'classnames';

import { Semaphore } from '../Semaphore/Semaphore';
import { semaphoreShape } from './../../types/semaphore.type';

import './ConnectedSemaphore.scss';

Expand All @@ -27,14 +28,8 @@ export const ConnectedSemaphore = ({
</div>
);

const semaphoreProp = PropTypes.shape({
type: PropTypes.string.isRequired,
number: PropTypes.number.isRequired,
signal: PropTypes.string.isRequired,
}).isRequired;

ConnectedSemaphore.propTypes = {
setSemaphoreHandler: PropTypes.func.isRequired,
semaphore: semaphoreProp,
selectedSemaphore: semaphoreProp,
semaphore: semaphoreShape,
selectedSemaphore: semaphoreShape,
};
16 changes: 13 additions & 3 deletions src/components/Semaphore/Semaphore.jsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
import { PropTypes } from 'prop-types';
import classNames from 'classnames';

import { Signal } from '../Signal/Signal';
import { Pole } from '../Pole/Pole';
import { SignalLabel } from '../SignalLabel/SignalLabel';
import { signals } from '../../enums/signals.enum';
import { semaphoreTypes } from './../../enums/semaphoreTypes.enum';
import { signalLights } from './../../enums/signalLights.enum';
import { semaphoreShape } from './../../types/semaphore.type';

import './Semaphore.scss';

export const Semaphore = ({ setSignalHandler, signalType, semaphoreType }) => {
export const Semaphore = ({
setSignalHandler, signalType,
semaphoreType, selectedSemaphore
}) => {
const signalDefinitionsForSmSemaphore = {
S1: (
<>
Expand Down Expand Up @@ -747,8 +752,12 @@ export const Semaphore = ({ setSignalHandler, signalType, semaphoreType }) => {
};

return (
<div className="Semaphore" onClick={() => setSignalHandler(signalType)}>
{ displaySignals()}
<div
className={classNames('Semaphore', {
'Semaphore--selected': selectedSemaphore?.signal === signalType
})}
onClick={() => setSignalHandler(signalType)}>
{displaySignals()}
</div>
);
};
Expand All @@ -757,4 +766,5 @@ Semaphore.propTypes = {
setSignalHandler: PropTypes.func.isRequired,
signalType: PropTypes.string.isRequired,
semaphoreType: PropTypes.string.isRequired,
selectedSemaphore: semaphoreShape,
};
9 changes: 6 additions & 3 deletions src/components/Semaphore/Semaphore.scss
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
@import "../../scss/_colors";

.Semaphore {
display: inline-flex;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: center;
align-content: center;
width: 50px;
background-color: $gray;
border-radius: 25px;
margin: 5px;
margin: 3px;

&:hover {
background-color: $light-gray;
}
}

.Semaphore--selected {
background-color: $light-gray;
}
7 changes: 7 additions & 0 deletions src/types/semaphore.type.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { PropTypes } from 'prop-types';

export const semaphoreShape = PropTypes.shape({
type: PropTypes.string.isRequired,
number: PropTypes.number.isRequired,
signal: PropTypes.string.isRequired,
}).isRequired;

0 comments on commit 5d6541f

Please sign in to comment.