-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintcache
1 lines (1 loc) · 61.9 KB
/
.eslintcache
1
[{"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\index.js":"1","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\reportWebVitals.js":"2","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\authReducer.js":"3","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actionTypes.js":"4","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\shared\\utility.js":"5","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\containers\\App\\App.js":"6","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Navbar\\Navbar.js":"7","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Auth\\Login\\Login.js":"8","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Auth\\Register\\Register.js":"9","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Contact\\Contact.js":"10","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\index.js":"11","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\authActions.js":"12","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\config.js":"13","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Carousel\\ShowCarousel.js":"14","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Response\\Response.js":"15","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Footer\\Footer.js":"16","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\ShowsList.js":"17","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\ShowCard\\ShowCard.js":"18","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\Search\\Search.js":"19","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\ScheduleList.js":"20","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\ScheduleItem\\ScheduleItem.js":"21","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\CreateEditShow\\CreateEditShow.js":"22","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\CreateSceneModal\\CreateSceneModal.js":"23","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\CreateActorModal\\CreateActorModal.js":"24","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\DeleteShowModal\\DeleteShowModal.js":"25","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\theaterReducer.js":"26","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\theaterActions.js":"27","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\DeleteActorModal\\DeleteActorModal.js":"28","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\ShowDetails\\ShowDetails.js":"29","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\Seats\\Seats.js":"30","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\reservationReducer.js":"31","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\reservationActions.js":"32","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\Seats\\Seat\\Seat.js":"33","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\ratingReducer.js":"34","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\ratingActions.js":"35","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\TicketCartModal\\TicketCartModal.js":"36"},{"size":1519,"mtime":1612576196003,"results":"37","hashOfConfig":"38"},{"size":362,"mtime":499162500000,"results":"39","hashOfConfig":"38"},{"size":1776,"mtime":1612825577806,"results":"40","hashOfConfig":"38"},{"size":1788,"mtime":1612827001413,"results":"41","hashOfConfig":"38"},{"size":144,"mtime":1600458937141,"results":"42","hashOfConfig":"38"},{"size":4207,"mtime":1612826550457,"results":"43","hashOfConfig":"38"},{"size":2825,"mtime":1612826652873,"results":"44","hashOfConfig":"38"},{"size":4727,"mtime":1612216309200,"results":"45","hashOfConfig":"38"},{"size":6868,"mtime":1612315830117,"results":"46","hashOfConfig":"38"},{"size":2648,"mtime":1611884243146,"results":"47","hashOfConfig":"38"},{"size":556,"mtime":1612827060860,"results":"48","hashOfConfig":"38"},{"size":4173,"mtime":1612825801610,"results":"49","hashOfConfig":"38"},{"size":704,"mtime":1612803857326,"results":"50","hashOfConfig":"38"},{"size":2236,"mtime":1612498336261,"results":"51","hashOfConfig":"38"},{"size":756,"mtime":1612583993847,"results":"52","hashOfConfig":"38"},{"size":1403,"mtime":1611882380604,"results":"53","hashOfConfig":"38"},{"size":3653,"mtime":1612553879814,"results":"54","hashOfConfig":"38"},{"size":2448,"mtime":1612455584608,"results":"55","hashOfConfig":"38"},{"size":1423,"mtime":1612321099558,"results":"56","hashOfConfig":"38"},{"size":2397,"mtime":1612583914696,"results":"57","hashOfConfig":"38"},{"size":3133,"mtime":1612575104737,"results":"58","hashOfConfig":"38"},{"size":15523,"mtime":1612460809900,"results":"59","hashOfConfig":"38"},{"size":2527,"mtime":1612412782095,"results":"60","hashOfConfig":"38"},{"size":1934,"mtime":1612455571230,"results":"61","hashOfConfig":"38"},{"size":1354,"mtime":1612486141687,"results":"62","hashOfConfig":"38"},{"size":4176,"mtime":1612490981754,"results":"63","hashOfConfig":"38"},{"size":6066,"mtime":1612577219160,"results":"64","hashOfConfig":"38"},{"size":1368,"mtime":1612411421735,"results":"65","hashOfConfig":"38"},{"size":12437,"mtime":1612581111085,"results":"66","hashOfConfig":"38"},{"size":8929,"mtime":1612827624046,"results":"67","hashOfConfig":"38"},{"size":2545,"mtime":1612827174501,"results":"68","hashOfConfig":"38"},{"size":1792,"mtime":1612827289566,"results":"69","hashOfConfig":"38"},{"size":1418,"mtime":1612584879092,"results":"70","hashOfConfig":"38"},{"size":1202,"mtime":1612584625729,"results":"71","hashOfConfig":"38"},{"size":1424,"mtime":1612581111072,"results":"72","hashOfConfig":"38"},{"size":2641,"mtime":1612827477590,"results":"73","hashOfConfig":"38"},{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},"1vklk5b",{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"81","messages":"82","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"83","messages":"84","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"85","messages":"86","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"87","usedDeprecatedRules":"76"},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"104","usedDeprecatedRules":"76"},{"filePath":"105","messages":"106","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"107","messages":"108","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"109","messages":"110","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"111","usedDeprecatedRules":"76"},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"114","messages":"115","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"116","messages":"117","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"118","usedDeprecatedRules":"76"},{"filePath":"119","messages":"120","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"121","messages":"122","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"123","usedDeprecatedRules":"76"},{"filePath":"124","messages":"125","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"126","messages":"127","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"128","messages":"129","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"130","messages":"131","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"132","messages":"133","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"134","messages":"135","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"136","messages":"137","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"138","usedDeprecatedRules":"76"},{"filePath":"139","messages":"140","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"141","messages":"142","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"143","messages":"144","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"145","messages":"146","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"147","messages":"148","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"149","messages":"150","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"151","messages":"152","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\index.js",[],["153","154"],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\reportWebVitals.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\authReducer.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actionTypes.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\shared\\utility.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\containers\\App\\App.js",["155"],"import React, {useEffect, useState} from \"react\";\nimport './App.css';\nimport {Route, Switch, withRouter, Redirect} from 'react-router-dom';\nimport {connect} from \"react-redux\";\nimport * as actions from '../../store/actions/index';\nimport Navbar from \"../../components/UI/Navbar/Navbar\";\nimport Login from \"../../components/Auth/Login/Login\";\nimport Footer from \"../../components/UI/Footer/Footer\";\nimport Register from \"../../components/Auth/Register/Register\";\nimport Contact from \"../../components/Contact/Contact\";\nimport ShowCarousel from \"../../components/UI/Carousel/ShowCarousel\";\nimport Response from \"../../components/Response/Response\";\nimport {faExclamationCircle} from \"@fortawesome/free-solid-svg-icons\";\nimport ShowList from \"../../components/Shows/ShowsList\";\nimport ScheduleList from \"../../components/Schedule/ScheduleList\";\nimport CreateEditShow from \"../../components/Shows/CreateEditShow/CreateEditShow\";\nimport ShowDetails from \"../../components/Shows/ShowDetails/ShowDetails\";\nimport Seats from \"../../components/Schedule/Seats/Seats\";\nimport TicketCartModal from \"../../components/UI/Modal/TicketCartModal/TicketCartModal\";\n\nfunction App(props) {\n const [showTicketModal, setShowTicketModal] = useState(false);\n useEffect(() => {\n props.onTryAutoSignIn();\n }, []);\n\n const handleTicketModalClose = () => setShowTicketModal(false);\n const handleTicketModalShow = () => setShowTicketModal(true);\n\n let routes = (\n <Switch>\n <Route exact path=\"/login\" render={() => (\n !props.isAuthenticated\n ? <Login />\n : <Redirect to='/' />\n )} />\n\n <Route exact path=\"/register\" render={() => (\n !props.isAuthenticated\n ? <Register />\n : <Redirect to='/' />\n )} />\n <Route exact path=\"/\">\n <ShowCarousel/>\n </Route>\n <Route exact path=\"/shows\">\n <ShowList/>\n </Route>\n <Route exact path=\"/shows/create\" render={() => (\n props.isAuthenticated && props.role === \"ROLE_ADMIN\"\n ? <CreateEditShow isEdit={false}/>\n : <Redirect to='/' />\n )} />\n <Route exact path=\"/shows/:showId/edit\" render={() => (\n props.isAuthenticated && props.role === \"ROLE_ADMIN\"\n ? <CreateEditShow isEdit={true}/>\n : <Redirect to='/' />\n )} />\n <Route exact path=\"/shows/:showId/details\">\n <ShowDetails/>\n </Route>\n <Route exact path=\"/schedule\">\n <ScheduleList/>\n </Route>\n <Route exact path=\"/schedule/:showId/seats\" render={() => (\n props.isAuthenticated\n ? <Seats/>\n : <Redirect to='/' />\n )} />\n <Route exact path=\"/contact\">\n <Contact/>\n </Route>\n <Route exact path=\"/not-found\">\n <div className=\"container-md bg-white fullWidth overflow-hidden\">\n <Response icon={faExclamationCircle}\n text={\"Error 404: Page not found!\"}\n link={\"/\"}\n buttonText={\"Back to Home\"}/>\n </div>\n </Route>\n <Redirect to=\"/not-found\"/>\n </Switch>\n );\n\n return (\n\n <React.Fragment>\n <div className=\"background\"/>\n <Navbar handleTicketModalShow={handleTicketModalShow}/>\n {routes}\n <Footer/>\n <TicketCartModal show={showTicketModal} handleClose={handleTicketModalClose}/>\n </React.Fragment>\n );\n}\n\nconst mapStateToProps = state => {\n return {\n isAuthenticated: state.authReducer.token !== null,\n role: state.authReducer.role,\n token: state.authReducer.token\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n onTryAutoSignIn: () => dispatch(actions.authCheckState())\n };\n};\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(App));\n","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Navbar\\Navbar.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Auth\\Login\\Login.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Auth\\Register\\Register.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Contact\\Contact.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\index.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\authActions.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\config.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Carousel\\ShowCarousel.js",["156"],"import \"./ShowCarousel.css\";\r\nimport {Carousel} from \"react-bootstrap\";\r\nimport React, {useEffect} from \"react\";\r\nimport {connect} from 'react-redux';\r\nimport UnavailableImage from \"../../../assets/images/unavailable-image.jpg\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport * as actions from \"../../../store/actions\";\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\nimport Response from \"../../Response/Response\";\r\nimport {faSearch} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst ShowCarousel = (props) => {\r\n useEffect(() => {\r\n document.title = `Theater | Home`;\r\n props.fetchShows(\"\");\r\n }, []);\r\n\r\n return (\r\n <div className=\"container-md bg-white fullWidth overflow-hidden\">\r\n {props.loading ? <div className=\"text-center\" style={{\"marginTop\": \"20%\"}}>\r\n <ClipLoader\r\n size={150}\r\n color=\"rgb(40,68,79)\"/>\r\n </div> : <React.Fragment>\r\n {!props.error && props.shows.length !== 0 ? <Carousel >\r\n {props.shows.map((show, index) => <Carousel.Item key={show.id.id}>\r\n <img\r\n className=\"d-block w-100 carousel-image\"\r\n src={!show.image ? UnavailableImage : 'data:image/jpeg;base64,'+show.image}\r\n alt={show.title}\r\n />\r\n <Carousel.Caption>\r\n <h3>{show.title}</h3>\r\n <p>{show.description}</p>\r\n </Carousel.Caption>\r\n </Carousel.Item>)}\r\n </Carousel> : <Response icon={faSearch} text={\"No shows found\"} buttonText={null} link={null} />}\r\n </React.Fragment>}\r\n\r\n </div>\r\n\r\n\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n shows: state.theaterReducer.shows,\r\n loading: state.theaterReducer.loading,\r\n error: state.theaterReducer.error\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n fetchShows: () => dispatch(actions.fetchShows(\"\"))\r\n }\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ShowCarousel));\r\n\r\n","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Response\\Response.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Footer\\Footer.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\ShowsList.js",["157"],"import './ShowsList.css'\r\nimport {Link, withRouter} from \"react-router-dom\";\r\nimport * as actions from \"../../store/actions\";\r\nimport {connect} from \"react-redux\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport ShowCard from \"./ShowCard/ShowCard\";\r\nimport Search from \"./Search/Search\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faPlus, faSearch} from \"@fortawesome/free-solid-svg-icons\";\r\nimport Response from \"../Response/Response\";\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\nimport DeleteShowModal from \"../UI/Modal/DeleteShowModal/DeleteShowModal\";\r\n\r\nconst ShowList = (props) => {\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n const [currentTitle, setCurrentTitle] = useState(\"\");\r\n const [currentShowId, setCurrentShowId] = useState(\"\");\r\n\r\n const handleCloseDeleteShowModal = () => setShowDeleteModal(false);\r\n const handleShowDeleteShowModal = () => setShowDeleteModal(true);\r\n const handleWhichShow = (id, title) => {\r\n setCurrentShowId(id);\r\n setCurrentTitle(title);\r\n }\r\n\r\n useEffect(() => {\r\n document.title = `Theater | Shows`;\r\n props.fetchShows(\"\");\r\n }, []);\r\n\r\n const allShows = props.shows.map((show, index) => {\r\n return (\r\n <ShowCard show={show}\r\n key={show.id.id}\r\n handleShowDeleteShowModal={handleShowDeleteShowModal}\r\n handleWhichShow={handleWhichShow}/>\r\n );\r\n })\r\n\r\n return (\r\n <div className=\"container-md bg-white fullWidth\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-12 col-md-6 col-lg-6\" style={{textAlign: 'center', paddingTop: '35px'}}>\r\n <h2 className=\"mainTitle\">FEATURED SHOWS</h2>\r\n </div>\r\n <div id=\"cover\" className=\"col-12 col-sm-12 col-md-6 col-lg-6 mt-2\">\r\n <Search/>\r\n </div>\r\n </div>\r\n {props.loading ? <div className=\"text-center w-100\" style={{\"marginTop\": \"20%\"}}>\r\n <ClipLoader\r\n size={150}\r\n color=\"rgb(40,68,79)\"/>\r\n </div> : <React.Fragment>{props.shows.length !== 0 && !props.error ? <div className=\"cards mt-2 w-100\">\r\n {allShows}\r\n <DeleteShowModal show={showDeleteModal} handleClose={handleCloseDeleteShowModal} toShows={()=>{}} title={currentTitle} id={currentShowId}/>\r\n </div>\r\n : <div className=\"w-100 text-center\">\r\n <Response icon={faSearch}\r\n text={\"No shows found\"}\r\n link={null}\r\n buttonText={null}/>\r\n </div>} {props.role === \"ROLE_ADMIN\" ? <div className=\"w-100 text-right\">\r\n <Link to={\"/shows/create\"} className=\"btn btn-lg btn-primary mb-4\"\r\n style={{fontSize: '1.3em', \"marginRight\": \"10.5%\"}}>\r\n <FontAwesomeIcon icon={faPlus}/> Create Show\r\n </Link>\r\n </div>: null}</React.Fragment>}\r\n\r\n </div>\r\n )\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n shows: state.theaterReducer.shows,\r\n loading: state.theaterReducer.loading,\r\n error: state.theaterReducer.error,\r\n role: state.authReducer.role\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n fetchShows: () => dispatch(actions.fetchShows(\"\"))\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ShowList));\r\n","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\ShowCard\\ShowCard.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\Search\\Search.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\ScheduleList.js",["158"],"import './ScheduleList.css';\r\nimport {withRouter} from \"react-router-dom\";\r\nimport React, {useEffect} from \"react\";\r\nimport ScheduleItem from \"./ScheduleItem/ScheduleItem\";\r\nimport * as actions from \"../../store/actions\";\r\nimport {connect} from \"react-redux\";\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\nimport {faInfoCircle} from \"@fortawesome/free-solid-svg-icons\";\r\nimport Response from \"../Response/Response\";\r\n\r\nconst ScheduleList = (props) => {\r\n useEffect(() => {\r\n // Update the document title using the browser API\r\n document.title = `Theater | Schedule`;\r\n props.fetchShows();\r\n props.resetErrorAndSuccess();\r\n }, []);\r\n\r\n const scheduledShows = props.shows.filter(s=>Date.now()<new Date(s.from)).map((show, index)=>{\r\n return(\r\n <ScheduleItem show={show} key={show.id.id}/>\r\n );\r\n })\r\n\r\n return (\r\n <div className=\"container-md bg-white fullWidth\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-12 col-md-6 col-lg-6\"\r\n style={{textAlign: 'center', paddingTop: '35px', \"paddingBottom\": '35px'}}>\r\n <h2 className=\"mainTitle\">\r\n UPCOMING SHOWS</h2>\r\n </div>\r\n </div>\r\n {props.loading ? <div className=\"text-center w-100\" style={{\"marginTop\": \"20%\"}}>\r\n <ClipLoader\r\n size={150}\r\n color=\"rgb(40,68,79)\"/>\r\n </div> : <React.Fragment>\r\n {scheduledShows.length===0 ? <Response icon={faInfoCircle} text=\"No upcoming shows in the next period\" buttonText={null} link={null}/> : <div className=\"container\" style={{paddingBottom: '50px'}}>\r\n\r\n {scheduledShows}\r\n\r\n </div>}\r\n\r\n </React.Fragment>}\r\n\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n shows: state.theaterReducer.shows,\r\n loading: state.theaterReducer.loading,\r\n error: state.theaterReducer.error\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n fetchShows: () => dispatch(actions.fetchShows(\"\")),\r\n resetErrorAndSuccess: () => dispatch(actions.resetErrorAndSuccess())\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ScheduleList));\r\n\r\n","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\ScheduleItem\\ScheduleItem.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\CreateEditShow\\CreateEditShow.js",["159","160","161","162"],"import './CreateEditShow.css';\r\nimport {Link, Redirect, useHistory, useParams, withRouter} from \"react-router-dom\";\r\nimport {connect} from 'react-redux';\r\nimport {Form} from \"react-bootstrap\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faPlus, faTrash} from \"@fortawesome/free-solid-svg-icons\";\r\nimport CreateSceneModal from \"../../UI/Modal/CreateSceneModal/CreateSceneModal\";\r\nimport CreateActorModal from \"../../UI/Modal/CreateActorModal/CreateActorModal\";\r\nimport * as actions from \"../../../store/actions\";\r\nimport DeleteActorModal from \"../../UI/Modal/DeleteActorModal/DeleteActorModal\";\r\n\r\nconst CreateEditShow = (props) => {\r\n const {showId} = useParams();\r\n const [showSceneModal, setShowSceneModal] = useState(false);\r\n const [showActorModal, setShowActorModal] = useState(false);\r\n const [actorsCheck, setActorsCheck] = useState(false);\r\n const [showDeleteActorModal, setShowDeleteActorModal] = useState(false);\r\n const [currentActor, setCurrentActor] = useState({fullName: {firstName: \"\", lastName: \"\"}});\r\n const [show, setShow] = useState(\r\n {\r\n title: \"\",\r\n description: \"\",\r\n director: \"\",\r\n setDesigner: \"\",\r\n costumeDesigner: \"\",\r\n from: \"\",\r\n duration: \"\",\r\n ticketPrice: {\r\n currency: \"MKD\",\r\n amount: \"\"\r\n },\r\n actors: []\r\n\r\n }\r\n )\r\n\r\n\r\n const handleCloseSceneModal = () => setShowSceneModal(false);\r\n const handleCloseActorModal = () => setShowActorModal(false);\r\n const handleCloseDeleteActorModal = () => {\r\n setCurrentActor({fullName: {firstName: \"\", lastName: \"\"}});\r\n setShowDeleteActorModal(false);\r\n }\r\n\r\n useEffect(() => {\r\n // Update the document title using the browser API\r\n document.title = `Theater | ${!props.isEdit ? \"Create Show\" : \"Edit Show\"}`;\r\n props.fetchScenes();\r\n props.fetchActors();\r\n if(props.isEdit) {\r\n let tmpShow = props.shows.find(s=>s.id.id === showId);\r\n let dateTimeParts = tmpShow.from.split(\"T\");\r\n setShow(tmpShow);\r\n document.getElementById(\"showDate\").value = dateTimeParts[0];\r\n let time = dateTimeParts[1].split(\":\");\r\n document.getElementById(\"showTime\").value = time[0] + \":\" + time[1];\r\n document.getElementById(\"showScene\").value = tmpShow.scene.id.id;\r\n\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Update the document title using the browser API\r\n if(!actorsCheck && document.getElementById(\"actorCheckboxes\").hasChildNodes() && props.isEdit){\r\n setActorsCheck(true);\r\n let tmpShow = props.shows.find(s=>s.id.id === showId);\r\n setActorCheckboxes(tmpShow);\r\n }\r\n });\r\n\r\n\r\n\r\n\r\n const todayDate = new Date().toLocaleDateString().split(\"/\");\r\n\r\n const year = todayDate[2];\r\n const month = todayDate[0].length !== 1 ? todayDate[0] : (\"0\" + todayDate[0]);\r\n const day = todayDate[1].length !== 1 ? todayDate[1] : (\"0\" + todayDate[1]);\r\n\r\n const handleInputChange = (e) => {\r\n setShow({...show, [e.target.name]: e.target.value});\r\n }\r\n\r\n const setActorCheckboxes = (tmpShow) => {\r\n\r\n for(let i = 0 ; i<tmpShow.actors.length; i++) {\r\n document.getElementById(tmpShow.actors[i].id.id).checked = true;\r\n }\r\n }\r\n\r\n const extractSelectedActors = () => {\r\n const selectedActors = [];\r\n const actorCheckboxes = document.getElementsByName(\"actor\");\r\n for(let i = 0 ; i<actorCheckboxes.length;i++) {\r\n if (actorCheckboxes[i].checked) {\r\n selectedActors.push(props.actors.find(a=>a.id.id === actorCheckboxes[i].id))\r\n }\r\n }\r\n return selectedActors\r\n }\r\n\r\n\r\n const handleCreateEditShow = (e) => {\r\n e.preventDefault();\r\n const dateAndTime = e.target.showDate.value + \"T\" + e.target.showTime.value + \":00\";\r\n const tmpShow = {...show, from: dateAndTime, scene: props.scenes.find(s => s.id.id === e.target.showScene.value), actors: extractSelectedActors()};\r\n let formData = new FormData();\r\n formData.append('show', JSON.stringify(tmpShow));\r\n let image = e.target.showPicture.files[0];\r\n if(image) {\r\n formData.append('image', image)\r\n }\r\n !props.isEdit ? props.createShow(formData) : props.editShow(showId, formData);\r\n props.history.push('/shows');\r\n }\r\n\r\n\r\n const renderScenes = props.scenes.map((scene, idx) => {\r\n return (\r\n <option key={scene.id.id} value={scene.id.id}>{scene.name} ({scene.capacity})</option>\r\n );\r\n });\r\n\r\n const renderActors = props.actors.map((actor, idx) => {\r\n return (\r\n <div className=\"checkbox\" key={actor.id.id}>\r\n <label><input type=\"checkbox\" name=\"actor\" id={actor.id.id}\r\n style={{marginRight: '7px'}}/>{actor.fullName.firstName} {actor.fullName.lastName}\r\n <button onClick={(e) => {\r\n e.preventDefault();\r\n setCurrentActor(actor);\r\n setShowDeleteActorModal(true);\r\n }} className=\"btn btn-danger btn-sm\" style={{marginLeft: '15px'}}>\r\n <FontAwesomeIcon icon={faTrash}/>\r\n </button>\r\n </label>\r\n </div>\r\n );\r\n\r\n });\r\n\r\n return (\r\n <div className=\"container-md bg-white fullWidth\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-12 col-md-6 col-lg-6\" id=\"titleArea\">\r\n <h2 className=\"mainTitle\">\r\n {!props.isEdit ? \"Create Show\" : \"Edit Show\"}</h2>\r\n </div>\r\n </div>\r\n\r\n <Form className=\"container\" onSubmit={handleCreateEditShow}>\r\n <Form.Group controlId=\"title\">\r\n <Form.Label>Show title</Form.Label>\r\n <Form.Control type=\"text\"\r\n name=\"title\"\r\n value={show.title}\r\n onChange={handleInputChange}\r\n placeholder=\"Enter show title\" required/>\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"description\">\r\n <Form.Label>Show description</Form.Label>\r\n <Form.Control name=\"description\"\r\n value={show.description}\r\n onChange={handleInputChange}\r\n as=\"textarea\"\r\n rows={4}\r\n placeholder=\"Enter show description\" required/>\r\n </Form.Group>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-md-6 col-12\">\r\n <Form.Group controlId=\"director\">\r\n <Form.Label>Director</Form.Label>\r\n <Form.Control type=\"text\"\r\n name=\"director\"\r\n value={show.director}\r\n onChange={handleInputChange}\r\n placeholder=\"Enter show director\" required/>\r\n </Form.Group>\r\n </div>\r\n <div className=\"col-md-3 col-sm-6 col-12\">\r\n <Form.Group controlId=\"setDesigner\">\r\n <Form.Label>Set designer</Form.Label>\r\n <Form.Control type=\"text\"\r\n name=\"setDesigner\"\r\n value={show.setDesigner}\r\n onChange={handleInputChange}\r\n placeholder=\"Enter set designer\" />\r\n </Form.Group>\r\n </div>\r\n <div className=\"col-md-3 col-sm-6 col-12\">\r\n <Form.Group controlId=\"costumeDesigner\">\r\n <Form.Label>Costume designer</Form.Label>\r\n <Form.Control type=\"text\"\r\n name=\"costumeDesigner\"\r\n value={show.costumeDesigner}\r\n onChange={handleInputChange}\r\n placeholder=\"Enter costume designer\" />\r\n </Form.Group>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <span>Actors:</span>\r\n </div>\r\n <div className=\"col-12\">\r\n <div className=\"row\">\r\n <div className=\"col-10\">\r\n <div className=\"checkbox-list\" id=\"actorCheckboxes\">\r\n {renderActors}\r\n </div>\r\n </div>\r\n <div className=\"col-2 text-center m-auto\">\r\n <button type=\"button\" onClick={() => setShowActorModal(true)}\r\n className=\"btn btn-sm btn-primary p-2\"\r\n style={{borderRadius: '50%', marginBottom: '20%'}}><FontAwesomeIcon icon={faPlus} size=\"lg\"/>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row\">\r\n <div className=\"col-10\">\r\n\r\n <label htmlFor=\"showScene\">Select scene:</label>\r\n <select className=\"form-control\" name=\"showScene\" id=\"showScene\">\r\n {renderScenes}\r\n </select>\r\n </div>\r\n <div className=\"col-2 text-center m-auto\">\r\n <button id=\"createSceneButton\" type=\"button\" onClick={() => setShowSceneModal(true)}\r\n className=\"btn btn-sm btn-primary p-2 mt-4\" style={{borderRadius: '50%'}}><FontAwesomeIcon icon={faPlus} size=\"lg\"/> </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row mt-4\">\r\n <div className=\"col-lg-6 col-12\">\r\n <Form.Group controlId=\"showDate\">\r\n <Form.Label>Date</Form.Label>\r\n <Form.Control type=\"date\"\r\n min={year + \"-\" + month + \"-\" + day}\r\n name=\"showDate\" required/>\r\n </Form.Group>\r\n </div>\r\n <div className=\"col-lg-3 col-sm-6 col-12\">\r\n <Form.Group controlId=\"showTime\">\r\n <Form.Label>Time</Form.Label>\r\n <Form.Control type=\"time\"\r\n name=\"showTime\" required/>\r\n </Form.Group>\r\n </div>\r\n <div className=\"col-lg-3 col-sm-6 col-12\">\r\n <Form.Group controlId=\"duration\">\r\n <Form.Label>Duration (in minutes)</Form.Label>\r\n <Form.Control type=\"number\"\r\n value={show.duration}\r\n onChange={handleInputChange}\r\n name=\"duration\"\r\n min=\"1\" placeholder=\"Enter show duration\" required/>\r\n </Form.Group>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-md-6 col-sm-6 col-12\">\r\n <Form.Group controlId=\"ticketPrice\">\r\n <Form.Label>Ticket price</Form.Label>\r\n <Form.Control type=\"number\"\r\n value={show.ticketPrice.amount}\r\n onChange={(e) => setShow({...show, ticketPrice: {...show.ticketPrice, amount: e.target.value}})}\r\n name=\"ticketPrice\" placeholder=\"Enter ticket price for this show\" min=\"1\" required/>\r\n </Form.Group>\r\n </div>\r\n <div className=\"col-md-3 col-sm-6 col-12\">\r\n <Form.Group controlId=\"currency\">\r\n <Form.Label>Currency</Form.Label>\r\n <Form.Control as=\"select\"\r\n onChange={(e) => setShow({...show, ticketPrice: {...show.ticketPrice, currency: e.target.value}})}\r\n value={show.ticketPrice.currency}\r\n name=\"currency\">\r\n <option>MKD</option>\r\n <option>EUR</option>\r\n <option>USD</option>\r\n </Form.Control>\r\n </Form.Group>\r\n </div>\r\n\r\n <div className=\"col-md-3 col-12\">\r\n <Form.Group>\r\n <Form.File className=\"mt-1\" id=\"showPicture\" name=\"showPicture\" label=\"Show picture\" accept=\"image/*\"/>\r\n </Form.Group>\r\n </div>\r\n </div>\r\n\r\n <div className=\"row d-flex flex-row-reverse mr-3 mt-4 mb-4\">\r\n <button type=\"submit\" className=\"btn btn-lg btn-primary\">{!props.isEdit ? \"Create Show\" : \"Edit Show\"}</button>\r\n <div className=\"center mr-3\">\r\n <Link to={\"/shows\"} className=\"btn btn-secondary btn-lg\">Back</Link>\r\n </div>\r\n </div>\r\n </Form>\r\n <CreateSceneModal show={showSceneModal} handleClose={handleCloseSceneModal}/>\r\n <CreateActorModal show={showActorModal} handleClose={handleCloseActorModal}/>\r\n <DeleteActorModal show={showDeleteActorModal} handleClose={handleCloseDeleteActorModal} actor={currentActor}/>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n shows: state.theaterReducer.shows,\r\n scenes: state.theaterReducer.scenes,\r\n actors: state.theaterReducer.actors\r\n };\r\n};\r\n\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n createShow: (formData) => dispatch(actions.createShow(formData)),\r\n editShow: (showId, formData) => dispatch(actions.editShow(showId, formData)),\r\n fetchScenes: () => dispatch(actions.fetchScenes()),\r\n fetchActors: () => dispatch(actions.fetchActors()),\r\n deleteActor: (actorId) => dispatch(actions.deleteActor(actorId))\r\n };\r\n};\r\n\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(CreateEditShow));\r\n","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\CreateSceneModal\\CreateSceneModal.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\CreateActorModal\\CreateActorModal.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\DeleteShowModal\\DeleteShowModal.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\theaterReducer.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\theaterActions.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\DeleteActorModal\\DeleteActorModal.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Shows\\ShowDetails\\ShowDetails.js",["163"],"import './ShowDetails.css';\r\nimport React, {useEffect, useState} from \"react\";\r\nimport {Link, useParams, withRouter} from \"react-router-dom\";\r\nimport * as actions from \"../../../store/actions\";\r\nimport {connect} from \"react-redux\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faEdit, faStar, faTicketAlt, faTrash} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faStar as faStarEmpty} from '@fortawesome/free-regular-svg-icons'\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\nimport Rating from \"react-rating\";\r\nimport UnavailableImage from \"../../../assets/images/unavailable-image.jpg\";\r\nimport DeleteShowModal from \"../../UI/Modal/DeleteShowModal/DeleteShowModal\";\r\n\r\nconst ShowDetails = (props) => {\r\n const {showId} = useParams();\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n useEffect(() => {\r\n props.fetchShow(showId);\r\n props.didRateShow(showId);\r\n props.getAvgAndCountForShow(showId);\r\n }, []);\r\n\r\n const handleRatingChange = (value) => {\r\n if(props.isAuthenticated) {\r\n const data = {\r\n userId: props.id,\r\n showId: showId,\r\n rating: value\r\n }\r\n props.rateShow(data);\r\n }\r\n else{\r\n props.history.push(\"/login\");\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"container-md bg-white fullWidth\">\r\n {!props.loading && props.show.title ? <div className=\"container mb-4\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-sm-12 col-md-6 col-lg-6\" id=\"titleArea\">\r\n <h2 className=\"mainTitle\">{props.show.title} {props.role === \"ROLE_ADMIN\" ? <React.Fragment>\r\n <Link to={\"/shows/\" + (showId) + \"/edit\"} className=\"btn btn-sm btn-primary\"\r\n style={{fontSize: '27px', marginRight: '10px'}}><FontAwesomeIcon icon={faEdit}/>\r\n </Link>\r\n <Link to={\"/shows\"} onClick={(e) => {\r\n e.preventDefault();\r\n setShowDeleteModal(true)\r\n }} className=\"btn btn-sm delete\" style={{fontSize: '27px'}}>\r\n <FontAwesomeIcon icon={faTrash}/>\r\n </Link>\r\n </React.Fragment> : null}</h2>\r\n\r\n\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <img className=\"col-xl-6\"\r\n src={!props.show.image ? UnavailableImage : 'data:image/jpeg;base64,' + props.show.image}\r\n alt={props.show.title}/>\r\n\r\n <div className=\"col-xl-6 details\" style={{paddingLeft: '4%', paddingTop: '3%'}}>\r\n\r\n <div className=\"row\">\r\n {props.role === \"ROLE_ADMIN\" ? <div className=\"col-12\">\r\n <div className=\"row float-right\" style={{marginTop: '17px', marginRight: '10px'}}>\r\n\r\n\r\n </div>\r\n </div> : null}\r\n\r\n <div className=\"col-12\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-7 \">\r\n <span style={{\r\n fontWeight: '500',\r\n fontSize: '1.8em',\r\n clear: 'left'\r\n }}>Ticket price: {props.show.ticketPrice.amount} {props.show.ticketPrice.currency}</span>\r\n </div>\r\n <div className=\"col-5 m-auto text-center\" style={{paddingTop: '10px'}}>\r\n\r\n\r\n <div id=\"starRating\">\r\n <Rating\r\n onChange={handleRatingChange}\r\n fractions={2}\r\n initialRating={props.averageRating}\r\n readonly={props.alreadyRated}\r\n emptySymbol=<FontAwesomeIcon color=\"rgb(250, 189, 100)\" icon={faStarEmpty} size=\"2x\"/>\r\n fullSymbol=<FontAwesomeIcon color=\"rgb(250, 189, 100)\" icon={faStar} size=\"2x\"/>\r\n />\r\n <div id=\"ratingText\">({props.averageRating}/5) out of {props.totalRatings} rating(s)</div>\r\n {props.alreadyRated ? <span className=\"text-success\">Thank you for your feedback!</span> : null}\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n <hr style={{paddingBottom: '8%', borderTop: '2px solid #555555'}}/>\r\n <div className=\"row\">\r\n <div className=\"col-12\">\r\n <div className=\"row\">\r\n <div className=\"col-xl-7 col-12\">\r\n <span className=\"showDetailNames\"\r\n style={{position: 'relative', bottom: '20px'}}>Director: </span>\r\n <span\r\n style={{\r\n position: 'relative',\r\n bottom: '20px',\r\n whiteSpace: 'nowrap'\r\n }}>{props.show.director}</span>\r\n <br/>\r\n\r\n <span\r\n className={\"showDetailNames \" + (props.show.setDesigner === \"\" ? \"d-none\" : \"\")}>Set Designer: </span><span\r\n style={{whiteSpace: 'nowrap'}}>{props.show.setDesigner}</span>\r\n\r\n\r\n <br/>\r\n <span\r\n className={\"showDetailNames \" + (props.show.setDesigner === \"\" ? \"d-none\" : \"\")}>Costume Designer: </span><span\r\n style={{whiteSpace: 'nowrap'}}>{props.show.costumeDesigner}</span>\r\n <br/>\r\n <span className=\"showDetailNames\">Duration: </span>\r\n <span\r\n style={{whiteSpace: 'nowrap'}}>{props.show.duration}</span>\r\n <br/>\r\n <span className=\"showDetailNames\">Scene: </span>\r\n <span\r\n style={{whiteSpace: 'nowrap'}}>{props.show.scene ? props.show.scene.name : null}</span>\r\n <br/>\r\n </div>\r\n <div className=\"col-xl-5 col-12 my-3\">\r\n <div className=\"panel panel-primary\">\r\n <div className=\"card-header\"\r\n style={{\r\n padding: '0.45rem!important',\r\n textAlign: 'center',\r\n backgroundColor: 'rgb(40,68,79)',\r\n color: 'white',\r\n fontSize: '1.3em'\r\n }}>\r\n Actors\r\n </div>\r\n <ul className=\"list-group\"\r\n style={{maxHeight: '147px', overflowY: 'scroll'}}>\r\n {props.show.actors ? props.show.actors.map((actor, index) => {\r\n return (\r\n <li key={actor.id.id}\r\n className=\"list-group-item\">{actor.fullName.firstName} {actor.fullName.lastName}</li>\r\n );\r\n }) : null}\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div className=\"col-12 mt-4\">\r\n <div className=\"card\">\r\n <div className=\"card-header\"\r\n style={{\r\n padding: '0.45rem!important',\r\n textAlign: 'center',\r\n backgroundColor: 'rgb(40,68,79)',\r\n color: 'white',\r\n fontSize: '1.3em'\r\n }}>\r\n Description\r\n </div>\r\n <div className=\"card-body\">\r\n <p>{props.show.description}</p>\r\n\r\n </div>\r\n </div>\r\n <div className=\"row justify-content-end mt-4\">\r\n <Link to={\"/shows\"}\r\n style={{verticalAlign: 'middle'}}\r\n type=\"button\" className=\"btn btn-secondary btn-lg\">Back\r\n </Link>\r\n {Date.now()<new Date(props.show.from) ? <Link to={props.isAuthenticated ? \"/schedule/\" + showId + \"/seats\" : \"/login\"}\r\n className=\"nav-link hoverableBox ml-3 mr-3 buyTicketsButton\"><FontAwesomeIcon icon={faTicketAlt} /> Reserve</Link> : null}\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <DeleteShowModal show={showDeleteModal} handleClose={()=>setShowDeleteModal(false)} toShows={()=>props.history.push(\"/shows\")} title={props.show.title} id={props.show.id.id}/>\r\n </div> : <div className=\"text-center w-100\" style={{\"marginTop\": \"20%\"}}>\r\n <ClipLoader\r\n size={150}\r\n color=\"rgb(40,68,79)\"/>\r\n </div>\r\n }\r\n\r\n </div>\r\n )\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n isAuthenticated: state.authReducer.token !== null,\r\n show: state.theaterReducer.currentShow,\r\n loading: state.theaterReducer.loadingShow,\r\n role: state.authReducer.role,\r\n id: state.authReducer.id,\r\n averageRating: state.ratingReducer.average,\r\n totalRatings: state.ratingReducer.total,\r\n alreadyRated: state.ratingReducer.alreadyRated\r\n };\r\n};\r\n\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n fetchShow: (showId) => dispatch(actions.fetchShow(showId)),\r\n deleteShow: (showId) => dispatch(actions.deleteShowById(showId)),\r\n didRateShow: (showId) => dispatch(actions.didUserRateShow(showId)),\r\n getAvgAndCountForShow: (showId) => dispatch(actions.avgAndCountForShow(showId)),\r\n rateShow: (data) => dispatch(actions.rateShow(data))\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ShowDetails));\r\n","C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\Seats\\Seats.js",["164"],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\reservationReducer.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\reservationActions.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\Schedule\\Seats\\Seat\\Seat.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\reducers\\ratingReducer.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\store\\actions\\ratingActions.js",[],"C:\\Users\\Pavel\\Documents\\Programming projects\\React projects\\theater-emt\\src\\components\\UI\\Modal\\TicketCartModal\\TicketCartModal.js",["165"],{"ruleId":"166","replacedBy":"167"},{"ruleId":"168","replacedBy":"169"},{"ruleId":"170","severity":1,"message":"171","line":25,"column":8,"nodeType":"172","endLine":25,"endColumn":10,"suggestions":"173"},{"ruleId":"170","severity":1,"message":"171","line":16,"column":8,"nodeType":"172","endLine":16,"endColumn":10,"suggestions":"174"},{"ruleId":"170","severity":1,"message":"171","line":29,"column":8,"nodeType":"172","endLine":29,"endColumn":10,"suggestions":"175"},{"ruleId":"170","severity":1,"message":"171","line":17,"column":8,"nodeType":"172","endLine":17,"endColumn":10,"suggestions":"176"},{"ruleId":"177","severity":1,"message":"178","line":2,"column":15,"nodeType":"179","messageId":"180","endLine":2,"endColumn":23},{"ruleId":"177","severity":1,"message":"181","line":2,"column":25,"nodeType":"179","messageId":"180","endLine":2,"endColumn":35},{"ruleId":"170","severity":1,"message":"182","line":61,"column":8,"nodeType":"172","endLine":61,"endColumn":10,"suggestions":"183"},{"ruleId":"170","severity":1,"message":"184","line":63,"column":5,"nodeType":"179","endLine":63,"endColumn":14,"suggestions":"185"},{"ruleId":"170","severity":1,"message":"182","line":22,"column":8,"nodeType":"172","endLine":22,"endColumn":10,"suggestions":"186"},{"ruleId":"170","severity":1,"message":"182","line":25,"column":8,"nodeType":"172","endLine":25,"endColumn":10,"suggestions":"187"},{"ruleId":"177","severity":1,"message":"188","line":10,"column":11,"nodeType":"179","messageId":"180","endLine":10,"endColumn":29},"no-native-reassign",["189"],"no-negated-in-lhs",["190"],"react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'props'. Either include it or remove the dependency array. However, 'props' will change when *any* prop changes, so the preferred fix is to destructure the 'props' object outside of the useEffect call and refer to those specific props inside useEffect.","ArrayExpression",["191"],["192"],["193"],["194"],"no-unused-vars","'Redirect' is defined but never used.","Identifier","unusedVar","'useHistory' is defined but never used.","React Hook useEffect has missing dependencies: 'props' and 'showId'. Either include them or remove the dependency array. However, 'props' will change when *any* prop changes, so the preferred fix is to destructure the 'props' object outside of the useEffect call and refer to those specific props inside useEffect.",["195"],"React Hook useEffect contains a call to 'setActorsCheck'. Without a list of dependencies, this can lead to an infinite chain of updates. To fix this, pass [actorsCheck, props.isEdit, props.shows, showId] as a second argument to the useEffect Hook.",["196"],["197"],["198"],"'handleDeleteButton' is assigned a value but never used.","no-global-assign","no-unsafe-negation",{"desc":"199","fix":"200"},{"desc":"199","fix":"201"},{"desc":"199","fix":"202"},{"desc":"199","fix":"203"},{"desc":"204","fix":"205"},{"desc":"206","fix":"207"},{"desc":"204","fix":"208"},{"desc":"204","fix":"209"},"Update the dependencies array to be: [props]",{"range":"210","text":"211"},{"range":"212","text":"211"},{"range":"213","text":"211"},{"range":"214","text":"211"},"Update the dependencies array to be: [props, showId]",{"range":"215","text":"216"},"Add dependencies array: [actorsCheck, props.isEdit, props.shows, showId]",{"range":"217","text":"218"},{"range":"219","text":"216"},{"range":"220","text":"216"},[1299,1301],"[props]",[633,635],[1201,1203],[668,670],[2542,2544],"[props, showId]",[2899,2899],", [actorsCheck, props.isEdit, props.shows, showId]",[1008,1010],[1106,1108]]