{"version":3,"sources":["../node_modules/onsenui/css lazy /^/.//.*onsen/-css/-components/.css$/ groupOptions: {} namespace object","js/store/constants/actionTypes.js","js/store/reducers/app.js","js/store/constants/misc.js","js/util/env.js","js/util/context.js","js/store/reducers/auth.js","js/store/constants/statusCodes.js","js/util/reducer-helpers.js","js/util/i18n.js","js/i18n/en.js","js/util/index.js","js/store/reducers/items.js","js/store/reducers/localChanges.js","js/store/reducers/userSettings.js","js/store/reducers/index.js","js/store/store.js","img/logos/dp-logo.png","js/components/SplashScreen.js","js/store/actions/app.js","js/store/actions/userSettings.js","js/util/ui.js","js/util/error.js","js/store/constants/errorCodes.js","js/components/Pages/Login.js","js/containers/Pages/Login.js","js/store/actions/auth.js","js/store/actions/games.js","js/components/Toolbar.js","js/components/PullHook.js","js/components/Controls/HoldButton.js","js/components/Pages/Supplementary.js","js/components/Pages/Game.js","js/containers/Pages/Game.js","js/store/defaults/gameReportReferee.js","js/components/Controls/TripleSwitch.js","js/components/GameReportReferee/Checklist.js","js/components/GameReportReferee/Scores.js","js/components/Controls/AutoComplete.js","js/components/Controls/AutoTextarea.js","js/components/Controls/ColorSelect.js","js/components/Pages/GameReportReferee.js","js/containers/Pages/GameReportReferee.js","js/store/actions/gameReportReferee.js","js/store/actions/localChanges.js","js/store/actions/referees.js","js/components/ListItems/Game.js","js/components/Pages/Games.js","js/containers/Pages/Games.js","js/components/Modal.js","js/components/PlayerImage.js","js/components/ListItems/Player.js","js/components/Pages/PlayerListSettings.js","js/containers/Pages/PlayerListSettings.js","js/components/PlayerList.js","js/containers/PlayerList.js","js/components/Pages/RosterPlayers.js","js/containers/Pages/RosterPlayers.js","js/store/actions/rosters.js","js/components/Pages/Eligibles.js","js/containers/Pages/Eligibles.js","js/store/actions/eligibles.js","js/components/Pages/LineupEditor.js","js/components/Pages/Rosters.js","js/containers/Pages/Rosters.js","js/components/ListItems/Season.js","js/components/Pages/Seasons.js","js/containers/Pages/Seasons.js","js/store/actions/seasons.js","js/components/Navigator.js","js/containers/Navigator.js","js/components/ErrorBoundary.js","js/components/Pages/UserSettings.js","js/containers/Pages/UserSettings.js","js/components/Menu.js","js/hooks/useShouldShowPrompt.js","js/hooks/useIOSInstallPrompt.js","js/hooks/useWebInstallPrompt.js","js/components/PWAInstaller.js","js/components/App.js","js/containers/App.js","serviceWorkerRegistration.js","js/util/ajax.js","js/services/Api.js","js/store/sagas/auth.js","js/store/sagas/items.js","js/store/sagas/index.js","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","CHANGE_PAGE","DISMISS_ERROR","DISMISS_LOADING_SUCCEEDED","IS_LOADING","SET_ERROR","SET_LOADING_SUCCEEDED","LOGIN_FAILED","LOGIN_REQUESTED","LOGIN_SUCCEEDED","LOGOUT_FAILED","LOGOUT_REQUESTED","LOGOUT_SUCCEEDED","RESET_PASSWORD","RESETTING_PASSWORD_FAILED","RESETTING_PASSWORD_SUCCEEDED","SEND_PASSWORD_RECOVERY","SENDING_PASSWORD_RECOVERY_FAILED","SENDING_PASSWORD_RECOVERY_SUCCEEDED","SET_CONTEXT","ELIGIBLE_PLAYERS_REQUESTED","LOADING_ELIGIBLE_PLAYERS_FAILED","LOADING_ELIGIBLE_PLAYERS_SUCCEEDED","ELIGIBLE_TEAM_OFFICIALS_REQUESTED","LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED","LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED","EXTENDED_ELIGIBLE_PLAYERS_REQUESTED","LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED","LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED","EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED","LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED","LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED","CONFIRM_GAME_REPORT_REFEREE","CONFIRMING_GAME_REPORT_REFEREE_FAILED","CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED","OVERWRITE_GAME_REPORT_REFEREE","OVERWRITING_GAME_REPORT_REFEREE_FAILED","OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED","SAVE_GAME_REPORT_REFEREE_DRAFT","SAVING_GAME_REPORT_REFEREE_DRAFT_FAILED","SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED","SIGN_GAME_REPORT_REFEREE","SIGNING_GAME_REPORT_REFEREE_FAILED","SIGNING_GAME_REPORT_REFEREE_SUCCEEDED","GAME_REPORT_REFEREE_REQUESTED","GAMES_REQUESTED","LOADING_GAME_REPORT_REFEREE_FAILED","LOADING_GAME_REPORT_REFEREE_SUCCEEDED","LOADING_GAMES_FAILED","LOADING_GAMES_SUCCEEDED","LOADING_SCORES_FAILED","LOADING_SCORES_SUCCEEDED","SCORES_REQUESTED","SET_ACTIVE_GAME","SIGN_SUPPLEMENTARY","SIGNING_SUPPLEMENTARY_FAILED","SIGNING_SUPPLEMENTARY_SUCCEEDED","CONFIRM_ROSTER_PLAYER","DISMISS_GAME_REPORT_REFEREE_CHANGES","UPDATE_GAME_REPORT_REFEREE","LOADING_REFEREES_FAILED","LOADING_REFEREES_SUCCEEDED","REFEREES_REQUESTED","ADD_PLAYERS_TO_ROSTER","ADDING_PLAYERS_TO_ROSTER_FAILED","ADDING_PLAYERS_TO_ROSTER_SUCCEEDED","CONFIRM_ROSTER_PLAYERS","CONFIRMING_ROSTER_PLAYERS_FAILED","CONFIRMING_ROSTER_PLAYERS_SUCCEEDED","EDIT_ROSTER_PLAYER","EDIT_ROSTER_PLAYERS","EDITING_ROSTER_PLAYER_FAILED","EDITING_ROSTER_PLAYERS_FAILED","EDITING_ROSTER_PLAYER_SUCCEEDED","EDITING_ROSTER_PLAYERS_SUCCEEDED","LOADING_ROSTERS_FAILED","LOADING_ROSTERS_SUCCEEDED","PUBLISH_ROSTER","PUBLISHING_ROSTER_FAILED","PUBLISHING_ROSTER_SUCCEEDED","REMOVE_ROSTER_PLAYER","REMOVING_ROSTER_PLAYER_FAILED","REMOVING_ROSTER_PLAYER_SUCCEEDED","ROSTERS_REQUESTED","SET_ROSTER_STATUS","SETTING_ROSTER_STATUS_FAILED","SETTING_ROSTER_STATUS_SUCCEEDED","TAKE_FACE_CHECK","TAKING_FACE_CHECK_FAILED","TAKING_FACE_CHECK_SUCCEEDED","LOADING_SEASONS_FAILED","LOADING_SEASONS_SUCCEEDED","SEASONS_REQUESTED","SET_ACTIVE_SEASON","SET_USER_SETTING","UPDATE_USER_SETTINGS","initialState","error","loading","loadingSucceeded","route","page","reducer","state","action","type","payload","CAPTAIN_C","POSITION_HEAD_COACH","POSITION_GOALKEEPER","SUSPENSION_SETTING_DENY","ENV","window","location","href","indexOf","defaultPlayerFormat","key","style","defaultCompactPlayerFormat","defaultCompactTeamOfficialFormat","contexts","los7","label","hosts","production","test","development","paths","data","leagueImage","gameReportRefereeConfig","eventStaff","title","fieldEquipment","gameInfo","officials","playerEquipment","scores","periods","types","teamInfo","key2","playerPositions","teamOfficialPositions","supports","DNP","supplementary","wording","playerFormats","los6","captain","extendedRoster","lineup","rosterPublishing","startingPlayer","teamOfficials","getUrl","context","path","getGameReportRefereeConfig","getPlayerFormat","view","rosters","items","format","getPlayerPositions","getTeamOfficialPositions","token","username","FACECHECK_ALLOWED","GRR_DRAFT","GRR_SIGNED_BY_REF","GRR_COMPLETED","READY_TO_PLAY","ROSTERS_LOCKED","ROSTERS_UNLOCKED","getRosters","mergedAwayRoster","mergedAwayTeamOfficials","mergedHomeRoster","mergedHomeTeamOfficials","activeGame","games","activeItem","localChanges","mergeChanges","awayRoster","awayTeamOfficials","homeRoster","homeTeamOfficials","getScores","periodScores","forEach","i","score","isTeamOfficial","mergedItems","item","entries","length","locallyChanged","parseKey","lineupData","push","JSON","parse","reduceLoadingEligiblesFailed","lastUpdate","teamId","newEligibles","reduceLoadingEligiblesSucceeded","eligibles","languages","translations","plural","singular","translate","langIndex","Number","appLanguage","console","log","translation","getLanguages","urlParameters","deepCopy","structuredClone","parseJSON","stringify","expired","Date","expirationDate","setHours","getHours","getActionButtonPosition","userSettings","actionButtonPosition","getRosterPublicStatusClass","roster","team","rosterStatus","getRosterPublicStatusIcon","game","className","icon","getUrlParameter","parameterName","params","search","substring","split","param","parseUrlParameters","getWeekday","date","_","getDay","isAbsent","player","position","f","reload","setTimeout","shorten","maxLength","substr","defaultItems","gameReportsReferee","eligiblePlayers","eligibleTeamOfficials","extendedEligiblePlayers","extendedEligibleTeamOfficials","referees","seasons","toJSON","gameId","players","gameReportReferee","meta","status","statusChangedAt","statusChangedBy","comment","name","splice","findIndex","rosterPlayer","job","existingHeadCoach","find","existingCaptain","playerId","reportJson","awayConfirmationAt","awayConfirmationBy","editLevel","homeConfirmationAt","homeConfirmationBy","Lastname","Firstname","value","newReferees","newRosters","publish","filter","season","signedAt","isConfirmed","periodScoresHome","home","periodScoresAway","away","appearanceMode","language","playerListSettings","setting","combineReducers","app","auth","persistConfig","storage","blacklist","sagaMiddleware","createSagaMiddleware","persistedReducer","persistReducer","reducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","persistor","persistStore","SplashScreen","src","logo","alt","React","Component","changePage","dismissError","dismissLoadingSucceeded","isLoading","setUserSetting","showAlert","options","ons","notification","alert","showMessage","toast","buttonLabel","timeout","loadingError","messages","actionType","errorCode","message","put","Login","props","password","newPassword","newPasswordRepeat","passwordRecovery","passwordRecoveryUsername","handleContextChange","bind","handleErrorDismiss","handleForgotPasswordClick","handleInputChange","handleLanguageSelection","handleLogin","handleResetPasswordClick","handleSendPasswordRecoveryClick","handleToLoginClick","c","getContexts","this","setState","target","index","querySelector","onSetContext","preventDefault","document","focus","onSelectLanguage","onLogin","onDismissError","buttonLabels","cancelable","onResetPassword","resetPasswordToken","onSendPasswordRecovery","onDismissLoadingSucceeded","onPostChange","isOpen","onCancel","onClick","autoComplete","onSubmit","disabled","modifier","htmlFor","onChange","renderContextFormControl","autofocus","indeterminate","packageJson","version","connect","dispatch","login","resetPassword","sendPasswordRecovery","setContext","loadGames","seasonId","Toolbar","onBackClick","right","onReloadClick","onMenuClick","PullHook","pullHook","handlePullHookChange","handlePullHookLoad","onLoad","opacity","spin","HoldButton","duration","pressing","handleButtonContextMenu","handleButtonPress","handleButtonRelease","handleClick","clearInterval","resetProgress","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchStart","onContextMenu","transitionDuration","defaultProps","Supplementary","handleBackClick","handleSignClick","onSign","renderToolbar","gameName","Game","supplementaryOpen","handleOpenGameReportReferee","handleOpenRosters","handleOpenSupplementary","handleSupplementaryBackClick","handleSignSupplementary","permission","homeTeam","awayTeam","cb","onChangePage","onSignSupplementary","onLoadGames","activeSeason","longName","supplementaryAvailable","supplementaryAcceptedByHomeAt","supplementaryAcceptedByAwayAt","gameReportRefereeStatus","enableGameReportRefereeButton","renderTeamName","dateIsToBeDetermined","scheduledDate","sortValue","shortValue","timeIsToBeDetermined","scheduledTime","getRosterStatusText","toLocaleString","signSupplementary","town","gameDate","gameStart","gameEnd","teamInfoHome","teamName","representative","gameManager","colorHelmets","colorShirts","colorPants","colorSocks","disqualifications","gameOfficials","referee","centerjudge","umpire","linesman","linejudge","backjudge","fieldjudge","sidejudge","timekeeper","shotclock","observer","teamInfoAway","equipmentHome","isOk","facemaskColor","helmetsColor","helmetsDesign","jerseysColor","jerseysDesign","pantsColor","pantsDesign","socksColor","socksDesign","equipmentAway","downBox","chain","pylons","yardageMarker","fieldMarkingsLines","fieldMarkingsCoachingBox","fieldMarkingsTeamArea","medicalStaff","security","chainCrew","others","notesHome","notesOfficials","mercyRulePeriod","mercyRuleTime","comment2","notesAway","gameReportRefereeMeta","TripleSwitch","classNames","join","handleChange","Checklist","setInputNames","values","config","getInputName","placeholder","inputPlaceholder","readonly","checked","class","inputId","renderInput","Scores","period","lastPeriod","NaN","isNaN","Math","floor","total","String","renderScores","AutoComplete","suggestions","getSuggestionValue","onSuggestionsClearRequested","onSuggestionsFetchRequested","renderSuggestion","innerText","trim","toLowerCase","inputProps","readOnly","AutoTextarea","resize","createRef","current","height","scrollHeight","onInput","ref","ColorSelect","sort","a","b","concat","GameReportReferee","getTeamSignatureExpirationDate","getStatusText","handleDismissChangesClick","handleLoadScoresClick","handleOverwriteClick","handleSaveDraftClick","reloadData","requiredFieldsFilledIn","teamSignatureExpired","gameReportRefereeLastUpdate","refereesLastUpdate","getTime","gameReportRefereeExpirationTimeForTeamSignature","onUpdateGameReportReferee","callback","onDismissChanges","onLoadScores","onOverwrite","onSaveDraft","onConfirm","onLoadGameReportReferee","onLoadReferees","canOverwrite","undefined","canBeSignedByReferee","canBeSignedByTeam","notesOfficialsMercyRulePeriodProps","notesOfficialsMercyRuleTimeProps","width","rel","renderGameInfo","renderOfficials","renderTeamInfo","renderTeamNotes","hasLocalChanges","bottom","ripple","defaultColors","helmets","pants","shirts","socks","defaults","confirmGameReportReferee","dismissGameReportRefereeChanges","loadGameReportReferee","loadReferees","loadScores","overwriteGameReportReferee","saveGameReportRefereeDraft","signGameReportReferee","updateGameReportReferee","shortName","tappable","Games","handleSelectGame","onSelectGame","gamesByDate","MAX_SAFE_INTEGER","gamesByDateEntries","dataSource","renderHeader","renderRow","idx","random","leagueId","setActiveGame","Modal","getElementById","createElement","appendChild","removeChild","ReactDOM","createPortal","children","PlayerImage","imgError","imageUrl","largeImageOpen","handleImageLoadingError","handleJerseyNrClick","handleLargeImageClick","handleLargeImageToggleClick","stopPropagation","onJerseyNrClick","onToggle","jerseyNr","onError","backgroundImage","lastname","firstname","middlename","activatable","isActive","textIsActive","textActivate","Player","handleActivate","onActivate","line","pattern","formatValue","getFullYear","dateFormat","asString","noHtml","sum","charCodeAt","coloredLabel","data-key","playerClass","isExtended","isSuspended","formatLine","PlayerListSettings","onUpdatePlayerListSettings","onClose","marginTop","header","option","handleOptionClick","fixedWidth","renderSetting","PlayerList","playerListSettingsOpen","searchDisplay","searchQuery","filterPlayer","handleClosePlayerListSettings","handleOpenPlayerListSettings","handleSearchChange","sortPlayers","groupBy","playersActivatable","playersDisabled","playerFormat","playerIsActive","onPlayerActivate","onPlayerClick","onPlayerJerseyNrClick","textActivatePlayer","textPlayerIsActive","sortPlayersByKey","sortBy","getEmptyPlayersList","positions","groupByLine","playersByLines","renderPlayerList","RosterPlayers","activePlayer","jerseyNrEditorOpen","playerActionsOpen","lineupDataEditorOpen","lineupDataEditorValueCaptain","lineupDataEditorValueLine","lineupDataEditorValuePosition","lineupDataEditorValueStarting","handleCaptainSelect","handleEditJerseyNrClick","handleEditLineupDataClick","handleForceTakeFaceCheck","handleJerseyNrEditorCancel","handleJerseyNrEditorClose","handleLineSelect","handleLineupDataEditorCancel","handleLineupDataEditorClose","handlePlayerActionsClose","handlePlayerActivate","handlePlayerClick","handlePlayerRemoveClick","handleStartingPlayerToggle","handleTakeFaceCheck","handleToggleAbsent","handleToggleDNP","newState","starting","facecheck","onEditRosterPlayer","onConfirmRosterPlayer","onRemoveRosterPlayer","onTakeFaceCheck","setPositionMeta","ret","countables","countable","counts","condition","limit","Fragment","rosterLimits","renderLimit","exists","m","replace","onPullHookChange","onPullHookLoad","renderInfo","renderLimits","renderCountables","onLoadPlayers","teamOfficial","teamOfficialsActivatable","isCancelable","display","handlePositionSelect","simpleLineup","float","marginRight","facecheckHome","facecheckAway","cProps","confirmRosterPlayer","editRosterPlayer","removeRosterPlayer","takeFaceCheck","Eligibles","selectedLine","selectedList","selectedListType","selectedPlayer","selectedPlayers","selectedTeamOfficials","handleLineSelectSubmit","handleListChange","handleLoadEligiblesClick","handleEligibleClick","handleSubmit","loadEligibles","clearTimeout","pullHookCallback","selectedEligibles","indexAlreadySelected","eligible","suspensionSetting","onLoadEligiblePlayers","onLoadExtendedEligiblePlayers","onLoadEligibleTeamOfficials","onLoadExtendedEligibleTeamOfficials","selectedCount","allGoalkeeperLinesInRoster","gkLine","alreadyInRoster","alreadySelected","selectedEligible","minWidth","getEligibles","rosterKey","filteredEligibles","loadEligiblePlayers","loadEligibleTeamOfficials","loadExtendedEligiblePlayers","loadExtendedEligibleTeamOfficials","LineupEditor","jerseyNrEditorPlayer","mode","selectedPosition","handleClearPositionClick","handleDeselectPositionClick","handleModeSelect","handlePositionClick","getPlayer","updatePlayers","oldPlayer","toggleStartingPlayer","setCaptain","setAssistantCaptain","unsetCaptain","setJerseyNr","selectPosition","oldCaptain","playerIndex","duplicateJerseyNrs","jerseyNrChecked","playerOnSelectedPosition","availablePlayers","Array","from","renderPosition","Rosters","eligiblesOpen","lineupEditorOpen","speedDialOpen","tabIndex","handleCancelEligibles","handleCancelLineupEditor","handleConfirmRosterPlayers","handleLoadRosters","handleLockRosters","handleOpenEligibles","handleOpenLineupEditor","handlePublishRoster","handleReadyToPlay","handleSubmitEligibles","handleSubmitLineup","handleTabChange","handleUnlockRosters","handleUnreadyToPlay","confirmedRosterPlayers","onConfirmRosterPlayers","fixSpeedDial","onLoadRosters","setRosterStatus","onPublishRoster","rosterIsPublic","j","hasConfirmedPlayers","selectedTeamOfficial","additionalData","onAddPlayersToRoster","onEditRosterPlayers","homeRosterIsPublic","awayRosterIsPublic","command","onSetRosterStatus","awayPlayersConfirmed","homePlayersConfirmed","awayTeamTabLabel","homeTeamTabLabel","renderTabs","content","tab","swipeable","addPlayersToRoster","confirmRosterPlayers","editRosterPlayers","loadRosters","publishRoster","Season","leagueName","longname","Seasons","loadSeasons","handleSelectSeason","onLoadSeasons","onSelectSeason","setActiveSeason","Navigator","handleRenderPage","handleChangePage","navigator","resetPage","renderPage","initialRoute","animation","ErrorBoundary","detailsOpen","hasError","resetApp","showDetails","info","localStorage","clear","stack","UserSettings","saving","handleActionButtonPositionChange","handleAppearanceModeChange","handleLanguageChange","handleSaveUserSettings","onUpdateUserSettings","updateUserSettings","Menu","userSettingsOpen","handleCloseUserSettings","handleOpenUserSettings","onLogout","getUserShouldBePromptedToInstall","promptName","daysToWaitBeforePromptingAgain","lastPrompted","getItem","promptExpiration","setDate","getDate","useShouldShowPrompt","useState","userShouldBePromptedToInstall","setUserShouldBePromptedToInstall","handleUserSeeingInstallPrompt","setItem","isIOS","standalone","isIPad","userAgent","match","isIPhone","useIOSInstallPrompt","useWebInstallPrompt","installPromptEvent","setInstallPromptEvent","useEffect","beforeInstallPromptHandler","event","addEventListener","removeEventListener","prompt","userChoice","choice","outcome","PWAInstaller","iOSInstallPrompt","handleIOSInstallDeclined","webInstallPrompt","handleWebInstallDeclined","handleWebInstallAccepted","App","appUpdateAvailable","showMenu","updatingApp","handleHideAppUpdateNotification","handleLogout","handleMenuClick","handleSplitterSideClose","handleUpdateApp","platform","isIPhoneX","documentElement","setAttribute","history","pushState","matchMedia","matches","body","onIsLoading","caches","delete","collapse","side","toUpperCase","logout","isLocalhost","Boolean","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","catch","ajax","url","URL","defaultOptions","cache","credentials","method","redirect","referrer","init","FormData","append","URLSearchParams","toString","fetch","response","json","Api","doConfirm","getEligiblePlayers","getEligibleTeamOfficials","getExtendedEligiblePlayers","getExtendedEligibleTeamOfficials","getGameReportRefere","getGames","getPlayers","getReferees","getSeasons","authSaga","call","statusId","all","takeLatest","itemsSaga","err","added","confirmedPlayers","lockRosters","readyToPlay","unlockRosters","unreadyToPlay","errorMessages","errorMessage","sagas","fork","run","render","process","origin","headers","contentType","get","ready","unregister","checkValidServiceWorker","serviceWorkerRegistration","waiting"],"mappings":"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","file":"static/js/main.8d16bed4.chunk.js","sourcesContent":["var map = {\n\t\"./dark-onsen-css-components.css\": [\n\t\t78,\n\t\t3\n\t],\n\t\"./old-onsen-css-components.css\": [\n\t\t79,\n\t\t4\n\t],\n\t\"./onsen-css-components.css\": [\n\t\t80,\n\t\t5\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 73;\nmodule.exports = webpackAsyncContext;","// app\nexport const CHANGE_PAGE = 'CHANGE_PAGE';\nexport const DISMISS_ERROR = 'DISMISS_ERROR';\nexport const DISMISS_LOADING_SUCCEEDED = 'DISMISS_LOADING_SUCCEEDED';\nexport const IS_LOADING = 'IS_LOADING';\nexport const SET_ERROR = 'SET_ERROR';\nexport const SET_LOADING_SUCCEEDED = 'SET_LOADING_SUCCEEDED';\n\n// auth\nexport const LOGIN_FAILED = 'LOGIN_FAILED';\nexport const LOGIN_REQUESTED = 'LOGIN_REQUESTED';\nexport const LOGIN_SUCCEEDED = 'LOGIN_SUCCEEDED';\nexport const LOGOUT_FAILED = 'LOGOUT_FAILED';\nexport const LOGOUT_REQUESTED = 'LOGOUT_REQUESTED';\nexport const LOGOUT_SUCCEEDED = 'LOGOUT_SUCCEEDED';\nexport const RESET_PASSWORD = 'RESET_PASSWORD';\nexport const RESETTING_PASSWORD_FAILED = 'RESETTING_PASSWORD_FAILED';\nexport const RESETTING_PASSWORD_SUCCEEDED = 'RESETTING_PASSWORD_SUCCEEDED';\nexport const SEND_PASSWORD_RECOVERY = 'SEND_PASSWORD_RECOVERY';\nexport const SENDING_PASSWORD_RECOVERY_FAILED = 'SENDING_PASSWORD_RECOVERY_FAILED';\nexport const SENDING_PASSWORD_RECOVERY_SUCCEEDED = 'SENDING_PASSWORD_RECOVERY_SUCCEEDED';\nexport const SET_CONTEXT = 'SET_CONTEXT';\n\n// eligible players\nexport const ELIGIBLE_PLAYERS_REQUESTED = 'ELIGIBLE_PLAYERS_REQUESTED';\nexport const LOADING_ELIGIBLE_PLAYERS_FAILED = 'LOADING_ELIGIBLE_PLAYERS_FAILED';\nexport const LOADING_ELIGIBLE_PLAYERS_SUCCEEDED = 'LOADING_ELIGIBLE_PLAYERS_SUCCEEDED';\n\n// eligible team officials\nexport const ELIGIBLE_TEAM_OFFICIALS_REQUESTED = 'ELIGIBLE_TEAM_OFFICIALS_REQUESTED';\nexport const LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED = 'LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED';\nexport const LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED = 'LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED';\n\n// extended eligible players\nexport const EXTENDED_ELIGIBLE_PLAYERS_REQUESTED = 'EXTENDED_ELIGIBLE_PLAYERS_REQUESTED';\nexport const LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED = 'LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED';\nexport const LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED = 'LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED';\n\n// extended eligible team officials\nexport const EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED = 'EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED';\nexport const LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED = 'LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED';\nexport const LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED = 'LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED';\n\n// game report referee\nexport const CONFIRM_GAME_REPORT_REFEREE = 'CONFIRM_GAME_REPORT_REFEREE';\nexport const CONFIRMING_GAME_REPORT_REFEREE_FAILED = 'CONFIRMING_GAME_REPORT_REFEREE_FAILED';\nexport const CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED = 'CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED';\nexport const OVERWRITE_GAME_REPORT_REFEREE = 'OVERWRITE_GAME_REPORT_REFEREE';\nexport const OVERWRITING_GAME_REPORT_REFEREE_FAILED = 'OVERWRITING_GAME_REPORT_REFEREE_FAILED';\nexport const OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED = 'OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED';\nexport const SAVE_GAME_REPORT_REFEREE_DRAFT = 'SAVE_GAME_REPORT_REFEREE_DRAFT';\nexport const SAVING_GAME_REPORT_REFEREE_DRAFT_FAILED = 'SAVING_GAME_REPORT_REFEREE_DRAFT_FAILED';\nexport const SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED = 'SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED';\nexport const SIGN_GAME_REPORT_REFEREE = 'SIGN_GAME_REPORT_REFEREE';\nexport const SIGNING_GAME_REPORT_REFEREE_FAILED = 'SIGNING_GAME_REPORT_REFEREE_FAILED';\nexport const SIGNING_GAME_REPORT_REFEREE_SUCCEEDED = 'SIGNING_GAME_REPORT_REFEREE_SUCCEEDED';\n\n// games\nexport const GAME_REPORT_REFEREE_REQUESTED = 'GAME_REPORT_REFEREE_REQUESTED';\nexport const GAMES_REQUESTED = 'GAMES_REQUESTED';\nexport const LOADING_GAME_REPORT_REFEREE_FAILED = 'LOADING_GAME_REPORT_REFEREE_FAILED';\nexport const LOADING_GAME_REPORT_REFEREE_SUCCEEDED = 'LOADING_GAME_REPORT_REFEREE_SUCCEEDED';\nexport const LOADING_GAMES_FAILED = 'LOADING_GAMES_FAILED';\nexport const LOADING_GAMES_SUCCEEDED = 'LOADING_GAMES_SUCCEEDED';\nexport const LOADING_SCORES_FAILED = 'LOADING_SCORES_FAILED';\nexport const LOADING_SCORES_SUCCEEDED = 'LOADING_SCORES_SUCCEEDED';\nexport const SCORES_REQUESTED = 'SCORES_REQUESTED';\nexport const SET_ACTIVE_GAME = 'SET_ACTIVE_GAME';\nexport const SIGN_SUPPLEMENTARY = 'SIGN_SUPPLEMENTARY';\nexport const SIGNING_SUPPLEMENTARY_FAILED = 'SIGNING_SUPPLEMENTARY_FAILED';\nexport const SIGNING_SUPPLEMENTARY_SUCCEEDED = 'SIGNING_SUPPLEMENTARY_SUCCEEDED';\n\n// local changes\nexport const CONFIRM_ROSTER_PLAYER = 'CONFIRM_ROSTER_PLAYER';\nexport const DISMISS_GAME_REPORT_REFEREE_CHANGES = 'DISMISS_GAME_REPORT_REFEREE_CHANGES';\nexport const UPDATE_GAME_REPORT_REFEREE = 'UPDATE_GAME_REPORT_REFEREE';\n\n// referees\nexport const LOADING_REFEREES_FAILED = 'LOADING_REFEREES_FAILED';\nexport const LOADING_REFEREES_SUCCEEDED = 'LOADING_REFEREES_SUCCEEDED';\nexport const REFEREES_REQUESTED = 'REFEREES_REQUESTED';\n\n// rosters\nexport const ADD_PLAYERS_TO_ROSTER = 'ADD_PLAYERS_TO_ROSTER';\nexport const ADDING_PLAYERS_TO_ROSTER_FAILED = 'ADDING_PLAYERS_TO_ROSTER_FAILED';\nexport const ADDING_PLAYERS_TO_ROSTER_SUCCEEDED = 'ADDING_PLAYERS_TO_ROSTER_SUCCEEDED';\nexport const CONFIRM_ROSTER_PLAYERS = 'CONFIRM_ROSTER_PLAYERS';\nexport const CONFIRMING_ROSTER_PLAYERS_FAILED = 'CONFIRMING_ROSTER_PLAYERS_FAILED';\nexport const CONFIRMING_ROSTER_PLAYERS_SUCCEEDED = 'CONFIRMING_ROSTER_PLAYERS_SUCCEEDED';\nexport const EDIT_ROSTER_PLAYER = 'EDIT_ROSTER_PLAYER';\nexport const EDIT_ROSTER_PLAYERS = 'EDIT_ROSTER_PLAYERS';\nexport const EDITING_ROSTER_PLAYER_FAILED = 'EDITING_ROSTER_PLAYER_FAILED';\nexport const EDITING_ROSTER_PLAYERS_FAILED = 'EDITING_ROSTER_PLAYERS_FAILED';\nexport const EDITING_ROSTER_PLAYER_SUCCEEDED = 'EDITING_ROSTER_PLAYER_SUCCEEDED';\nexport const EDITING_ROSTER_PLAYERS_SUCCEEDED = 'EDITING_ROSTER_PLAYERS_SUCCEEDED';\nexport const LOADING_ROSTERS_FAILED = 'LOADING_ROSTERS_FAILED';\nexport const LOADING_ROSTERS_SUCCEEDED = 'LOADING_ROSTERS_SUCCEEDED';\nexport const PUBLISH_ROSTER = 'PUBLISH_ROSTER';\nexport const PUBLISHING_ROSTER_FAILED = 'PUBLISHING_ROSTER_FAILED';\nexport const PUBLISHING_ROSTER_SUCCEEDED = 'PUBLISHING_ROSTER_SUCCEEDED';\nexport const REMOVE_ROSTER_PLAYER = 'REMOVE_ROSTER_PLAYER';\nexport const REMOVING_ROSTER_PLAYER_FAILED = 'REMOVING_ROSTER_PLAYER_FAILED';\nexport const REMOVING_ROSTER_PLAYER_SUCCEEDED = 'REMOVING_ROSTER_PLAYER_SUCCEEDED';\nexport const ROSTERS_REQUESTED = 'ROSTERS_REQUESTED';\nexport const SET_ROSTER_STATUS = 'SET_ROSTER_STATUS';\nexport const SETTING_ROSTER_STATUS_FAILED = 'SETTING_ROSTER_STATUS_FAILED';\nexport const SETTING_ROSTER_STATUS_SUCCEEDED = 'SETTING_ROSTER_STATUS_SUCCEEDED';\nexport const TAKE_FACE_CHECK = 'TAKE_FACE_CHECK';\nexport const TAKING_FACE_CHECK_FAILED = 'TAKING_FACE_CHECK_FAILED';\nexport const TAKING_FACE_CHECK_SUCCEEDED = 'TAKING_FACE_CHECK_SUCCEEDED';\n\n// seasons\nexport const LOADING_SEASONS_FAILED = 'LOADING_SEASONS_FAILED';\nexport const LOADING_SEASONS_SUCCEEDED = 'LOADING_SEASONS_SUCCEEDED';\nexport const SEASONS_REQUESTED = 'SEASONS_REQUESTED';\nexport const SET_ACTIVE_SEASON = 'SET_ACTIVE_SEASON';\n\n// user settings\nexport const SET_USER_SETTING = 'SET_USER_SETTING';\nexport const UPDATE_USER_SETTINGS = 'UPDATE_USER_SETTINGS';","import {\n CHANGE_PAGE,\n DISMISS_ERROR,\n DISMISS_LOADING_SUCCEEDED,\n LOGOUT_FAILED,\n LOGOUT_SUCCEEDED,\n SET_ERROR,\n SET_LOADING_SUCCEEDED,\n IS_LOADING\n} from '../constants/actionTypes';\n\nconst initialState = {\n error: null,\n loading: false,\n loadingSucceeded: null,\n route: { page: 'seasons' }\n};\n\nconst reducer = ( state = initialState, action ) => {\n\n // console.log( 'reducers.app', state, action );\n\n switch ( action.type ) {\n\n case CHANGE_PAGE: {\n\n const { route } = action.payload;\n\n return { ...state, route };\n\n }\n\n case DISMISS_ERROR: {\n\n return { ...state, error: null };\n\n }\n\n case DISMISS_LOADING_SUCCEEDED: {\n\n return { ...state, loadingSucceeded: null };\n\n }\n\n case IS_LOADING: {\n\n const { loading } = action.payload;\n\n return { ...state, loading };\n\n }\n\n case SET_LOADING_SUCCEEDED: {\n\n return { ...state, loadingSucceeded: action.payload.type };\n\n }\n\n case LOGOUT_FAILED:\n case LOGOUT_SUCCEEDED: {\n\n return initialState;\n\n }\n\n case SET_ERROR: {\n\n const { error } = action.payload;\n\n return { ...state, error };\n\n }\n\n default:\n\n return state;\n\n }\n\n};\n\nexport default reducer;","// captains\nexport const CAPTAIN_A = 'A';\nexport const CAPTAIN_C = 'C';\n\n// positions\nexport const POSITION_HEAD_COACH = 'HC';\nexport const POSITION_ASSISTANT_COACH = 'AC';\nexport const POSITION_TEAM_MANAGER = 'TM';\nexport const POSITION_DRIVER = 'DV';\nexport const POSITION_MEDICAL_STAFF = 'MS';\nexport const POSITION_EQUIPMENT_MANAGER = 'EQ';\nexport const POSITION_GOALKEEPER = 'G';\nexport const POSITION_DEFENDER = 'D';\nexport const POSITION_LEFT_DEFENDER = 'LD';\nexport const POSITION_RIGHT_DEFENDER = 'RD';\nexport const POSITION_FORWARD = 'F';\nexport const POSITION_LEFT_FORWARD = 'LF';\nexport const POSITION_RIGHT_FORWARD = 'RF';\nexport const POSITION_CENTER = 'C';\nexport const POSITION_ALL_PLAYERS = '_PLAYERS';\nexport const POSITION_ALL_TEAM_OFFICIALS = '_TEAMOFFICIALS';\n\n// suspension settings\nexport const SUSPENSION_SETTING_DENY = 'DENY';","export const ENV = window.location.href.indexOf( 'dp.hockeydata.net' ) !== -1 ? 'production' : window.location.href.indexOf( 'dptest.hockeydata.net' ) !== -1 ? 'test' : 'development';","import { POSITION_ASSISTANT_COACH, POSITION_CENTER, POSITION_DEFENDER, POSITION_DRIVER, POSITION_EQUIPMENT_MANAGER, POSITION_FORWARD, POSITION_GOALKEEPER, POSITION_HEAD_COACH, POSITION_LEFT_DEFENDER, POSITION_LEFT_FORWARD, POSITION_MEDICAL_STAFF, POSITION_RIGHT_DEFENDER, POSITION_RIGHT_FORWARD, POSITION_TEAM_MANAGER } from '../store/constants/misc';\nimport { ENV } from './env';\n\nconst defaultGameReportRefereeExpirationTimeForTeamSignature = 1000 * 60 * 60;\n\nconst defaultPlayerFormat = [\n\n [ { key: 'lastname' }, { key: 'firstname' } ],\n [ { key: 'jerseyNr', type: 'jerseyNr' }, { key: 'position', style: 'inverted' } ]\n\n];\n\nconst defaultCompactPlayerFormat = [ [\n\n { key: 'position', style: 'centered,fixed' },\n { key: 'jerseyNr', style: 'centered,fixed,inverted' },\n { key: 'lastname', style: 'upper' },\n { key: 'firstname' },\n { key: 'middlename' },\n { key: 'captain', style: 'label' },\n { key: 'classification', style: 'label' }\n\n] ];\n\nconst defaultCompactTeamOfficialFormat = [ [\n\n { key: 'job', style: 'bold,centered,fixed' },\n { key: 'lastname', style: 'upper' },\n { key: 'firstname' },\n { key: 'middlename' }\n\n] ];\n\nconst contexts = {\n los7: {\n label: 'American Football',\n hosts: {\n production: 'https://losaf.hockeydata.net/',\n test: 'https://losaftest.hockeydata.net/',\n development: 'https://losafdev.hockeydata.net/'\n },\n paths: {\n data: 'los/data-asp/dp/',\n leagueImage: 'los/img/leagues/'\n },\n gameReportRefereeConfig: {\n eventStaff: [\n { title: 'Medical Staff - Ambulance', key: 'medicalStaff' },\n { title: 'Security', key: 'security' },\n { title: 'Chain-Crew', key: 'chainCrew' },\n { title: 'Others', key: 'others' }\n ],\n fieldEquipment: [\n { title: 'Down Box', key: 'downBox' },\n { title: 'Chain', key: 'chain' },\n { title: 'Pylons', key: 'pylons' },\n { title: 'Yardage Marker', key: 'yardageMarker' },\n { title: 'Field Markings (Lines)', key: 'fieldMarkingsLines' },\n { title: 'Field Markings (Coaching Box)', key: 'fieldMarkingsCoachingBox' },\n { title: 'Field Markings (Team Area)', key: 'fieldMarkingsTeamArea' }\n ],\n gameInfo: [\n { title: 'Spiel #', key: 'gameName' },\n { title: 'Stadt', key: 'town' },\n { title: 'Ort', key: 'location' },\n { title: 'Datum', key: 'gameDate', type: 'date' },\n { title: 'Uhrzeit - Kickoff', key: 'gameStart', type: 'time' },\n { title: 'Uhrzeit - Spielende', key: 'gameEnd', type: 'time' }\n ],\n officials: [\n { title: 'Referee', key: 'referee' },\n { title: 'Centerjudge', key: 'centerjudge' },\n { title: 'Umpire', key: 'umpire' },\n { title: 'Linesman', key: 'linesman' },\n { title: 'Linejudge', key: 'linejudge' },\n { title: 'Backjudge', key: 'backjudge' },\n { title: 'Fieldjudge', key: 'fieldjudge' },\n { title: 'Sidejudge', key: 'sidejudge' },\n { title: 'Zeitnehmer', key: 'timekeeper' },\n { title: '25-Sec. Clock', key: 'shotclock' },\n { title: 'Game-Observer', key: 'observer' }\n ],\n playerEquipment: [\n { title: 'Face-Masks - Color', key: 'facemaskColor' },\n { title: 'Helmets - Color', key: 'helmetsColor' },\n { title: 'Helmets - Design', key: 'helmetsDesign' },\n { title: 'Jerseys - Color', key: 'jerseysColor' },\n { title: 'Jerseys - Design', key: 'jerseysDesign' },\n { title: 'Pants - Color', key: 'pantsColor' },\n { title: 'Pants - Design', key: 'pantsDesign' },\n { title: 'Socks - Color', key: 'socksColor' },\n { title: 'Socks - Design', key: 'socksDesign' }\n ],\n scores: {\n periods: [ '1', '2', '3', '4', 'EP', 'F' ],\n types: [\n { title: 'Score', key: 'score' },\n { title: 'Penalties (Anzahl)', key: 'penaltyCount' },\n { title: 'Penalties (Yards)' , key: 'penaltyYardage' }\n ]\n },\n teamInfo: [\n { title: 'Team-Name', key2: 'teamName' },\n { title: 'Vertreter', key2: 'representative' },\n { title: 'Game-Management', key2: 'gameManager' },\n { title: 'Helmfarbe', key2: 'colorHelmets', type: 'color' },\n { title: 'Shirtfarbe', key2: 'colorShirts', type: 'color' },\n { title: 'Hosenfarbe', key2: 'colorPants', type: 'color' },\n { title: 'Sockenfarbe', key2: 'colorSocks', type: 'color' },\n { title: 'Disqualifikation(en)', key2: 'disqualifications' }\n ]\n },\n playerPositions: [\n\n [ 'QB', 'Quarterback' ],\n [ 'RB', 'Running Back' ],\n [ 'WR', 'Wide Receiver' ],\n [ 'OL', 'Offensive Line' ],\n [ 'OT', 'Offensive Tackle' ],\n [ 'TE', 'Tight End' ],\n [ 'DL', 'Defensive Line' ],\n [ 'DT', 'Defensive Tackle' ],\n [ 'DB', 'Defensive Back' ],\n [ 'LB', 'Linebacker' ],\n [ 'K/P', 'Kick/Punt' ]\n\n ],\n teamOfficialPositions: [],\n supports: {\n DNP: true,\n supplementary: true\n },\n wording: {},\n playerFormats: {\n 'Players.compact': defaultCompactPlayerFormat,\n 'TeamOfficials.compact': defaultCompactTeamOfficialFormat,\n 'TeamOfficials': defaultCompactTeamOfficialFormat\n }\n },\n los6: {\n label: 'Eishockey',\n hosts: {\n production: 'https://los.hockeydata.net/',\n test: 'https://lostest.hockeydata.net/',\n development: 'https://losdev.hockeydata.net/'\n },\n paths: {\n data: 'los/data-asp/dp/',\n leagueImage: 'los/img/leagues/'\n },\n gameReportRefereeConfig: null,\n playerPositions: [\n\n [ POSITION_GOALKEEPER, 'Goalkeeper' ],\n [ POSITION_DEFENDER, 'Defender' ],\n [ POSITION_LEFT_DEFENDER, 'Left Defender' ],\n [ POSITION_RIGHT_DEFENDER, 'Right Defender' ],\n [ POSITION_FORWARD, 'Forward' ],\n [ POSITION_LEFT_FORWARD, 'Left Forward' ],\n [ POSITION_RIGHT_FORWARD, 'Right Forward' ],\n [ POSITION_CENTER, 'Center' ]\n\n ],\n teamOfficialPositions: [\n\n [ POSITION_HEAD_COACH, 'Head Coach' ],\n [ POSITION_ASSISTANT_COACH, 'Assistant Coach' ],\n [ POSITION_TEAM_MANAGER, 'Team Manager' ],\n [ POSITION_DRIVER, 'Driver' ],\n [ POSITION_MEDICAL_STAFF, 'Medical Staff' ],\n [ POSITION_EQUIPMENT_MANAGER, 'Equipment Manager' ]\n\n ],\n supports: {\n captain: true,\n extendedRoster: true,\n lineup: true,\n rosterPublishing: true,\n startingPlayer: true,\n teamOfficials: true\n },\n wording: {\n lineup: true\n },\n playerFormats: {\n 'Players.compact': defaultCompactPlayerFormat,\n 'TeamOfficials.compact': defaultCompactTeamOfficialFormat,\n 'TeamOfficials': defaultCompactTeamOfficialFormat\n }\n },\n // gp: {\n // label: 'GamePitch (Eishockey Deutschland)',\n // hosts: {\n // production: 'https://dp.gamepitch.de/',\n // test: 'https://dptest.gamepitch.de/',\n // development: 'https://dpdev.gamepitch.de/'\n // },\n // paths: {\n // data: 'data/',\n // leagueImage: 'img/leagues/'\n // }\n // }\n};\n\nexport const getUrl = ( context, path ) => contexts[ context ].hosts[ ENV ] + contexts[ context ].paths.data + path;\n\nexport const getContexts = () => {\n\n const c = [];\n\n Object.entries( contexts ).forEach( ( [ key, value ] ) => { c.push( { ...value, key } ); } );\n\n return c;\n\n};\n\nexport const getLeagueImageUrl = ( context, leagueId ) => contexts[ context ].hosts[ ENV ] + contexts[ context ].paths.leagueImage + leagueId + '.png';\n\nexport const getDefaultContext = () => {\n\n return 'los7';\n\n};\n\nexport const getGameReportRefereeConfig = context => contexts[ context ].gameReportRefereeConfig;\n\nexport const getGameReportRefereeExpirationTimeForTeamSignature = context => {\n\n return (\n\n ( 'gameReportRefereeExpirationTimeForTeamSignature' in contexts[ context ] )\n\n ? contexts[ context ].gameReportRefereeExpirationTimeForTeamSignature\n\n : defaultGameReportRefereeExpirationTimeForTeamSignature\n\n );\n\n};\n\nexport const getPlayerFormat = ( view, context, rosters ) => {\n\n if ( view && contexts[ context ].playerFormats[ view ] ) {\n\n return contexts[ context ].playerFormats[ view ];\n\n }\n\n if ( rosters && rosters.items && rosters.items.format ) {\n\n return rosters.items.format;\n\n }\n\n return defaultPlayerFormat;\n\n};\n\nexport const getPlayerPositions = context => contexts[ context ].playerPositions;\n\nexport const getTeamOfficialPositions = context => contexts[ context ].teamOfficialPositions;\n\nexport const supports = ( context, e ) => contexts[ context ].supports[ e ];\n\nexport const wording = ( context, e ) => contexts[ context ].wording[ e ];","import { SET_CONTEXT, LOGIN_SUCCEEDED, LOGOUT_FAILED, LOGOUT_SUCCEEDED } from '../constants/actionTypes';\nimport { getDefaultContext } from '../../util/context';\n\nconst initialState = {\n context: getDefaultContext(),\n token: null,\n username: null\n};\n\nconst reducer = ( state = initialState, action ) => {\n\n // console.log( 'reducers.auth', state, action );\n\n switch ( action.type ) {\n\n case SET_CONTEXT: {\n\n const { context } = action.payload;\n\n return { ...state, context };\n\n }\n\n case LOGIN_SUCCEEDED: {\n\n const { token, username } = action.payload;\n\n return { ...state, token, username };\n\n }\n\n case LOGOUT_FAILED:\n case LOGOUT_SUCCEEDED: {\n\n return initialState;\n\n }\n\n default:\n\n return state;\n\n }\n\n};\n\nexport default reducer;","// facecheck\nexport const FACECHECK_ALLOWED = 'ALLOWED';\n\n// game report referee\nexport const GRR_DRAFT = 'DRAFT';\nexport const GRR_SIGNED_BY_REF = 'SIGNED_BY_REF';\nexport const GRR_COMPLETED = 'COMPLETED';\n\n// roster status\nexport const READY_TO_PLAY = 'READY_TO_PLAY';\nexport const ROSTERS_LOCKED = 'ROSTERS_LOCKED';\nexport const ROSTERS_UNLOCKED = 'ROSTERS_UNLOCKED';","export const getRosters = state => {\n\n let mergedAwayRoster = null;\n let mergedAwayTeamOfficials = null;\n let mergedHomeRoster = null;\n let mergedHomeTeamOfficials = null;\n const activeGame = state.items.games.activeItem;\n const rosters = state.items.rosters && ( activeGame.id in state.items.rosters ) ? state.items.rosters[ activeGame.id ] : null;\n const localChanges = ( activeGame.id in state.localChanges.rosters ) ? state.localChanges.rosters[ activeGame.id ] : null;\n\n if ( rosters && rosters.items ) {\n\n mergedAwayRoster = mergeChanges( rosters.items.awayRoster, localChanges );\n mergedAwayTeamOfficials = mergeChanges( rosters.items.awayTeamOfficials, localChanges, true );\n mergedHomeRoster = mergeChanges( rosters.items.homeRoster, localChanges );\n mergedHomeTeamOfficials = mergeChanges( rosters.items.homeTeamOfficials, localChanges, true );\n\n }\n\n return {\n mergedAwayRoster,\n mergedAwayTeamOfficials,\n mergedHomeRoster,\n mergedHomeTeamOfficials,\n rosters\n };\n\n};\n\nexport const getScores = ( periodScores, scores ) => {\n\n if ( scores ) {\n\n scores.forEach( ( e, i ) => {\n\n periodScores[ i ] = { ...periodScores[ i ], score: e };\n\n } );\n\n }\n\n return periodScores;\n\n};\n\nconst mergeChanges = ( items, localChanges, isTeamOfficial = false ) => {\n\n if ( ! items ) {\n\n return null;\n\n }\n\n const mergedItems = [];\n\n items.forEach( e => {\n\n let item = { ...e };\n\n if ( localChanges && ( item.id in localChanges ) && Object.entries( localChanges[ item.id ] ).length !== 0 ) {\n\n item = { ...item, ...localChanges[ item.id ], locallyChanged: true };\n\n } else {\n\n item.locallyChanged = false;\n\n }\n\n parseKey( item, 'lineupData' );\n // parseKey( item, 'additionalData' );\n\n item = { ...item, ...item.lineupData, /* ...item.additionalData, */ isTeamOfficial };\n\n mergedItems.push( item );\n\n } );\n\n return mergedItems;\n\n};\n\nexport const parseKey = ( item, key ) => {\n\n if ( ( key in item ) && typeof item[ key ] !== 'object' ) {\n\n try {\n\n item[ key ] = JSON.parse( item[ key ] );\n\n } catch ( e ) {\n\n item[ key ] = {};\n\n }\n\n }\n\n};\n\nexport const reduceLoadingEligiblesFailed = ( action, state, lastUpdate, key ) => {\n\n const { teamId } = action.payload;\n const newEligibles = { ...state[ key ] };\n const items = ( teamId in newEligibles[ key ] ) ? newEligibles[ key ][ teamId ].items : null;\n newEligibles[ teamId ] = { items, lastUpdate };\n\n return { ...state, [ key ]: newEligibles };\n\n};\n\nexport const reduceLoadingEligiblesSucceeded = ( action, state, lastUpdate, key ) => {\n\n const { teamId, eligibles } = action.payload;\n const newEligibles = { ...state[ key ] };\n newEligibles[ teamId ] = { items: eligibles, lastUpdate };\n\n return { ...state, [ key ]: newEligibles };\n\n\n};","import { translations as en } from '../i18n/en.js';\n\nconst languages = [\n\n { label: 'Deutsch' },\n { label: 'English', translations: en },\n // { label: 'Nederlands', translations: {} }\n\n];\n\nexport const translate = ( e, context ) => {\n\n const langIndex = Number( window.appLanguage );\n\n if ( ! langIndex ) {\n\n return e;\n\n }\n\n if ( languages.length <= langIndex ) {\n\n console.log( '%cSelected user language (' + langIndex + ') not found.', 'color: red; font-weight: bold' );\n\n return e;\n\n }\n\n const translations = languages[ langIndex ].translations;\n\n if ( ! ( e in translations ) ) {\n\n console.log( '%cTranslation missing', 'color: red; font-weight: bold', e, context );\n\n return e;\n\n }\n\n const translation = translations[ e ];\n\n if ( context ) {\n\n if ( translation === null || typeof translation !== 'object' || ! ( context in translation ) ) {\n\n console.log( '%cTranslation context missing', 'color: red', e, context );\n\n return e;\n\n }\n\n return translation[ context ];\n\n }\n\n return translation;\n\n};\n\nexport const getLanguages = () => languages;","export const translations = {\n\n '25-Sec. Clock': '25-Sec. Clock',\n 'Abbrechen': 'Cancel',\n 'Abgeschlossen': 'Completed',\n 'Abwesend': 'Absent',\n 'Achtung': 'Warning',\n 'Aktualisieren': 'Reload',\n 'Aktuell': 'Current',\n 'Alles OK': 'All OK',\n 'Allgemeiner Fehler.': 'General Error.',\n 'American Football': 'American Football',\n 'Änderungen verwerfen': 'Dismiss Draft',\n 'Änderungen verwerfen?': 'Dismiss draft?',\n 'Anmerkungen': 'Notes',\n 'Anschließend kannst deren Daten ändern.': 'You can edit their data afterwards.',\n 'Ansicht': 'View',\n 'App installieren': 'Install App',\n 'App neuladen': 'Reload App',\n 'App zurücksetzen': 'Reset App',\n 'Aufstellung': 'Lineup',\n 'Aufstellung bearbeiten': 'Edit Lineup Data',\n 'Aufstellung ist leer.': 'Lineup is empty.',\n 'Aufstellung konnte nicht veröffentlicht werden.': 'Could not publish lineup.',\n 'Aufstellung nicht veröffentlichen': 'Unpublish Lineup',\n 'Aufstellung veröffentlichen': 'Publish Lineup',\n 'Aufstellung veröffentlicht.': 'Lineup published.',\n 'Aufstellungen': 'Lineups',\n 'Aufstellungen bestätigen': 'Confirm Lineups',\n 'Aufstellungen bestätigt. Spieler aufgestellt:': 'Lineups confirmed. Players in lineup:',\n 'Aufstellungen entsperren': 'Unlock Lineups',\n 'Aufstellungen gesperrt': 'Lineups Locked',\n 'Aufstellungen in Vorbereitung': 'Lineups in Preparation',\n 'Aufstellungen konnten nicht bestätigt werden.': 'Could not confirm lineups.',\n 'Aufstellungen konnten nicht entsperrt werden.': 'Could not unlock lineups.',\n 'Aufstellungen konnten nicht geladen werden.': 'Could not load lineups.',\n 'Aufstellungen konnten nicht gesperrt werden.': 'Could not lock lineups.',\n 'Aufstellungen offen': 'Lineups Unlocked',\n 'Aufstellungen öffnen': 'Open Lineups',\n 'Aufstellungen sperren': 'Lock Lineups',\n 'Aufstellungen wurden entsperrt. Teams können Spieler nun hinzufügen und bearbeiten.': 'Lineups unlocked. Teams are now able to add and edit player.',\n 'Aufstellungen wurden gesperrt. Teams können keine Spieler mehr hinzufügen oder bearbeiten. Facecheck kann durchgeführt werden.': 'Lineups locked. Teams are no longer able to add or edit players. You may now start the face-check.',\n 'Ausloggen': 'Logout',\n 'Aussehen': 'Appearance',\n 'Auswahl konnte nicht zum Roster hinzugefügt werden.': 'Could not add selection to roster.',\n 'Auswahl konnte nicht zur Aufstellung hinzugefügt werden.': 'Could not add selection to lineup.',\n 'Auto': 'Auto',\n 'Autofill': 'Autofill',\n 'Backjudge': 'Backjudge',\n 'Backup (Linie 2)': 'Backup (line 2)',\n 'Beiblatt kann im Status \"Aufstellung in Vorbereitung\" noch nicht unterschrieben werden.': 'Supplementary can\\'t yet be signed in the \"Lineup in Preparation\" status.',\n 'Beiblatt kann im Status \"Roster in Vorbereitung\" noch nicht unterschrieben werden.': 'Supplementary can\\'t yet be signed in the \"Rosters in Preparation\" status.',\n 'Beiblatt konnte nicht unterschrieben werden.': 'Could not sign supplementary.',\n 'Beiblatt unterschreiben': 'Sign Supplementary',\n 'Beiblatt unterschrieben.': 'Supplementary signed.',\n 'Beiblatt unterschrieben:': 'Supplementary signed:',\n 'Beiblatt zu Spiel #': 'Supplementary for Game #',\n 'Beiblätter': 'Supplementaries',\n 'Benutzername': 'Username',\n 'Bereits aufgestellt': 'Already in roster',\n 'Bereits gewählt': 'Already selected',\n 'Bitte wähle ein neues Passwort.': 'Please select a new password.',\n 'blau': 'blue',\n 'Centerjudge': 'Centerjudge',\n 'Daten konnten nicht geändert werden.': 'Could not change data.',\n 'Daten wurden geändert.': 'Data has been changed.',\n 'Datum': 'Date',\n 'Der Facecheck ist abgeschlossen. Das Spiel ist Ready to Play.': 'Face-check is complete. The game is Ready to Play.',\n 'Der Game Report Referee ist verfügbar sobald dieser vom Referee nach dem Spiel freigegeben wurde.': 'The Game Report Referee will be available when signed by the referee after the game.',\n 'Der Roster muss erst vom Referee geöffnet werden. Es können noch keine Spieler hinzugefügt oder bearbeitet werden.': 'Roster needs to be opened by referee. Adding or editing players is not possible yet.',\n 'Der Roster wurde vom Referee gesperrt. Es können keine Spieler mehr hinzugefügt oder bearbeitet werden.': 'Roster locked by referee. Adding or editing players is not possible anymore.',\n 'Details': 'Details',\n 'Details anzeigen': 'Show Details',\n 'Die Aufstellung muss erst vom Referee geöffnet werden. Es können noch keine Spieler hinzugefügt oder bearbeitet werden.': 'Lineup needs to be opened by referee. Adding or editing players is not possible yet.',\n 'Die Aufstellung wurde vom Referee gesperrt. Es können keine Spieler mehr hinzugefügt oder bearbeitet werden.': 'Lineup locked by referee. Adding or editing players is not possible anymore.',\n 'Die eingegeben Passwörter stimmen nicht überein.': 'Passwords do not match.',\n 'Die Frist zum Unterschreiben ist abgelaufen.': 'The signature deadline has expired.',\n 'Die Passwort-zurücksetzen-Funktion ist derzeit nur für Eishockey verfügbar.': 'The reset password function is currently available for ice hockey only.',\n 'Die Teams können keine Spieler mehr hinzufügen oder bearbeiten. Der Facecheck kann durchgeführt werden.': 'Teams are no longer able to add or edit players. Face-check possible.',\n 'Dienstag': 'Tuesday',\n 'Dies übernimmt den Facecheck von:': 'This will take the face-check from:',\n 'Dieses Team hat noch keine Spieler hinzugefügt.': 'This team has not added any players yet.',\n 'Dieses Team hat noch keine Team-Offiziellen hinzugefügt.': 'This team has not added any team officials yet.',\n 'Digitaler Spielerpass': 'Digital Playerpass',\n 'Disqualifikation(en)': 'Disqualification(s)',\n 'Druckansicht': 'Print View',\n 'Du kannst dich nun mit deinem Benutzernamen und deinem neuen Passwort einloggen.': 'You can now login with your username and your new password.',\n 'Du kannst unter den Anmerkungen deines Teams einen Kommentar eingeben und unterschreiben bis:': 'You can enter a comment in the notes section of your team and sign until:',\n 'Present, not Playing (PNP)': 'Present, not Playing (PNP)',\n 'Detailliert': 'Detailed',\n 'Donnerstag': 'Thursday',\n 'Du hast eine Nachricht!': 'You got mail!',\n 'Dunkel': 'Dark',\n 'E-Mail konnte nicht gesendet werden. Bitte überprüfe deinen Benutzernamen.': 'Email could not be sent. Please check your username.',\n 'Ein E-Mail zum Zurücksetzen deines Passworts wurde an deine E-Mail-Adresse gesendet.': 'An email to reset your password has been sent to your email address.',\n 'Eine neue App-Version ist verfügbar!': 'A new app version is available!',\n 'Eingelogged als': 'Logged in as',\n 'Einstellungen': 'Settings',\n 'Eishockey': 'Ice Hockey',\n 'Emergency (Linie 3)': 'Emergency (line 3)',\n 'Entwurf': 'Draft',\n 'Entwurf konnte nicht gespeichert werden.': 'Could not save draft.',\n 'Entwurf speichern': 'Save Draft',\n 'Erw. Offizielle': 'Ext. Officials',\n 'Erw. Roster': 'Ext. Roster',\n 'Es stehen keine weiteren Spieler zur Verfügung.': 'There are no more players available',\n 'Es stehen keine weiteren Team-Offiziellen zur Verfügung.': 'There are no more team officials available',\n 'Es wurden Spieler confirmed, der Roster aber noch nicht bestätigt. Fortfahren?': 'Players have been checked, but you didn\\'t confirm the rosters yet. Continue?',\n 'Es wurden Spieler confirmed, die Aufstellung aber noch nicht bestätigt. Fortfahren?': 'Players have been checked, but you didn\\'t confirm the lineups yet. Continue?',\n 'Event-Staff': 'Event Staff',\n 'Facecheck abgeschlossen. Spiel ist Ready to Play.': 'Face-check complete. Game is Ready to Play.',\n 'Facecheck konnte nicht abgeschlossen werden.': 'Could not complete face-check.',\n 'Facecheck konnte nicht übernommen werden.': 'Could not take face-check.',\n 'Facecheck übernehmen': 'Take Face-check',\n 'Facecheck übernehmen?': 'Take Face-check?',\n 'Facecheck übernehmen, um zu beginnen.': 'Take face-check to begin.',\n 'Facecheck übernommen.': 'Face-check taken.',\n 'Facecheck wird durchgeführt von:': 'Face-check is done by:',\n 'Facechecking...': 'Facechecking...',\n 'Fehler!': 'Error!',\n 'Fehler beim Laden.': 'Loading Error.',\n 'Field-Equipment': 'Field Equipment',\n 'Fieldjudge': 'Fieldjudge',\n 'Freitag': 'Friday',\n 'Füge Spieler mit + hinzu.': 'Add players with +.',\n 'Füge Team-Offizielle mit + hinzu.': 'Add team officials with +.',\n 'Funktion': 'Function',\n 'Funktion bearbeiten': 'Edit Function',\n 'Game-Management': 'Game-Management',\n 'Game-Observer': 'Game-Observer',\n 'Game Report Referee': 'Game Report Referee',\n 'Game Report Referee konnte nicht unterschrieben werden.': 'Could not sign Game Report Referee.',\n 'Game Report Referee konnte nicht geladen werden.': 'Could not load Game Report Referee.',\n 'Game Report Referee unterschrieben.': 'Game Report Referee signed.',\n 'Gast': 'Away',\n 'Gastteam': 'Away Team',\n 'gelb': 'yellow',\n 'Gesamt': 'Total',\n 'Gesperrt': 'Suspended',\n 'Gib deinen Benutzernamen ein.': 'Enter you username.',\n 'gold': 'gold',\n 'grau': 'gray',\n 'grün': 'green',\n 'Grund': 'Reason',\n 'Gruppieren nach': 'Group by',\n 'Halten zum Unterschreiben': 'Hold to Sign',\n 'Heim': 'Home',\n 'Heimteam': 'Home Team',\n 'Hell': 'Light',\n 'Helmfarbe': 'Helmet Color',\n 'Hinzufügen': 'Add',\n 'Hosenfarbe': 'Pant Color',\n 'Installiere...': 'Installing...',\n 'Installieren': 'Install',\n 'Jetzt installieren': 'Jetzt installieren',\n 'Kapitän': 'Captain',\n 'Kein Foto vorhanden': 'No Photo available',\n 'Keine': 'None',\n 'Keine Einträge': 'No Entries',\n 'Keine Funktion': 'No Function',\n 'Keine Linie': 'No Line',\n 'Keine Position': 'No Position',\n 'Keine Saisonen gefunden.': 'No seasons found.',\n 'Keine Spiele gefunden.': 'No games found.',\n 'Kommentar': 'Comment',\n 'Kompakt': 'Compact',\n 'Limits': 'Limits',\n 'Linejudge': 'Linejudge',\n 'Linesman': 'Linesman',\n 'Linie wählen': 'Select Line',\n 'Linien bearbeiten': 'Edit Lines',\n 'Links': 'Left',\n 'Liste ist leer.': 'List is empty.',\n 'Login': 'Login',\n 'Mercy-Rule ab': 'Mercy Rule from',\n 'Montag': 'Monday',\n 'Mitte': 'Center',\n 'Mittwoch': 'Wednesday',\n 'Nach dem Absenden erhältst du ein E-Mail zum Zurücksetzen deines Passworts.': 'After submitting the form you will receive an email to reset your password.',\n 'Nach dem Installieren der App kann diese vom Home-Bildschirm im Vollbildmodus gestartet werden.': 'After installing the app it can be launched from the home screen in fullscreen mode.',\n 'Name': 'Name',\n 'Neues Passwort': 'New Password',\n 'Neues Passwort wiederholen': 'Repeat New Password',\n 'nicht gesetzt': 'not assigned',\n 'OK': 'OK',\n 'Linie': 'Line',\n 'Login fehlgeschlagen. Benutzername und/oder Passwort ungültig.': 'Login failed. Invalid username/password.',\n 'Logout fehlgeschlagen.': 'Logout failed.',\n 'Offizielle': 'Officials',\n 'orange': 'orange',\n 'Ort': 'Location',\n 'Passwort': 'Password',\n 'Passwort konnte nicht zurückgesetzt werden. Der verwendete Token ist nicht mehr gültig.': 'Could not reset password. The given token is not valid anymore.',\n 'Passwort vergessen?': 'Forgot Password?',\n 'Passwort zurückgesetzt!': 'Password reset!',\n 'Passwort zurücksetzen': 'Reset Password',\n 'Passworthilfe': 'Password Help',\n 'PDF-Ansicht': 'PDF View',\n 'Penalties (Anzahl)': 'Penalties (Count)',\n 'Penalties (Yards)': 'Penalties (Yards)',\n 'Period': 'Period',\n 'petrol': 'petrol',\n 'pink': 'pink',\n 'Position': 'Position',\n 'Position Aktions-Button': 'Action Button Position',\n 'Position besetzen': 'Assign Position',\n 'Position nicht besetzen': 'Clear Position',\n 'Ready to Play': 'Ready to Play',\n 'Rechts': 'Right',\n 'Referee': 'Referee',\n 'Referees konnten nicht geladen werden.': 'Could not load referees',\n 'Roster-Veröffentlichung aufgehoben.': 'Roster unpublished',\n 'Roster-Veröffentlichung konnte nicht aufgehoben werden.': 'Could not unpublish roster.',\n 'Roster bestätigen': 'Confirm Rosters',\n 'Roster bestätigt. Spieler im Roster:': 'Rosters confirmed. Players in roster:',\n 'Roster entsperren': 'Unlock Rosters',\n 'Roster gesperrt': 'Rosters Locked',\n 'Roster in Vorbereitung': 'Rosters in Preparation',\n 'Roster ist leer.': 'Roster is empty.',\n 'Roster konnten nicht bestätigt werden.': 'Could not confirm rosters.',\n 'Roster konnten nicht entsperrt werden.': 'Could not unlock rosters.',\n 'Roster konnten nicht geladen werden.': 'Could not load rosters.',\n 'Roster konnten nicht gesperrt werden.': 'Could not lock rosters.',\n 'Roster konnte nicht veröffentlicht werden.': 'Could not publish roster.',\n 'Roster nicht veröffentlichen': 'Unpublish Roster',\n 'Roster offen': 'Rosters Unlocked',\n 'Roster öffnen': 'Open Rosters',\n 'Roster sperren': 'Lock Rosters',\n 'Roster veröffentlichen': 'Publish Roster',\n 'Roster veröffentlicht.': 'Roster published.',\n 'Roster wurden entsperrt. Teams können Spieler nun hinzufügen und bearbeiten.': 'Rosters unlocked. Teams are now able to add and edit player.',\n 'Roster wurden gesperrt. Teams können keine Spieler mehr hinzufügen oder bearbeiten. Facecheck kann durchgeführt werden.': 'Rosters locked. Teams are no longer able to add or edit players. You may now start the face-check.',\n 'rot': 'red',\n 'Saisonen': 'Seasons',\n 'Saisonen konnten nicht geladen werden.': 'Could not load seasons.',\n 'Samstag': 'Saturday',\n 'Schließen': 'Close',\n 'schwarz': 'black',\n 'Score': 'Score',\n 'Scores': 'Scores',\n 'Scores konnten nicht geladen werden.': 'Could not load scores.',\n 'Senden': 'Send',\n 'Setzen': 'Set',\n 'Shirtfarbe': 'Shirt Color',\n 'Sidejudge': 'Sidejudge',\n 'silber': 'silver',\n 'Sockenfarbe': 'Sock Color',\n 'Solltest du kein E-Mail bekommen, überprüfe bitte den Spam-Ordner.': 'If you do not receive an email, please check your spam folder.',\n 'Sonntag': 'Sunday',\n 'Sortieren nach': 'Sort by',\n 'Speichern': 'Save',\n 'Spiel': 'Game',\n 'Spiel #': 'Game #',\n 'Spiel ist Unready to Play. Facecheck kann wieder durchgeführt werden.': 'Game is Unready to Play. Face-check possible.',\n 'Spiel konnte nicht auf Unready to Play gesetzt werden.': 'Could not set game to Unready to Play.',\n 'Spiele': 'Games',\n 'Spiele konnten nicht geladen werden.': 'Could not load games.',\n 'Spieler-Equipment': 'Player Equipment',\n 'Spieler/Team-Offizielle hinzufügen': 'Add Players/Team Officials',\n 'Spieler auswählen': 'Select Player',\n 'Spieler bearbeiten': 'Edit Player',\n 'Spieler confirmen': 'Confirm Player',\n 'Spieler entfernen': 'Remove Player',\n 'Spieler entfernen?': 'Remove player?',\n 'Spieler Gesamt': 'Players total',\n 'Spieler hinzufügen': 'Add Players',\n 'Spieler ist ausgewählt': 'Player is Selected',\n 'Spieler ist confirmed': 'Player is Confirmed',\n 'Spieler konnte nicht entfernt werden.': 'Could not remove player.',\n 'Spieler konnten nicht geladen werden.': 'Could not load players.',\n 'Spieler suchen': 'Search Players',\n 'Spieler wurde entfernt.': 'Player has been removed.',\n 'Spielzeit': 'Game Time',\n 'Sprache': 'Language',\n 'Stadt': 'Town',\n 'Start': 'Start',\n 'Start (Linie 1)': 'Start (line 1)',\n 'Startspieler': 'Starting Player',\n 'Status': 'Status',\n 'TBD': 'TBD',\n 'Team-Name': 'Team Name',\n 'Team-Offizielle': 'Team Officials',\n 'Team-Offizielle Gesamt': 'Team Officials total',\n 'Team-Offizielle konnten nicht geladen werden.': 'Could not load team officials.',\n 'Team-Offizielle suchen': 'Search Team Officials',\n 'Team-Offiziellen auswählen': 'Select Team Official',\n 'Team-Offiziellen confirmen': 'Confirm Team Official',\n 'Team-Offiziellen entfernen': 'Remove Team Official',\n 'Team-Offiziellen entfernen?': 'Remove team official?',\n 'Team-Offizieller': 'Team Official',\n 'Team-Offizieller ist ausgewählt': 'Team Official is Selected',\n 'Team-Offizieller ist confirmed': 'Team Official is Confirmed',\n 'Team-Offizieller konnte nicht entfernt werden.': 'Could not remove team official.',\n 'Team-Offizieller wurde entfernt.': 'Team official has been removed.',\n 'Teams können noch keine Spieler hinzufügen oder bearbeiten. Aufstellungen öffnen, um den Teams die Bearbeitung zu ermöglichen.': 'Teams are not able to add or edit players yet. Open lineups to allow teams to edit their lineup.',\n 'Teams können noch keine Spieler hinzufügen oder bearbeiten. Roster öffnen, um den Teams die Bearbeitung zu ermöglichen.': 'Teams are not able to add or edit players yet. Open rosters to allow teams to edit their roster.',\n 'Teams können Spieler hinzufügen und bearbeiten. Aufstellungen sperren, um mit dem Facecheck zu beginnen.': 'Teams are allowed to add and edit players. Lock lineups to start the face-check.',\n 'Teams können Spieler hinzufügen und bearbeiten. Roster sperren, um mit dem Facecheck zu beginnen.': 'Teams are allowed to add and edit players. Lock rosters to start the face-check.',\n 'Time-Keeper': 'Time-Keeper',\n 'Tippe auf': 'Tap',\n 'Trikotnummer bearbeiten': 'Edit Jersey Number',\n 'Trikotnummern': 'Jersey Numbers',\n 'Uhrzeit': 'Time',\n 'Uhrzeit - Kickoff': 'Time - Kickoff',\n 'Uhrzeit - Spielende': 'Time - Final',\n 'Umpire': 'Umpire',\n 'und \"Zum Home-Bildschirm\"': 'and \"Add to Home Screen\"',\n 'Unready to Play': 'Unready to Play',\n 'Unterschrieben': 'Signed',\n 'Ups... da ist etwas schiefgelaufen :(': 'Oops... something went wrong :(',\n 'Verfügbare Spieler': 'Eligible Players',\n 'Veröffentlichung der Aufstellung aufgehoben.': 'Lineup unpublished',\n 'Veröffentlichung der Aufstellung konnte nicht aufgehoben werden.': 'Could not unpublish lineup.',\n 'Vertreter': 'Representative',\n 'violett': 'violet',\n 'Von': 'By',\n 'vs.': 'vs.',\n 'Wähle Spieler aus und füge sie zum Roster hinzu.': 'Select players and add them to the roster.',\n 'Wähle Spieler aus und füge sie zur Aufstellung hinzu.': 'Select players and add them to the lineup.',\n 'Wähle Spieler und Team-Offizielle aus und füge sie zum Roster hinzu.': 'Select players and team officials and add them to the roster.',\n 'Wähle Spieler und Team-Offizielle aus und füge sie zur Aufstellung hinzu.': 'Select players and team officials and add them to the lineup.',\n 'weiß': 'white',\n 'Weiter zum Login': 'Continue to Login',\n 'Wir empfehlen eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen sowie mindestens 8 Zeichen.': 'We suggest at least 8 characters consisting of uppercase and lowercase letters, numbers and special characters.',\n 'Zeitnehmer': 'Timekeeper',\n 'Zum Login': 'To Login',\n 'Zum Roster hinzugefügt': 'Added to roster',\n 'Zur Aufstellung hinzugefügt': 'Added to lineup',\n 'Zurück': 'Back',\n 'Zurücksetzen': 'Reset',\n\n 'Roster': {\n plural: 'Rosters',\n singular: 'Roster'\n },\n 'Spieler': {\n plural: 'Players',\n singular: 'Player'\n }\n\n};","import * as Ons from 'react-onsenui';\nimport { ROSTERS_UNLOCKED } from '../store/constants/statusCodes';\nimport { supports } from './context';\nimport { translate as _ } from './i18n';\n\nlet urlParameters = null;\n\nconst parseUrlParameters = () => {\n\n urlParameters = {};\n\n let params = window.location.search;\n\n if ( params ) {\n\n params = params.substring( 1 ).split( '&' ).forEach( param => {\n\n param = param.split( '=' );\n\n urlParameters[ param[ 0 ] ] = param[ 1 ];\n\n } );\n\n }\n\n};\n\nexport const coloredLabel = ( e, noHtml ) => {\n\n if ( ! e ) {\n\n return '';\n\n }\n\n let sum = 0;\n\n for ( let i = 0; i < e.length; i++ ) {\n\n sum += e.charCodeAt( i );\n\n }\n\n if ( noHtml ) {\n\n return ' [' + e + ']';\n\n }\n\n const className = 'label label-' + ( sum % 5 );\n\n return {e};\n\n};\n\nexport const deepCopy = e => window.structuredClone ? window.structuredClone( e ) : parseJSON( JSON.stringify( e ) );\n\nexport const expired = e => {\n\n if ( ! e ) {\n\n return true;\n\n }\n\n if ( ! ( e instanceof Date ) ) {\n\n e = new Date( e );\n\n }\n\n const expirationDate = new Date();\n\n expirationDate.setHours( expirationDate.getHours() - 1 );\n\n return e < expirationDate;\n\n};\n\nexport const getActionButtonPosition = userSettings => ( 'actionButtonPosition' in userSettings ) ? userSettings.actionButtonPosition : 2;\n\nexport const getRosterPublicStatusClass = ( context, roster, team ) => supports( context, 'rosterPublishing' ) && roster && roster.rosterStatus && ( roster.rosterStatus === ROSTERS_UNLOCKED && ! roster[ team + 'RosterIsPublic' ] ? 'roster-public-status-unpublished' : 'roster-public-status-published' );\n\nexport const getRosterPublicStatusIcon = ( context, game, team ) => supports( context, 'rosterPublishing' ) && game.rosterStatus && ;\n\nexport const getUrlParameter = parameterName => {\n\n ! urlParameters && parseUrlParameters();\n\n return urlParameters[ parameterName ];\n\n};\n\nexport const getWeekday = date => {\n\n return [ _( 'Sonntag' ), _( 'Montag' ), _( 'Dienstag' ), _( 'Mittwoch' ), _( 'Donnerstag' ), _( 'Freitag' ), _( 'Samstag' ) ][ date.getDay() ];\n\n};\n\nexport const hasLocalChanges = e => {\n\n for ( let i = 0; i < e.length; i++ ) {\n\n for ( let j = 0; j < e[ i ].length; j++ ) {\n\n if ( e[ i ][ j ].locallyChanged ) {\n\n return true;\n\n }\n\n }\n\n }\n\n return false;\n\n};\n\nexport const isAbsent = player => ( player && player.lineupData && player.lineupData.position && player.lineupData.position.indexOf( '#ABSENT' ) !== -1 );\n\nexport const parseJSON = e => {\n\n if ( ! e ) {\n\n return null;\n\n }\n\n try {\n\n return JSON.parse( e );\n\n } catch( f ) {\n\n return e;\n\n }\n\n};\n\nexport const reload = () => setTimeout( () => window.location.reload(), 200 );\n\nexport const shorten = ( e, maxLength = 3 ) => {\n\n if ( ! e || ! ( typeof e === 'string' ) || e.length <= maxLength ) {\n\n return e;\n\n }\n\n return e.substr( 0, maxLength ) + '..';\n\n}","import { GRR_DRAFT, GRR_SIGNED_BY_REF } from '../constants/statusCodes';\nimport {\n ADDING_PLAYERS_TO_ROSTER_FAILED,\n ADDING_PLAYERS_TO_ROSTER_SUCCEEDED,\n CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED,\n CONFIRMING_ROSTER_PLAYERS_SUCCEEDED,\n EDITING_ROSTER_PLAYER_FAILED,\n EDITING_ROSTER_PLAYERS_FAILED,\n EDITING_ROSTER_PLAYER_SUCCEEDED,\n EDITING_ROSTER_PLAYERS_SUCCEEDED,\n LOADING_GAME_REPORT_REFEREE_FAILED,\n LOADING_GAME_REPORT_REFEREE_SUCCEEDED,\n LOADING_GAMES_FAILED,\n LOADING_GAMES_SUCCEEDED,\n LOADING_ELIGIBLE_PLAYERS_FAILED,\n LOADING_ELIGIBLE_PLAYERS_SUCCEEDED,\n LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED,\n LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED,\n LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED,\n LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED,\n LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED,\n LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED,\n LOADING_REFEREES_FAILED,\n LOADING_REFEREES_SUCCEEDED,\n LOADING_ROSTERS_FAILED,\n LOADING_ROSTERS_SUCCEEDED,\n LOADING_SEASONS_FAILED,\n LOADING_SEASONS_SUCCEEDED,\n LOGOUT_FAILED,\n LOGOUT_SUCCEEDED,\n REMOVING_ROSTER_PLAYER_FAILED,\n REMOVING_ROSTER_PLAYER_SUCCEEDED,\n SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED,\n SET_ACTIVE_GAME,\n SET_ACTIVE_SEASON,\n SETTING_ROSTER_STATUS_SUCCEEDED,\n SIGNING_GAME_REPORT_REFEREE_SUCCEEDED,\n SIGNING_SUPPLEMENTARY_SUCCEEDED,\n TAKING_FACE_CHECK_SUCCEEDED,\n PUBLISHING_ROSTER_SUCCEEDED,\n OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED\n} from '../constants/actionTypes';\nimport { CAPTAIN_C, POSITION_HEAD_COACH } from '../constants/misc';\nimport { parseKey, reduceLoadingEligiblesFailed, reduceLoadingEligiblesSucceeded } from '../../util/reducer-helpers';\nimport { supports } from '../../util/context';\nimport { deepCopy } from '../../util';\n\nconst defaultItems = {\n activeItem: null,\n items: null,\n lastUpdate: null\n};\n\nconst initialState = {\n gameReportsReferee: {},\n games: { ...defaultItems },\n eligiblePlayers: {},\n eligibleTeamOfficials: {},\n extendedEligiblePlayers: {},\n extendedEligibleTeamOfficials: {},\n referees: {},\n rosters: {},\n seasons: { ...defaultItems }\n};\n\nconst reducer = ( state = initialState, action ) => {\n\n // console.log( 'reducers.items', state, action );\n\n const lastUpdate = ( new Date() ).toJSON();\n\n switch ( action.type ) {\n\n case ADDING_PLAYERS_TO_ROSTER_FAILED: {\n\n // TODO save in localChanges\n\n return state;\n\n }\n\n case ADDING_PLAYERS_TO_ROSTER_SUCCEEDED: {\n\n const { context, gameId, team, players } = action.payload;\n const rosters = { ...state.rosters };\n\n rosters[ gameId ].items[ team + 'Roster' ].push( ...players );\n\n if ( supports( context, 'teamOfficials' ) ) {\n\n const teamOfficials = action.payload.teamOfficials;\n\n if ( ! rosters[ gameId ].items[ team + 'TeamOfficials' ] ) {\n\n rosters[ gameId ].items[ team + 'TeamOfficials' ] = [];\n\n }\n\n rosters[ gameId ].items[ team + 'TeamOfficials' ].push( ...teamOfficials );\n\n }\n\n return { ...state, rosters };\n\n }\n\n case CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED: {\n\n const { gameId, gameReportReferee, username } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n const meta = ( gameId in gameReportsReferee ) ? gameReportsReferee[ gameId ].meta : null;\n gameReportsReferee[ gameId ] = { gameReportReferee, meta: { ...meta, status: GRR_SIGNED_BY_REF, statusChangedAt: lastUpdate, statusChangedBy: username }, lastUpdate };\n\n return { ...state, gameReportsReferee };\n\n }\n\n case SIGNING_GAME_REPORT_REFEREE_SUCCEEDED: {\n\n const { gameId, team, comment, name, username } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n const gameReportReferee = { ...gameReportsReferee[ gameId ].gameReportReferee };\n const meta = { ...gameReportsReferee[ gameId ].meta };\n const key = 'notes' + ( team === 'home' ? 'Home' : 'Away' );\n\n gameReportReferee[ key ].comment = comment;\n gameReportReferee[ key ].name = name;\n meta[ team + 'ConfirmationAt' ] = lastUpdate;\n meta[ team + 'ConfirmationBy' ] = username;\n gameReportsReferee[ gameId ] = { gameReportReferee, meta, lastUpdate };\n\n return { ...state, gameReportsReferee };\n\n }\n\n case OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED: {\n\n const { gameId, gameReportReferee } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n const meta = ( gameId in gameReportsReferee ) ? { ...gameReportsReferee[ gameId ].meta } : null;\n gameReportsReferee[ gameId ] = { gameReportReferee, meta, lastUpdate };\n\n return { ...state, gameReportsReferee };\n\n }\n\n case CONFIRMING_ROSTER_PLAYERS_SUCCEEDED: {\n\n const { data, gameId } = action.payload;\n const rosters = { ...state.rosters };\n\n if ( rosters && ( gameId in rosters ) && rosters[ gameId ].items ) {\n\n rosters[ gameId ].items = { ...rosters[ gameId ].items, ...data };\n\n }\n\n return { ...state, rosters };\n\n }\n\n case EDITING_ROSTER_PLAYER_FAILED: {\n\n // TODO save in localChanges\n\n return state;\n\n }\n\n case EDITING_ROSTER_PLAYERS_FAILED: {\n\n // do nothing\n\n return state;\n\n }\n\n case EDITING_ROSTER_PLAYER_SUCCEEDED: {\n\n const { gameId, team, player } = action.payload;\n const rosters = { ...state.rosters };\n const items = rosters[ gameId ].items[ team + ( player.isTeamOfficial ? 'TeamOfficials' : 'Roster' ) ];\n\n items.splice( items.findIndex( rosterPlayer => rosterPlayer.id === player.id ), 1, { ...player } );\n\n if ( player.isTeamOfficial && player.lineupData.job === POSITION_HEAD_COACH ) {\n\n let existingHeadCoach = items.find( e => {\n\n parseKey( e, 'lineupData' );\n\n return e.id !== player.id && e.lineupData.job === POSITION_HEAD_COACH;\n\n } );\n\n if ( existingHeadCoach ) {\n\n existingHeadCoach = { ...existingHeadCoach, lineupData: { ...existingHeadCoach.lineupData, job: null } };\n\n items.splice( items.findIndex( rosterPlayer => rosterPlayer.id === existingHeadCoach.id ), 1, existingHeadCoach );\n\n }\n\n } else if ( ! player.isTeamOfficial && player.lineupData.captain === CAPTAIN_C ) {\n\n let existingCaptain = items.find( e => {\n\n parseKey( e, 'lineupData' );\n\n return e.id !== player.id && e.lineupData.captain === CAPTAIN_C;\n\n } );\n\n if ( existingCaptain ) {\n\n existingCaptain = { ...existingCaptain, lineupData: { ...existingCaptain.lineupData, captain: null } };\n\n items.splice( items.findIndex( rosterPlayer => rosterPlayer.id === existingCaptain.id ), 1, existingCaptain );\n\n }\n\n }\n\n return { ...state, rosters };\n\n }\n\n case EDITING_ROSTER_PLAYERS_SUCCEEDED: {\n\n const { gameId, team, players } = action.payload;\n const rosters = deepCopy( state.rosters );\n const items = rosters[ gameId ].items[ team + 'Roster' ];\n\n players.forEach( e => {\n\n const player = items.find( item => item.id === e.playerId );\n\n if ( player ) {\n\n player.lineupData = e.lineupData;\n\n } else {\n\n console.log( 'player not found!', e, items );\n\n }\n\n } );\n\n return { ...state, rosters };\n\n }\n\n case LOADING_ELIGIBLE_PLAYERS_SUCCEEDED: {\n\n return reduceLoadingEligiblesSucceeded( action, state, lastUpdate, 'eligiblePlayers' );\n\n }\n\n case LOADING_ELIGIBLE_PLAYERS_FAILED: {\n\n return reduceLoadingEligiblesFailed( action, state, lastUpdate, 'eligiblePlayers' );\n\n }\n\n case LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED: {\n\n return reduceLoadingEligiblesSucceeded( action, state, lastUpdate, 'eligibleTeamOfficials' );\n\n }\n\n case LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED: {\n\n return reduceLoadingEligiblesFailed( action, state, lastUpdate, 'eligibleTeamOfficials' );\n\n }\n\n case LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED: {\n\n return reduceLoadingEligiblesSucceeded( action, state, lastUpdate, 'extendedEligiblePlayers' );\n\n }\n\n case LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED: {\n\n return reduceLoadingEligiblesFailed( action, state, lastUpdate, 'extendedEligiblePlayers' );\n\n }\n\n case LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED: {\n\n return reduceLoadingEligiblesSucceeded( action, state, lastUpdate, 'extendedEligibleTeamOfficials' );\n\n }\n\n case LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED: {\n\n return reduceLoadingEligiblesFailed( action, state, lastUpdate, 'extendedEligibleTeamOfficials' );\n\n }\n\n case LOADING_GAME_REPORT_REFEREE_FAILED: {\n\n const { gameId } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n const gameReportReferee = ( gameId in gameReportsReferee ) ? gameReportsReferee[ gameId ] : null;\n\n gameReportsReferee[ gameId ] = { ...gameReportReferee, lastUpdate };\n\n return { ...state, gameReportsReferee };\n\n }\n\n case LOADING_GAME_REPORT_REFEREE_SUCCEEDED: {\n\n const { gameId, data } = action.payload;\n const gameReportReferee = JSON.parse( data.reportJson || null );\n const meta = {\n\n awayConfirmationAt: data.awayConfirmationAt,\n awayConfirmationBy: data.awayConfirmationBy,\n editLevel: data.editLevel || 0,\n homeConfirmationAt: data.homeConfirmationAt,\n homeConfirmationBy: data.homeConfirmationBy,\n status: data.status || GRR_DRAFT,\n statusChangedAt: data.statusChangedAt,\n statusChangedBy: data.statusChangedBy\n\n };\n\n const gameReportsReferee = { ...state.gameReportsReferee };\n gameReportsReferee[ gameId ] = { gameReportReferee, meta, lastUpdate };\n\n return { ...state, gameReportsReferee };\n\n }\n\n case LOADING_GAMES_SUCCEEDED: {\n\n return { ...state, games: { ...state.games, items: action.payload.games, lastUpdate, activeItem: action.payload.games.find( e => state.games.activeItem && state.games.activeItem.id === e.id ) } };\n\n }\n\n case LOADING_GAMES_FAILED: {\n\n return { ...state, games: { ...state.games, lastUpdate } };\n\n }\n\n case LOADING_REFEREES_FAILED: {\n\n const { gameId } = action.payload;\n const referees = { ...state.referees };\n const items = ( gameId in referees ) ? referees[ gameId ].items : null;\n\n referees[ gameId ] = { items, lastUpdate };\n\n return { ...state, referees };\n\n }\n\n case LOADING_REFEREES_SUCCEEDED: {\n\n const { gameId } = action.payload;\n const referees = action.payload.referees.map( e => {\n\n e.label = e.Lastname + ' ' + e.Firstname;\n e.value = e.Lastname + ' ' + e.Firstname;\n\n return e;\n\n } );\n\n const newReferees = { ...state.referees };\n newReferees[ gameId ] = { items: referees, lastUpdate };\n\n return { ...state, referees: newReferees };\n\n }\n\n case LOADING_ROSTERS_SUCCEEDED: {\n\n const { gameId, rosters } = action.payload;\n const newRosters = { ...state.rosters };\n newRosters[ gameId ] = { items: rosters, lastUpdate };\n\n return { ...state, rosters: newRosters };\n\n }\n\n case LOADING_ROSTERS_FAILED: {\n\n const { gameId } = action.payload;\n const items = ( gameId in state.rosters ) ? state.rosters[ gameId ].items : null;\n const newRosters = { ...state.rosters };\n newRosters[ gameId ] = { items, lastUpdate };\n\n return { ...state, rosters: newRosters };\n\n }\n\n case LOADING_SEASONS_SUCCEEDED: {\n\n return { ...state, seasons: { ...state.seasons, items: action.payload.seasons, lastUpdate } };\n\n }\n\n case LOADING_SEASONS_FAILED: {\n\n return { ...state, seasons: { ...state.seasons, lastUpdate } };\n\n }\n\n case LOGOUT_FAILED:\n case LOGOUT_SUCCEEDED: {\n\n return initialState;\n\n }\n\n case PUBLISHING_ROSTER_SUCCEEDED: {\n\n const { gameId, team, publish } = action.payload;\n const rosters = { ...state.rosters };\n rosters[ gameId ].items[ team + 'RosterIsPublic' ] = publish;\n\n return { ...state, rosters };\n\n }\n\n case REMOVING_ROSTER_PLAYER_FAILED: {\n\n // TODO save in localChanges\n\n return state;\n\n }\n\n case REMOVING_ROSTER_PLAYER_SUCCEEDED: {\n\n const { gameId, team, playerId, isTeamOfficial } = action.payload;\n const key = team + ( isTeamOfficial ? 'TeamOfficials' : 'Roster' );\n const rosters = { ...state.rosters };\n rosters[ gameId ].items[ key ] = rosters[ gameId ].items[ key ].filter( player => player.id !== playerId );\n\n return { ...state, rosters };\n\n }\n\n case SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED: {\n\n const { gameId, gameReportReferee } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n gameReportsReferee[ gameId ] = { gameReportReferee, lastUpdate };\n\n return { ...state, gameReportsReferee };\n\n }\n\n case SET_ACTIVE_GAME: {\n\n return { ...state, games: { ...state.games, activeItem: action.payload.game } };\n\n }\n\n case SET_ACTIVE_SEASON: {\n\n return { ...state, seasons: { ...state.seasons, activeItem: action.payload.season } };\n\n }\n\n case SETTING_ROSTER_STATUS_SUCCEEDED: {\n\n const { gameId, rosterStatus } = action.payload;\n const games = { ...state.games };\n const rosters = { ...state.rosters };\n\n if ( games.items ) {\n\n games.items = games.items.map( game => {\n\n if ( game.id === gameId ) {\n\n game.rosterStatus = rosterStatus;\n\n }\n\n return game;\n\n } );\n\n }\n\n if ( rosters && ( gameId in rosters ) && rosters[ gameId ].items ) {\n\n rosters[ gameId ].items.rosterStatus = rosterStatus;\n\n }\n\n return { ...state, games, rosters };\n\n }\n\n case SIGNING_SUPPLEMENTARY_SUCCEEDED: {\n\n const signedAt = action.payload.data;\n const { gameId, team } = action.payload;\n const games = { ...state.games };\n const key = team === 'home' ? 'supplementaryAcceptedByHomeAt' : 'supplementaryAcceptedByAwayAt';\n\n if ( games.items ) {\n\n games.items = games.items.map( game => {\n\n if ( game.id === gameId ) {\n\n game[ key ] = signedAt;\n\n }\n\n return game;\n\n } );\n\n }\n\n if ( games.activeItem ) {\n\n games.activeItem[ key ] = signedAt;\n\n }\n\n return { ...state, games };\n\n }\n\n case TAKING_FACE_CHECK_SUCCEEDED: {\n\n const { data, gameId } = action.payload;\n const rosters = { ...state.rosters };\n\n if ( rosters && ( gameId in rosters ) && rosters[ gameId ].items ) {\n\n rosters[ gameId ].items = { ...rosters[ gameId ].items, ...data };\n\n }\n\n return { ...state, rosters };\n\n }\n\n default:\n\n return state;\n\n }\n\n};\n\nexport default reducer;","import { getScores } from '../../util/reducer-helpers';\nimport {\n CONFIRM_ROSTER_PLAYER,\n CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED,\n CONFIRMING_ROSTER_PLAYERS_SUCCEEDED,\n DISMISS_GAME_REPORT_REFEREE_CHANGES,\n LOADING_SCORES_SUCCEEDED,\n LOGOUT_FAILED,\n LOGOUT_SUCCEEDED,\n SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED,\n SIGNING_GAME_REPORT_REFEREE_SUCCEEDED,\n UPDATE_GAME_REPORT_REFEREE\n} from '../constants/actionTypes';\n\nconst initialState = {\n rosters: {},\n gameReportsReferee: {}\n};\n\nconst reducer = ( state = initialState, action ) => {\n\n // console.log( 'reducers.localChanges', state, action );\n\n switch ( action.type ) {\n\n case CONFIRM_ROSTER_PLAYER: {\n\n const { gameId, playerId, isConfirmed } = action.payload;\n const rosters = { ...state.rosters };\n\n if ( ! ( gameId in rosters ) ) {\n\n rosters[ gameId ] = {};\n rosters[ gameId ][ playerId ] = { isConfirmed };\n\n } else if ( ! ( playerId in rosters[ gameId ] ) ) {\n\n rosters[ gameId ][ playerId ] = { isConfirmed };\n\n } else if ( 'isConfirmed' in rosters[ gameId ][ playerId ] ) {\n\n delete rosters[ gameId ][ playerId ].isConfirmed;\n\n } else {\n\n rosters[ gameId ][ playerId ].isConfirmed = isConfirmed;\n\n }\n\n return { ...state, rosters };\n\n }\n\n case CONFIRMING_ROSTER_PLAYERS_SUCCEEDED: {\n\n const { gameId } = action.payload;\n const rosters = { ...state.rosters };\n\n if ( gameId in rosters ) {\n\n for ( const playerId in rosters[ gameId ] ) {\n\n delete rosters[ gameId ][ playerId ].isConfirmed;\n\n }\n\n }\n\n return { ...state, rosters };\n\n }\n\n case LOADING_SCORES_SUCCEEDED: {\n\n const { gameId, scores } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n const gameReportReferee = ( gameId in gameReportsReferee ) ? { ...gameReportsReferee[ gameId ] } : {};\n\n gameReportReferee.periodScoresHome = getScores( gameReportReferee.periodScoresHome || [], scores.home );\n gameReportReferee.periodScoresAway = getScores( gameReportReferee.periodScoresAway || [], scores.away );\n\n gameReportsReferee[ gameId ] = gameReportReferee;\n\n return { ...state, gameReportsReferee };\n\n }\n\n case LOGOUT_FAILED:\n case LOGOUT_SUCCEEDED: {\n\n return initialState;\n\n }\n\n case CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED:\n case DISMISS_GAME_REPORT_REFEREE_CHANGES:\n case SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED:\n case SIGNING_GAME_REPORT_REFEREE_SUCCEEDED:\n\n {\n\n const { gameId } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n\n delete gameReportsReferee[ gameId ];\n\n return { ...state, gameReportsReferee };\n\n }\n\n case UPDATE_GAME_REPORT_REFEREE: {\n\n const { gameId, data } = action.payload;\n const gameReportsReferee = { ...state.gameReportsReferee };\n\n gameReportsReferee[ gameId ] = { ...gameReportsReferee[ gameId ], ...data };\n\n return { ...state, gameReportsReferee };\n\n }\n\n default:\n\n return state;\n\n }\n\n};\n\nexport default reducer;","import { SET_USER_SETTING, UPDATE_USER_SETTINGS } from '../constants/actionTypes';\n\nconst initialState = {\n actionButtonPosition: 2,\n appearanceMode: 0,\n language: 0,\n playerListSettings: {}\n};\n\nconst reducer = ( state = initialState, action ) => {\n\n // console.log( 'reducers.userSettings', state, action );\n\n switch ( action.type ) {\n\n case SET_USER_SETTING: {\n\n const { setting, value } = action.payload;\n\n return { ...state, [ setting ]: value };\n\n }\n\n case UPDATE_USER_SETTINGS: {\n\n return { ...action.payload.userSettings };\n\n }\n\n default:\n\n return state;\n\n }\n\n};\n\nexport default reducer;","import { combineReducers } from 'redux';\nimport app from './app';\nimport auth from './auth';\nimport items from './items';\nimport localChanges from './localChanges';\nimport userSettings from './userSettings';\n\nexport default combineReducers( { app, auth, items, localChanges, userSettings } );","import { createStore, applyMiddleware, compose } from 'redux';\nimport storage from 'redux-persist/lib/storage';\nimport { persistStore, persistReducer } from 'redux-persist';\nimport createSagaMiddleware from 'redux-saga';\nimport reducers from './reducers';\n// import sagas from './sagas';\n\nconst persistConfig = { key: 'root', storage, blacklist: [] };\nconst sagaMiddleware = createSagaMiddleware();\nconst persistedReducer = persistReducer( persistConfig, reducers );\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\nconst store = createStore( persistedReducer, composeEnhancers( applyMiddleware( sagaMiddleware ) ) );\nconst persistor = persistStore( store );\n\nexport { store, persistor, sagaMiddleware };","export default __webpack_public_path__ + \"static/media/dp-logo.7da71c10.png\";","import React from 'react';\nimport logo from '../../img/logos/dp-logo.png';\n\nclass SplashScreen extends React.Component {\n\n render() {\n\n return (\n\n
\"Logo\"
\n\n );\n\n }\n\n}\n\nexport default SplashScreen;","import { CHANGE_PAGE, DISMISS_ERROR, DISMISS_LOADING_SUCCEEDED, SET_ERROR, IS_LOADING } from '../constants/actionTypes';\n\nexport const changePage = route => {\n\n return {\n type: CHANGE_PAGE,\n payload: { route }\n };\n\n};\n\nexport const dismissError = () => {\n\n return {\n type: DISMISS_ERROR\n };\n\n};\n\nexport const dismissLoadingSucceeded = () => {\n\n return {\n type: DISMISS_LOADING_SUCCEEDED\n };\n\n};\n\nexport const setError = error => {\n\n return {\n type: SET_ERROR,\n payload: { error }\n };\n\n};\n\nexport const isLoading = loading => {\n\n return {\n type: IS_LOADING,\n payload: { loading }\n };\n\n};","import { SET_USER_SETTING, UPDATE_USER_SETTINGS } from '../constants/actionTypes';\n\nexport const setUserSetting = ( setting, value ) => {\n\n return {\n type: SET_USER_SETTING,\n payload: { setting, value }\n }\n\n};\n\nexport const updateUserSettings = userSettings => {\n\n return {\n type: UPDATE_USER_SETTINGS,\n payload: { userSettings }\n }\n\n};","import ons from 'onsenui';\nimport { translate as _ } from './i18n';\n\nconst defaultMessageTimeout = 4000;\n\nexport const generalError = () => {\n\n ons.notification.alert( {\n message: _( 'Ein unbekannter Fehler ist aufgetreten. Bitte probiere es später noch einmal.' ),\n title: _( 'Fehler' )\n } );\n\n};\n\nexport const showAlert = options => {\n\n ons.notification.alert( {\n\n ...options\n\n } );\n\n};\n\nexport const showMessage = options => {\n\n ons.notification.toast( {\n\n buttonLabel: '',\n timeout: defaultMessageTimeout,\n\n ...options\n\n } );\n\n};","import { put } from 'redux-saga/effects';\nimport { SET_ERROR } from '../store/constants/actionTypes';\nimport * as errorCodes from '../store/constants/errorCodes';\nimport { translate as _ } from './i18n';\nimport { showMessage } from './ui';\n\nconst messages = {\n\n [ errorCodes.GENERAL_ERROR ]: _( 'Allgemeiner Fehler.' ),\n [ errorCodes.LOADING_ERROR ]: _( 'Fehler beim Laden.' ),\n [ errorCodes.LOGIN_ERROR ]: _( 'Login fehlgeschlagen. Benutzername und/oder Passwort ungültig.' ),\n [ errorCodes.LOGOUT_ERROR ]: _( 'Logout fehlgeschlagen.' ),\n [ errorCodes.RESET_PASSWORD_ERROR ]: _( 'Passwort konnte nicht zurückgesetzt werden. Der verwendete Token ist nicht mehr gültig.' ),\n [ errorCodes.SEND_PASSWORD_RECOVERY_ERROR ]: _( 'E-Mail konnte nicht gesendet werden. Bitte überprüfe deinen Benutzernamen.' )\n\n};\n\nexport const error = ( code = errorCodes.GENERAL_ERROR ) => {\n\n if ( ! ( code in messages ) ) {\n\n throw new Error( 'Invalid Error Code \"' + code + '\".' );\n\n }\n\n return { code };\n\n};\n\nexport function* loadingError( actionType, errorCode = errorCodes.LOADING_ERROR, payload, message ) {\n\n yield put( { type: actionType, payload } );\n\n if ( errorCode !== null ) {\n\n yield put( { type: SET_ERROR, payload: { error: error( errorCode ) } } );\n\n }\n\n if ( message ) {\n\n showMessage( { message } );\n\n }\n\n}\n\nexport const getErrorMessage = ( code ) => {\n\n return ( ( code in messages ) ? _( messages[ code ] ) : '' );\n\n};","export const GENERAL_ERROR = 1;\nexport const LOADING_ERROR = 20;\nexport const LOGIN_ERROR = 100;\nexport const LOGOUT_ERROR = 110;\nexport const SEND_PASSWORD_RECOVERY_ERROR = 120;\nexport const RESET_PASSWORD_ERROR = 130;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport packageJson from '../../../../package.json';\nimport { reload } from '../../util';\nimport { getContexts } from '../../util/context';\nimport { translate as _, getLanguages } from '../../util/i18n';\nimport { getErrorMessage } from '../../util/error';\nimport { showAlert } from '../../util/ui';\nimport logo from '../../../img/logos/dp-logo.png';\nimport { RESETTING_PASSWORD_SUCCEEDED, SENDING_PASSWORD_RECOVERY_SUCCEEDED } from '../../store/constants/actionTypes';\n\nclass Login extends React.Component {\n\n #contexts;\n #languages;\n\n constructor( props ) {\n\n super( props );\n\n // console.log( 'components.pages.Login.constructor()', props );\n\n this.state = {\n username: '',\n password: '',\n context: props.context,\n newPassword: '',\n newPasswordRepeat: '',\n passwordRecovery: false,\n passwordRecoveryUsername: ''\n };\n\n this.handleContextChange = this.handleContextChange.bind( this );\n this.handleErrorDismiss = this.handleErrorDismiss.bind( this );\n this.handleForgotPasswordClick = this.handleForgotPasswordClick.bind( this );\n this.handleInputChange = this.handleInputChange.bind( this );\n this.handleLanguageSelection = this.handleLanguageSelection.bind( this );\n this.handleLogin = this.handleLogin.bind( this );\n this.handleResetPasswordClick = this.handleResetPasswordClick.bind( this );\n this.handleSendPasswordRecoveryClick = this.handleSendPasswordRecoveryClick.bind( this );\n this.handleToLoginClick = this.handleToLoginClick.bind( this );\n\n this.#contexts = getContexts();\n this.#languages = getLanguages();\n\n }\n\n handleInputChange( e ) {\n\n this.setState( { [ e.target.name ]: e.target.value } );\n\n }\n\n handleContextChange( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // const index = e.target.value;\n const index = Number( e.target.querySelector( 'input:checked' ).value );\n const context = this.#contexts[ index ].key;\n\n this.setState( { context }, () => this.props.onSetContext( context ) );\n\n }\n\n handleForgotPasswordClick( e ) {\n\n e.preventDefault();\n\n this.setState( { passwordRecovery: true } );\n\n setTimeout( () => document.querySelector( '#passwordRecoveryUsername input' ).focus(), 200 );\n\n }\n\n handleLanguageSelection( e ) {\n\n this.props.onSelectLanguage( e );\n\n reload();\n\n }\n\n handleLogin( e ) {\n\n e.preventDefault();\n\n if ( ! this.state.username ) {\n\n return document.querySelector( '#username input' ).focus();\n\n }\n\n if ( ! this.state.password ) {\n\n return document.querySelector( '#password input' ).focus();\n\n }\n\n this.props.onLogin( this.state.context, this.state.username, this.state.password );\n\n }\n\n handleErrorDismiss() {\n\n this.props.onDismissError();\n\n }\n\n handleResetPasswordClick( e ) {\n\n e.preventDefault();\n\n if ( ! this.state.newPassword ) {\n\n return document.querySelector( '#newPassword input' ).focus();\n\n }\n\n if ( ! this.state.newPasswordRepeat ) {\n\n return document.querySelector( '#newPasswordRepeat input' ).focus();\n\n }\n\n if ( this.state.newPassword !== this.state.newPasswordRepeat ) {\n\n return showAlert( {\n\n buttonLabels: [ _( 'Schließen' ) ],\n cancelable: true,\n message: _( 'Die eingegeben Passwörter stimmen nicht überein.' ),\n title: ''\n\n } );\n\n }\n\n this.props.onResetPassword( this.state.context, this.props.resetPasswordToken, this.state.newPasswordRepeat );\n\n }\n\n handleSendPasswordRecoveryClick( e ) {\n\n e.preventDefault();\n\n if ( ! this.state.passwordRecoveryUsername ) {\n\n return document.querySelector( '#passwordRecoveryUsername input' ).focus();\n\n }\n\n this.props.onSendPasswordRecovery( this.state.context, this.state.passwordRecoveryUsername );\n\n }\n\n handleToLoginClick() {\n\n if ( this.props.resetPasswordToken ) {\n\n window.location.search = '';\n\n } else {\n\n this.setState( { passwordRecovery: false, passwordRecoveryUsername: '' } );\n\n this.props.loadingSucceeded && this.props.onDismissLoadingSucceeded();\n\n }\n\n }\n\n renderContextFormControl() {\n\n return (\n\n
\n\n this.state.context === context.key )} onPostChange={this.handleContextChange}>\n\n {this.#contexts.map( context => {_( context.label )} )}\n\n \n\n
\n\n );\n\n }\n\n render() {\n\n return (\n\n \n\n \n
{_( 'Fehler!' )}
\n
{this.props.error && getErrorMessage( this.props.error.code )}
\n
\n {_( 'OK' )}\n
\n
\n\n
\n\n
\n\n
\"Logo\"
\n\n \n\n
\n\n {this.props.resetPasswordToken ?\n\n ( this.props.loadingSucceeded === RESETTING_PASSWORD_SUCCEEDED ?\n\n <>\n\n

{_( 'Passwort zurückgesetzt!' )}

\n\n

{_( 'Du kannst dich nun mit deinem Benutzernamen und deinem neuen Passwort einloggen.' )}

\n\n
\n\n {_( 'Weiter zum Login' )} \n\n
\n\n \n\n :\n\n <>\n\n

{_( 'Passwort zurücksetzen' )}

\n\n
{_( 'Bitte wähle ein neues Passwort.' ) + ' ' + _( 'Wir empfehlen eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen sowie mindestens 8 Zeichen.' )}
\n\n
\n\n \n \n\n
\n\n
\n\n \n \n\n
\n\n
\n\n {_( 'Zum Login' )}\n\n {_( 'Zurücksetzen' )}\n\n
\n\n \n\n )\n\n : this.props.loadingSucceeded === SENDING_PASSWORD_RECOVERY_SUCCEEDED ?\n\n <>\n\n

{_( 'Du hast eine Nachricht!' )}

\n\n

{_( 'Ein E-Mail zum Zurücksetzen deines Passworts wurde an deine E-Mail-Adresse gesendet.' )}

\n\n

{_( 'Solltest du kein E-Mail bekommen, überprüfe bitte den Spam-Ordner.' )}

\n\n
\n\n {_( 'Weiter zum Login' )} \n\n
\n\n \n\n : this.state.passwordRecovery ?\n\n <>\n\n

{_( 'Passworthilfe' )}

\n\n
{_( 'Gib deinen Benutzernamen ein.' ) + ' ' + _( 'Nach dem Absenden erhältst du ein E-Mail zum Zurücksetzen deines Passworts.' ) + ' ' + _( 'Solltest du kein E-Mail bekommen, überprüfe bitte den Spam-Ordner.' )}
\n\n
\n\n \n \n\n
\n\n {this.renderContextFormControl()}\n\n
\n\n {_( 'Zurück' )}\n\n {_( 'Senden' )}\n\n
\n\n \n\n :\n\n <>\n\n
\n\n \n \n\n
\n\n
\n\n \n \n\n
\n\n {this.renderContextFormControl()}\n\n
\n\n {_( 'Login' )}\n\n
\n\n {_( 'Passwort vergessen?' )}\n\n {this.props.loading &&
}\n\n \n\n }\n\n
\n\n
\n\n
\n\n
\n\n {this.#languages.map( ( e, i ) => this.handleLanguageSelection( i )} className={this.props.language === i ? 'active' : ''}>{e.label} )}\n\n
\n\n
{_( 'Digitaler Spielerpass' )} v{packageJson.version}
\n\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default Login;","import { connect } from 'react-redux';\nimport { login, resetPassword, sendPasswordRecovery, setContext } from '../../store/actions/auth';\nimport { dismissError, dismissLoadingSucceeded, isLoading } from '../../store/actions/app';\nimport { setUserSetting } from '../../store/actions/userSettings';\nimport Login from '../../components/Pages/Login';\nimport { getUrlParameter } from '../../util';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.pages.Login.mapStateToProps', state );\n\n return {\n context: getUrlParameter( 'context' ) || state.auth.context,\n error: state.app.error,\n language: state.userSettings.language,\n loading: state.app.loading,\n loadingSucceeded: state.app.loadingSucceeded,\n resetPasswordToken: getUrlParameter( 'rpt' )\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onDismissError: () => dispatch( dismissError() ),\n onDismissLoadingSucceeded: () => dispatch( dismissLoadingSucceeded() ),\n onLogin: ( context, username, password ) => dispatch( isLoading( true ) ) && dispatch( login( context, username, password ) ),\n onResetPassword: ( context, token, password ) => dispatch( isLoading( true ) ) && dispatch( resetPassword( context, token, password ) ),\n onSelectLanguage: e => dispatch( setUserSetting( 'language', e ) ),\n onSendPasswordRecovery: ( context, username ) => dispatch( isLoading( true ) ) && dispatch( sendPasswordRecovery( context, username ) ),\n onSetContext: context => dispatch( setContext( context) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Login );","import { LOGIN_REQUESTED, LOGOUT_REQUESTED, RESET_PASSWORD, SEND_PASSWORD_RECOVERY, SET_CONTEXT } from '../constants/actionTypes';\n\nexport const login = ( context, username, password ) => {\n\n return {\n type: LOGIN_REQUESTED,\n payload: { context, username, password }\n };\n\n};\n\nexport const logout = ( context, token ) => {\n\n return {\n type: LOGOUT_REQUESTED,\n payload: { context, token }\n };\n\n};\n\nexport const resetPassword = ( context, token, password ) => {\n\n return {\n type: RESET_PASSWORD,\n payload: { context, token, password }\n };\n\n};\n\nexport const sendPasswordRecovery = ( context, username ) => {\n\n return {\n type: SEND_PASSWORD_RECOVERY,\n payload: { context, username }\n };\n\n};\n\nexport const setContext = context => {\n\n return {\n type: SET_CONTEXT,\n payload: { context }\n };\n\n};","import { GAME_REPORT_REFEREE_REQUESTED, GAMES_REQUESTED, SCORES_REQUESTED, SET_ACTIVE_GAME, SIGN_SUPPLEMENTARY } from '../constants/actionTypes';\n\nexport const loadGameReportReferee = ( context, token, gameId ) => {\n\n return {\n type: GAME_REPORT_REFEREE_REQUESTED,\n payload: { context, token, gameId }\n };\n\n};\n\nexport const loadGames = ( context, token, seasonId ) => {\n\n return {\n type: GAMES_REQUESTED,\n payload: { context, token, seasonId }\n };\n\n};\n\nexport const loadScores = ( context, gameId ) => {\n\n return {\n type: SCORES_REQUESTED,\n payload: { context, gameId }\n };\n\n};\n\nexport const setActiveGame = game => {\n\n return {\n type: SET_ACTIVE_GAME,\n payload: { game }\n };\n\n};\n\nexport const signSupplementary = ( context, token, gameId, team, teamId ) => {\n\n return {\n type: SIGN_SUPPLEMENTARY,\n payload: { context, token, gameId, team, teamId }\n };\n\n};","import React from 'react';\nimport * as Ons from 'react-onsenui';\n\nclass Toolbar extends React.Component {\n\n render() {\n\n return (\n\n \n\n {\n this.props.onBackClick &&\n
\n \n \n \n
\n }\n\n
{this.props.title}
\n\n
\n {\n this.props.right ? this.props.right :\n\n (\n <>\n { this.props.onReloadClick && }\n \n \n )\n }\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default Toolbar;","import React from 'react';\nimport * as Ons from 'react-onsenui';\n\nclass PullHook extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n pullHook: 'initial'\n };\n\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n this.props.onChange( e );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.props.onLoad( e );\n\n }\n\n render() {\n\n return (\n\n \n {\n this.state.pullHook === 'initial' ?\n\n
\n \n
\n\n : this.state.pullHook === 'preaction' ?\n\n
\n \n
\n\n :\n\n
\n \n
\n }\n
\n\n\n );\n\n }\n\n}\n\nexport default PullHook;","import React from 'react';\nimport * as Ons from 'react-onsenui';\n\nclass HoldButton extends React.Component {\n\n #timer;\n\n static defaultProps = { duration: 2000 }\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n duration: this.props.duration,\n pressing: false\n };\n\n this.handleButtonContextMenu = this.handleButtonContextMenu.bind( this );\n this.handleButtonPress = this.handleButtonPress.bind( this );\n this.handleButtonRelease = this.handleButtonRelease.bind( this );\n this.handleClick = this.handleClick.bind( this );\n\n }\n\n handleButtonContextMenu( e ) {\n\n e.preventDefault();\n\n }\n\n handleButtonPress() {\n\n this.#timer = setTimeout( this.handleClick, this.state.duration );\n\n this.setState( { pressing: true } );\n\n }\n\n handleButtonRelease() {\n\n clearInterval( this.#timer );\n\n this.setState( { duration: 0, pressing: false } );\n\n this.resetProgress();\n\n }\n\n handleClick() {\n\n this.setState( { duration: 0, pressing: false } );\n\n this.resetProgress();\n\n this.props.onClick();\n\n }\n\n resetProgress() {\n\n setTimeout( () => this.setState( { duration: this.props.duration } ), 10 );\n\n }\n\n render() {\n\n return (\n\n \n\n
\n\n {this.props.label}\n\n \n\n );\n\n }\n\n}\n\nexport default HoldButton;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Toolbar from '../Toolbar';\nimport HoldButton from '../Controls/HoldButton';\nimport { translate as _ } from '../../util/i18n';\n\nclass Supplementary extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.handleBackClick = this.handleBackClick.bind( this );\n this.handleSignClick = this.handleSignClick.bind( this );\n\n }\n\n handleBackClick() {\n\n this.props.onBackClick();\n\n }\n\n handleSignClick() {\n\n this.props.onSign();\n\n }\n\n render() {\n\n return (\n\n }>\n\n \n\n

{_( 'Beiblatt zu Spiel #' ) + this.props.gameName}

\n

{_( 'Ich bin berechtigt, für den angeführten Verein Spielberichte und Roster zu unterfertigen und bestätige mit meiner Unterschrift, dass' ) }

\n
    \n
  1. {_( 'alle am Spiel teilnehmenden Spieler durch Eintragung ihrer Trikotnummer und Position im DP (Digital Playerpass) angeführt sind und keine anderen Spieler eingesetzt werden.' )}
  2. \n
  3. {_( 'alle anwesenden aber am Spiel nicht teilnehmenden Spieler durch die Eintragung \"PNP\" (present not playing) im DP angeführt sind.' )}
  4. \n
  5. {_( 'alle nicht anwesenden Spieler durch die Eintragung \"ABSENT\" im DP angeführt sind.' )}
  6. \n
  7. {_( 'alle Angaben überprüft wurden, vollständig und richtig sind.' )}
  8. \n
  9. {_( 'alle Spieler über die IFAF-Football-Regel 1-4-4 (vorgeschriebene Ausrüstung) sowie die Regel 1-4-7 (verbotene Ausrüstung) informiert wurden. Die Spieler wurden auch darüber unterrichtet, wie die Ausrüstung zu tragen ist und dass sie verpflichtet sind, während des Spieles verboten gewordene Ausrüstungen bzw. deren Teile umgehend dem Coaching Staff zu melden.' )}
  10. \n
  11. {_( 'alle Spieler über die Anti-Doping Bestimmungen informiert wurden.' )}
  12. \n
  13. {_( 'die Schiedsrichter keine wie immer geartete Haftung tragen und in jedem Fall schad- und klaglos gehalten werden.' )}
  14. \n
\n\n \n\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default Supplementary;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Toolbar from '../Toolbar';\nimport PullHook from '../PullHook';\nimport Supplementary from './Supplementary';\nimport { translate as _ } from '../../util/i18n';\nimport { expired, getRosterPublicStatusIcon, getWeekday } from '../../util';\nimport { getGameReportRefereeConfig, supports, wording } from '../../util/context';\nimport { GRR_COMPLETED, GRR_SIGNED_BY_REF, READY_TO_PLAY, ROSTERS_LOCKED, ROSTERS_UNLOCKED } from '../../store/constants/statusCodes';\n\nclass Game extends React.Component {\n\n #pullHookCallback;\n #team;\n #teamId;\n\n constructor( props ) {\n\n // console.log( 'components.Pages.Game.constructor()', props );\n\n super( props );\n\n this.state = {\n pullHook: 'initial',\n supplementaryOpen: false\n };\n\n this.handleBackClick = this.handleBackClick.bind( this );\n this.handleOpenGameReportReferee = this.handleOpenGameReportReferee.bind( this );\n this.handleOpenRosters = this.handleOpenRosters.bind( this );\n this.handleOpenSupplementary = this.handleOpenSupplementary.bind( this );\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n this.handleSupplementaryBackClick = this.handleSupplementaryBackClick.bind( this );\n this.handleSignSupplementary = this.handleSignSupplementary.bind( this );\n this.loadGames = this.loadGames.bind( this );\n\n if ( this.props.activeGame ) {\n\n if ( this.props.activeGame.permission === 'home' ) {\n\n this.#team = 'home';\n this.#teamId = this.props.activeGame.homeTeam.id;\n\n } else if ( this.props.activeGame.permission === 'away' ) {\n\n this.#team = 'away';\n this.#teamId = this.props.activeGame.awayTeam.id;\n\n }\n\n }\n\n }\n\n componentDidMount() {\n\n expired( this.props.lastUpdate ) && this.loadGames();\n\n }\n\n componentDidUpdate() {\n\n if ( this.#pullHookCallback ) {\n\n const cb = this.#pullHookCallback;\n\n setTimeout( () => cb(), 1000 );\n\n this.#pullHookCallback = null;\n\n }\n\n\n\n }\n\n getRosterStatusText() {\n\n switch ( this.props.activeGame.rosterStatus ) {\n\n case READY_TO_PLAY:\n\n return _( 'Ready to Play' );\n\n case ROSTERS_LOCKED:\n\n return _( wording( this.props.context, 'lineup' ) ? 'Aufstellungen gesperrt' : 'Roster gesperrt' );\n\n case ROSTERS_UNLOCKED:\n\n return _( wording( this.props.context, 'lineup' ) ? 'Aufstellungen offen' : 'Roster offen' );\n\n default:\n\n return _( wording( this.props.context, 'lineup' ) ? 'Aufstellungen in Vorbereitung' : 'Roster in Vorbereitung' );\n\n }\n\n }\n\n handleBackClick() {\n\n this.props.onChangePage( { page: 'games' } );\n\n }\n\n handleOpenGameReportReferee() {\n\n this.props.onChangePage( { page: 'gameReportReferee' } );\n\n }\n\n handleOpenRosters() {\n\n this.props.onChangePage( { page: 'rosters' } );\n\n }\n\n handleOpenSupplementary() {\n\n this.setState( { supplementaryOpen: true } );\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.#pullHookCallback = e;\n\n this.loadGames();\n\n }\n\n handleSupplementaryBackClick() {\n\n this.setState( { supplementaryOpen: false } );\n\n }\n\n handleSignSupplementary() {\n\n this.props.onSignSupplementary( this.props.context, this.props.token, this.props.activeGame.id, this.#team, this.#teamId );\n\n }\n\n loadGames() {\n\n this.props.onLoadGames( this.props.context, this.props.token, this.props.activeSeason.id );\n\n }\n\n renderTeamName( team ) {\n\n return <>{this.props.activeGame[ team + 'Team' ].longName}{getRosterPublicStatusIcon( this.props.context, this.props.activeGame, team )};\n\n }\n\n render() {\n\n // console.log( 'components.Pages.Game.render()', this.props, this.state );\n\n if ( ! this.props.activeGame ) {\n\n this.handleBackClick();\n\n return '';\n\n }\n\n const supplementaryAvailable = ( this.props.activeGame.permission === 'home' && ! this.props.activeGame.supplementaryAcceptedByHomeAt ) || ( this.props.activeGame.permission === 'away' && ! this.props.activeGame.supplementaryAcceptedByAwayAt );\n const gameReportRefereeStatus = this.props.activeGame.gameReportRefereeStatus ? this.props.activeGame.gameReportRefereeStatus.status : null;\n const enableGameReportRefereeButton = this.props.activeGame.permission === 'referee' || gameReportRefereeStatus === GRR_SIGNED_BY_REF || gameReportRefereeStatus === GRR_COMPLETED;\n\n return (\n\n this.state.supplementaryOpen && supplementaryAvailable ?\n\n \n\n :\n\n }>\n\n \n\n {this.props.loading && this.state.pullHook !== 'action' && }\n\n

{_( 'Spiel' )}

\n\n \n\n
\n\n

{this.renderTeamName( 'home' )}

\n

{_( 'vs.' )}

\n

{this.renderTeamName( 'away' )}

\n\n
\n\n
\n\n
\n
{_( 'Spiel' )}
\n
{this.props.activeGame.gameName}
\n
\n\n
\n
{_( 'Datum' )}
\n
{this.props.activeGame.dateIsToBeDetermined ? _( 'TBD' ) : ( getWeekday( new Date( this.props.activeGame.scheduledDate.sortValue ) ) + ', ' + this.props.activeGame.scheduledDate.shortValue )}
\n
\n\n
\n
{_( 'Uhrzeit' )}
\n
{this.props.activeGame.timeIsToBeDetermined ? _( 'TBD' ) : this.props.activeGame.scheduledTime}
\n
\n\n
\n
{_( 'Status' )}
\n
{this.getRosterStatusText()}
\n
\n\n {\n\n supports( this.props.context, 'supplementary' ) && this.props.activeGame.permission === 'referee' &&\n\n <>\n\n
{_( 'Beiblätter' )}
\n\n
\n
{_( 'Heim' )}
\n
{this.props.activeGame.supplementaryAcceptedByHomeAt ? new Date( this.props.activeGame.supplementaryAcceptedByHomeAt ).toLocaleString() : '-'}
\n
\n\n
\n
{_( 'Gast' )}
\n
{this.props.activeGame.supplementaryAcceptedByAwayAt ? new Date( this.props.activeGame.supplementaryAcceptedByAwayAt ).toLocaleString() : '-'}
\n
\n\n \n\n }\n\n
\n\n
\n\n {this.props.activeGame.permission === 'referee' ? ( wording( this.props.context, 'lineup' ) ? _( 'Aufstellungen' ) : _( 'Roster', 'plural' ) ) : ( wording( this.props.context, 'lineup' ) ? _( 'Aufstellung' ) : _( 'Roster', 'singular' ) )}\n\n {\n\n supports( this.props.context, 'supplementary' ) && (\n\n this.props.activeGame.permission !== 'referee' && (\n\n supplementaryAvailable ?\n\n <>\n\n {_( 'Beiblatt unterschreiben' )}\n\n {! this.props.activeGame.rosterStatus &&

{_( wording( this.props.context, 'lineup' ) ? 'Beiblatt kann im Status \"Aufstellung in Vorbereitung\" noch nicht unterschrieben werden.' : 'Beiblatt kann im Status \"Roster in Vorbereitung\" noch nicht unterschrieben werden.' )}

}\n\n \n\n :\n\n
\n

{_( 'Beiblatt unterschrieben:' )}

\n

{new Date( this.props.activeGame.permission === 'home' ? this.props.activeGame.supplementaryAcceptedByHomeAt : this.props.activeGame.supplementaryAcceptedByAwayAt ).toLocaleString()}

\n
\n\n )\n\n )\n\n }\n\n {getGameReportRefereeConfig( this.props.context ) && {_( 'Game Report Referee' )}}\n\n {\n\n this.props.activeGame.permission !== 'referee' && gameReportRefereeStatus !== GRR_SIGNED_BY_REF && gameReportRefereeStatus !== GRR_COMPLETED && (\n\n

{_( 'Der Game Report Referee ist verfügbar sobald dieser vom Referee nach dem Spiel freigegeben wurde.' )}

\n\n )\n\n }\n\n
\n\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default Game;","import { connect } from 'react-redux';\nimport { loadGames, signSupplementary } from '../../store/actions/games';\nimport { changePage, isLoading } from '../../store/actions/app';\nimport Game from '../../components/Pages/Game';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.Pages.Game.mapStateToProps', state );\n\n return {\n activeGame: state.items.games.activeItem,\n activeSeason: state.items.seasons.activeItem,\n context: state.auth.context,\n lastUpdate: state.items.games.lastUpdate ? new Date( state.items.games.lastUpdate ) : null,\n loading: state.app.loading,\n token: state.auth.token\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onChangePage: route => dispatch( changePage( route ) ),\n onLoadGames: ( context, token, seasonId ) => dispatch( isLoading( true ) ) && dispatch( loadGames( context, token, seasonId ) ),\n onSignSupplementary: ( context, token, gameId, team, teamId ) => dispatch( isLoading( true ) ) && dispatch( signSupplementary( context, token, gameId, team, teamId ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Game );","import { GRR_DRAFT } from \"../constants/statusCodes\";\n\nexport const gameReportReferee = {\n\tgameName: null,\n\ttown: null,\n\tlocation: null,\n\tgameDate: null,\n\tgameStart: null,\n\tgameEnd: null,\n\tteamInfoHome: {\n\t\tteamName: null,\n\t\trepresentative: null,\n\t\tgameManager: null,\n\t\tcolorHelmets: null,\n\t\tcolorShirts: null,\n\t\tcolorPants: null,\n\t\tcolorSocks: null,\n\t\tdisqualifications: null\n\t},\n\tgameOfficials: {\n\t\treferee: null,\n\t\tcenterjudge: null,\n\t\tumpire: null,\n\t\tlinesman: null,\n\t\tlinejudge: null,\n\t\tbackjudge: null,\n\t\tfieldjudge: null,\n\t\tsidejudge: null,\n\t\ttimekeeper: null,\n\t\tshotclock: null,\n\t\tobserver: null\n\t},\n\tteamInfoAway: {\n\t\tteamName: null,\n\t\trepresentative: null,\n\t\tgameManager: null,\n\t\tcolorHelmets: null,\n\t\tcolorShirts: null,\n\t\tcolorPants: null,\n\t\tcolorSocks: null,\n\t\tdisqualifications: null\n\t},\n\tperiodScoresHome: [],\n\tperiodScoresAway: [],\n\tequipmentHome: {\n\t\tisOk: null,\n\t\tfacemaskColor: null,\n\t\thelmetsColor: null,\n\t\thelmetsDesign: null,\n\t\tjerseysColor: null,\n\t\tjerseysDesign: null,\n\t\tpantsColor: null,\n\t\tpantsDesign: null,\n\t\tsocksColor: null,\n\t\tsocksDesign: null\n\t},\n\tequipmentAway: {\n\t\tisOk: null,\n\t\tfacemaskColor: null,\n\t\thelmetsColor: null,\n\t\thelmetsDesign: null,\n\t\tjerseysColor: null,\n\t\tjerseysDesign: null,\n\t\tpantsColor: null,\n\t\tpantsDesign: null,\n\t\tsocksColor: null,\n\t\tsocksDesign: null\n\t},\n\tfieldEquipment: {\n\t\tisOk: null,\n\t\tdownBox: null,\n\t\tchain: null,\n\t\tpylons: null,\n\t\tyardageMarker: null,\n\t\tfieldMarkingsLines: null,\n\t\tfieldMarkingsCoachingBox: null,\n\t\tfieldMarkingsTeamArea: null\n\t},\n\teventStaff: {\n\t\tisOk: null,\n\t\tmedicalStaff: null,\n\t\tsecurity: null,\n\t\tchainCrew: null,\n\t\tothers: null\n\t},\n\tnotesHome: {\n\t\tcomment: null,\n\t\tname: null\n\t},\n\tnotesOfficials: {\n\t\tmercyRulePeriod: null,\n\t\tmercyRuleTime: null,\n\t\tcomment: null,\n\t\tcomment2: null,\n\t\tname: null\n\t},\n\tnotesAway: {\n\t\tcomment: null,\n\t\tname: null\n\t}\n};\n\nexport const gameReportRefereeMeta = {\n\n\tawayConfirmationAt: null,\n\tawayConfirmationBy: null,\n\thomeConfirmationAt: null,\n\thomeConfirmationBy: null,\n\tstatus: GRR_DRAFT,\n\tstatusChangedAt: null,\n\tstatusChangedBy: null\n\n};","import React from 'react';\n\nclass TripleSwitch extends React.Component {\n\n handleChange( value ) {\n\n this.props.onChange( { target: { name: this.props.name, value } } );\n\n }\n\n render() {\n\n const classNames = [ 'triple-switch', 'triple-switch-' + this.props.value ];\n\n if ( this.props.disabled ) {\n\n classNames.push( 'triple-switch-disabled' );\n\n }\n\n return (\n\n
\n\n
\n\n
\n\n
this.handleChange( false )}>
\n
this.handleChange( null )}>
\n
this.handleChange( true )}>
\n\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default TripleSwitch;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport TripleSwitch from '../Controls/TripleSwitch';\nimport { translate as _ } from '../../util/i18n';\n\nclass Checklist extends React.Component {\n\n #inputNames;\n\n constructor( props ) {\n\n super( props );\n\n this.handleChange = this.handleChange.bind( this );\n\n this.setInputNames();\n\n }\n\n componentDidUpdate() {\n\n this.setInputNames();\n\n }\n\n getInputName( e ) {\n\n return 'grr-checklist-' + this.props.id + '-' + e;\n\n }\n\n handleChange( e ) {\n\n this.props.onChange( { ...this.props.values, [ this.#inputNames[ e.target.name ] ]: e.target.value } );\n\n }\n\n setInputNames() {\n\n this.#inputNames = {};\n\n this.props.config.forEach( e => { this.#inputNames[ this.getInputName( e.key ) ] = e.key; } );\n\n this.#inputNames[ this.getInputName( 'isOk' ) ] = 'isOk';\n\n }\n\n renderInput( item ) {\n\n const props = {\n\n modifier: 'underbar',\n onChange: e => this.handleChange( { target: { name: this.getInputName( item.key ), value: e.target.value } } ),\n placeholder: this.props.inputPlaceholder,\n type: 'text',\n value: this.props.values[ item.key ]\n\n };\n\n if ( this.props.disabled ) {\n\n props.readonly = true;\n\n }\n\n return (\n\n \n\n );\n\n }\n\n render() {\n\n // console.log( 'components.GameReportReferee.Checklist.render()', this.props, this.state );\n\n return (\n\n
\n\n
\n\n \n\n
\n\n \n\n
\n\n
\n\n {this.props.values.isOk === false &&\n\n
\n\n {this.props.config.map( item =>\n\n
\n\n
\n\n \n\n
\n\n this.handleChange( { target: { name: this.getInputName( item.key ), value: e.value === false ? '' : null } } ) }\n />\n\n
\n\n
\n\n {this.props.values[ item.key ] !== null &&\n\n
\n\n {this.renderInput( item )}\n\n
\n\n }\n\n
\n\n )}\n\n
\n\n }\n\n
\n\n );\n\n }\n\n}\n\nexport default Checklist;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport { translate as _ } from '../../util/i18n';\n\nclass Scores extends React.Component {\n\n handleChange( team, period, type, e ) {\n\n const key = 'periodScores' + team;\n const scores = [ ...this.props.gameReportReferee[ key ] ];\n const periodScores = scores[ period ] || {};\n const lastPeriod = this.props.config.periods.length - 1;\n\n this.props.config.types.forEach( t => {\n\n if ( t.key === type.key ) {\n\n let value = e.target.value === '' ? Number.NaN : Number( e.target.value );\n\n if ( isNaN( value ) ) {\n\n value = null;\n\n } else {\n\n value = Math.floor( value );\n\n }\n\n periodScores[ type.key ] = value;\n\n } else if ( ! ( t.key in periodScores ) ) {\n\n periodScores[ t.key ] = null;\n\n }\n\n } );\n\n scores[ period ] = periodScores;\n\n if ( period < lastPeriod ) {\n\n let total = null;\n\n scores.forEach( ( score, i ) => {\n\n if ( i < lastPeriod && score && ( type.key in score ) && score[ type.key ] !== null ) {\n\n total += score[ type.key ];\n\n }\n\n } );\n\n scores[ lastPeriod ] = { ...scores[ lastPeriod ], [ type.key ]: total };\n\n }\n\n this.props.onChange( key, scores );\n\n }\n\n renderScores( team ) {\n\n return this.props.config && this.props.config.types.map( type =>\n\n
\n\n
{_( type.title )}
\n\n {this.props.config.periods.map( ( period, i ) => {\n\n const props = {\n\n disabled: this.props.disabled,\n modifier: 'underbar',\n onChange: e => this.handleChange( team, i, type, e ),\n type: 'number',\n value:\n this.props.gameReportReferee[ 'periodScores' + team ] &&\n ( this.props.gameReportReferee[ 'periodScores' + team ].length >= i + 1 ) &&\n this.props.gameReportReferee[ 'periodScores' + team ][ i ] &&\n ( this.props.gameReportReferee[ 'periodScores' + team ][ i ][ type.key ] !== null )\n\n ? String( this.props.gameReportReferee[ 'periodScores' + team ][ i ][ type.key ] )\n\n : ''\n\n };\n\n if ( this.props.readonly ) {\n\n props.readonly = true;\n\n }\n\n return (\n\n
\n\n );\n\n } )}\n\n
\n\n );\n\n }\n\n render() {\n\n return (\n\n
\n\n
\n\n
\n { this.props.config && this.props.config.periods.map( ( period, i ) =>
{period}
) }\n\n
\n\n
\n\n
{_( 'Heimteam' )}
\n\n
\n\n {this.renderScores( 'Home' )}\n\n
\n\n
{_( 'Gastteam' )}
\n\n
\n\n {this.renderScores( 'Away' )}\n\n
\n\n );\n\n }\n\n}\n\nexport default Scores;","import React from 'react';\nimport Autosuggest from 'react-autosuggest';\n\nclass AutoComplete extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n suggestions: []\n };\n\n this.getSuggestionValue = this.getSuggestionValue.bind( this );\n this.onChange = this.onChange.bind( this );\n this.onSuggestionsClearRequested = this.onSuggestionsClearRequested.bind( this );\n this.onSuggestionsFetchRequested = this.onSuggestionsFetchRequested.bind( this );\n this.renderSuggestion = this.renderSuggestion.bind( this );\n\n }\n\n getSuggestionValue( e ) {\n\n return e;\n\n }\n\n onChange( e ) {\n\n if ( ! ( 'name' in e.target ) ) e.target.name = this.props.name;\n if ( ! ( 'value' in e.target ) ) e.target.value = e.target.innerText;\n\n this.props.onChange( e );\n\n }\n\n onSuggestionsClearRequested() {\n\n this.setState( { suggestions: [] } );\n\n }\n\n onSuggestionsFetchRequested( { value } ) {\n\n value = value.trim().toLowerCase();\n const suggestions = this.props.readonly || ! this.props.suggestions ? [] : this.props.suggestions.filter( e => e.label.toLowerCase().indexOf( value ) !== -1 );\n\n this.setState( { suggestions } );\n\n }\n\n renderSuggestion( e ) {\n\n return (\n\n
{e.label}
\n\n );\n\n }\n\n render() {\n\n const inputProps = {\n className: this.props.className,\n name: this.props.name,\n onChange: this.onChange,\n placeholder: this.props.placeholder,\n readOnly: this.props.readonly,\n value: this.props.value || ''\n };\n\n return (\n\n
\n\n \n\n
\n\n );\n\n }\n\n}\n\nexport default AutoComplete;","import React from 'react';\n\nclass AutoTextarea extends React.Component {\n\n #textarea;\n\n constructor( props ) {\n\n super( props );\n\n this.resize = this.resize.bind( this );\n this.#textarea = React.createRef();\n\n }\n\n componentDidMount() {\n\n this.resize();\n\n }\n\n resize() {\n\n this.#textarea.current.style.height = \"auto\";\n this.#textarea.current.style.height = this.#textarea.current.scrollHeight + \"px\";\n\n }\n\n render() {\n\n return (\n\n
\n\n \n\n
\n\n );\n\n }\n\n}\n\nexport default AutoTextarea;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport { translate as _ } from '../../util/i18n';\n\nclass ColorSelect extends React.Component {\n\n #colors;\n #mainColors;\n #secondaryColors;\n\n constructor( props ) {\n\n super( props );\n\n this.#mainColors = [\n\n { value: '#F8F8F8', label: _( 'weiß' ) },\n { value: '#000000', label: _( 'schwarz' ) },\n { value: '#FF0000', label: _( 'rot' ) },\n { value: '#00BFFF', label: _( 'blau' ) },\n { value: '#FFFF00', label: _( 'gelb' ) },\n { value: '#EE82EE', label: _( 'violett' ) }\n\n ];\n\n this.#secondaryColors = [\n\n { value: '#FFD700', label: _( 'gold' ) },\n { value: '#D3D3D3', label: _( 'grau' ) },\n { value: '#32CD32', label: _( 'grün' ) },\n { value: '#FFA500', label: _( 'orange' ) },\n { value: '#005F6A', label: _( 'petrol' ) },\n { value: '#FFB6C1', label: _( 'pink' ) },\n { value: '#C0C0C0', label: _( 'silber' ) }\n\n ];\n\n this.#secondaryColors.sort( ( a, b ) => a.label < b.label ? -1 : a.label > b.label ? 1 : 0 );\n\n this.#colors = this.#mainColors.concat( this.#secondaryColors );\n\n }\n\n render() {\n\n return (\n\n \n\n {this.#colors.map( e => )}\n\n \n\n );\n\n }\n\n}\n\nexport default ColorSelect;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Checklist from '../GameReportReferee/Checklist';\nimport Scores from '../GameReportReferee/Scores';\nimport Toolbar from '../Toolbar';\nimport PullHook from '../PullHook';\nimport AutoComplete from '../Controls/AutoComplete';\nimport HoldButton from '../Controls/HoldButton';\nimport AutoTextarea from '../Controls/AutoTextarea';\nimport ColorSelect from '../Controls/ColorSelect';\nimport { translate as _ } from '../../util/i18n';\nimport { expired, getActionButtonPosition } from '../../util';\nimport { showAlert } from '../../util/ui';\nimport { getGameReportRefereeConfig, getGameReportRefereeExpirationTimeForTeamSignature, getUrl } from '../../util/context';\nimport { GRR_DRAFT, GRR_SIGNED_BY_REF, GRR_COMPLETED } from '../../store/constants/statusCodes';\n\nclass GameReportReferee extends React.Component {\n\n #actionButtonClass;\n #gameReportRefereeConfig;\n #pullHookCallback;\n #team;\n\n constructor( props ) {\n\n // console.log( 'components.Pages.GameReportReferee.constructor()', props );\n\n super( props );\n\n this.state = {\n pullHook: 'initial'\n };\n\n this.getTeamSignatureExpirationDate = this.getTeamSignatureExpirationDate.bind( this );\n this.getStatusText = this.getStatusText.bind( this );\n this.handleBackClick = this.handleBackClick.bind( this );\n this.handleChange = this.handleChange.bind( this );\n this.handleDismissChangesClick = this.handleDismissChangesClick.bind( this );\n this.handleInputChange = this.handleInputChange.bind( this );\n this.handleLoadScoresClick = this.handleLoadScoresClick.bind( this );\n this.handleOverwriteClick = this.handleOverwriteClick.bind( this );\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n this.handleSaveDraftClick = this.handleSaveDraftClick.bind( this );\n this.handleSignClick = this.handleSignClick.bind( this );\n this.reloadData = this.reloadData.bind( this );\n this.requiredFieldsFilledIn = this.requiredFieldsFilledIn.bind( this );\n this.teamSignatureExpired = this.teamSignatureExpired.bind( this );\n\n this.#gameReportRefereeConfig = getGameReportRefereeConfig( this.props.context );\n\n if ( this.props.activeGame ) {\n\n if ( this.props.activeGame.permission === 'home' ) {\n\n this.#team = 'home';\n\n } else if ( this.props.activeGame.permission === 'away' ) {\n\n this.#team = 'away';\n\n }\n\n }\n\n this.#actionButtonClass = 'bottom ' + [ 'left', 'center', 'right' ][ getActionButtonPosition( this.props.userSettings ) ];\n\n }\n\n componentDidMount() {\n\n ( expired( this.props.gameReportRefereeLastUpdate ) || ( this.props.activeGame.permission === 'referee' && expired( this.props.refereesLastUpdate ) ) ) && this.reloadData();\n\n }\n\n componentDidUpdate() {\n\n if ( this.#pullHookCallback ) {\n\n const cb = this.#pullHookCallback;\n\n setTimeout( () => cb(), 1000 );\n\n this.#pullHookCallback = null;\n\n }\n\n }\n\n canOverwrite() {\n\n return this.props.gameReportRefereeMeta.status === GRR_COMPLETED && this.props.gameReportRefereeMeta.editLevel === 1;\n\n }\n\n getTeamSignatureExpirationDate() {\n\n if ( ! this.props.gameReportRefereeMeta.statusChangedAt ) {\n\n return null;\n\n }\n\n return new Date( ( new Date( this.props.gameReportRefereeMeta.statusChangedAt ) ).getTime() + getGameReportRefereeExpirationTimeForTeamSignature( this.props.context ) );\n\n }\n\n getStatusText() {\n\n switch ( this.props.gameReportRefereeMeta.status ) {\n\n case GRR_DRAFT: return _( 'Entwurf' );\n case GRR_SIGNED_BY_REF: return _( 'Unterschrieben' );\n case GRR_COMPLETED: return _( 'Abgeschlossen' );\n\n default: return '';\n\n }\n\n }\n\n handleBackClick() {\n\n this.props.onChangePage( { page: 'game' } );\n\n }\n\n handleChange( key, value ) {\n\n this.props.onUpdateGameReportReferee( this.props.activeGame.id, { [ key ]: value } );\n\n }\n\n handleDismissChangesClick() {\n\n showAlert( {\n\n buttonLabels: [ _( 'Abbrechen' ), _( 'OK' ) ],\n callback: e => e === 1 && this.props.onDismissChanges( this.props.activeGame.id ),\n cancelable: true,\n message: _( 'Änderungen verwerfen?' ),\n title: ''\n\n } );\n\n }\n\n handleInputChange( e ) {\n\n let name = e.target.name.split( '.' );\n let value = e.target.value;\n\n if ( name.length === 2 ) {\n\n value = { ...this.props.gameReportReferee[ name[ 0 ] ], [ name[ 1 ] ]: value };\n\n }\n\n this.handleChange( name[ 0 ], value );\n\n }\n\n handleLoadScoresClick() {\n\n this.props.onLoadScores( this.props.context, this.props.activeGame.id );\n\n }\n\n handleOverwriteClick() {\n\n this.props.onOverwrite( this.props.context, this.props.token, this.props.activeGame.id, this.props.gameReportReferee );\n\n return false;\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.#pullHookCallback = e;\n\n this.reloadData();\n\n }\n\n handleSaveDraftClick() {\n\n this.props.onSaveDraft( this.props.context, this.props.token, this.props.activeGame.id, this.props.gameReportReferee );\n\n return false;\n\n }\n\n handleSignClick() {\n\n if ( this.props.activeGame.permission === 'referee' ) {\n\n this.props.onConfirm( this.props.context, this.props.token, this.props.activeGame.id, this.props.gameReportReferee, this.props.username );\n\n } else {\n\n const key = 'notes' + ( this.#team === 'home' ? 'Home' : 'Away' );\n const comment = this.props.gameReportReferee[ key ].comment;\n const name = this.props.gameReportReferee[ key ].name;\n\n this.props.onSign( this.props.context, this.props.token, this.props.activeGame.id, this.#team, comment, name, this.props.username );\n\n }\n\n }\n\n reloadData() {\n\n this.props.onLoadGameReportReferee( this.props.context, this.props.token, this.props.activeGame.id );\n\n this.props.activeGame.permission === 'referee' && this.props.onLoadReferees( this.props.context, this.props.token, this.props.activeGame.id );\n\n }\n\n renderInput( e ) {\n\n const name = ( 'key2' in e ) ? e.key + '.' + e.key2 : e.key;\n let value = ( 'key2' in e ) ? this.props.gameReportReferee[ e.key ][ e.key2 ] : this.props.gameReportReferee[ e.key ];\n\n if ( ! ( 'readonly' in e ) ) {\n\n e.readonly = ( this.props.activeGame.permission !== 'referee' || this.props.gameReportRefereeMeta.status !== GRR_DRAFT ) && ! this.canOverwrite();\n\n }\n\n if ( value === undefined || value === null || value === 'null' ) {\n\n value = '';\n\n }\n\n const props = {\n\n id: 'grr-' + e.key,\n modifier: 'underbar',\n onChange: this.handleInputChange,\n type: e.type || 'text',\n\n name, value\n\n };\n\n if ( e.readonly ) {\n\n if ( props.type === 'color' ) {\n\n props.disabled = true;\n\n } else {\n\n props.readonly = true;\n\n }\n\n }\n\n return (\n\n
\n\n \n\n {props.type === 'color' ? : }\n\n
\n\n );\n\n }\n\n renderGameInfo() {\n\n return this.#gameReportRefereeConfig.gameInfo.map( e => this.renderInput( { ...e } ) );\n\n }\n\n renderOfficials() {\n\n return this.#gameReportRefereeConfig.officials.map( e => (\n\n
\n\n \n\n \n\n
\n\n ) );\n\n }\n\n renderTeamInfo( team ) {\n\n return this.#gameReportRefereeConfig.teamInfo.map( e => this.renderInput( { key: 'teamInfo' + team, ...e } ) );\n\n }\n\n requiredFieldsFilledIn() {\n\n return (\n\n this.props.gameReportReferee.gameName &&\n this.props.gameReportReferee.town &&\n this.props.gameReportReferee.location &&\n this.props.gameReportReferee.gameDate &&\n this.props.gameReportReferee.gameStart &&\n this.props.gameReportReferee.gameEnd &&\n // this.props.gameReportReferee.gameOfficials.referee &&\n // this.props.gameReportReferee.gameOfficials.centerjudge &&\n // this.props.gameReportReferee.gameOfficials.umpire &&\n // this.props.gameReportReferee.gameOfficials.linesman &&\n // this.props.gameReportReferee.gameOfficials.linejudge &&\n // this.props.gameReportReferee.gameOfficials.backjudge &&\n // this.props.gameReportReferee.gameOfficials.fieldjudge &&\n // this.props.gameReportReferee.gameOfficials.sidejudge &&\n // this.props.gameReportReferee.gameOfficials.timekeeper &&\n // this.props.gameReportReferee.gameOfficials.shotclock &&\n // this.props.gameReportReferee.gameOfficials.observer &&\n this.props.gameReportReferee.teamInfoHome.teamName &&\n // this.props.gameReportReferee.teamInfoHome.representative &&\n // this.props.gameReportReferee.teamInfoHome.gameManager &&\n // this.props.gameReportReferee.teamInfoHome.colorHelmets &&\n // this.props.gameReportReferee.teamInfoHome.colorShirts &&\n // this.props.gameReportReferee.teamInfoHome.colorPants &&\n // this.props.gameReportReferee.teamInfoHome.colorSocks &&\n // this.props.gameReportReferee.teamInfoHome.disqualifications &&\n this.props.gameReportReferee.teamInfoAway.teamName &&\n // this.props.gameReportReferee.teamInfoAway.representative &&\n // this.props.gameReportReferee.teamInfoAway.gameManager &&\n // this.props.gameReportReferee.teamInfoAway.colorHelmets &&\n // this.props.gameReportReferee.teamInfoAway.colorShirts &&\n // this.props.gameReportReferee.teamInfoAway.colorPants &&\n // this.props.gameReportReferee.teamInfoAway.colorSocks &&\n // this.props.gameReportReferee.teamInfoAway.disqualifications &&\n this.props.gameReportReferee.equipmentHome.isOk !== null &&\n this.props.gameReportReferee.equipmentAway.isOk !== null &&\n this.props.gameReportReferee.fieldEquipment.isOk !== null &&\n this.props.gameReportReferee.eventStaff.isOk !== null &&\n this.props.gameReportReferee.notesOfficials.name\n\n );\n\n }\n\n renderTeamNotes( team ) {\n\n const key = 'notes' + ( team === 'home' ? 'Home' : 'Away' );\n const readonly = this.props.activeGame.permission === 'referee' || this.props.gameReportRefereeMeta.status !== GRR_SIGNED_BY_REF || team !== this.#team || this.props.gameReportRefereeMeta[ team + 'ConfirmationAt' ];\n\n return (\n\n \n\n

{_( 'Anmerkungen' )} ({_( team === 'home' ? 'Heim' : 'Gast' )})

\n\n
\n\n
\n\n \n\n \n\n
\n\n {this.renderInput( { title: 'Name', key, key2: 'name', readonly } )}\n\n
\n\n
\n\n );\n\n }\n\n teamSignatureExpired() {\n\n return this.getTeamSignatureExpirationDate() < new Date();\n\n }\n\n render() {\n\n // console.log( 'components.Pages.GameReportReferee.render()', this.props, this.state );\n\n if ( ! this.props.activeGame ) {\n\n this.props.onChangePage( { page: 'games' } );\n\n return '';\n\n }\n\n const canOverwrite = this.canOverwrite();\n const readonly = ( this.props.activeGame.permission !== 'referee' || this.props.gameReportRefereeMeta.status !== GRR_DRAFT ) && ! canOverwrite;\n const canBeSignedByReferee = this.props.activeGame.permission === 'referee' && this.props.gameReportRefereeMeta.status === GRR_DRAFT;\n const canBeSignedByTeam = this.props.activeGame.permission !== 'referee' && this.props.gameReportRefereeMeta.status === GRR_SIGNED_BY_REF && this.props.gameReportRefereeMeta[ this.#team + 'ConfirmationAt' ] === null;\n\n const notesOfficialsMercyRulePeriodProps = {\n\n id: 'grr-notes-officials-mercy-rule-period',\n name: 'notesOfficials.mercyRulePeriod',\n modifier: 'underbar',\n onChange: this.handleInputChange,\n type: 'text',\n value: this.props.gameReportReferee.notesOfficials.mercyRulePeriod\n\n };\n\n const notesOfficialsMercyRuleTimeProps = {\n\n id: 'grr-notes-officials-mercy-rule-time',\n name: 'notesOfficials.mercyRuleTime',\n modifier: 'underbar',\n onChange: this.handleInputChange,\n type: 'text',\n value: this.props.gameReportReferee.notesOfficials.mercyRuleTime\n\n };\n\n if ( readonly ) {\n\n notesOfficialsMercyRulePeriodProps.readonly = true;\n notesOfficialsMercyRuleTimeProps.readonly = true;\n\n } else {\n\n notesOfficialsMercyRulePeriodProps.placeholder = _( 'Period' );\n notesOfficialsMercyRuleTimeProps.placeholder = _( 'Spielzeit' );\n\n }\n\n return (\n\n }>\n\n \n\n {this.props.loading && this.state.pullHook !== 'action' && }\n\n

{_( 'Game Report Referee' )}

\n\n
\n\n \n\n
\n\n
{_( 'Status' )}
\n
{this.getStatusText()}
\n\n
{_( 'Datum' )}
\n
{this.props.gameReportRefereeMeta.statusChangedAt ? ( new Date( this.props.gameReportRefereeMeta.statusChangedAt ) ).toLocaleString() : '-'}
\n\n
{_( 'Von' )}
\n
{this.props.gameReportRefereeMeta.statusChangedBy || '-'}
\n\n
\n\n
{_( 'Heimteam' )}
\n
\n\n
{_( 'Unterschrieben' )}
\n
{this.props.gameReportRefereeMeta.homeConfirmationAt ? ( new Date( this.props.gameReportRefereeMeta.homeConfirmationAt ) ).toLocaleString() : '-'}
\n\n
{_( 'Von' )}
\n
{this.props.gameReportRefereeMeta.homeConfirmationBy || '-'}
\n\n
\n\n
{_( 'Gastteam' )}
\n
\n\n
{_( 'Unterschrieben' )}
\n
{this.props.gameReportRefereeMeta.awayConfirmationAt ? ( new Date( this.props.gameReportRefereeMeta.awayConfirmationAt ) ).toLocaleString() : '-'}
\n\n
{_( 'Von' )}
\n
{this.props.gameReportRefereeMeta.awayConfirmationBy || '-'}
\n\n
\n\n
\n\n {this.props.gameReportRefereeMeta.status === GRR_COMPLETED &&\n\n
\n\n \n\n \n \n\n \n\n
\n\n }\n\n \n\n

{_( 'Spiel' )}

\n\n
\n\n {this.renderGameInfo()}\n\n
\n\n
\n\n \n\n

{_( 'Offizielle' )}

\n\n
\n\n {this.renderOfficials()}\n\n
\n\n
\n\n \n\n

{_( 'Heimteam' )}

\n\n
\n\n {this.renderTeamInfo( 'Home' )}\n\n
\n\n
\n\n \n\n

{_( 'Gastteam' )}

\n\n
\n\n {this.renderTeamInfo( 'Away' )}\n\n
\n\n
\n\n \n\n

\n\n {! readonly &&
{_( 'Autofill' )}
}\n\n {_( 'Scores' )}\n\n

\n\n
\n\n \n\n
\n\n
\n\n \n\n

{_( 'Spieler-Equipment' )} {_( 'Heim' )}

\n\n
\n\n this.handleChange( 'equipmentHome', e )}\n values={this.props.gameReportReferee.equipmentHome}\n />\n\n
\n\n
\n\n \n\n

{_( 'Spieler-Equipment' )} {_( 'Gast' )}

\n\n
\n\n this.handleChange( 'equipmentAway', e )}\n values={this.props.gameReportReferee.equipmentAway}\n />\n\n
\n\n
\n\n \n\n

{_( 'Field-Equipment' )}

\n\n
\n\n this.handleChange( 'fieldEquipment', e )}\n values={this.props.gameReportReferee.fieldEquipment}\n />\n\n
\n\n
\n\n \n\n

{_( 'Event-Staff' )}

\n\n
\n\n this.handleChange( 'eventStaff', e )}\n values={this.props.gameReportReferee.eventStaff}\n />\n\n
\n\n
\n\n \n\n

{_( 'Anmerkungen' )} ({_( 'Offizielle' )})

\n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n\n \n\n \n\n
\n\n
\n\n \n\n \n\n
\n\n {this.renderInput( { title: 'Name', key: 'notesOfficials', key2: 'name' } )}\n\n
\n\n
\n\n {this.props.gameReportRefereeMeta.status !== GRR_DRAFT && this.renderTeamNotes( 'home' )}\n\n {this.props.gameReportRefereeMeta.status !== GRR_DRAFT && this.renderTeamNotes( 'away' )}\n\n
\n\n {( ( this.props.activeGame.permission === 'referee' && this.props.gameReportRefereeMeta.status === GRR_DRAFT ) || canOverwrite ) &&\n\n <>\n\n {/* {_( 'Entwurf speichern' )} */}\n\n {_( 'Änderungen verwerfen' )}\n\n \n\n }\n\n {canBeSignedByTeam &&\n\n

\n\n \n\n {' ' + ( this.teamSignatureExpired() ? _( 'Die Frist zum Unterschreiben ist abgelaufen.' ) : _( 'Du kannst unter den Anmerkungen deines Teams einen Kommentar eingeben und unterschreiben bis:' ) + ' ' + this.getTeamSignatureExpirationDate().toLocaleString() )}\n\n

\n\n }\n\n {( canBeSignedByReferee || ( canBeSignedByTeam && ! this.teamSignatureExpired() ) ) && }\n\n {canOverwrite && }\n\n
\n\n \n\n {this.props.activeGame.permission === 'referee' && this.props.gameReportRefereeMeta.status === GRR_DRAFT &&\n\n \n\n }\n\n
\n\n );\n\n }\n\n}\n\nexport default GameReportReferee;","import { connect } from 'react-redux';\nimport { loadGameReportReferee, loadScores } from '../../store/actions/games';\nimport { changePage, isLoading } from '../../store/actions/app';\nimport { confirmGameReportReferee, overwriteGameReportReferee, saveGameReportRefereeDraft, signGameReportReferee } from '../../store/actions/gameReportReferee';\nimport { loadReferees } from '../../store/actions/referees';\nimport { updateGameReportReferee, dismissGameReportRefereeChanges } from '../../store/actions/localChanges';\nimport * as defaults from '../../store/defaults/gameReportReferee';\nimport GameReportReferee from '../../components/Pages/GameReportReferee';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.Pages.GameReportReferee.mapStateToProps', state );\n\n const activeGame = state.items.games.activeItem;\n const gameInfo = {};\n let gameReportReferee = null;\n let gameReportRefereeLastUpdate = null;\n let gameReportRefereeMeta = null;\n let localChanges = null;\n let referees = null;\n let refereesLastUpdate = null;\n\n if ( activeGame ) {\n\n if ( state.items.gameReportsReferee && ( activeGame.id in state.items.gameReportsReferee ) ) {\n\n gameReportReferee = state.items.gameReportsReferee[ activeGame.id ].gameReportReferee;\n gameReportRefereeLastUpdate = new Date( state.items.gameReportsReferee[ activeGame.id ].lastUpdate );\n gameReportRefereeMeta = state.items.gameReportsReferee[ activeGame.id ].meta;\n\n }\n\n if ( state.localChanges.gameReportsReferee && ( activeGame.id in state.localChanges.gameReportsReferee ) ) {\n\n localChanges = state.localChanges.gameReportsReferee[ activeGame.id ];\n\n }\n\n if ( activeGame.permission === 'referee' ) {\n\n if ( state.items.referees && ( activeGame.id in state.items.referees ) ) {\n\n referees = state.items.referees[ activeGame.id ].items;\n refereesLastUpdate = new Date( state.items.referees[ activeGame.id ].lastUpdate );\n\n }\n\n gameInfo.gameDate = ! activeGame.dateIsToBeDetermined && activeGame.scheduledDate ? activeGame.scheduledDate.value : null;\n gameInfo.gameName = activeGame.gameName;\n gameInfo.gameStart = ! activeGame.timeIsToBeDetermined ? activeGame.scheduledTime : null;\n\n gameInfo.teamInfoAway = {}\n gameInfo.teamInfoAway.colorHelmets = activeGame.awayTeam.defaultColors.helmets;\n gameInfo.teamInfoAway.colorPants = activeGame.awayTeam.defaultColors.pants;\n gameInfo.teamInfoAway.colorShirts = activeGame.awayTeam.defaultColors.shirts;\n gameInfo.teamInfoAway.colorSocks = activeGame.awayTeam.defaultColors.socks;\n gameInfo.teamInfoAway.teamName = activeGame.awayTeam.longName;\n\n gameInfo.teamInfoHome = {}\n gameInfo.teamInfoHome.colorHelmets = activeGame.homeTeam.defaultColors.helmets;\n gameInfo.teamInfoHome.colorPants = activeGame.homeTeam.defaultColors.pants;\n gameInfo.teamInfoHome.colorShirts = activeGame.homeTeam.defaultColors.shirts;\n gameInfo.teamInfoHome.colorSocks = activeGame.homeTeam.defaultColors.socks;\n gameInfo.teamInfoHome.teamName = activeGame.homeTeam.longName;\n\n }\n\n }\n\n return {\n\n context: state.auth.context,\n gameReportReferee: { ...defaults.gameReportReferee, ...gameInfo, ...gameReportReferee, ...localChanges },\n gameReportRefereeMeta: { ...defaults.gameReportRefereeMeta, ...gameReportRefereeMeta },\n hasLocalChanges: localChanges !== null,\n loading: state.app.loading,\n token: state.auth.token,\n username: state.auth.username,\n userSettings: state.userSettings,\n\n activeGame, gameReportRefereeLastUpdate, referees, refereesLastUpdate\n\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onChangePage: route => dispatch( changePage( route ) ),\n onConfirm: ( context, token, gameId, gameReportReferee, username ) => dispatch( isLoading( true ) ) && dispatch( confirmGameReportReferee( context, token, gameId, gameReportReferee, username ) ),\n onDismissChanges: gameId => dispatch( dismissGameReportRefereeChanges( gameId ) ),\n onLoadGameReportReferee: ( context, token, gameId ) => dispatch( isLoading( true ) ) && dispatch( loadGameReportReferee( context, token, gameId ) ),\n onLoadReferees: ( context, token, gameId ) => dispatch( isLoading( true ) ) && dispatch( loadReferees( context, token, gameId ) ),\n onLoadScores: ( context, gameId ) => dispatch( isLoading( true ) ) && dispatch( loadScores( context, gameId ) ),\n onOverwrite: ( context, token, gameId, gameReportReferee ) => dispatch( isLoading( true ) ) && dispatch( overwriteGameReportReferee( context, token, gameId, gameReportReferee ) ),\n onSaveDraft: ( context, token, gameId, gameReportReferee ) => dispatch( isLoading( true ) ) && dispatch( saveGameReportRefereeDraft( context, token, gameId, gameReportReferee ) ),\n onSign: ( context, token, gameId, team, comment, name, username ) => dispatch( isLoading( true ) ) && dispatch( signGameReportReferee( context, token, gameId, team, comment, name, username ) ),\n onUpdateGameReportReferee: ( gameId, data ) => dispatch( updateGameReportReferee( gameId, data ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( GameReportReferee );","import { CONFIRM_GAME_REPORT_REFEREE, OVERWRITE_GAME_REPORT_REFEREE, SAVE_GAME_REPORT_REFEREE_DRAFT, SIGN_GAME_REPORT_REFEREE } from '../constants/actionTypes';\n\nexport const confirmGameReportReferee = ( context, token, gameId, gameReportReferee, username ) => {\n\n return {\n type: CONFIRM_GAME_REPORT_REFEREE,\n payload: { context, token, gameId, gameReportReferee, username }\n };\n\n};\n\nexport const overwriteGameReportReferee = ( context, token, gameId, gameReportReferee ) => {\n\n return {\n type: OVERWRITE_GAME_REPORT_REFEREE,\n payload: { context, token, gameId, gameReportReferee }\n };\n\n};\n\nexport const saveGameReportRefereeDraft = ( context, token, gameId, gameReportReferee ) => {\n\n return {\n type: SAVE_GAME_REPORT_REFEREE_DRAFT,\n payload: { context, token, gameId, gameReportReferee }\n };\n\n};\n\nexport const signGameReportReferee = ( context, token, gameId, team, comment, name, username ) => {\n\n return {\n type: SIGN_GAME_REPORT_REFEREE,\n payload: { context, token, gameId, team, comment, name, username }\n };\n\n};","import { CONFIRM_ROSTER_PLAYER, DISMISS_GAME_REPORT_REFEREE_CHANGES, UPDATE_GAME_REPORT_REFEREE } from '../constants/actionTypes';\n\nexport const confirmRosterPlayer = ( gameId, playerId, isConfirmed ) => {\n\n return {\n type: CONFIRM_ROSTER_PLAYER,\n payload: { gameId, playerId, isConfirmed }\n };\n\n};\n\nexport const dismissGameReportRefereeChanges = gameId => {\n\n return {\n type: DISMISS_GAME_REPORT_REFEREE_CHANGES,\n payload: { gameId }\n };\n\n};\n\nexport const updateGameReportReferee = ( gameId, data ) => {\n\n return {\n type: UPDATE_GAME_REPORT_REFEREE,\n payload: { gameId, data }\n };\n\n};","import { REFEREES_REQUESTED } from '../constants/actionTypes';\n\nexport const loadReferees = ( context, token, gameId ) => {\n\n return {\n type: REFEREES_REQUESTED,\n payload: { context, token, gameId }\n };\n\n};","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport { READY_TO_PLAY, ROSTERS_LOCKED, ROSTERS_UNLOCKED} from '../../store/constants/statusCodes';\nimport { getRosterPublicStatusIcon } from '../../util';\nimport { translate as _ } from '../../util/i18n';\n\nclass Game extends React.Component {\n\n renderTeamName( team ) {\n\n return <>{this.props.game[ team + 'Team' ].shortName}{getRosterPublicStatusIcon( this.props.context, this.props.game, team )};\n\n }\n\n render() {\n\n return (\n\n this.props.onClick( this.props.game )}>\n\n
{this.props.game.timeIsToBeDetermined ? _( 'TBD' ) : this.props.game.scheduledTime}
\n\n
{this.renderTeamName( 'home' )} - {this.renderTeamName( 'away' )}
\n\n
\n\n {\n\n this.props.game.rosterStatus === READY_TO_PLAY ?\n\n \n\n : this.props.game.rosterStatus === ROSTERS_LOCKED ?\n\n \n\n : this.props.game.rosterStatus === ROSTERS_UNLOCKED ?\n\n \n\n : \n\n }\n\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default Game;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Game from '../ListItems/Game';\nimport PullHook from '../PullHook';\nimport Toolbar from '../Toolbar';\nimport { translate as _ } from '../../util/i18n';\nimport { expired, getWeekday } from '../../util';\n\nclass Games extends React.Component {\n\n #pullHookCallback;\n\n constructor( props ) {\n\n // console.log( 'components.Pages.Games.constructor()', props );\n\n super( props );\n\n this.state = {\n pullHook: 'initial'\n };\n\n this.handleBackClick = this.handleBackClick.bind( this );\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n this.handleSelectGame = this.handleSelectGame.bind( this );\n this.loadGames = this.loadGames.bind( this );\n\n }\n\n componentDidMount() {\n\n expired( this.props.lastUpdate ) && this.loadGames();\n\n }\n\n componentDidUpdate() {\n\n if ( this.#pullHookCallback ) {\n\n const cb = this.#pullHookCallback;\n\n setTimeout( () => cb(), 1000 );\n\n this.#pullHookCallback = null;\n\n }\n\n }\n\n handleBackClick() {\n\n this.props.onChangePage( { page: 'seasons' } );\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.#pullHookCallback = e;\n\n this.loadGames();\n\n }\n\n handleSelectGame( game ) {\n\n this.props.onSelectGame( game );\n this.props.onChangePage( { page: 'game' } );\n\n }\n\n loadGames() {\n\n this.props.onLoadGames( this.props.context, this.props.token, this.props.activeSeason.id );\n\n }\n\n render() {\n\n const gamesByDate = {};\n\n if ( this.props.games && this.props.games.length ) {\n\n this.props.games.forEach( game => {\n\n const gameDate = game.dateIsToBeDetermined ? _( 'TBD' ) : ( getWeekday( new Date( game.scheduledDate.sortValue ) ) + ', ' + game.scheduledDate.shortValue );\n\n if ( ! ( gameDate in gamesByDate ) ) {\n\n gamesByDate[ gameDate ] = {\n games: [],\n sort: game.dateIsToBeDetermined ? Number.MAX_SAFE_INTEGER : game.scheduledDate.sortValue\n };\n\n }\n\n gamesByDate[ gameDate ].games.push( game );\n\n } );\n\n }\n\n const gamesByDateEntries = Object.entries( gamesByDate );\n\n gamesByDateEntries.sort( ( a, b ) => a[ 1 ].sort - b[ 1 ].sort );\n\n return (\n\n }>\n\n \n\n {this.props.loading && this.state.pullHook !== 'action' && }\n\n

{_( 'Spiele' )}

\n\n {\n gamesByDateEntries.length ?\n\n // TODO remove Math.random() from key (currently needed because multiple games have id 0000-0000-0000-0000)\n\n gamesByDateEntries.map( ( [ gameDate, games ] ) => {\n\n return {gameDate}}\n renderRow={( game, idx ) =>\n \n }\n />;\n\n } )\n\n : ! expired( this.props.lastUpdate ) &&\n\n
\n

{_( 'Keine Spiele gefunden.' )}

\n {_( 'Aktualisieren' )}\n
\n }\n\n
\n\n );\n\n }\n\n}\n\nexport default Games;","import { connect } from 'react-redux';\nimport { loadGames, setActiveGame } from '../../store/actions/games';\nimport { changePage, isLoading } from '../../store/actions/app';\nimport Games from '../../components/Pages/Games';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.Pages.Games.mapStateToProps', state );\n\n const leagueId = state.items.seasons.activeItem ? state.items.seasons.activeItem.leagueId : null;\n const games = state.items.games.items ? state.items.games.items.filter( e => ! leagueId || e.leagueId === leagueId ) : null;\n\n return {\n\n activeSeason: state.items.seasons.activeItem,\n context: state.auth.context,\n lastUpdate: state.items.games.lastUpdate ? new Date( state.items.games.lastUpdate ) : null,\n loading: state.app.loading,\n token: state.auth.token,\n\n games\n\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onChangePage: route => dispatch( changePage( route ) ),\n onLoadGames: ( context, token, seasonId ) => dispatch( isLoading( true ) ) && dispatch( loadGames( context, token, seasonId ) ),\n onSelectGame: game => dispatch( setActiveGame( game ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Games );","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nclass Modal extends React.Component {\n\n #modalRoot;\n #el;\n\n constructor( props ) {\n\n super( props );\n\n this.#modalRoot = document.getElementById( 'modal-root' );\n this.#el = document.createElement( 'div' );\n this.#el.className = 'modal';\n\n }\n\n componentDidMount() {\n\n this.#modalRoot.appendChild( this.#el );\n\n }\n\n componentWillUnmount() {\n\n this.#modalRoot.removeChild( this.#el );\n\n }\n\n render() {\n\n return ReactDOM.createPortal( this.props.children, this.#el );\n\n }\n\n}\n\nexport default Modal;","import React from 'react';\nimport Modal from './Modal';\nimport * as Ons from 'react-onsenui';\nimport { translate as _ } from '../util/i18n';\n\nclass PlayerImage extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n imgError: props.player.imageUrl ? false : true,\n largeImageOpen: false\n };\n\n this.handleImageLoadingError = this.handleImageLoadingError.bind( this );\n this.handleClick = this.handleClick.bind( this );\n this.handleJerseyNrClick = this.handleJerseyNrClick.bind( this );\n this.handleLargeImageClick = this.handleLargeImageClick.bind( this );\n this.handleLargeImageToggleClick = this.handleLargeImageToggleClick.bind( this );\n\n }\n\n handleImageLoadingError() {\n\n this.setState( { imgError: true } );\n\n }\n\n handleClick( e ) {\n\n e.stopPropagation();\n\n this.setState( { largeImageOpen: true } );\n\n }\n\n handleJerseyNrClick() {\n\n this.props.onJerseyNrClick();\n\n }\n\n handleLargeImageClick( e ) {\n\n e.stopPropagation();\n\n this.setState( { largeImageOpen: false } );\n\n }\n\n handleLargeImageToggleClick( e ) {\n\n e.stopPropagation();\n\n this.props.onToggle && this.props.onToggle();\n\n }\n\n render() {\n\n // console.log( 'components.PlayerImage.render()', this.props, this.state );\n\n return (\n\n <>\n\n
\n\n {!this.props.player.imageUrl || this.state.imgError ?
{this.props.type === 'Players' ? ( this.props.player.jerseyNr || '##' ) : }
: }\n\n
\n\n { this.state.largeImageOpen &&\n\n \n\n
\n\n
\n\n {this.props.player.lastname}\n {this.props.player.firstname}\n {this.props.player.middlename}\n\n
\n\n {( !this.props.player.imageUrl || this.state.imgError ) &&
{_( 'Kein Foto vorhanden' )}
}\n\n {this.props.type === 'Players' &&
#{this.props.player.jerseyNr}
}\n\n {this.props.activatable &&
{this.props.isActive ? this.props.textIsActive : this.props.textActivate}
}\n\n
\n\n
\n\n }\n\n \n\n );\n\n }\n\n}\n\nexport default PlayerImage;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport dateFormat from 'date-format';\nimport PlayerImage from '../PlayerImage';\nimport { coloredLabel } from '../../util';\nimport { translate as _ } from '../../util/i18n';\n\nclass Player extends React.Component {\n\n #styles = [ 'bold', 'centered', 'fixed', 'large', 'xlarge', 'upper', 'inverted' ];\n\n constructor( props ) {\n\n super( props );\n\n this.handleActivate = this.handleActivate.bind( this );\n this.handleClick = this.handleClick.bind( this );\n this.handleJerseyNrClick = this.handleJerseyNrClick.bind( this );\n\n }\n\n handleActivate( e ) {\n\n if ( this.props.onActivate ) {\n\n e && e.stopPropagation();\n\n this.props.onActivate( this.props.player );\n\n }\n\n }\n\n handleClick() {\n\n this.props.onClick && this.props.onClick( this.props.player );\n\n }\n\n handleJerseyNrClick() {\n\n this.props.onJerseyNrClick && this.props.onJerseyNrClick( this.props.player );\n\n }\n\n formatLine( line, i ) {\n\n return
{line.map( ( pattern, i ) => this.formatValue( pattern, i ) )}
;\n\n }\n\n formatValue( pattern, i ) {\n\n if ( ! ( pattern.key in this.props.player ) ) {\n\n return '';\n\n }\n\n let className = [],\n value = this.props.player[ pattern.key ];\n\n if ( ! value ) {\n\n pattern.type !== 'jerseyNr' && className.push( 'no-value' );\n\n } else if ( typeof value === 'string' ) {\n\n value = value.split( '#' )[ 0 ];\n\n }\n\n if ( pattern.type === 'yob' && value ) {\n\n value = ( new Date( value ) ).getFullYear();\n\n } else if ( pattern.type === 'dob' && value ) {\n\n value = dateFormat.asString( 'dd.MM.yy', new Date( value ) );\n\n } else if ( pattern.type === 'weight' ) {\n\n value += 'kg';\n\n } else if ( pattern.type === 'height' ) {\n\n value += 'cm';\n\n } else if ( pattern.type === 'jerseyNr' ) {\n\n className.push( 'jersey-nr' );\n\n }\n\n if ( pattern.style ) {\n\n const style = pattern.style.split( ',' );\n\n if ( style.indexOf( 'label' ) !== -1 ) {\n\n value = coloredLabel( value );\n\n }\n\n this.#styles.forEach( e => style.indexOf( e ) !== -1 && className.push( e ) );\n\n }\n\n return {value};\n\n }\n\n render() {\n\n const playerClass = [ 'player' ];\n\n if ( this.props.player.isExtended ) { playerClass.push( 'is-extended' ); }\n if ( this.props.player.isSuspended ) { playerClass.push( 'is-suspended' ); }\n if ( this.props.player.locallyChanged ) { playerClass.push( 'locally-changed' ); }\n if ( this.props.player.position && this.props.player.position.indexOf( '#DNP' ) !== -1 ) { playerClass.push( 'dnp' ); }\n if ( this.props.player.position && this.props.player.position.indexOf( '#ABSENT' ) !== -1 ) { playerClass.push( 'absent' ); }\n\n return (\n\n \n\n
\n\n \n\n
\n\n
\n\n {this.props.format.map( ( line, i ) => this.formatLine( line, i ) )}\n\n { this.props.player.isSuspended &&
{ _( 'Gesperrt' ) }
}\n\n
\n\n
{this.props.activatable && this.props.isActive ? : this.props.activatable && this.props.onActivate ? : ''}
\n\n
\n\n );\n\n }\n\n}\n\nexport default Player;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Toolbar from '../Toolbar';\nimport { supports } from '../../util/context';\nimport { translate as _ } from '../../util/i18n';\n\nclass PlayerListSettings extends React.Component {\n\n #groupOptions;\n #sortOptions;\n #viewOptions;\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n\n playerListSettings: this.props.playerListSettings\n\n };\n\n this.handleBackClick = this.handleBackClick.bind( this );\n\n this.#groupOptions = [\n\n { value: null, label: _( 'Keine' ) },\n { value: 'position', label: _( 'Position' ) + ( supports( this.props.context, 'teamOfficials' ) ? ' / ' + _( 'Funktion' ) : '' ) }\n\n ];\n\n this.#sortOptions = [\n\n { value: null, label: _( 'Name' ) },\n { value: 'position', label: _( 'Position' ) + ( supports( this.props.context, 'teamOfficials' ) ? ' / ' + _( 'Funktion' ) : '' ) }\n\n ];\n\n this.#viewOptions = [\n\n { value: null, label: _( 'Detailliert' ) },\n { value: 'compact', label: _( 'Kompakt' ) }\n\n ];\n\n if ( supports( this.props.context, 'lineup' ) ) {\n\n this.#groupOptions.push( { value: 'line', label: _( 'Linie' ) } );\n this.#sortOptions.push( { value: 'line', label: _( 'Linie' ) } );\n\n }\n\n }\n\n handleBackClick() {\n\n this.props.onUpdatePlayerListSettings( this.state.playerListSettings );\n\n this.props.onClose();\n\n }\n\n handleOptionClick( name, value ) {\n\n this.setState( { playerListSettings: { ...this.state.playerListSettings, [ name ]: value } } );\n\n }\n\n renderSetting( e ) {\n\n return (\n\n \n\n {e.header}\n\n {\n e.options.map( ( option, i ) => {\n\n const value = this.state.playerListSettings[ e.name ];\n\n return (\n\n this.handleOptionClick( e.name, option.value )} tappable={true}>\n\n
\n\n
{option.label}
\n\n
\n\n );\n\n } )\n }\n\n
\n\n );\n\n }\n\n render() {\n\n // console.log( 'components.Pages.PlayerListSettings.render()', this.props, this.state );\n\n return (\n\n } />}>\n\n {this.renderSetting( { header: _( 'Sortieren nach' ), options: this.#sortOptions, name: 'sortBy' } )}\n {this.renderSetting( { header: _( 'Gruppieren nach' ), options: this.#groupOptions, name: 'groupBy' } )}\n {this.renderSetting( { header: _( 'Ansicht' ), options: this.#viewOptions, name: 'view' } )}\n\n \n\n );\n\n }\n\n}\n\nexport default PlayerListSettings;","import { connect } from 'react-redux';\nimport PlayerListSettings from '../../components/Pages/PlayerListSettings';\nimport { setUserSetting } from '../../store/actions/userSettings';\n\nconst mapStateToProps = state => {\n\n return {\n context: state.auth.context,\n playerListSettings: state.userSettings.playerListSettings || {}\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n\n onUpdatePlayerListSettings: e => dispatch( setUserSetting( 'playerListSettings', e ) )\n\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( PlayerListSettings );","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Modal from './Modal';\nimport Player from './ListItems/Player';\nimport PlayerListSettings from '../containers/Pages/PlayerListSettings';\nimport { getPlayerPositions, getTeamOfficialPositions, supports } from '../util/context';\nimport { translate as _ } from '../util/i18n';\n\nclass PlayerList extends React.Component {\n\n #playerPositions;\n #teamOfficialPositions;\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n playerListSettingsOpen: false,\n searchDisplay: '',\n searchQuery: ''\n };\n\n this.filterPlayer = this.filterPlayer.bind( this );\n this.handleClosePlayerListSettings = this.handleClosePlayerListSettings.bind( this );\n this.handleOpenPlayerListSettings = this.handleOpenPlayerListSettings.bind( this );\n this.handleSearchChange = this.handleSearchChange.bind( this );\n this.sortPlayers = this.sortPlayers.bind( this );\n\n this.#playerPositions = getPlayerPositions( props.context ) || [];\n this.#teamOfficialPositions = getTeamOfficialPositions( props.context ) || [];\n\n }\n\n filterPlayer( player ) {\n\n if ( ! this.state.searchQuery ) {\n\n return true;\n\n }\n\n if ( player.lastname && player.lastname.toLowerCase().indexOf( this.state.searchQuery ) !== -1 ) {\n\n return true;\n\n }\n\n if ( player.firstname && player.firstname.toLowerCase().indexOf( this.state.searchQuery ) !== -1 ) {\n\n return true;\n\n }\n\n if ( player.middlename && player.middlename.toLowerCase().indexOf( this.state.searchQuery ) !== -1 ) {\n\n return true;\n\n }\n\n return false;\n\n }\n\n getEmptyPlayersList() {\n\n if ( this.props.playerListSettings.groupBy === 'line' ) {\n\n return ( supports( this.props.context, 'lineup' ) && this.props.type !== 'TeamOfficials' ) ? {} : [];\n\n }\n\n return ( this.props.playerListSettings.groupBy ? {} : [] );\n\n }\n\n handleClosePlayerListSettings() {\n\n this.setState( { playerListSettingsOpen: false } );\n\n }\n\n handleOpenPlayerListSettings() {\n\n this.setState( { playerListSettingsOpen: true } );\n\n }\n\n handleSearchChange( e ) {\n\n this.setState( {\n searchDisplay: e.target.value,\n searchQuery: e.target.value.toLowerCase()\n } );\n\n }\n\n renderPlayerList( players, header ) {\n\n return (\n\n header ? {header} : null}\n renderRow={\n ( player, idx ) => {\n\n return (\n\n this.filterPlayer( player ) &&\n\n \n\n );\n\n }\n }\n />\n\n );\n\n }\n\n sortPlayers( a, b ) {\n\n return this.sortPlayersByKey( a, b, this.props.playerListSettings.sortBy || 'lastname' );\n\n }\n\n sortPlayersByKey( a, b, key ) {\n\n if ( this.props.type === 'TeamOfficials' ) {\n\n if ( key === 'position' ) { key = 'job'; }\n if ( key === 'line' ) { key = 'lastname'; }\n\n }\n\n return ( a[ key ] < b[ key ] ? -1 : a[ key ] > b[ key ] ? 1 : 0 );\n\n }\n\n render() {\n\n const players = this.getEmptyPlayersList();\n const positions = [ ...( this.props.type === 'Players' ? this.#playerPositions : this.#teamOfficialPositions ), [ 'undefined', _( this.props.type === 'Players' ? 'Keine Position' : 'Keine Funktion' ) ] ];\n const groupByLine = this.props.playerListSettings.groupBy === 'line' && supports( this.props.context, 'lineup' ) && this.props.type !== 'TeamOfficials';\n let playersByLines = null;\n\n if ( this.props.players && this.props.players.length ) {\n\n this.props.players.sort( this.sortPlayers );\n\n this.props.players.forEach( player => {\n\n if ( this.props.playerListSettings.groupBy === 'position' ) {\n\n const position = ( this.props.type === 'TeamOfficials' ? player.job : player.position ) || 'undefined';\n\n if ( ! ( position in players ) ) {\n\n players[ position ] = [];\n\n }\n\n players[ position ].push( player );\n\n } else if ( groupByLine ) {\n\n const line = player.line ? _( 'Linie' ) + ' ' + player.line : _( 'Keine Linie' );\n\n if ( ! ( line in players ) ) {\n\n players[ line ] = [];\n\n }\n\n players[ line ].push( player );\n\n } else {\n\n players.push( player );\n\n }\n\n } );\n\n }\n\n if ( groupByLine ) {\n\n playersByLines = Object.entries( players );\n\n playersByLines.sort( ( a, b ) => a[ 0 ] < b[ 0 ] ? -1 : a[ 0 ] > b[ 0 ] ? 1 : 0 );\n\n }\n\n return (\n\n <>\n\n
\n \n \n
\n\n {\n\n this.props.playerListSettings.groupBy === 'position' ?\n\n positions.map( position => {\n\n if ( position[ 0 ] in players ) {\n\n return this.renderPlayerList( players[ position[ 0 ] ], position[ 1 ] )\n\n }\n\n return null;\n\n } )\n\n : groupByLine ?\n\n playersByLines.map( ( [ line, players ] ) => this.renderPlayerList( players, line ) )\n\n :\n\n this.renderPlayerList( players )\n\n }\n\n {this.state.playerListSettingsOpen && }\n\n \n\n );\n\n }\n\n}\n\nexport default PlayerList;","import { connect } from 'react-redux';\nimport PlayerList from '../components/PlayerList';\nimport { getPlayerFormat } from '../util/context';\nimport { getRosters } from '../util/reducer-helpers';\n\nconst mapStateToProps = ( state, props ) => {\n\n // console.log( 'containers.PlayerList.mapStateToProps', state, props );\n\n const playerListSettings = state.userSettings.playerListSettings || {};\n const rosters = getRosters( state );\n\n return {\n\n context: state.auth.context,\n playerFormat: getPlayerFormat( props.type + ( playerListSettings.view ? '.' + playerListSettings.view : '' ), state.auth.context, rosters.rosters ),\n\n playerListSettings\n\n };\n\n};\n\nexport default connect( mapStateToProps )( PlayerList );","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport NumericInput from '@hockeydata/numeric-input';\nimport Modal from '../Modal';\nimport PullHook from '../PullHook';\nimport PlayerList from '../../containers/PlayerList';\nimport { translate as _ } from '../../util/i18n';\nimport { expired, isAbsent } from '../../util';\nimport { getPlayerPositions, getTeamOfficialPositions, supports, wording } from '../../util/context';\nimport { showAlert } from '../../util/ui';\nimport { FACECHECK_ALLOWED, READY_TO_PLAY, ROSTERS_LOCKED, ROSTERS_UNLOCKED } from '../../store/constants/statusCodes';\nimport { CAPTAIN_A, CAPTAIN_C, POSITION_ALL_PLAYERS, POSITION_ALL_TEAM_OFFICIALS } from '../../store/constants/misc';\n\nclass RosterPlayers extends React.Component {\n\n #captainOptions;\n #playerPositions;\n #teamOfficialPositions;\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n activePlayer: null,\n jerseyNrEditorOpen: false,\n playerActionsOpen: false,\n lineupDataEditorOpen: false,\n lineupDataEditorValueCaptain: null,\n lineupDataEditorValueLine: null,\n lineupDataEditorValuePosition: null,\n lineupDataEditorValueStarting: null\n };\n\n this.handleCaptainSelect = this.handleCaptainSelect.bind( this );\n this.handleEditJerseyNrClick = this.handleEditJerseyNrClick.bind( this );\n this.handleEditLineupDataClick = this.handleEditLineupDataClick.bind( this );\n this.handleForceTakeFaceCheck = this.handleForceTakeFaceCheck.bind( this );\n this.handleJerseyNrClick = this.handleJerseyNrClick.bind( this );\n this.handleJerseyNrEditorCancel = this.handleJerseyNrEditorCancel.bind( this );\n this.handleJerseyNrEditorClose = this.handleJerseyNrEditorClose.bind( this );\n this.handleLineSelect = this.handleLineSelect.bind( this );\n this.handleLineupDataEditorCancel = this.handleLineupDataEditorCancel.bind( this );\n this.handleLineupDataEditorClose = this.handleLineupDataEditorClose.bind( this );\n this.handlePlayerActionsClose = this.handlePlayerActionsClose.bind( this );\n this.handlePlayerActivate = this.handlePlayerActivate.bind( this );\n this.handlePlayerClick = this.handlePlayerClick.bind( this );\n this.handlePlayerRemoveClick = this.handlePlayerRemoveClick.bind( this );\n this.handleStartingPlayerToggle = this.handleStartingPlayerToggle.bind( this );\n this.handleTakeFaceCheck = this.handleTakeFaceCheck.bind( this );\n this.handleToggleAbsent = this.handleToggleAbsent.bind( this );\n this.handleToggleDNP = this.handleToggleDNP.bind( this );\n\n this.#captainOptions = [ null, CAPTAIN_C, CAPTAIN_A ];\n this.#playerPositions = getPlayerPositions( props.context ) || [];\n this.#teamOfficialPositions = getTeamOfficialPositions( props.context ) || [];\n\n }\n\n handleCaptainSelect( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // this.setState( { lineupDataEditorValueCaptain: this.#captainOptions[ Number( e.index ) ] } );\n this.setState( { lineupDataEditorValueCaptain: this.#captainOptions[ Number( e.target.querySelector( 'input:checked' ).value ) ] } );\n\n }\n\n handleEditJerseyNrClick() {\n\n this.setState( {\n\n jerseyNrEditorOpen: true,\n playerActionsOpen: false\n\n } );\n\n }\n\n handleEditLineupDataClick() {\n\n const newState = {\n\n playerActionsOpen: false,\n lineupDataEditorOpen: true,\n lineupDataEditorValuePosition: this.state.activePlayer.isTeamOfficial ? this.state.activePlayer.lineupData.job : this.state.activePlayer.lineupData.position\n\n };\n\n if ( ! this.state.activePlayer.isTeamOfficial ) {\n\n if ( supports( this.props.context, 'captain' ) ) { newState.lineupDataEditorValueCaptain = this.state.activePlayer.lineupData.captain; }\n if ( supports( this.props.context, 'lineup' ) ) { newState.lineupDataEditorValueLine = this.state.activePlayer.lineupData.line; }\n if ( supports( this.props.context, 'startingPlayer' ) ) { newState.lineupDataEditorValueStarting = this.state.activePlayer.lineupData.starting; }\n\n }\n\n this.setState( newState );\n\n }\n\n handleForceTakeFaceCheck() {\n\n showAlert( {\n\n buttonLabels: [ _( 'Abbrechen' ), _( 'OK' ) ],\n callback: e => e === 1 && this.handleTakeFaceCheck(),\n cancelable: true,\n message: _( 'Dies übernimmt den Facecheck von:' ) + ' ' + this.props.facecheck,\n title: _( 'Facecheck übernehmen?' )\n\n } );\n\n }\n\n handleJerseyNrClick( player ) {\n\n this.setState( {\n\n activePlayer: player,\n jerseyNrEditorOpen: true\n\n } );\n\n }\n\n handleJerseyNrEditorClose( e ) {\n\n this.props.onEditRosterPlayer( this.props.context, this.props.token, this.props.activeGame.id, this.props.team, this.props.teamId, { ...this.state.activePlayer, lineupData: { ...this.state.activePlayer.lineupData, jerseyNr: Number( e ) } } );\n\n this.setState( {\n\n activePlayer: null,\n jerseyNrEditorOpen: false\n\n } );\n\n }\n\n handleJerseyNrEditorCancel() {\n\n this.setState( { jerseyNrEditorOpen: false } );\n\n }\n\n handleLineSelect( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // this.setState( { lineupDataEditorValueLine: Number( e.index ) || null } );\n this.setState( { lineupDataEditorValueLine: Number( e.target.querySelector( 'input:checked' ).value ) || null } );\n\n }\n\n handleLineupDataEditorCancel() {\n\n this.setState( { lineupDataEditorOpen: false } );\n\n }\n\n handleLineupDataEditorClose() {\n\n const lineupData = { ...this.state.activePlayer.lineupData };\n\n if ( this.state.activePlayer.isTeamOfficial ) {\n\n lineupData.job = this.state.lineupDataEditorValuePosition;\n\n } else {\n\n lineupData.position = this.state.lineupDataEditorValuePosition;\n\n if ( supports( this.props.context, 'lineup' ) ) { lineupData.line = this.state.lineupDataEditorValueLine || null; }\n if ( supports( this.props.context, 'startingPlayer' ) ) { lineupData.starting = this.state.lineupDataEditorValueStarting || null; }\n if ( supports( this.props.context, 'captain' ) ) { lineupData.captain = this.state.lineupDataEditorValueCaptain || null; }\n\n }\n\n this.props.onEditRosterPlayer( this.props.context, this.props.token, this.props.activeGame.id, this.props.team, this.props.teamId, { ...this.state.activePlayer, lineupData } );\n\n this.setState( {\n\n activePlayer: null,\n lineupDataEditorOpen: false\n\n } );\n\n }\n\n handlePlayerActionsClose() {\n\n this.setState( { playerActionsOpen: false } );\n\n }\n\n handlePlayerActivate( player ) {\n\n this.props.onConfirmRosterPlayer( this.props.activeGame.id, player.id, ! player.isConfirmed );\n\n }\n\n handlePlayerClick( player ) {\n\n this.setState( {\n\n activePlayer: player,\n playerActionsOpen: true\n\n } );\n\n }\n\n handlePlayerRemoveClick() {\n\n const callback = e => {\n\n e === 1 && this.props.onRemoveRosterPlayer( this.props.context, this.props.token, this.props.activeGame.id, this.props.activeGame.permission, this.state.activePlayer.id, this.state.activePlayer.isTeamOfficial );\n\n this.setState( { activePlayer: null } );\n\n };\n\n this.setState( { playerActionsOpen: false }, () => showAlert( {\n\n buttonLabels: [ _( 'Abbrechen' ), _( 'OK' ) ],\n cancelable: true,\n message: _( this.state.activePlayer.isTeamOfficial ? 'Team-Offiziellen entfernen?' : 'Spieler entfernen?' ),\n title: '',\n\n callback\n\n } ) );\n\n }\n\n handlePositionSelect( e ) {\n\n this.setState( { lineupDataEditorValuePosition: e } );\n\n }\n\n handleStartingPlayerToggle( e ) {\n\n this.setState( { lineupDataEditorValueStarting: e.target.checked } );\n\n }\n\n handleTakeFaceCheck() {\n\n this.props.onTakeFaceCheck( this.props.context, this.props.token, this.props.activeGame.id, this.props.team, this.props.teamId );\n\n }\n\n handleToggleAbsent() {\n\n this.setPositionMeta( '#ABSENT' );\n\n }\n\n handleToggleDNP() {\n\n this.setPositionMeta( '#DNP' );\n\n }\n\n renderCountables() {\n\n const ret = [];\n\n this.props.countables.forEach( ( countable, i ) => {\n\n const counts = {};\n\n if ( this.props.roster && this.props.roster ) {\n\n this.props.roster.forEach( player => {\n\n if ( ! countable.condition || countable.condition !== 'isConfirmed' || player.isConfirmed ) {\n\n const value = ( countable.key in player ) ? player[ countable.key ] : \"\";\n\n if ( ! countable.values || countable.values.indexOf( value ) !== -1 ) {\n\n if ( ! ( value in counts ) ) {\n\n counts[ value ] = 1;\n\n } else {\n\n counts[ value ]++;\n\n }\n\n }\n\n }\n\n } );\n\n }\n\n const keys = Object.keys( counts );\n\n countable.title && ret.push(
{countable.title}
);\n\n if ( keys.length ) {\n\n keys.sort();\n\n ret.push(\n\n
\n\n {\n\n keys.map( key => {\n\n return (\n\n
\n\n
{key}
\n
{counts[ key ]}
\n\n
\n\n );\n\n } )\n\n }\n\n
\n\n )\n\n } else {\n\n ret.push(

{_( 'Keine Einträge' )}

);\n\n }\n\n } );\n\n return ret;\n\n }\n\n renderInfo() {\n\n if ( this.props.activeGame.permission === 'referee' ) {\n\n if ( this.props.rosterStatus === READY_TO_PLAY ) {\n\n return (\n\n \n

{_( 'Ready to Play' )}

\n

{_( 'Der Facecheck ist abgeschlossen. Das Spiel ist Ready to Play.' )}

\n
\n\n );\n\n }\n\n if ( this.props.rosterStatus === ROSTERS_LOCKED ) {\n\n return (\n\n \n

{_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen gesperrt' : 'Roster gesperrt' )}

\n

{_( 'Die Teams können keine Spieler mehr hinzufügen oder bearbeiten. Der Facecheck kann durchgeführt werden.' )}

\n\n {\n\n ! this.props.facecheck ?\n\n <>\n

{_( 'Facecheck übernehmen, um zu beginnen.' )}

\n

{_( 'Facecheck übernehmen' )}

\n \n\n : this.props.facecheck === FACECHECK_ALLOWED ?\n\n

{_( 'Facechecking...' )}

\n\n :\n\n <>\n

{_( 'Facecheck wird durchgeführt von:' )} {this.props.facecheck}

\n

{_( 'Facecheck übernehmen' )}

\n \n\n }\n\n
\n\n );\n\n }\n\n if ( this.props.rosterStatus === ROSTERS_UNLOCKED ) {\n\n return (\n\n \n

{_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen offen' : 'Roster offen' )}

\n

{_( wording( this.props.context, 'lineup' ) ? 'Teams können Spieler hinzufügen und bearbeiten. Aufstellungen sperren, um mit dem Facecheck zu beginnen.' : 'Teams können Spieler hinzufügen und bearbeiten. Roster sperren, um mit dem Facecheck zu beginnen.' )}

\n
\n\n );\n\n }\n\n return (\n\n \n

{_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen in Vorbereitung' : 'Roster in Vorbereitung' )}

\n

{_( wording( this.props.context, 'lineup' ) ? 'Teams können noch keine Spieler hinzufügen oder bearbeiten. Aufstellungen öffnen, um den Teams die Bearbeitung zu ermöglichen.' : 'Teams können noch keine Spieler hinzufügen oder bearbeiten. Roster öffnen, um den Teams die Bearbeitung zu ermöglichen.' )}

\n
\n\n );\n\n }\n\n if ( ! this.props.rosterStatus ) {\n\n return (\n\n \n

{_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen in Vorbereitung' : 'Roster in Vorbereitung' )}

\n

{_( wording( this.props.context, 'lineup' ) ? 'Die Aufstellung muss erst vom Referee geöffnet werden. Es können noch keine Spieler hinzugefügt oder bearbeitet werden.' : 'Der Roster muss erst vom Referee geöffnet werden. Es können noch keine Spieler hinzugefügt oder bearbeitet werden.' )}

\n
\n\n );\n\n }\n\n if ( this.props.rosterStatus === ROSTERS_UNLOCKED ) {\n\n return '';\n\n }\n\n return (\n\n \n

{_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen gesperrt' : 'Roster gesperrt' )}

\n

{_( wording( this.props.context, 'lineup' ) ? 'Die Aufstellung wurde vom Referee gesperrt. Es können keine Spieler mehr hinzugefügt oder bearbeitet werden.' : 'Der Roster wurde vom Referee gesperrt. Es können keine Spieler mehr hinzugefügt oder bearbeitet werden.' )}

\n
\n\n );\n\n }\n\n renderLimit( limit, key ) {\n\n let position = null;\n let current = null;\n\n if ( limit.position === POSITION_ALL_PLAYERS ) {\n\n position = [ null, _( 'Spieler Gesamt' ) ];\n current = this.props.roster ? this.props.roster.length : 0;\n\n } else if ( limit.position === POSITION_ALL_TEAM_OFFICIALS ) {\n\n position = [ null, _( 'Team-Offizielle Gesamt' ) ];\n current = this.props.teamOfficials ? this.props.teamOfficials.length : 0;\n\n } else {\n\n position = this.#playerPositions.find( e => e[ 0 ] === limit.position )\n\n if ( position ) {\n\n current = this.props.roster ? this.props.roster.filter( e => e.lineupData && e.lineupData.position === limit.position ).length : 0;\n\n } else {\n\n position = this.#teamOfficialPositions.find( e => e[ 0 ] === limit.position )\n\n if ( position ) {\n\n current = this.props.teamOfficials ? this.props.teamOfficials.filter( e => e.lineupData && e.lineupData.job === limit.position ).length : 0;\n\n }\n\n }\n\n }\n\n return (\n\n \n\n
{position && position[1]}
\n
{current > limit.limit && } { current !== null && {current} / }{limit.limit}
\n\n
\n\n )\n\n }\n\n renderLimits() {\n\n if ( ! this.props.rosterLimits || ! this.props.rosterLimits.length ) {\n\n return;\n\n }\n\n return (\n\n \n\n
{_( 'Limits' )}
\n\n
\n\n {this.props.rosterLimits.map( ( e, i ) => this.renderLimit( e, i ) )}\n\n
\n\n
\n\n )\n\n }\n\n setPositionMeta( meta ) {\n\n let position = this.state.activePlayer.lineupData.position || '';\n const metas = [ '#DNP', '#ABSENT' ];\n const exists = position.indexOf( meta ) !== -1;\n\n metas.forEach( m => { position = position.replace( m, '' ); } );\n\n if ( ! exists ) {\n\n position += meta;\n\n }\n\n this.props.onEditRosterPlayer( this.props.context, this.props.token, this.props.activeGame.id, this.props.team, this.props.teamId, { ...this.state.activePlayer, lineupData: { ...this.state.activePlayer.lineupData, position } } );\n\n this.setState( {\n\n activePlayer: null,\n playerActionsOpen: false\n\n } );\n\n\n }\n\n render() {\n\n // console.log( 'components.Pages.RosterPlayers.render()', this.props, this.state );\n\n const positions = this.state.activePlayer ? ( this.state.activePlayer.isTeamOfficial ? this.#teamOfficialPositions : this.#playerPositions ) : [];\n let sum = [];\n\n this.props.roster && sum.push( this.props.roster.length + ' ' + ( this.props.roster.length === 1 ? _( 'Spieler', 'singular' ) : _( 'Spieler', 'plural' ) ) );\n supports( this.props.context, 'teamOfficials' ) && this.props.teamOfficials && sum.push( this.props.teamOfficials.length + ' ' + ( this.props.teamOfficials.length === 1 ? _( 'Team-Offizieller' ) : _( 'Team-Offizielle' ) ) );\n\n return (\n\n <>\n\n \n\n \n\n

{wording( this.props.context, 'lineup' ) ? _( 'Aufstellung' ) : _( 'Roster', 'singular' )}

\n\n {this.renderInfo()}\n\n {this.renderLimits()}\n\n {this.props.roster && this.props.roster.length && this.props.countables && this.props.countables.length ? {this.renderCountables()} : ''}\n\n {supports( this.props.context, 'teamOfficials' ) &&

{_( 'Spieler', 'plural' )}

}\n\n {\n\n this.props.roster && this.props.roster.length ?\n\n this.props.activeGame.permission === 'referee' && ! this.props.disabled && ! isAbsent( player ) ? this.handlePlayerActivate : null}\n onPlayerClick={! this.props.disabled ? this.handlePlayerClick : null}\n onPlayerJerseyNrClick={! this.props.disabled && this.props.rosterStatus === ROSTERS_LOCKED ? this.handleJerseyNrClick : null}\n playerIsActive={player => player.isConfirmed}\n players={this.props.roster}\n playersDisabled={this.props.disabled}\n playersActivatable={player => this.props.playersActivatable && ! isAbsent( player )}\n textActivatePlayer={_( 'Spieler confirmen' )}\n textPlayerIsActive={[ , , {_( 'Spieler ist confirmed' )} ]}\n type=\"Players\"\n />\n\n : ! expired( this.props.lastUpdate ) && (\n\n this.props.activeGame.permission === 'referee' ?\n\n
\n

{_( 'Dieses Team hat noch keine Spieler hinzugefügt.' )}

\n {_( 'Aktualisieren' )}\n
\n\n :\n\n
\n

{_( wording( this.props.context, 'lineup' ) ? 'Aufstellung ist leer.' : 'Roster ist leer.' )}

\n {this.props.rosterStatus === ROSTERS_UNLOCKED && this.props.activeGame.permission === this.props.team &&

{_( 'Füge Spieler mit + hinzu.' )}

}\n {_( 'Aktualisieren' )}\n
\n\n )\n\n }\n\n {supports( this.props.context, 'teamOfficials' ) && (\n\n <>\n\n
\n

{_( 'Team-Offizielle' )}

\n\n {\n\n this.props.teamOfficials && this.props.teamOfficials.length ?\n\n this.props.activeGame.permission === 'referee' && ! this.props.disabled ? this.handlePlayerActivate : null}\n onPlayerClick={! this.props.disabled ? this.handlePlayerClick : null}\n playerIsActive={teamOfficial => teamOfficial.isConfirmed}\n players={this.props.teamOfficials}\n playersDisabled={this.props.disabled}\n playersActivatable={teamOfficial => this.props.teamOfficialsActivatable}\n textActivatePlayer={_( 'Team-Offiziellen confirmen' )}\n textPlayerIsActive={[ , , {_( 'Team-Offizieller ist confirmed' )} ]}\n type=\"TeamOfficials\"\n />\n\n : ! expired( this.props.lastUpdate ) && (\n\n this.props.activeGame.permission === 'referee' ?\n\n
\n

{_( 'Dieses Team hat noch keine Team-Offiziellen hinzugefügt.' )}

\n {_( 'Aktualisieren' )}\n
\n\n :\n\n
\n

{_( 'Liste ist leer.' )}

\n {this.props.rosterStatus === ROSTERS_UNLOCKED && this.props.activeGame.permission === this.props.team &&

{_( 'Füge Team-Offizielle mit + hinzu.' )}

}\n {_( 'Aktualisieren' )}\n
\n\n )\n\n }\n\n \n\n )}\n\n
\n
{sum.length ? _( 'Gesamt' ) + ': ' + sum.join( ', ' ) : ''}
\n\n
\n\n \n {_( 'Aufstellung bearbeiten' )}\n {_( 'Trikotnummer bearbeiten' )}\n {supports( this.props.context, 'DNP' ) && {this.state.activePlayer && this.state.activePlayer.position && this.state.activePlayer.position.indexOf( '#DNP' ) !== -1 && } {_( 'Present, not Playing (PNP)' )}}\n {this.props.activeGame.permission === 'referee' && {isAbsent( this.state.activePlayer ) && } {_( 'Abwesend' )}}\n {this.props.activeGame.permission !== 'referee' && {_( 'Spieler entfernen' )}}\n {_( 'Abbrechen' )}\n \n\n \n {_( 'Funktion bearbeiten' )}\n {this.props.activeGame.permission !== 'referee' && {_( 'Team-Offiziellen entfernen' )}}\n {_( 'Abbrechen' )}\n \n\n {this.state.jerseyNrEditorOpen && }\n\n {this.state.lineupDataEditorOpen &&\n\n \n\n
\n\n

{_( this.state.activePlayer.isTeamOfficial ? 'Funktion' : 'Position' )}

\n\n \n\n this.handlePositionSelect( position[ 0 ] )}>\n
{position[ 0 ]}
\n
{position[ 1 ]}
\n
{this.state.lineupDataEditorValuePosition === position[ 0 ] && }
\n
\n\n }\n />\n\n {supports( this.props.context, 'lineup' ) && ! this.props.simpleLineup && ! this.state.activePlayer.isTeamOfficial &&\n\n
\n\n

{_( 'Linie' )}

\n\n \n\n -\n 1\n 2\n 3\n 4\n\n \n\n
\n\n }\n\n {supports( this.props.context, 'captain' ) && ! this.state.activePlayer.isTeamOfficial &&\n\n
\n\n

{_( 'Kapitän' )}

\n\n ! this.state.lineupDataEditorValueCaptain || e === this.state.lineupDataEditorValueCaptain )} onPostChange={this.handleCaptainSelect}>\n\n {this.#captainOptions.map( e => {e ? e : '-'} )}\n\n \n\n
\n\n }\n\n {supports( this.props.context, 'startingPlayer' ) && ! this.props.simpleLineup && ! this.state.activePlayer.isTeamOfficial &&\n\n
\n\n \n\n
\n\n }\n\n
\n\n {_( 'OK' )}\n\n {_( 'Abbrechen' )}\n\n
\n\n
\n\n
\n\n }\n\n \n\n );\n\n }\n\n}\n\nexport default RosterPlayers;","import { connect } from 'react-redux';\nimport { confirmRosterPlayer } from '../../store/actions/localChanges';\nimport { editRosterPlayer, removeRosterPlayer, takeFaceCheck } from '../../store/actions/rosters';\nimport { isLoading } from '../../store/actions/app';\nimport { getRosters } from '../../util/reducer-helpers';\nimport { supports } from '../../util/context';\nimport { FACECHECK_ALLOWED, ROSTERS_LOCKED, ROSTERS_UNLOCKED } from '../../store/constants/statusCodes';\nimport RosterPlayers from '../../components/Pages/RosterPlayers';\n\nconst mapStateToProps = ( state, props ) => {\n\n // console.log( 'containers.Pages.RosterPlayers.mapStateToProps', state, props );\n\n const activeGame = state.items.games.activeItem;\n const rosters = getRosters( state );\n let countables = null;\n let rosterLimits = null;\n let facecheck = null;\n let rosterStatus = null;\n let simpleLineup = false;\n\n if ( rosters.rosters && rosters.rosters.items ) {\n\n countables = rosters.rosters.items.countables ? rosters.rosters.items.countables : null;\n rosterLimits = rosters.rosters.items.rosterLimits ? rosters.rosters.items.rosterLimits : null;\n facecheck = props.team === 'home' ? rosters.rosters.items.facecheckHome : rosters.rosters.items.facecheckAway;\n rosterStatus = rosters.rosters.items.rosterStatus;\n simpleLineup = rosters.rosters.items.simpleLineup;\n\n }\n\n const cProps = {\n\n context: state.auth.context,\n disabled: activeGame.permission === 'referee' ? rosterStatus !== ROSTERS_LOCKED || facecheck !== FACECHECK_ALLOWED : rosterStatus !== ROSTERS_UNLOCKED || props.team !== activeGame.permission,\n lastUpdate: rosters.rosters && rosters.rosters.lastUpdate ? new Date( rosters.rosters.lastUpdate ) : null,\n roster: props.team === 'home' ? rosters.mergedHomeRoster : rosters.mergedAwayRoster,\n teamId: props.team === 'home' ? activeGame.homeTeam.id : activeGame.awayTeam.id,\n token: state.auth.token,\n\n activeGame, countables, rosterLimits, facecheck, rosterStatus, simpleLineup\n\n };\n\n if ( supports( state.auth.context, 'teamOfficials' ) ) {\n\n cProps.teamOfficials = props.team === 'home' ? rosters.mergedHomeTeamOfficials : rosters.mergedAwayTeamOfficials;\n\n }\n\n return cProps;\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onConfirmRosterPlayer: ( gameId, playerId, isConfirmed ) => dispatch( confirmRosterPlayer( gameId, playerId, isConfirmed ) ),\n onEditRosterPlayer: ( context, token, gameId, team, teamId, player ) => dispatch( isLoading( true ) ) && dispatch( editRosterPlayer( context, token, gameId, team, teamId, player ) ),\n onRemoveRosterPlayer: ( context, token, gameId, team, playerId, isTeamOfficial ) => dispatch( isLoading( true ) ) && dispatch( removeRosterPlayer( context, token, gameId, team, playerId, isTeamOfficial ) ),\n onTakeFaceCheck: ( context, token, gameId, team, teamId ) => dispatch( isLoading( true ) ) && dispatch( takeFaceCheck( context, token, gameId, team, teamId ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( RosterPlayers );","import { ADD_PLAYERS_TO_ROSTER, CONFIRM_ROSTER_PLAYERS, EDIT_ROSTER_PLAYER, EDIT_ROSTER_PLAYERS, PUBLISH_ROSTER, REMOVE_ROSTER_PLAYER, ROSTERS_REQUESTED, SET_ROSTER_STATUS, TAKE_FACE_CHECK } from '../constants/actionTypes';\n\nexport const addPlayersToRoster = ( context, token, gameId, team, teamId, players, teamOfficials ) => {\n\n return {\n type: ADD_PLAYERS_TO_ROSTER,\n payload: { context, token, gameId, team, teamId, players, teamOfficials }\n };\n\n};\n\nexport const confirmRosterPlayers = ( context, token, gameId, players ) => {\n\n return {\n type: CONFIRM_ROSTER_PLAYERS,\n payload: { context, token, gameId, players }\n };\n\n};\n\nexport const editRosterPlayer = ( context, token, gameId, team, teamId, player ) => {\n\n return {\n type: EDIT_ROSTER_PLAYER,\n payload: { context, token, gameId, team, teamId, player }\n };\n\n};\n\nexport const editRosterPlayers = ( context, token, gameId, team, teamId, players ) => {\n\n return {\n type: EDIT_ROSTER_PLAYERS,\n payload: { context, token, gameId, team, teamId, players }\n };\n\n};\n\nexport const loadRosters = ( context, token, gameId ) => {\n\n return {\n type: ROSTERS_REQUESTED,\n payload: { context, token, gameId }\n };\n\n};\n\nexport const publishRoster = ( context, token, gameId, team, teamId, publish ) => {\n\n return {\n type: PUBLISH_ROSTER,\n payload: { context, token, gameId, team, teamId, publish }\n };\n\n};\n\nexport const removeRosterPlayer = ( context, token, gameId, team, playerId, isTeamOfficial ) => {\n\n return {\n type: REMOVE_ROSTER_PLAYER,\n payload: { context, token, gameId, team, playerId, isTeamOfficial }\n };\n\n};\n\nexport const setRosterStatus = ( context, token, gameId, command ) => {\n\n return {\n type: SET_ROSTER_STATUS,\n payload: { context, token, gameId, command }\n };\n\n};\n\nexport const takeFaceCheck = ( context, token, gameId, team, teamId ) => {\n\n return {\n type: TAKE_FACE_CHECK,\n payload: { context, token, gameId, team, teamId }\n };\n\n};","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport PullHook from '../PullHook';\nimport Toolbar from '../Toolbar';\nimport PlayerList from '../../containers/PlayerList';\nimport { expired } from '../../util';\nimport { translate as _ } from '../../util/i18n';\nimport { supports, wording } from '../../util/context';\nimport { POSITION_GOALKEEPER, SUSPENSION_SETTING_DENY } from '../../store/constants/misc';\n\nclass Eligibles extends React.Component {\n\n #goalkeeperLines;\n #pullHookCallback;\n #pullHookTimeout;\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n pullHook: 'initial',\n selectedLine: null,\n selectedList: 0,\n selectedListType: 'Players',\n selectedPlayer: null,\n selectedPlayers: [],\n selectedTeamOfficials: []\n };\n\n this.handleLineSelect = this.handleLineSelect.bind( this );\n this.handleLineSelectSubmit = this.handleLineSelectSubmit.bind( this );\n this.handleListChange = this.handleListChange.bind( this );\n this.handleLoadEligiblesClick = this.handleLoadEligiblesClick.bind( this );\n this.handleEligibleClick = this.handleEligibleClick.bind( this );\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n this.handleSubmit = this.handleSubmit.bind( this );\n\n this.#goalkeeperLines = [\n\n { line: 1, label: _( 'Start (Linie 1)' ) },\n { line: 2, label: _( 'Backup (Linie 2)' ) },\n { line: 3, label: _( 'Emergency (Linie 3)' ) },\n\n ];\n }\n\n componentDidMount() {\n\n expired( this.props.eligiblePlayers.lastUpdate ) && this.loadEligibles();\n\n }\n\n componentDidUpdate() {\n\n if ( this.#pullHookCallback ) {\n\n clearTimeout( this.#pullHookTimeout );\n\n const pullHookCallback = this.#pullHookCallback;\n this.#pullHookTimeout = setTimeout( () => pullHookCallback(), 1000 );\n this.#pullHookCallback = null;\n\n }\n\n }\n\n handleLineSelect( selectedLine ) {\n\n this.setState( { selectedLine } )\n\n }\n\n handleLineSelectSubmit() {\n\n const selectedEligibles = [ ...this.state[ 'selected' + this.state.selectedListType ] ];\n const index = selectedEligibles.findIndex( e => e.id === this.state.selectedPlayer.id );\n const indexAlreadySelected = selectedEligibles.findIndex( e => e.position === POSITION_GOALKEEPER && e.selectedLine === this.state.selectedLine );\n\n if ( index !== -1 ) {\n\n selectedEligibles[ index ] = { ...selectedEligibles[ index ], selectedLine: this.state.selectedLine };\n\n }\n\n if ( indexAlreadySelected !== -1 ) {\n\n selectedEligibles.splice( indexAlreadySelected, 1 );\n\n }\n\n this.setState( { selectedPlayer: null, selectedLine: null, [ 'selected' + this.state.selectedListType ]: selectedEligibles } );\n\n }\n\n handleListChange( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // const selectedList = Number( e.index );\n const selectedList = Number( e.target.querySelector( 'input:checked' ).value );\n const selectedListType = selectedList < 2 ? 'Players' : 'TeamOfficials';\n\n this.setState( { selectedList, selectedListType } );\n\n }\n\n handleLoadEligiblesClick() {\n\n this.loadEligibles();\n\n }\n\n handleEligibleClick( eligible ) {\n\n if ( this.props.suspensionSetting === SUSPENSION_SETTING_DENY && eligible.isSuspended ) {\n\n return\n\n }\n\n const selectedEligibles = [ ...this.state[ 'selected' + this.state.selectedListType ] ];\n const index = selectedEligibles.findIndex( e => e.id === eligible.id );\n const state = {};\n\n if ( index === -1 ) {\n\n selectedEligibles.push( eligible );\n\n if ( eligible.position === POSITION_GOALKEEPER && this.props.simpleLineup ) {\n\n state.selectedLine = null;\n state.selectedPlayer = eligible;\n\n }\n\n } else {\n\n selectedEligibles.splice( index, 1 );\n\n }\n\n state[ 'selected' + this.state.selectedListType ] = selectedEligibles;\n\n this.setState( state );\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.#pullHookCallback = e;\n\n this.loadEligibles();\n\n }\n\n handleSubmit() {\n\n this.props.onSubmit( this.state.selectedPlayers, this.state.selectedTeamOfficials );\n\n }\n\n loadEligibles() {\n\n this.props.onLoadEligiblePlayers( this.props.context, this.props.token, this.props.activeGame.id, this.props.teamId );\n\n supports( this.props.context, 'extendedRoster' ) && this.props.onLoadExtendedEligiblePlayers( this.props.context, this.props.token, this.props.activeGame.id, this.props.teamId );\n\n supports( this.props.context, 'teamOfficials' ) && this.props.onLoadEligibleTeamOfficials( this.props.context, this.props.token, this.props.activeGame.id, this.props.teamId );\n\n supports( this.props.context, 'extendedRoster' ) && supports( this.props.context, 'teamOfficials' ) && this.props.onLoadExtendedEligibleTeamOfficials( this.props.context, this.props.token, this.props.activeGame.id, this.props.teamId );\n\n }\n\n render() {\n\n // console.log( 'components.Pages.Eligibles.render()', this.props, this.state );\n\n const eligiblesLists = [ this.props.eligiblePlayers, this.props.extendedEligiblePlayers, this.props.eligibleTeamOfficials, this.props.extendedEligibleTeamOfficials ];\n const eligibles = eligiblesLists[ this.state.selectedList ];\n const selectedCount = this.state.selectedPlayers.length + this.state.selectedTeamOfficials.length;\n let allGoalkeeperLinesInRoster = true;\n\n if ( this.props.simpleLineup ) {\n\n this.#goalkeeperLines = this.#goalkeeperLines.map( gkLine => {\n\n const alreadyInRoster = this.props.roster.find( player => player.lineupData.position === POSITION_GOALKEEPER && player.lineupData.line === gkLine.line );\n\n if ( ! alreadyInRoster ) {\n\n allGoalkeeperLinesInRoster = false;\n\n }\n\n return {\n\n ...gkLine, alreadyInRoster,\n\n alreadySelected: this.state.selectedPlayers.find( selectedPlayer => selectedPlayer.position === POSITION_GOALKEEPER && selectedPlayer.selectedLine === gkLine.line ),\n\n }\n\n } )\n\n }\n\n return (\n\n <>\n\n {_( 'Hinzufügen' )} ({selectedCount})} />}>\n\n \n\n {this.props.loading && this.state.pullHook !== 'action' && }\n\n

{wording( this.props.context, 'lineup' ) ? _( 'Roster', 'singular' ) : _ ('Verfügbare Spieler' )}

\n\n \n\n

\n\n \n\n  \n\n {_(\n\n wording( this.props.context, 'lineup' ) ?\n\n ( supports( this.props.context, 'teamOfficials' ) ? 'Wähle Spieler und Team-Offizielle aus und füge sie zur Aufstellung hinzu.' : 'Wähle Spieler aus und füge sie zur Aufstellung hinzu.' )\n\n :\n\n ( supports( this.props.context, 'teamOfficials' ) ? 'Wähle Spieler und Team-Offizielle aus und füge sie zum Roster hinzu.' : 'Wähle Spieler aus und füge sie zum Roster hinzu.' )\n\n )}\n\n  \n\n {_( 'Anschließend kannst deren Daten ändern.' )}\n\n

\n\n
\n\n {( supports( this.props.context, 'extendedRoster' ) || supports( this.props.context, 'teamOfficials' ) ) &&\n\n
\n\n \n\n {_( 'Roster', 'singular' )}\n\n {supports( this.props.context, 'extendedRoster' ) && {_( 'Erw. Roster' )}}\n\n {supports( this.props.context, 'teamOfficials' ) && {_( 'Offizielle' )}}\n\n {supports( this.props.context, 'extendedRoster' ) && supports( this.props.context, 'teamOfficials' ) && {_( 'Erw. Offizielle' )}}\n\n \n\n
\n\n }\n\n {\n eligibles.items.length ?\n\n this.state[ 'selected' + this.state.selectedListType ].find( selectedEligible => selectedEligible.id === eligible.id )}\n onPlayerActivate={() => this.handleEligibleClick}\n onPlayerClick={this.handleEligibleClick}\n playersActivatable={eligible => this.props.suspensionSetting !== SUSPENSION_SETTING_DENY || ! eligible.isSuspended}\n players={eligibles.items}\n textActivatePlayer={_( this.state.selectedListType === 'TeamOfficials' ? 'Team-Offiziellen auswählen' : 'Spieler auswählen' )}\n textPlayerIsActive={[ , , {_( this.state.selectedListType === 'TeamOfficials' ? 'Team-Offizieller ist ausgewählt' : 'Spieler ist ausgewählt' )} ]}\n type={this.state.selectedListType}\n />\n\n : ! expired( eligibles.lastUpdate ) &&\n\n
\n

{_( this.state.selectedListType === 'TeamOfficials' ? 'Es stehen keine weiteren Team-Offiziellen zur Verfügung.' : 'Es stehen keine weiteren Spieler zur Verfügung.' )}

\n {_( 'Aktualisieren' )}\n
\n }\n\n
\n\n {this.state.selectedPlayer !== null &&\n\n \n\n
\n\n

{_( 'Linie wählen' )}

\n\n \n\n this.handleLineSelect( e.line )}>\n\n
\n\n {this.state.selectedLine === e.line && }\n\n
\n\n
\n\n
{e.label}
\n\n {e.alreadySelected &&
{_( 'Bereits gewählt' )}: {e.alreadySelected.lastname} {e.alreadySelected.firstname} {e.alreadySelected.middlename} #{e.alreadySelected.jerseyNr}
}\n\n {e.alreadyInRoster &&
{_( 'Bereits aufgestellt' )}: {e.alreadyInRoster.lastname} {e.alreadyInRoster.firstname} {e.alreadyInRoster.middlename} #{e.alreadyInRoster.jerseyNr}
}\n\n
\n\n
\n }\n />\n\n
\n\n {_( 'OK' )}\n\n
\n\n
\n\n
\n\n }\n\n \n\n );\n\n }\n\n}\n\nexport default Eligibles;","import { connect } from 'react-redux';\nimport { loadEligiblePlayers, loadEligibleTeamOfficials, loadExtendedEligiblePlayers, loadExtendedEligibleTeamOfficials } from '../../store/actions/eligibles';\nimport { changePage, isLoading } from '../../store/actions/app';\nimport { getRosters } from '../../util/reducer-helpers';\nimport { supports } from '../../util/context';\nimport Eligibles from '../../components/Pages/Eligibles';\n\nconst mapStateToProps = ( state, props ) => {\n\n // console.log( 'containers.Pages.Eligibles.mapStateToProps', state, props );\n\n const rosters = getRosters( state );\n const getEligibles = ( key, rosterKey ) => {\n\n let filteredEligibles = [];\n let eligibles = state.items[ key ] && ( props.teamId in state.items[ key ] ) ? state.items[ key ][ props.teamId ] : null;\n let lastUpdate = null;\n\n if ( eligibles ) {\n\n lastUpdate = eligibles.lastUpdate;\n\n if ( eligibles.items && eligibles.items.length ) {\n\n let roster = null;\n\n if ( state.items.games.activeItem.homeTeam.id === props.teamId ) {\n\n roster = rosters[ 'mergedHome' + rosterKey ];\n\n } else if ( state.items.games.activeItem.awayTeam.id === props.teamId ) {\n\n roster = rosters[ 'mergedAway' + rosterKey ];\n\n }\n\n filteredEligibles = eligibles.items.filter( eligible => { const found = roster ? roster.find( e => e.id === eligible.id ) : null; return ( found ? false : true ); } );\n\n }\n\n }\n\n return { lastUpdate, items: filteredEligibles };\n\n };\n\n const cProps = {\n\n activeGame: state.items.games.activeItem,\n context: state.auth.context,\n eligiblePlayers: getEligibles( 'eligiblePlayers', 'Roster' ),\n loading: state.app.loading,\n suspensionSetting: rosters.rosters && rosters.rosters.items && rosters.rosters.items.suspensionSetting,\n token: state.auth.token\n\n };\n\n if ( supports( state.auth.context, 'extendedRoster' ) ) { cProps.extendedEligiblePlayers = getEligibles( 'extendedEligiblePlayers', 'Roster' ); }\n if ( supports( state.auth.context, 'teamOfficials' ) ) { cProps.eligibleTeamOfficials = getEligibles( 'eligibleTeamOfficials', 'TeamOfficials' ); }\n if ( supports( state.auth.context, 'extendedRoster' ) && supports( state.auth.context, 'teamOfficials' ) ) { cProps.extendedEligibleTeamOfficials = getEligibles( 'extendedEligibleTeamOfficials', 'TeamOfficials' ); }\n\n return cProps;\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onChangePage: route => dispatch( changePage( route ) ),\n onLoadEligiblePlayers: ( context, token, gameId, teamId ) => dispatch( isLoading( true ) ) && dispatch( loadEligiblePlayers( context, token, gameId, teamId ) ),\n onLoadEligibleTeamOfficials: ( context, token, gameId, teamId ) => dispatch( isLoading( true ) ) && dispatch( loadEligibleTeamOfficials( context, token, gameId, teamId ) ),\n onLoadExtendedEligiblePlayers: ( context, token, gameId, teamId ) => dispatch( isLoading( true ) ) && dispatch( loadExtendedEligiblePlayers( context, token, gameId, teamId ) ),\n onLoadExtendedEligibleTeamOfficials: ( context, token, gameId, teamId ) => dispatch( isLoading( true ) ) && dispatch( loadExtendedEligibleTeamOfficials( context, token, gameId, teamId ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Eligibles );","import { ELIGIBLE_PLAYERS_REQUESTED, ELIGIBLE_TEAM_OFFICIALS_REQUESTED, EXTENDED_ELIGIBLE_PLAYERS_REQUESTED, EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED } from '../constants/actionTypes';\n\nexport const loadEligiblePlayers = ( context, token, gameId, teamId ) => {\n\n return {\n type: ELIGIBLE_PLAYERS_REQUESTED,\n payload: { context, token, gameId, teamId }\n };\n\n};\n\nexport const loadEligibleTeamOfficials = ( context, token, gameId, teamId ) => {\n\n return {\n type: ELIGIBLE_TEAM_OFFICIALS_REQUESTED,\n payload: { context, token, gameId, teamId }\n };\n\n};\n\nexport const loadExtendedEligiblePlayers = ( context, token, gameId, teamId ) => {\n\n return {\n type: EXTENDED_ELIGIBLE_PLAYERS_REQUESTED,\n payload: { context, token, gameId, teamId }\n };\n\n};\n\nexport const loadExtendedEligibleTeamOfficials = ( context, token, gameId, teamId ) => {\n\n return {\n type: EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED,\n payload: { context, token, gameId, teamId }\n };\n\n};","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Toolbar from '../Toolbar';\nimport { translate as _ } from '../../util/i18n';\nimport { POSITION_CENTER, POSITION_GOALKEEPER, POSITION_LEFT_DEFENDER, POSITION_LEFT_FORWARD, POSITION_RIGHT_DEFENDER, POSITION_RIGHT_FORWARD } from '../../store/constants/misc';\nimport PlayerList from '../../containers/PlayerList';\nimport { deepCopy } from '../../util';\nimport Modal from '../Modal';\nimport NumericInput from '@hockeydata/numeric-input';\n\nclass LineupEditor extends React.Component {\n\n #modes\n\n constructor( props ) {\n\n // console.log( 'components.Pages.LineupEditor.constructor()', props );\n\n super( props );\n\n this.state = {\n jerseyNrEditorPlayer: null,\n mode: 0,\n roster: this.props.roster ? deepCopy( this.props.roster ) : [],\n selectedLine: null,\n selectedPosition: null\n };\n\n this.handleClearPositionClick = this.handleClearPositionClick.bind( this );\n this.handleDeselectPositionClick = this.handleDeselectPositionClick.bind( this );\n this.handleJerseyNrEditorCancel = this.handleJerseyNrEditorCancel.bind( this );\n this.handleJerseyNrEditorClose = this.handleJerseyNrEditorClose.bind( this );\n this.handleModeSelect = this.handleModeSelect.bind( this );\n this.handlePlayerClick = this.handlePlayerClick.bind( this );\n this.handlePositionClick = this.handlePositionClick.bind( this );\n this.handleSubmit = this.handleSubmit.bind( this );\n\n this.#modes = [ _( 'Setzen' ), <>{ _( 'Start' ) } , 'C', 'A', '-', '#' ];\n\n }\n\n componentDidUpdate() {\n\n if ( this.props.roster && this.props.roster.length !== this.state.roster.length ) {\n\n this.setState( { roster: this.props.roster } )\n\n }\n\n }\n\n getPlayer( line, position ) {\n\n const player = this.state.roster.find( e => e.lineupData.line === line && e.lineupData.position === position );\n\n return player ? deepCopy( player ) : null;\n\n }\n\n handleClearPositionClick() {\n\n if ( this.state.mode === 0 && this.state.selectedLine && this.state.selectedPosition ) {\n\n const player = this.getPlayer( this.state.selectedLine, this.state.selectedPosition );\n\n if ( ! player ) {\n\n return;\n\n }\n\n player.lineupData.line = null;\n\n this.updatePlayers( [ player ], () => this.setState( { selectedLine: null, selectedPosition: null } ) );\n\n }\n\n }\n\n handleDeselectPositionClick() {\n\n this.setState( { selectedLine: null, selectedPosition: null } )\n\n }\n\n handleJerseyNrEditorClose( e ) {\n\n const player = deepCopy( this.state.jerseyNrEditorPlayer );\n\n player.lineupData.jerseyNr = Number( e );\n\n this.updatePlayers( [ player ], () => this.setState( { jerseyNrEditorPlayer: null } ) );\n\n }\n\n handleJerseyNrEditorCancel() {\n\n this.setState( { jerseyNrEditorPlayer: null } );\n\n }\n\n handleModeSelect( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // this.setState( { mode: Number( e.index ) } );\n this.setState( { mode: Number( e.target.querySelector( 'input:checked' ).value ) } );\n\n }\n\n handlePlayerClick( player ) {\n\n if ( this.state.mode === 0 && this.state.selectedLine && this.state.selectedPosition ) {\n\n const players = [];\n let oldPlayer = this.state.roster.find( e => e.lineupData.line === this.state.selectedLine && e.lineupData.position === this.state.selectedPosition );\n\n if ( oldPlayer ) {\n\n oldPlayer = deepCopy( oldPlayer );\n oldPlayer.lineupData.line = null;\n oldPlayer.lineupData.captain = null;\n oldPlayer.lineupData.starting = null;\n\n players.push( oldPlayer );\n\n }\n\n player.lineupData.line = this.state.selectedLine;\n player.lineupData.position = this.state.selectedPosition;\n\n players.push( player );\n this.updatePlayers( players, () => this.setState( { selectedLine: null, selectedPosition: null } ) );\n\n }\n\n }\n\n handlePositionClick( line, position ) {\n\n switch( this.state.mode ) {\n\n case 1: return this.toggleStartingPlayer( line, position );\n case 2: return this.setCaptain( line, position );\n case 3: return this.setAssistantCaptain( line, position );\n case 4: return this.unsetCaptain( line, position );\n case 5: return this.setJerseyNr( line, position );\n default: return this.selectPosition( line, position );\n\n }\n\n }\n\n handleSubmit() {\n\n this.props.onSubmit( this.state.roster )\n\n }\n\n selectPosition( selectedLine, selectedPosition ) {\n\n this.setState( { selectedLine, selectedPosition } )\n\n }\n\n setAssistantCaptain( line, position ) {\n\n const player = this.getPlayer( line, position );\n\n if ( ! player || player.lineupData.position === POSITION_GOALKEEPER ) {\n\n return;\n\n }\n\n const assistantCaptains = this.state.roster.filter( e => e.lineupData.captain === 'A' );\n\n if ( assistantCaptains.length < 2 ) {\n\n player.lineupData.captain = 'A';\n\n this.updatePlayers( [ player ] );\n\n }\n\n }\n\n setCaptain( line, position ) {\n\n const player = this.getPlayer( line, position );\n\n if ( ! player || player.lineupData.position === POSITION_GOALKEEPER ) {\n\n return;\n\n }\n\n const players = [];\n let oldCaptain = this.state.roster.find( e => e.lineupData.captain === 'C' );\n\n if ( oldCaptain ) {\n\n oldCaptain = deepCopy( oldCaptain );\n oldCaptain.lineupData.captain = null;\n\n players.push( oldCaptain );\n\n }\n\n player.lineupData.captain = 'C';\n\n players.push( player );\n this.updatePlayers( players );\n\n }\n\n setJerseyNr( line, position ) {\n\n const jerseyNrEditorPlayer = this.getPlayer( line, position );\n\n if ( ! jerseyNrEditorPlayer ) {\n\n return;\n\n }\n\n this.setState( { jerseyNrEditorPlayer } )\n\n }\n\n toggleStartingPlayer( line, position ) {\n\n const player = this.getPlayer( line, position );\n\n if ( ! player ) {\n\n return;\n\n }\n\n if ( player.lineupData.starting ) {\n\n player.lineupData.starting = null;\n\n } else {\n\n const startingPlayers = this.state.roster.filter( e => e.lineupData.starting );\n\n if ( startingPlayers.length < 6 ) {\n\n player.lineupData.starting = true;\n\n }\n\n }\n\n this.updatePlayers( [ player ] );\n\n }\n\n unsetCaptain( line, position ) {\n\n const player = this.getPlayer( line, position );\n\n if ( ! player ) {\n\n return;\n\n }\n\n player.lineupData.captain = null;\n\n this.updatePlayers( [ player ] );\n\n }\n\n updatePlayers( players, callback ) {\n\n const roster = deepCopy( this.state.roster );\n\n players.forEach( player => {\n\n const playerIndex = roster.findIndex( e => e.id === player.id );\n roster[ playerIndex ] = player;\n\n } );\n\n this.setState( { roster }, callback );\n\n }\n\n renderPosition( line, position ) {\n\n const player = this.state.roster.find( e => e.lineupData.line === line && e.lineupData.position === position )\n\n return (\n\n
this.handlePositionClick( line, position )}>\n\n { player ?\n\n
\n\n {player.lastname} {player.firstname} {player.middlename} #{player.lineupData.jerseyNr}\n\n {player.lineupData.captain &&
{player.lineupData.captain}
}\n\n {player.lineupData.starting &&
}\n\n
\n\n :\n\n
{position}
\n\n }\n\n
\n\n );\n\n }\n\n render() {\n\n // console.log( 'components.Pages.LineupEditor.render()', this.props, this.state );\n\n const duplicateJerseyNrs = [];\n const jerseyNrChecked = {};\n const playerOnSelectedPosition = this.state.selectedLine && this.state.selectedPosition && this.state.roster.find( e => e.lineupData.line === this.state.selectedLine && e.lineupData.position === this.state.selectedPosition )\n const availablePlayers = this.state.roster.filter( e => ! e.lineupData.line || ! e.lineupData.position )\n\n this.state.roster.forEach( e => {\n\n if ( e.lineupData.jerseyNr in jerseyNrChecked ) {\n\n duplicateJerseyNrs.push( e.lineupData.jerseyNr );\n\n } else {\n\n jerseyNrChecked[ e.lineupData.jerseyNr ] = true;\n\n }\n\n } );\n\n return (\n\n {_( 'Speichern' )}} />}>\n\n
\n\n

{_( 'Linien bearbeiten' )}

\n\n \n\n \n\n { duplicateJerseyNrs.length > 0 && {_( 'Achtung! Folgende Trikotnummern wurden mehrmals vergeben:' )} {duplicateJerseyNrs.map( ( e, i ) => {e}{( i + 1 ) < duplicateJerseyNrs.length && ', '} )} }\n\n \n\n {this.#modes.map( e => {e} )}\n\n \n\n {this.state.selectedLine && this.state.selectedPosition &&\n\n \n\n

{_( 'Position besetzen' )}

\n\n \n\n {_( 'Linie' )}\n {this.state.selectedLine}\n\n \n\n \n\n {_( 'Position' )}\n {this.state.selectedPosition}\n\n \n\n \n\n {_( 'Aktuell' )}\n {playerOnSelectedPosition ? <>{playerOnSelectedPosition.lastname} {playerOnSelectedPosition.firstname} {playerOnSelectedPosition.middlename} #{playerOnSelectedPosition.lineupData.jerseyNr} : _( 'nicht gesetzt' )}\n\n \n\n

\n\n {_( 'Abbrechen' )}\n\n

\n\n
\n\n }\n\n
\n\n { Array.from( { length: 4 } ).map( ( e, i ) =>\n\n
\n\n

{_( 'Linie' )} {i + 1}

\n\n
\n\n {this.renderPosition(i + 1, POSITION_LEFT_FORWARD)}\n {this.renderPosition(i + 1, POSITION_CENTER)}\n {this.renderPosition(i + 1, POSITION_RIGHT_FORWARD)}\n\n
\n\n
\n\n {this.renderPosition(i + 1, POSITION_LEFT_DEFENDER)}\n {this.renderPosition(i + 1, POSITION_RIGHT_DEFENDER)}\n\n
\n\n
\n\n {this.renderPosition(i + 1, POSITION_GOALKEEPER)}\n\n
\n\n
\n\n ) }\n\n
\n\n
\n\n \n\n

{_( 'Verfügbare Spieler' )} ({availablePlayers.length})

\n\n false}\n onPlayerClick={this.handlePlayerClick}\n playerIsActive={() => false}\n players={availablePlayers}\n playersActivatable={() => false}\n type=\"Players\"\n />\n\n

{_( 'Position nicht besetzen' )}

\n\n
\n\n
\n\n
\n\n {this.state.jerseyNrEditorPlayer !== null && }\n\n { this.props.loading &&
}\n\n
\n\n );\n\n }\n\n}\n\nexport default LineupEditor;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Toolbar from '../Toolbar';\nimport RosterPlayers from '../../containers/Pages/RosterPlayers';\nimport Eligibles from '../../containers/Pages/Eligibles';\nimport { translate as _ } from '../../util/i18n';\nimport { expired, getActionButtonPosition, getRosterPublicStatusClass, hasLocalChanges, shorten } from '../../util';\nimport { supports, wording } from '../../util/context';\nimport { showAlert } from '../../util/ui';\nimport { parseKey } from '../../util/reducer-helpers';\nimport { FACECHECK_ALLOWED, READY_TO_PLAY, ROSTERS_LOCKED, ROSTERS_UNLOCKED } from '../../store/constants/statusCodes';\nimport { POSITION_GOALKEEPER } from '../../store/constants/misc';\nimport LineupEditor from './LineupEditor';\n\nclass Rosters extends React.Component {\n\n #actionButtonClass;\n #pullHookCallback;\n #pullHookTimeout;\n #team;\n #teamId;\n\n constructor( props ) {\n\n // console.log( 'components.Pages.Rosters.constructor()', props );\n\n super( props );\n\n this.state = {\n eligiblesOpen: false,\n lineupEditorOpen: false,\n pullHook: 'initial',\n speedDialOpen: true,\n tabIndex: this.props.activeGame.permission === 'away' ? 1 : 0\n };\n\n this.handleBackClick = this.handleBackClick.bind( this );\n this.handleCancelEligibles = this.handleCancelEligibles.bind( this );\n this.handleCancelLineupEditor = this.handleCancelLineupEditor.bind( this );\n this.handleConfirmRosterPlayers = this.handleConfirmRosterPlayers.bind( this );\n this.handleLoadRosters = this.handleLoadRosters.bind( this );\n this.handleLockRosters = this.handleLockRosters.bind( this );\n this.handleOpenEligibles = this.handleOpenEligibles.bind( this );\n this.handleOpenLineupEditor = this.handleOpenLineupEditor.bind( this );\n this.handleOpenRosters = this.handleOpenRosters.bind( this );\n this.handlePublishRoster = this.handlePublishRoster.bind( this );\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n this.handleReadyToPlay = this.handleReadyToPlay.bind( this );\n this.handleSubmitEligibles = this.handleSubmitEligibles.bind( this );\n this.handleSubmitLineup = this.handleSubmitLineup.bind( this );\n this.handleTabChange = this.handleTabChange.bind( this );\n this.handleUnlockRosters = this.handleUnlockRosters.bind( this );\n this.handleUnreadyToPlay = this.handleUnreadyToPlay.bind( this );\n\n if ( this.props.activeGame.permission === 'home' ) {\n\n this.#team = 'home';\n this.#teamId = this.props.activeGame.homeTeam.id;\n\n } else if ( this.props.activeGame.permission === 'away' ) {\n\n this.#team = 'away';\n this.#teamId = this.props.activeGame.awayTeam.id;\n\n }\n\n this.#actionButtonClass = 'bottom ' + [ 'left', 'center', 'right' ][ getActionButtonPosition( this.props.userSettings ) ];\n\n }\n\n componentDidMount() {\n\n expired( this.props.rosters && this.props.rosters.lastUpdate ) && this.handleLoadRosters();\n\n }\n\n componentDidUpdate() {\n\n if ( this.#pullHookCallback ) {\n\n clearTimeout( this.#pullHookTimeout );\n\n const pullHookCallback = this.#pullHookCallback;\n this.#pullHookTimeout = setTimeout( () => pullHookCallback(), 1000 );\n this.#pullHookCallback = null;\n\n }\n\n }\n\n fixSpeedDial() {\n\n setTimeout( () => this.setState( { speedDialOpen: true } ), 1 );\n\n }\n\n handleBackClick() {\n\n this.props.onChangePage( { page: 'game' } );\n\n }\n\n handleCancelEligibles() {\n\n this.props.error && this.props.onDismissError();\n\n this.setState( { eligiblesOpen: false } );\n\n }\n\n handleCancelLineupEditor() {\n\n this.setState( { lineupEditorOpen: false } );\n\n }\n\n handleConfirmRosterPlayers() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n const confirmedRosterPlayers = [];\n\n this.props.mergedAwayRoster && this.props.mergedAwayRoster.forEach( player => player.isConfirmed && confirmedRosterPlayers.push( player.id ) );\n this.props.mergedHomeRoster && this.props.mergedHomeRoster.forEach( player => player.isConfirmed && confirmedRosterPlayers.push( player.id ) );\n\n this.props.onConfirmRosterPlayers( this.props.context, this.props.token, this.props.activeGame.id, confirmedRosterPlayers );\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n handleLoadRosters() {\n\n this.props.error && this.props.onDismissError();\n\n this.props.onLoadRosters( this.props.context, this.props.token, this.props.activeGame.id );\n\n }\n\n handleLockRosters() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n this.setRosterStatus( 'lockRosters' );\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n handleOpenEligibles() {\n\n this.setState( { eligiblesOpen: true } );\n\n }\n\n handleOpenLineupEditor() {\n\n this.setState( { lineupEditorOpen: true } );\n\n }\n\n handleOpenRosters() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n this.setRosterStatus( 'unlockRosters' );\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n handlePublishRoster() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n this.props.onPublishRoster( this.props.context, this.props.token, this.props.activeGame.id, this.#team, this.#teamId, ! this.rosterIsPublic() );\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.#pullHookCallback = e;\n\n this.handleLoadRosters();\n\n }\n\n handleReadyToPlay() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n if ( hasLocalChanges( [ this.props.mergedAwayRoster || [], this.props.mergedHomeRoster || [] ] ) ) {\n\n showAlert( {\n\n buttonLabels: [ _( 'Abbrechen' ), _( 'OK' ) ],\n callback: e => e === 1 && this.setRosterStatus( 'readyToPlay' ),\n cancelable: true,\n message: _( wording( this.props.context, 'lineup' ) ? 'Es wurden Spieler confirmed, die Aufstellung aber noch nicht bestätigt. Fortfahren?' : 'Es wurden Spieler confirmed, der Roster aber noch nicht bestätigt. Fortfahren?' ),\n title: _( 'Achtung' )\n\n } );\n\n } else if ( ! this.hasConfirmedPlayers( [ this.props.mergedAwayRoster || [], this.props.mergedHomeRoster || [] ] ) ) {\n\n showAlert( {\n\n buttonLabels: [ _( 'Abbrechen' ), _( 'OK' ) ],\n callback: e => e === 1 && this.setRosterStatus( 'readyToPlay' ),\n cancelable: true,\n message: _( 'Es wurden keine Spieler confirmed. Fortfahren?' ),\n title: _( 'Achtung' )\n\n } );\n\n } else {\n\n this.setRosterStatus( 'readyToPlay' );\n\n }\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n handleSubmitEligibles( selectedPlayers, selectedTeamOfficials ) {\n\n const state = { eligiblesOpen: false }\n\n selectedPlayers.map( selectedPlayer => {\n\n selectedPlayer.lineupData = {\n\n jerseyNr: selectedPlayer.jerseyNr || null,\n position: selectedPlayer.position || null\n\n };\n\n if ( supports( this.props.context, 'captain' ) ) { selectedPlayer.lineupData.captain = selectedPlayer.captain || null; }\n if ( supports( this.props.context, 'startingPlayer' ) ) { selectedPlayer.lineupData.starting = selectedPlayer.starting || null; }\n if ( supports( this.props.context, 'lineup' ) ) { selectedPlayer.lineupData.line = this.props.simpleLineup && selectedPlayer.lineupData.position !== POSITION_GOALKEEPER ? 1 : selectedPlayer.selectedLine || selectedPlayer.line || null; }\n\n return selectedPlayer;\n\n } );\n\n if ( supports( this.props.context, 'teamOfficials' ) ) {\n\n selectedTeamOfficials.map( selectedTeamOfficial => {\n\n parseKey( selectedTeamOfficial, 'additionalData' );\n\n selectedTeamOfficial.lineupData = { job: selectedTeamOfficial.additionalData.job || null };\n\n return selectedTeamOfficial;\n\n } );\n\n }\n\n if ( supports( this.props.context, 'lineup' ) && ! this.props.simpleLineup ) {\n\n state.lineupEditorOpen = true;\n\n }\n\n this.props.error && this.props.onDismissError();\n\n this.setState( state );\n\n this.props.onAddPlayersToRoster( this.props.context, this.props.token, this.props.activeGame.id, this.#team, this.#teamId, selectedPlayers, supports( this.props.context, 'teamOfficials' ) ? selectedTeamOfficials : null );\n\n }\n\n handleSubmitLineup( roster ) {\n\n const players = []\n\n roster.forEach( player => players.push( { playerId: player.id, lineupData: player.lineupData } ) );\n\n this.props.error && this.props.onDismissError();\n\n this.props.onEditRosterPlayers( this.props.context, this.props.token, this.props.activeGame.id, this.#team, this.#teamId, players );\n\n }\n\n handleTabChange( e ) {\n\n this.setState( { tabIndex: e.index } );\n\n }\n\n handleUnlockRosters() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n this.setRosterStatus( 'unlockRosters' );\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n handleUnreadyToPlay() {\n\n this.setState( { speedDialOpen: false }, () => {\n\n this.setRosterStatus( 'unreadyToPlay' );\n\n this.fixSpeedDial();\n\n } );\n\n }\n\n hasConfirmedPlayers( e ) {\n\n for ( let i = 0; i < e.length; i++ ) {\n\n for ( let j = 0; j < e[ i ].length; j++ ) {\n\n if ( e[ i ][ j ].isConfirmed ) {\n\n return true;\n\n }\n\n }\n\n }\n\n return false;\n\n }\n\n rosterIsPublic() {\n\n return ( this.#team === 'home' ? this.props.rosters.items.homeRosterIsPublic : this.props.rosters.items.awayRosterIsPublic );\n\n }\n\n setRosterStatus( command ) {\n\n this.props.onSetRosterStatus( this.props.context, this.props.token, this.props.activeGame.id, command );\n\n }\n\n render() {\n\n // console.log( 'components.Pages.Rosters.render()', this.props, this.state );\n\n let awayPlayersConfirmed = 0;\n let homePlayersConfirmed = 0;\n\n this.props.mergedAwayRoster && this.props.mergedAwayRoster.forEach( e => { e.isConfirmed && awayPlayersConfirmed++; } );\n this.props.mergedHomeRoster && this.props.mergedHomeRoster.forEach( e => { e.isConfirmed && homePlayersConfirmed++; } );\n\n const awayTeamTabLabel = this.props.activeGame.awayTeam.shortName + ( this.props.activeGame.permission === 'referee' ? ' (' + awayPlayersConfirmed + '/' + ( this.props.mergedAwayRoster ? this.props.mergedAwayRoster.length: 0 ) + ')' : '' );\n const homeTeamTabLabel = this.props.activeGame.homeTeam.shortName + ( this.props.activeGame.permission === 'referee' ? ' (' + homePlayersConfirmed + '/' + ( this.props.mergedHomeRoster ? this.props.mergedHomeRoster.length: 0 ) + ')' : '' );\n const loading = this.props.loading && this.state.pullHook !== 'action';\n const title = [];\n const rosterStatus = this.props.rosters && this.props.rosters.items && this.props.rosters.items.rosterStatus;\n\n title.push( {this.props.activeGame.dateIsToBeDetermined ? _( 'TBD' ) : this.props.activeGame.scheduledDate.shortValue} );\n title.push( {shorten( this.props.activeGame.homeTeam.shortName ) + '-' + shorten( this.props.activeGame.awayTeam.shortName )} );\n\n ! rosterStatus && title.push( );\n rosterStatus === ROSTERS_LOCKED && title.push( );\n rosterStatus === READY_TO_PLAY && title.push( );\n\n return (\n\n this.state.lineupEditorOpen ?\n\n \n\n : this.state.eligiblesOpen ?\n\n \n\n :\n\n }>\n\n {\n\n <>\n\n {loading && }\n\n [\n {\n content: ,\n tab: \n }, {\n content: ,\n tab: \n }\n ] }\n swipeable\n onPostChange={this.handleTabChange}\n />\n\n {\n\n this.props.activeGame.permission === 'referee' ?\n\n this.state.speedDialOpen &&\n \n\n {! rosterStatus && {_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen öffnen' : 'Roster öffnen' )}}\n {rosterStatus === ROSTERS_UNLOCKED && {_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen sperren' : 'Roster sperren' )}}\n {rosterStatus === ROSTERS_LOCKED && {_( wording( this.props.context, 'lineup' ) ? 'Aufstellungen entsperren' : 'Roster entsperren' )}}\n {rosterStatus === ROSTERS_LOCKED && {_( 'Ready to Play' )}}\n {rosterStatus === READY_TO_PLAY && {_( 'Unready to Play' )}}\n {rosterStatus === ROSTERS_LOCKED && ( this.props.facecheckAway === FACECHECK_ALLOWED || this.props.facecheckHome === FACECHECK_ALLOWED ) && {_( wording( this.props.context, 'lineup' ) ? 'Aufstellung bestätigen' : 'Roster bestätigen' )}}\n\n \n\n \n\n :\n\n rosterStatus === ROSTERS_UNLOCKED\n\n && ( ( this.state.tabIndex === 0 && this.props.activeGame.permission === 'home' ) || ( this.state.tabIndex === 1 && this.props.activeGame.permission === 'away' ) )\n\n && (\n\n supports( this.props.context, 'rosterPublishing' ) ?\n\n (\n\n this.state.speedDialOpen &&\n \n {supports( this.props.context, 'teamOfficials' ) ? _( 'Spieler/Team-Offizielle hinzufügen' ) : _( 'Spieler hinzufügen' )}\n {supports( this.props.context, 'lineup' ) && ! this.props.simpleLineup && {_( 'Linien bearbeiten' )}}\n {this.rosterIsPublic() ? <> {_( wording( this.props.context, 'lineup' ) ? 'Aufstellung nicht veröffentlichen' : 'Roster nicht veröffentlichen' )} : <> {_( wording( this.props.context, 'lineup' ) ? 'Aufstellung veröffentlichen' : 'Roster veröffentlichen' )}}\n \n \n\n )\n\n :\n\n \n\n )\n\n }\n\n \n\n }\n\n\n \n\n );\n\n }\n\n}\n\nexport default Rosters;","import { connect } from 'react-redux';\nimport { addPlayersToRoster, confirmRosterPlayers, editRosterPlayers, loadRosters, publishRoster, setRosterStatus } from '../../store/actions/rosters';\nimport { changePage, dismissError, isLoading } from '../../store/actions/app';\nimport { getRosters } from '../../util/reducer-helpers';\nimport Rosters from '../../components/Pages/Rosters';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.Pages.Rosters.mapStateToProps', state );\n\n const rosters = getRosters( state );\n\n return {\n activeGame: state.items.games.activeItem,\n context: state.auth.context,\n error: state.app.error,\n facecheckAway: rosters.rosters && rosters.rosters.items && rosters.rosters.items.facecheckAway,\n facecheckHome: rosters.rosters && rosters.rosters.items && rosters.rosters.items.facecheckHome,\n lastUpdate: rosters.rosters && rosters.rosters.lastUpdate ? new Date( rosters.rosters.lastUpdate ) : null,\n loading: state.app.loading,\n mergedAwayRoster: rosters.mergedAwayRoster,\n mergedHomeRoster: rosters.mergedHomeRoster,\n rosters: rosters.rosters,\n simpleLineup: rosters.rosters && rosters.rosters.items && rosters.rosters.items.simpleLineup,\n token: state.auth.token,\n userSettings: state.userSettings\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onAddPlayersToRoster: ( context, token, gameId, team, teamId, players, teamOfficials ) => dispatch( isLoading( true ) ) && dispatch( addPlayersToRoster( context, token, gameId, team, teamId, players, teamOfficials ) ),\n onChangePage: route => dispatch( changePage( route ) ),\n onConfirmRosterPlayers: ( context, token, gameId, players ) => dispatch( isLoading( true ) ) && dispatch( confirmRosterPlayers( context, token, gameId, players ) ),\n onDismissError: () => dispatch( dismissError() ),\n onEditRosterPlayers: ( context, token, gameId, team, teamId, players ) => dispatch( isLoading( true ) ) && dispatch( editRosterPlayers( context, token, gameId, team, teamId, players ) ),\n onLoadRosters: ( context, token, gameId ) => dispatch( isLoading( true ) ) && dispatch( loadRosters( context, token, gameId ) ),\n onPublishRoster: ( context, token, gameId, team, teamId, publish ) => dispatch( isLoading( true ) ) && dispatch( publishRoster( context, token, gameId, team, teamId, publish ) ),\n onSetRosterStatus: ( context, token, gameId, command ) => dispatch( isLoading( true ) ) && dispatch( setRosterStatus( context, token, gameId, command ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Rosters );","import React from 'react';\nimport * as Ons from 'react-onsenui';\n\nclass Season extends React.Component {\n\n render() {\n\n return (\n\n this.props.onClick( this.props.season )}>\n
{this.props.season.leagueName} » {this.props.season.longname}
\n
\n
\n\n );\n\n }\n\n}\n\nexport default Season;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport PullHook from '../PullHook';\nimport Season from '../ListItems/Season';\nimport Toolbar from '../Toolbar';\nimport { translate as _ } from '../../util/i18n';\nimport { expired } from '../../util';\n\nclass Seasons extends React.Component {\n\n #pullHookCallback;\n\n constructor( props ) {\n\n // console.log( 'components.Seasons.constructor()', props );\n\n super( props );\n\n this.state = {\n pullHook: 'initial'\n };\n\n this.loadSeasons = this.loadSeasons.bind( this );\n this.handlePullHookChange = this.handlePullHookChange.bind( this );\n this.handlePullHookLoad = this.handlePullHookLoad.bind( this );\n this.handleSelectSeason = this.handleSelectSeason.bind( this );\n\n }\n\n componentDidMount() {\n\n expired( this.props.lastUpdate ) && this.loadSeasons();\n\n }\n\n componentDidUpdate() {\n\n if ( this.#pullHookCallback ) {\n\n const cb = this.#pullHookCallback;\n\n setTimeout( () => cb(), 1000 );\n\n this.#pullHookCallback = null;\n\n }\n\n }\n\n loadSeasons() {\n\n this.props.onLoadSeasons( this.props.context, this.props.token );\n\n }\n\n handlePullHookChange( e ) {\n\n this.setState( { pullHook: e.state } );\n\n }\n\n handlePullHookLoad( e ) {\n\n this.#pullHookCallback = e;\n\n this.loadSeasons();\n\n }\n\n handleSelectSeason( season ) {\n\n this.props.onSelectSeason( season );\n this.props.onChangePage( { page: 'games' } );\n\n }\n\n render() {\n\n return (\n\n }>\n\n \n\n {this.props.loading && this.state.pullHook !== 'action' && }\n\n

{_( 'Saisonen' )}

\n\n {\n this.props.seasons && this.props.seasons.length ?\n\n }\n />\n\n : ! expired( this.props.lastUpdate ) &&\n\n
\n

{_( 'Keine Saisonen gefunden.' )}

\n {_( 'Aktualisieren' )}\n
\n }\n\n
\n\n );\n\n }\n\n}\n\nexport default Seasons;","import { connect } from 'react-redux';\nimport { loadSeasons, setActiveSeason } from '../../store/actions/seasons';\nimport { changePage, isLoading } from '../../store/actions/app';\nimport Seasons from '../../components/Pages/Seasons';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.Pages.Seasons.mapStateToProps', state );\n\n return {\n context: state.auth.context,\n lastUpdate: state.items.seasons.lastUpdate ? new Date( state.items.seasons.lastUpdate ) : null,\n loading: state.app.loading,\n seasons: state.items.seasons.items,\n token: state.auth.token\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onChangePage: route => dispatch( changePage( route ) ),\n onLoadSeasons: ( context, token ) => dispatch( isLoading( true ) ) && dispatch( loadSeasons( context, token ) ),\n onSelectSeason: season => dispatch( setActiveSeason( season ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Seasons );","import { SEASONS_REQUESTED, SET_ACTIVE_SEASON } from '../constants/actionTypes';\n\nexport const loadSeasons = ( context, token ) => {\n\n return {\n type: SEASONS_REQUESTED,\n payload: { context, token }\n };\n\n};\n\nexport const setActiveSeason = season => {\n\n return {\n type: SET_ACTIVE_SEASON,\n payload: { season } \n }\n\n};","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Game from '../containers/Pages/Game';\nimport GameReportReferee from '../containers/Pages/GameReportReferee';\nimport Games from '../containers/Pages/Games';\nimport Rosters from '../containers/Pages/Rosters';\nimport Seasons from '../containers/Pages/Seasons';\nclass Navigator extends React.Component {\n\n #navigator;\n\n constructor( props ) {\n\n super( props );\n\n this.handleRenderPage = this.handleRenderPage.bind( this );\n this.handleChangePage = this.handleChangePage.bind( this );\n\n }\n\n componentDidUpdate() {\n\n // console.log( 'components.Navigator.componentDidUpdate()', this.props );\n\n this.handleChangePage( this.props.route );\n\n }\n\n handleRenderPage( route, navigator ) {\n\n // console.log( 'components.Navigator.handleRenderPage()', route, navigator );\n\n this.#navigator = navigator;\n\n switch ( route.page ) {\n\n case 'game':\n\n return ;\n\n case 'gameReportReferee':\n\n return ;\n\n case 'games':\n\n return ;\n\n case 'rosters':\n\n return ;\n\n default:\n\n return ;\n\n }\n\n }\n\n handleChangePage( route ) {\n\n // console.log( 'components.Navigator.handleChangePage()', this.#navigator );\n\n this.#navigator.resetPage( route );\n\n }\n\n render() {\n\n return (\n\n \n\n );\n\n };\n\n}\n\nexport default Navigator;","import { connect } from 'react-redux';\nimport Navigator from '../components/Navigator';\nimport { changePage } from '../store/actions/app';\n\nconst mapStateToProps = state => {\n\n return { route: state.app.route };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return { onChangePage: () => dispatch( changePage() ) };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( Navigator );","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport { reload } from '../util';\nimport { translate as _ } from '../util/i18n';\n\nclass ErrorBoundary extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n\n detailsOpen: false,\n error: null,\n hasError: false\n\n };\n\n this.resetApp = this.resetApp.bind( this );\n this.showDetails = this.showDetails.bind( this );\n\n }\n\n componentDidCatch( error, info ) {\n\n console.log( 'components.ErrorBoundary.componentDidCatch', error, info );\n\n }\n\n static getDerivedStateFromError( error ) {\n\n console.log( 'components.ErrorBoundary.getDerivedStateFromError', error );\n\n return {\n\n error,\n hasError: true\n\n };\n\n }\n\n resetApp() {\n\n localStorage.clear();\n\n reload();\n\n }\n\n showDetails() {\n\n this.setState( { detailsOpen: true } );\n\n }\n\n render() {\n\n if ( this.state.hasError ) {\n\n return (\n\n
\n\n

{_( 'Ups... da ist etwas schiefgelaufen :(' )}

\n\n

\n {_( 'App neuladen' )}\n {_( 'App zurücksetzen' )}\n {_( 'Details anzeigen' )}\n

\n\n {\n\n this.state.detailsOpen &&\n\n <>\n\n

{_( 'Details' )}:

\n\n {\n\n this.state.error &&\n\n
\n\n \n\n {this.state.error.stack}\n\n \n\n
\n\n }\n\n \n\n\n }\n\n
\n\n );\n\n }\n\n return this.props.children;\n\n }\n}\n\nexport default ErrorBoundary;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport { getActionButtonPosition, reload } from '../../util';\nimport { translate as _, getLanguages } from '../../util/i18n';\n\nclass UserSettings extends React.Component {\n\n #languages;\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n\n saving: false,\n userSettings: this.props.userSettings\n\n };\n\n this.handleActionButtonPositionChange = this.handleActionButtonPositionChange.bind( this );\n this.handleAppearanceModeChange = this.handleAppearanceModeChange.bind( this );\n this.handleLanguageChange = this.handleLanguageChange.bind( this );\n this.handleSaveUserSettings = this.handleSaveUserSettings.bind( this );\n\n this.#languages = getLanguages();\n\n }\n\n handleActionButtonPositionChange( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // this.setUserSetting( 'actionButtonPosition', e.index );\n this.setUserSetting( 'actionButtonPosition', Number( e.target.querySelector( 'input:checked' ).value ) );\n\n }\n\n handleAppearanceModeChange( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // this.setUserSetting( 'appearanceMode', e.index );\n this.setUserSetting( 'appearanceMode', Number( e.target.querySelector( 'input:checked' ).value ) );\n\n }\n\n handleLanguageChange( e ) {\n\n // e.index is always -1 on Android! Onsen bug?\n // this.setUserSetting( 'language', e.index );\n this.setUserSetting( 'language', Number( e.target.querySelector( 'input:checked' ).value ) );\n\n }\n\n handleSaveUserSettings() {\n\n this.setState( { saving: true }, () => {\n\n this.props.onUpdateUserSettings( this.state.userSettings );\n\n /*\n\n // TODO reload does not work in standalone? needs check\n\n */\n reload();\n\n } );\n\n }\n\n setUserSetting( setting, value ) {\n\n const newState = { ...this.state };\n newState.userSettings[ setting ] = value;\n\n this.setState( newState );\n\n }\n\n render() {\n\n return (\n\n \n\n

{_( 'Einstellungen' )}

\n\n \n\n
\n\n

{_( 'Aussehen' )}

\n\n \n\n {_( 'Auto' )}\n {_( 'Hell' )}\n {_( 'Dunkel' )}\n\n \n\n
\n\n
\n\n \n\n
\n\n

{_( 'Sprache' )}

\n\n \n\n {this.#languages.map( ( e, i ) => {e.label} )}\n\n \n\n
\n\n
\n\n \n\n
\n\n

{_( 'Position Aktions-Button' )}

\n\n \n\n {_( 'Links' )}\n {_( 'Mitte' )}\n {_( 'Rechts' )}\n\n \n\n
\n\n
\n\n
\n\n
{_( 'Speichern' )}
\n\n
{_( 'Abbrechen' )}
\n\n
\n\n
\n\n );\n\n }\n\n}\n\nexport default UserSettings;","import { connect } from 'react-redux';\nimport { updateUserSettings } from '../../store/actions/userSettings';\nimport UserSettings from '../../components/Pages/UserSettings';\n\nconst mapStateToProps = state => {\n\n // console.log( 'containers.Pages.UserSettings.mapStateToProps', state );\n\n return { userSettings: state.userSettings };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onUpdateUserSettings: userSettings => dispatch( updateUserSettings( userSettings ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( UserSettings );","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport Modal from './Modal';\nimport UserSettings from '../containers/Pages/UserSettings';\nimport packageJson from '../../../package.json';\nimport { translate as _ } from '../util/i18n';\nimport logo from '../../img/logos/dp-logo.png';\n\nclass Menu extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n\n userSettingsOpen: false\n\n };\n\n this.handleCloseUserSettings = this.handleCloseUserSettings.bind( this );\n this.handleOpenUserSettings = this.handleOpenUserSettings.bind( this );\n\n }\n\n handleCloseUserSettings() {\n\n this.setState( { userSettingsOpen: false } );\n\n }\n\n handleOpenUserSettings() {\n\n this.setState( { userSettingsOpen: true } );\n\n }\n\n render() {\n\n return (\n\n <>\n\n \n\n
\n\n \n\n {_( 'Einstellungen' )}\n {_( 'Ausloggen' )}\n\n \n\n {this.props.username &&
{_( 'Eingelogged als' )} {this.props.username}
}\n\n
\"Logo\"
\n\n
{_( 'Digitaler Spielerpass' )} v{packageJson.version}
\n\n
\n\n \n\n {this.state.userSettingsOpen && }\n\n \n\n );\n\n };\n\n}\n\nexport default Menu;","import { useState } from 'react';\n\nconst getUserShouldBePromptedToInstall = ( promptName, daysToWaitBeforePromptingAgain ) => {\n\n const lastPrompted = new Date( localStorage.getItem( promptName ) );\n const promptExpiration = new Date();\n\n promptExpiration.setDate( promptExpiration.getDate() - daysToWaitBeforePromptingAgain );\n\n return lastPrompted < promptExpiration;\n\n}\n\nconst useShouldShowPrompt = ( promptName, daysToWaitBeforePromptingAgain = 30 ) => {\n\n const [ userShouldBePromptedToInstall, setUserShouldBePromptedToInstall ] = useState(\n\n getUserShouldBePromptedToInstall( promptName, daysToWaitBeforePromptingAgain )\n\n );\n\n const handleUserSeeingInstallPrompt = () => {\n\n setUserShouldBePromptedToInstall( false );\n localStorage.setItem( promptName, ( new Date() ).toJSON() );\n\n };\n\n return [ userShouldBePromptedToInstall, handleUserSeeingInstallPrompt ];\n\n};\n\nexport default useShouldShowPrompt;","import useShouldShowPrompt from './useShouldShowPrompt';\n\nconst iOSInstallPromptedAt = 'iOSInstallPromptedAt';\n\nconst isIOS = () => {\n\n if ( navigator.standalone ) {\n\n return false;\n\n }\n\n const isIPad = !! navigator.userAgent.match( /iPad/i );\n const isIPhone = !! navigator.userAgent.match( /iPhone/i );\n\n return isIPad || isIPhone;\n\n};\n\nconst useIOSInstallPrompt = () => {\n\n const [ userShouldBePromptedToInstall, handleUserSeeingInstallPrompt ] = useShouldShowPrompt( iOSInstallPromptedAt );\n\n return [ isIOS() && userShouldBePromptedToInstall, handleUserSeeingInstallPrompt ];\n\n};\n\nexport default useIOSInstallPrompt;","import { useState, useEffect } from 'react';\nimport useShouldShowPrompt from './useShouldShowPrompt';\n\nconst webInstallPromptedAt = 'webInstallPromptedAt';\n\nconst useWebInstallPrompt = () => {\n\n const [ installPromptEvent, setInstallPromptEvent ] = useState();\n const [ userShouldBePromptedToInstall, handleUserSeeingInstallPrompt ] = useShouldShowPrompt( webInstallPromptedAt );\n\n useEffect( () => {\n\n const beforeInstallPromptHandler = event => {\n\n // console.log( 'useWebInstallPrompt.useEffect.beforeInstallPromptHandler', event );\n\n event.preventDefault();\n\n if ( userShouldBePromptedToInstall ) {\n\n setInstallPromptEvent( event );\n\n }\n\n };\n\n // console.log( 'useWebInstallPrompt.useEffect' );\n\n window.addEventListener( 'beforeinstallprompt', beforeInstallPromptHandler );\n\n return () => window.removeEventListener( 'beforeinstallprompt', beforeInstallPromptHandler );\n\n }, [ userShouldBePromptedToInstall ]);\n\n const handleInstallDeclined = () => {\n\n handleUserSeeingInstallPrompt();\n setInstallPromptEvent( null );\n\n };\n\n const handleInstallAccepted = () => {\n\n installPromptEvent.prompt();\n\n installPromptEvent.userChoice.then( choice => {\n\n if ( choice.outcome !== 'accepted' ) {\n\n handleUserSeeingInstallPrompt();\n\n }\n\n setInstallPromptEvent( null );\n\n } );\n\n };\n\n return [ installPromptEvent, handleInstallDeclined, handleInstallAccepted ];\n\n};\n\nexport default useWebInstallPrompt;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport { translate as _ } from '../util/i18n';\nimport useIOSInstallPrompt from '../hooks/useIOSInstallPrompt';\nimport useWebInstallPrompt from '../hooks/useWebInstallPrompt';\nimport logo from '../../img/logos/dp-logo.png';\n\nexport const PWAInstaller = () => {\n\n const [ iOSInstallPrompt, handleIOSInstallDeclined ] = useIOSInstallPrompt();\n const [ webInstallPrompt, handleWebInstallDeclined, handleWebInstallAccepted ] = useWebInstallPrompt();\n\n // console.log( 'components.PAWInstaller -> iOSInstallPrompt, webInstallPrompt', iOSInstallPrompt, webInstallPrompt );\n\n if ( ! iOSInstallPrompt && ! webInstallPrompt ) {\n\n return null;\n\n }\n\n return (\n\n \n\n
\"Logo\"
\n\n

{_( 'App installieren' )}

\n\n
\n\n {\n\n iOSInstallPrompt ?\n\n <>\n

{_( 'Tippe auf' )} {_( 'und \"Zum Home-Bildschirm\"' )}

\n

{_( 'Schließen' )}

\n \n\n : webInstallPrompt &&\n\n <>\n {_( 'Installieren' )}\n  \n {_( 'Schließen' )}\n \n\n }\n\n
\n\n

\n \n {_( 'Nach dem Installieren der App kann diese vom Home-Bildschirm im Vollbildmodus gestartet werden.' )}\n

\n\n
\n\n );\n\n};\n\nexport default PWAInstaller;","import React from 'react';\nimport * as Ons from 'react-onsenui';\nimport ons from 'onsenui';\nimport Login from '../containers/Pages/Login';\nimport Navigator from '../containers/Navigator';\nimport ErrorBoundary from './ErrorBoundary';\nimport Menu from './Menu';\nimport PWAInstaller from './PWAInstaller';\nimport { translate as _ } from '../util/i18n';\nimport { reload } from '../util';\nimport { ENV } from '../util/env';\n\nclass App extends React.Component {\n\n constructor( props ) {\n\n super( props );\n\n this.state = {\n\n appUpdateAvailable: false,\n showMenu: false,\n updatingApp: false\n\n };\n\n this.handleHideAppUpdateNotification = this.handleHideAppUpdateNotification.bind( this );\n this.handleLogout = this.handleLogout.bind( this );\n this.handleMenuClick = this.handleMenuClick.bind( this );\n this.handleSplitterSideClose = this.handleSplitterSideClose.bind( this );\n this.handleUpdateApp = this.handleUpdateApp.bind( this );\n\n if ( ons.platform.isIPhoneX() && navigator.standalone ) {\n\n document.documentElement.setAttribute( 'onsflag-iphonex-landscape', '' );\n document.documentElement.setAttribute( 'onsflag-iphonex-portrait', '' );\n\n }\n\n // TODO test\n window.addEventListener( 'load', () => window.history.pushState( {}, '' ) );\n window.addEventListener( 'popstate', () => window.history.pushState( {}, '' ) );\n\n // window.history.pushState( null, null, window.location.href );\n // window.history.back();\n // window.history.forward();\n // /test\n\n window.appLanguage = this.props.userSettings.language;\n\n const appearanceModes = [\n\n window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ? 'dark' : 'light',\n 'light',\n 'dark'\n\n ];\n\n const appearanceMode = appearanceModes[ this.props.userSettings.appearanceMode ];\n document.body.className = appearanceMode + '-mode';\n\n import( 'onsenui/css/' + ( appearanceMode === 'dark' ? 'dark-' : '' ) + 'onsen-css-components.css' );\n\n }\n\n componentDidMount() {\n\n this.props.error && this.props.onDismissError();\n this.props.loading && this.props.onIsLoading( false );\n this.props.loadingSucceeded && this.props.onDismissLoadingSucceeded();\n\n setTimeout( () => {\n\n if ( window.appUpdateAvailable ) {\n\n this.setState( { appUpdateAvailable: true } );\n\n setTimeout( () => this.setState( { appUpdateAvailable: false } ), 1000 * 60 );\n\n }\n\n }, 1000 * 5 );\n\n }\n\n handleHideAppUpdateNotification() {\n\n this.setState( { appUpdateAvailable: false } );\n\n }\n\n handleMenuClick() {\n\n this.setState( { showMenu: true } );\n\n }\n\n handleLogout() {\n\n this.setState( { showMenu: false }, () => this.props.onLogout( this.props.context, this.props.token ) );\n\n }\n\n handleSplitterSideClose() {\n\n this.setState( { showMenu: false } );\n\n }\n\n handleUpdateApp() {\n\n this.setState( { updatingApp: true }, () => {\n\n caches.keys().then( keys => {\n\n keys.forEach( c => caches.delete( c ) );\n\n } ).then( () => {\n\n setTimeout( reload, 1000 * 3 );\n\n } );\n\n } );\n\n }\n\n render() {\n\n // console.log( 'components.App.render()', this.props, this.state );\n\n return (\n\n \n\n { this.props.token && ! this.props.resetPasswordToken ?\n\n \n\n \n \n \n\n \n \n \n\n \n\n :\n\n \n\n }\n\n \n\n \n\n
\n\n

{_( 'Eine neue App-Version ist verfügbar!' )}

\n\n {_( this.state.updatingApp ? 'Installiere...' : 'Jetzt installieren' )}\n\n
\n\n \n\n
\n\n {ENV === 'development' &&
{ENV.toUpperCase()}
}\n\n \n\n );\n\n }\n\n}\n\nexport default App;","import { connect } from 'react-redux';\nimport App from '../components/App';\nimport { logout } from '../store/actions/auth';\nimport { dismissError, dismissLoadingSucceeded, isLoading } from '../store/actions/app';\nimport { getUrlParameter } from '../util';\n\nconst mapStateToProps = state => {\n\n return {\n context: getUrlParameter( 'context' ) || state.auth.context,\n error: state.app.error,\n loading: state.app.loading,\n loadingSucceeded: state.auth.loadingSucceeded,\n resetPasswordToken: getUrlParameter( 'rpt' ),\n token: state.auth.token,\n username: state.auth.username,\n userSettings: state.userSettings\n };\n\n};\n\nconst mapDispatchToProps = dispatch => {\n\n return {\n onDismissError: () => dispatch( dismissError() ),\n onDismissLoadingSucceeded: () => dispatch( dismissLoadingSucceeded() ),\n onIsLoading: () => dispatch( isLoading( false ) ),\n onLogout: ( context, token ) => dispatch( logout( context, token ) )\n };\n\n};\n\nexport default connect( mapStateToProps, mapDispatchToProps )( App );","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","const ajax = async ( url = '', data, options = {} ) => {\n\n url = new URL( url );\n\n const defaultOptions = {\n cache: 'no-cache',\n credentials: 'same-origin',\n method: 'GET',\n mode: 'cors',\n redirect: 'follow',\n referrer: 'no-referrer'\n };\n\n const init = { ...defaultOptions, ...options };\n\n if ( data ) {\n\n if ( init.method === 'POST' ) {\n\n init.body = new FormData();\n\n Object.entries( data ).forEach( ( [ key, value ] ) => init.body.append( key, value ) );\n\n } else {\n\n url.search = new URLSearchParams( data ).toString();\n\n }\n\n }\n\n return fetch( url, init ).then( response => response.json() );\n\n};\n\nexport default ajax;","import ajax from '../util/ajax';\nimport { getUrl, supports } from '../util/context';\n\nconst Api = () => {\n\n const addPlayersToRoster = options => {\n\n const data = {\n gameId: options.gameId,\n players: JSON.stringify( options.players ),\n teamId: options.teamId,\n token: options.token\n };\n\n if ( supports( options.context, 'teamOfficials' ) ) {\n\n data.teamOfficials = JSON.stringify( options.teamOfficials );\n\n }\n\n return ajax(\n getUrl( options.context, 'AddPlayersToRoster' ),\n data,\n {\n method: 'POST'\n }\n );\n\n }\n\n const confirmGameReportReferee = options => {\n\n return ajax(\n getUrl( options.context, 'SaveGameReportReferee' ),\n {\n gameId: options.gameId,\n reportJson: JSON.stringify( options.gameReportReferee ),\n token: options.token,\n doConfirm: 1\n },\n {\n method: 'POST'\n }\n );\n\n }\n\n const confirmRosterPlayers = options => {\n\n return ajax(\n getUrl( options.context, 'ConfirmPlayers' ),\n {\n gameId: options.gameId,\n players: JSON.stringify( options.players ),\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n }\n\n const editRosterPlayer = options => {\n\n const data = {\n gameId: options.gameId,\n lineupData: JSON.stringify( options.player.lineupData ),\n playerId: options.player.id,\n teamId: options.teamId,\n token: options.token\n };\n\n if ( supports( options.context, 'teamOfficials' ) ) {\n\n data.isTeamOfficial = options.player.isTeamOfficial;\n\n }\n\n return ajax(\n getUrl( options.context, 'EditPlayerInRoster' ),\n data,\n {\n method: 'POST'\n }\n );\n\n };\n\n const editRosterPlayers = options => {\n\n const data = {\n gameId: options.gameId,\n players: JSON.stringify( options.players ),\n teamId: options.teamId,\n token: options.token\n };\n\n return ajax(\n getUrl( options.context, 'EditPlayersInRoster' ),\n data,\n {\n method: 'POST'\n }\n );\n\n };\n\n const getEligiblePlayers = options => {\n\n return ajax(\n getUrl( options.context, 'EligiblePlayers' ),\n {\n gameId: options.gameId,\n teamId: options.teamId,\n token: options.token\n }\n );\n\n };\n\n const getEligibleTeamOfficials = options => {\n\n return ajax(\n getUrl( options.context, 'EligibleTeamOfficials' ),\n {\n gameId: options.gameId,\n teamId: options.teamId,\n token: options.token\n }\n );\n\n };\n\n const getExtendedEligiblePlayers = options => {\n\n return ajax(\n getUrl( options.context, 'ExtendedEligiblePlayers' ),\n {\n gameId: options.gameId,\n teamId: options.teamId,\n token: options.token\n }\n );\n\n };\n\n const getExtendedEligibleTeamOfficials = options => {\n\n return ajax(\n getUrl( options.context, 'ExtendedEligibleTeamOfficials' ),\n {\n gameId: options.gameId,\n teamId: options.teamId,\n token: options.token\n }\n );\n\n };\n\n const getGameReportRefere = options => {\n\n return ajax(\n getUrl( options.context, 'GameReportReferee' ),\n {\n gameId: options.gameId,\n token: options.token\n }\n );\n\n };\n\n const getGames = options => {\n\n return ajax(\n getUrl( options.context, 'Games' ),\n {\n seasonId: options.seasonId,\n token: options.token\n }\n );\n\n };\n\n const getPlayers = options => {\n\n return ajax(\n getUrl( options.context, 'GetEligiblePlayers' ),\n {\n teamId: options.teamId,\n token: options.token\n }\n );\n\n };\n\n const getReferees = options => {\n\n return ajax(\n getUrl( options.context, 'Referees' ),\n {\n gameId: options.gameId,\n token: options.token\n }\n );\n\n };\n\n const getRosters = options => {\n\n return ajax(\n getUrl( options.context, 'Rosters' ),\n {\n gameId: options.gameId,\n token: options.token\n }\n );\n\n };\n\n const getScores = options => {\n\n return ajax(\n getUrl( options.context, 'Scores' ),\n {\n gameId: options.gameId\n }\n );\n\n };\n\n const getSeasons = options => {\n\n return ajax(\n getUrl( options.context, 'Seasons' ),\n {\n token: options.token\n }\n );\n\n };\n\n const login = options => {\n\n return ajax(\n getUrl( options.context, 'Login' ),\n {\n username: options.username,\n password: options.password\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const logout = options => {\n\n return ajax(\n getUrl( options.context, 'Logout' ),\n {\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const overwriteGameReportReferee = options => {\n\n return ajax(\n getUrl( options.context, 'OverwriteGameReportReferee' ),\n {\n gameId: options.gameId,\n reportJson: JSON.stringify( options.gameReportReferee ),\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n\n const publishRoster = options => {\n\n return ajax(\n getUrl( options.context, 'PublishRoster' ),\n {\n gameId: options.gameId,\n publish: options.publish,\n teamId: options.teamId,\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const removeRosterPlayer = options => {\n\n const data = {\n gameId: options.gameId,\n playerId: options.playerId,\n token: options.token\n };\n\n if ( supports( options.context, 'teamOfficials' ) ) {\n\n data.isTeamOfficial = options.isTeamOfficial;\n\n }\n\n return ajax(\n getUrl( options.context, 'RemovePlayerFromRoster' ),\n data,\n {\n method: 'POST'\n }\n );\n\n };\n\n const resetPassword = options => {\n\n return ajax(\n getUrl( options.context, 'SetPassword' ),\n {\n token: options.token,\n password: options.password\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const saveGameReportRefereeDraft = options => {\n\n return ajax(\n getUrl( options.context, 'SaveGameReportReferee' ),\n {\n gameId: options.gameId,\n reportJson: JSON.stringify( options.gameReportReferee ),\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const sendPasswordRecovery = options => {\n\n return ajax(\n getUrl( options.context, 'RequestPasswordRecovery' ),\n {\n username: options.username\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const setRosterStatus = options => {\n\n return ajax(\n getUrl( options.context, 'SetRosterStatus' ),\n {\n gameId: options.gameId,\n command: options.command,\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const signGameReportReferee = options => {\n\n return ajax(\n getUrl( options.context, 'ConfirmGameReportByTeam' ),\n {\n gameId: options.gameId,\n token: options.token,\n comment: options.comment,\n username: options.name\n },\n {\n method: 'POST'\n }\n );\n\n }\n\n const signSupplementary = options => {\n\n return ajax(\n getUrl( options.context, 'AcceptSupplementary' ),\n {\n gameId: options.gameId,\n teamId: options.teamId,\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n const takeFaceCheck = options => {\n\n return ajax(\n getUrl( options.context, 'LockTeam' ),\n {\n gameId: options.gameId,\n teamId: options.teamId,\n token: options.token\n },\n {\n method: 'POST'\n }\n );\n\n };\n\n return {\n addPlayersToRoster,\n confirmGameReportReferee,\n confirmRosterPlayers,\n editRosterPlayer,\n editRosterPlayers,\n getEligiblePlayers,\n getEligibleTeamOfficials,\n getExtendedEligiblePlayers,\n getExtendedEligibleTeamOfficials,\n getGameReportRefere,\n getGames,\n getPlayers,\n getReferees,\n getRosters,\n getScores,\n getSeasons,\n login,\n logout,\n overwriteGameReportReferee,\n publishRoster,\n removeRosterPlayer,\n resetPassword,\n saveGameReportRefereeDraft,\n sendPasswordRecovery,\n setRosterStatus,\n signGameReportReferee,\n signSupplementary,\n takeFaceCheck\n };\n\n};\n\nexport default Api();","import { all, call, put, takeLatest } from 'redux-saga/effects';\nimport Api from '../../services/Api';\nimport { loadingError } from '../../util/error';\nimport { LOGIN_ERROR, LOGOUT_ERROR, RESET_PASSWORD_ERROR, SEND_PASSWORD_RECOVERY_ERROR } from '../constants/errorCodes';\nimport {\n IS_LOADING,\n LOGIN_FAILED,\n LOGIN_REQUESTED,\n LOGIN_SUCCEEDED,\n LOGOUT_FAILED,\n LOGOUT_REQUESTED,\n LOGOUT_SUCCEEDED,\n RESETTING_PASSWORD_FAILED,\n RESETTING_PASSWORD_SUCCEEDED,\n RESET_PASSWORD,\n SENDING_PASSWORD_RECOVERY_FAILED,\n SENDING_PASSWORD_RECOVERY_SUCCEEDED,\n SEND_PASSWORD_RECOVERY,\n SET_LOADING_SUCCEEDED\n} from '../constants/actionTypes';\n\nfunction* login( action ) {\n\n try {\n\n const response = yield call( Api.login, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOGIN_SUCCEEDED, payload: { token: response.data, username: action.payload.username } } );\n\n } else {\n\n yield loadingError( LOGIN_FAILED, LOGIN_ERROR );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOGIN_FAILED );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* logout( action ) {\n\n try {\n\n const response = yield call( Api.logout, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOGOUT_SUCCEEDED, payload: { token: response.data } } );\n\n } else {\n\n yield loadingError( LOGOUT_FAILED, LOGOUT_ERROR );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOGOUT_FAILED );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* resetPassword( action ) {\n\n try {\n\n const response = yield call( Api.resetPassword, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: SET_LOADING_SUCCEEDED, payload: { type: RESETTING_PASSWORD_SUCCEEDED } } );\n\n } else {\n\n yield loadingError( RESETTING_PASSWORD_FAILED, RESET_PASSWORD_ERROR );\n\n }\n\n } catch( e ) {\n\n yield loadingError( RESETTING_PASSWORD_FAILED );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* sendPasswordRecovery( action ) {\n\n try {\n\n const response = yield call( Api.sendPasswordRecovery, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: SET_LOADING_SUCCEEDED, payload: { type: SENDING_PASSWORD_RECOVERY_SUCCEEDED } } );\n\n } else {\n\n yield loadingError( SENDING_PASSWORD_RECOVERY_FAILED, SEND_PASSWORD_RECOVERY_ERROR );\n\n }\n\n } catch( e ) {\n\n yield loadingError( SENDING_PASSWORD_RECOVERY_FAILED );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* authSaga() {\n\n yield all( [\n takeLatest( LOGIN_REQUESTED, login ),\n takeLatest( LOGOUT_REQUESTED, logout ),\n takeLatest( RESET_PASSWORD, resetPassword ),\n takeLatest( SEND_PASSWORD_RECOVERY, sendPasswordRecovery )\n ] );\n\n}\n\nexport default authSaga;","import { all, call, put, takeLatest } from 'redux-saga/effects';\nimport Api from '../../services/Api';\nimport { supports, wording } from '../../util/context';\nimport { loadingError } from '../../util/error';\nimport { translate as _ } from '../../util/i18n';\nimport { showMessage } from '../../util/ui';\nimport {\n ADD_PLAYERS_TO_ROSTER,\n ADDING_PLAYERS_TO_ROSTER_FAILED,\n ADDING_PLAYERS_TO_ROSTER_SUCCEEDED,\n CONFIRM_GAME_REPORT_REFEREE,\n CONFIRMING_GAME_REPORT_REFEREE_FAILED,\n CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED,\n CONFIRM_ROSTER_PLAYERS,\n CONFIRMING_ROSTER_PLAYERS_FAILED,\n CONFIRMING_ROSTER_PLAYERS_SUCCEEDED,\n EDIT_ROSTER_PLAYER,\n EDIT_ROSTER_PLAYERS,\n EDITING_ROSTER_PLAYER_FAILED,\n EDITING_ROSTER_PLAYERS_FAILED,\n EDITING_ROSTER_PLAYER_SUCCEEDED,\n EDITING_ROSTER_PLAYERS_SUCCEEDED,\n ELIGIBLE_PLAYERS_REQUESTED,\n ELIGIBLE_TEAM_OFFICIALS_REQUESTED,\n EXTENDED_ELIGIBLE_PLAYERS_REQUESTED,\n EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED,\n GAME_REPORT_REFEREE_REQUESTED,\n GAMES_REQUESTED,\n IS_LOADING,\n LOADING_GAME_REPORT_REFEREE_SUCCEEDED,\n LOADING_GAME_REPORT_REFEREE_FAILED,\n LOADING_GAMES_FAILED,\n LOADING_GAMES_SUCCEEDED,\n LOADING_ELIGIBLE_PLAYERS_FAILED,\n LOADING_ELIGIBLE_PLAYERS_SUCCEEDED,\n LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED,\n LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED,\n LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED,\n LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED,\n LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED,\n LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED,\n LOADING_REFEREES_SUCCEEDED,\n LOADING_REFEREES_FAILED,\n LOADING_ROSTERS_FAILED,\n LOADING_ROSTERS_SUCCEEDED,\n LOADING_SCORES_FAILED,\n LOADING_SCORES_SUCCEEDED,\n LOADING_SEASONS_FAILED,\n LOADING_SEASONS_SUCCEEDED,\n OVERWRITE_GAME_REPORT_REFEREE,\n OVERWRITING_GAME_REPORT_REFEREE_FAILED,\n OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED,\n PUBLISH_ROSTER,\n PUBLISHING_ROSTER_FAILED,\n PUBLISHING_ROSTER_SUCCEEDED,\n REFEREES_REQUESTED,\n REMOVE_ROSTER_PLAYER,\n REMOVING_ROSTER_PLAYER_FAILED,\n REMOVING_ROSTER_PLAYER_SUCCEEDED,\n ROSTERS_REQUESTED,\n SAVE_GAME_REPORT_REFEREE_DRAFT,\n SAVING_GAME_REPORT_REFEREE_DRAFT_FAILED,\n SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED,\n SCORES_REQUESTED,\n SEASONS_REQUESTED,\n SET_ROSTER_STATUS,\n SETTING_ROSTER_STATUS_FAILED,\n SETTING_ROSTER_STATUS_SUCCEEDED,\n SIGN_GAME_REPORT_REFEREE,\n SIGN_SUPPLEMENTARY,\n SIGNING_GAME_REPORT_REFEREE_FAILED,\n SIGNING_GAME_REPORT_REFEREE_SUCCEEDED,\n SIGNING_SUPPLEMENTARY_FAILED,\n SIGNING_SUPPLEMENTARY_SUCCEEDED,\n TAKE_FACE_CHECK,\n TAKING_FACE_CHECK_FAILED,\n TAKING_FACE_CHECK_SUCCEEDED\n} from '../constants/actionTypes';\n\nfunction* addPlayersToRoster( action ) {\n\n // action.payload.players.length\n // action.payload.teamOfficials.length\n\n const err = _( wording( action.payload.context, 'lineup' ) ? 'Auswahl konnte nicht zur Aufstellung hinzugefügt werden.' : 'Auswahl konnte nicht zum Roster hinzugefügt werden.' );\n\n try {\n\n const response = yield call( Api.addPlayersToRoster, action.payload );\n\n if ( response.statusId > 0 ) {\n\n const added = [];\n\n action.payload.players.length && added.push( action.payload.players.length + ' ' + ( action.payload.players.length === 1 ? _( 'Spieler', 'singular' ) : _( 'Spieler', 'plural' ) ) );\n\n supports( action.payload.context, 'teamOfficials' ) && action.payload.teamOfficials.length && added.push( action.payload.teamOfficials.length + ' ' + _( action.payload.teamOfficials.length === 1 ? 'Team-Offizieller' : 'Team-Offizielle' ) );\n\n yield put( { type: ADDING_PLAYERS_TO_ROSTER_SUCCEEDED, payload: action.payload } );\n\n showMessage( { message: _( wording( action.payload.context, 'lineup' ) ? 'Zur Aufstellung hinzugefügt' : 'Zum Roster hinzugefügt' ) + ': ' + added.join( ', ' ) } );\n\n } else {\n\n yield loadingError( ADDING_PLAYERS_TO_ROSTER_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( ADDING_PLAYERS_TO_ROSTER_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* confirmGameReportReferee( action ) {\n\n const err = _( 'Game Report Referee konnte nicht unterschrieben werden.' );\n\n try {\n\n const response = yield call( Api.confirmGameReportReferee, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: CONFIRMING_GAME_REPORT_REFEREE_SUCCEEDED, payload: { ...action.payload } } );\n\n showMessage( { message: _( 'Game Report Referee unterschrieben.' ) } );\n\n } else {\n\n yield loadingError( CONFIRMING_GAME_REPORT_REFEREE_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( CONFIRMING_GAME_REPORT_REFEREE_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* confirmRosterPlayers( action ) {\n\n const err = _( wording( action.payload.context, 'lineup' ) ? 'Aufstellungen konnten nicht bestätigt werden.' : 'Roster konnten nicht bestätigt werden.' );\n\n try {\n\n const response = yield call( Api.confirmRosterPlayers, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: CONFIRMING_ROSTER_PLAYERS_SUCCEEDED, payload: { ...action.payload, data: response.data } } );\n\n showMessage( { message: _( wording( action.payload.context, 'lineup' ) ? 'Aufstellungen bestätigt. Spieler aufgestellt:' : 'Roster bestätigt. Spieler im Roster:' ) + ' ' + response.data.confirmedPlayers } );\n\n } else {\n\n yield loadingError( CONFIRMING_ROSTER_PLAYERS_FAILED, null, null, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( CONFIRMING_ROSTER_PLAYERS_FAILED, null, null, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* editRosterPlayer( action ) {\n\n const err = _( 'Daten konnten nicht geändert werden.' );\n\n try {\n\n const response = yield call( Api.editRosterPlayer, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: EDITING_ROSTER_PLAYER_SUCCEEDED, payload: action.payload } );\n\n showMessage( { message: _( 'Daten wurden geändert.' ) } );\n\n } else {\n\n yield loadingError( EDITING_ROSTER_PLAYER_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( EDITING_ROSTER_PLAYER_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* editRosterPlayers( action ) {\n\n const err = _( 'Daten konnten nicht gespeichert werden.' );\n\n try {\n\n const response = yield call( Api.editRosterPlayers, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: EDITING_ROSTER_PLAYERS_SUCCEEDED, payload: action.payload } );\n\n showMessage( { message: _( 'Daten wurden gespeichert.' ) } );\n\n } else {\n\n yield loadingError( EDITING_ROSTER_PLAYERS_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( EDITING_ROSTER_PLAYERS_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadEligiblePlayers( action ) {\n\n const { teamId } = action.payload;\n const err = _( 'Spieler konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getEligiblePlayers, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_ELIGIBLE_PLAYERS_SUCCEEDED, payload: { eligibles: response.data, teamId } } );\n\n } else {\n\n yield loadingError( LOADING_ELIGIBLE_PLAYERS_FAILED, null, { teamId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_ELIGIBLE_PLAYERS_FAILED, null, { teamId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadEligibleTeamOfficials( action ) {\n\n const { teamId } = action.payload;\n const err = _( 'Team-Offizielle konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getEligibleTeamOfficials, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED, payload: { eligibles: response.data, teamId } } );\n\n } else {\n\n yield loadingError( LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED, null, { teamId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_ELIGIBLE_TEAM_OFFICIALS_FAILED, null, { teamId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadExtendedEligiblePlayers( action ) {\n\n const { teamId } = action.payload;\n const err = _( 'Spieler konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getExtendedEligiblePlayers, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_EXTENDED_ELIGIBLE_PLAYERS_SUCCEEDED, payload: { eligibles: response.data, teamId } } );\n\n } else {\n\n yield loadingError( LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED, null, { teamId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_EXTENDED_ELIGIBLE_PLAYERS_FAILED, null, { teamId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadExtendedEligibleTeamOfficials( action ) {\n\n const { teamId } = action.payload;\n const err = _( 'Team-Offizielle konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getExtendedEligibleTeamOfficials, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_SUCCEEDED, payload: { eligibles: response.data, teamId } } );\n\n } else {\n\n yield loadingError( LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED, null, { teamId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_EXTENDED_ELIGIBLE_TEAM_OFFICIALS_FAILED, null, { teamId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadGameReportReferee( action ) {\n\n const { gameId } = action.payload;\n const err = _( 'Game Report Referee konnte nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getGameReportRefere, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_GAME_REPORT_REFEREE_SUCCEEDED, payload: { data: response.data || {}, gameId } } );\n\n } else {\n\n yield loadingError( LOADING_GAME_REPORT_REFEREE_FAILED, null, { gameId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_GAME_REPORT_REFEREE_FAILED, null, { gameId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadGames( action ) {\n\n const err = _( 'Spiele konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getGames, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_GAMES_SUCCEEDED, payload: { games: response.data } } );\n\n } else {\n\n yield loadingError( LOADING_GAMES_FAILED, null, null, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_GAMES_FAILED, null, null, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadReferees( action ) {\n\n const { gameId } = action.payload;\n const err = _( 'Referees konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getReferees, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_REFEREES_SUCCEEDED, payload: { referees: response.data, gameId } } );\n\n } else {\n\n yield loadingError( LOADING_REFEREES_FAILED, null, { gameId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_REFEREES_FAILED, null, { gameId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadRosters( action ) {\n\n const { gameId } = action.payload;\n const err = _( wording( action.payload.context, 'lineup' ) ? 'Aufstellungen konnten nicht geladen werden.' : 'Roster konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getRosters, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_ROSTERS_SUCCEEDED, payload: { rosters: response.data, gameId } } );\n\n } else {\n\n yield loadingError( LOADING_ROSTERS_FAILED, null, { gameId }, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_ROSTERS_FAILED, null, { gameId }, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadScores( action ) {\n\n const err = _( 'Scores konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getScores, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_SCORES_SUCCEEDED, payload: { ...action.payload, scores: response.data } } );\n\n } else {\n\n yield loadingError( LOADING_SCORES_FAILED, null, null, err );\n\n }\n\n } catch( e ) {\n\n console.log(e);\n\n yield loadingError( LOADING_SCORES_FAILED, null, null, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* loadSeasons( action ) {\n\n const err = _( 'Saisonen konnten nicht geladen werden.' );\n\n try {\n\n const response = yield call( Api.getSeasons, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: LOADING_SEASONS_SUCCEEDED, payload: { seasons: response.data } } );\n\n } else {\n\n yield loadingError( LOADING_SEASONS_FAILED, null, null, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( LOADING_SEASONS_FAILED, null, null, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* overwriteGameReportReferee( action ) {\n\n const err = _( 'Game Report Referee konnte nicht überschrieben werden.' );\n\n try {\n\n const response = yield call( Api.overwriteGameReportReferee, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: OVERWRITING_GAME_REPORT_REFEREE_SUCCEEDED, payload: { ...action.payload } } );\n\n } else {\n\n yield loadingError( OVERWRITING_GAME_REPORT_REFEREE_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( OVERWRITING_GAME_REPORT_REFEREE_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* publishRoster( action ) {\n\n const err = _( action.payload.publish ? ( wording( action.payload.context, 'lineup' ) ? 'Aufstellung konnte nicht veröffentlicht werden.' : 'Roster konnte nicht veröffentlicht werden.' ) : ( wording( action.payload.context, 'lineup' ) ? 'Veröffentlichung der Aufstellung konnte nicht aufgehoben werden.' : 'Roster-Veröffentlichung konnte nicht aufgehoben werden.') );\n\n try {\n\n const response = yield call( Api.publishRoster, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: PUBLISHING_ROSTER_SUCCEEDED, payload: { ...action.payload } } );\n\n showMessage( { message: _( action.payload.publish ? ( wording( action.payload.context, 'lineup' ) ? 'Aufstellung veröffentlicht.' : 'Roster veröffentlicht.' ) : ( wording( action.payload.context, 'lineup' ) ? 'Veröffentlichung der Aufstellung aufgehoben.' : 'Roster-Veröffentlichung aufgehoben.' ) ) } );\n\n } else {\n\n yield loadingError( PUBLISHING_ROSTER_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( PUBLISHING_ROSTER_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* removeRosterPlayer( action ) {\n\n const err = _( action.payload.isTeamOfficial ? 'Team-Offizieller konnte nicht entfernt werden.' : 'Spieler konnte nicht entfernt werden.' );\n\n try {\n\n const response = yield call( Api.removeRosterPlayer, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: REMOVING_ROSTER_PLAYER_SUCCEEDED, payload: action.payload } );\n\n showMessage( { message: _( action.payload.isTeamOfficial ? 'Team-Offizieller wurde entfernt.' : 'Spieler wurde entfernt.' ) } );\n\n } else {\n\n yield loadingError( REMOVING_ROSTER_PLAYER_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( REMOVING_ROSTER_PLAYER_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* saveGameReportRefereeDraft( action ) {\n\n const err = _( 'Entwurf konnte nicht gespeichert werden.' );\n\n try {\n\n const response = yield call( Api.saveGameReportRefereeDraft, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: SAVING_GAME_REPORT_REFEREE_DRAFT_SUCCEEDED, payload: { ...action.payload } } );\n\n } else {\n\n yield loadingError( SAVING_GAME_REPORT_REFEREE_DRAFT_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( SAVING_GAME_REPORT_REFEREE_DRAFT_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* setRosterStatus( action ) {\n\n const messages = {\n\n lockRosters: wording( action.payload.context, 'lineup' ) ? 'Aufstellungen wurden gesperrt. Teams können keine Spieler mehr hinzufügen oder bearbeiten. Facecheck kann durchgeführt werden.' : 'Roster wurden gesperrt. Teams können keine Spieler mehr hinzufügen oder bearbeiten. Facecheck kann durchgeführt werden.',\n readyToPlay: 'Facecheck abgeschlossen. Spiel ist Ready to Play.',\n unlockRosters: wording( action.payload.context, 'lineup' ) ? 'Aufstellungen wurden entsperrt. Teams können Spieler nun hinzufügen und bearbeiten.' : 'Roster wurden entsperrt. Teams können Spieler nun hinzufügen und bearbeiten.',\n unreadyToPlay: 'Spiel ist Unready to Play. Facecheck kann wieder durchgeführt werden.'\n\n };\n\n const errorMessages = {\n\n lockRosters: wording( action.payload.context, 'lineup' ) ? 'Aufstellungen konnten nicht gesperrt werden.' : 'Roster konnten nicht gesperrt werden.',\n readyToPlay: 'Facecheck konnte nicht abgeschlossen werden.',\n unlockRosters: wording( action.payload.context, 'lineup' ) ? 'Aufstellungen konnten nicht entsperrt werden.' : 'Roster konnten nicht entsperrt werden.',\n unreadyToPlay: 'Spiel konnte nicht auf Unready to Play gesetzt werden.'\n\n };\n\n const message = _( ( action.payload.command in messages ) ? messages[ action.payload.command ] : 'Rosterstatus wurde geändert.' );\n const errorMessage = _( ( action.payload.command in errorMessages ) ? errorMessages[ action.payload.command ] : 'Rosterstatus konnte nicht geändert werden.' );\n\n try {\n\n const response = yield call( Api.setRosterStatus, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: SETTING_ROSTER_STATUS_SUCCEEDED, payload: { rosterStatus: response.data, gameId: action.payload.gameId } } );\n\n showMessage( { message } );\n\n } else {\n\n yield loadingError( SETTING_ROSTER_STATUS_FAILED, null, null, errorMessage );\n\n }\n\n } catch( e ) {\n\n yield loadingError( SETTING_ROSTER_STATUS_FAILED, null, null, errorMessage );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* signGameReportReferee( action ) {\n\n const err = _( 'Game Report Referee konnte nicht unterschrieben werden.' );\n\n try {\n\n const response = yield call( Api.signGameReportReferee, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: SIGNING_GAME_REPORT_REFEREE_SUCCEEDED, payload: { ...action.payload } } );\n\n showMessage( { message: _( 'Game Report Referee unterschrieben.' ) } );\n\n } else {\n\n yield loadingError( SIGNING_GAME_REPORT_REFEREE_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( SIGNING_GAME_REPORT_REFEREE_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* signSupplementary( action ) {\n\n const err = _( 'Beiblatt konnte nicht unterschrieben werden.' );\n\n try {\n\n const response = yield call( Api.signSupplementary, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: SIGNING_SUPPLEMENTARY_SUCCEEDED, payload: { ...action.payload, data: response.data } } );\n\n } else {\n\n yield loadingError( SIGNING_SUPPLEMENTARY_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( SIGNING_SUPPLEMENTARY_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* takeFaceCheck( action ) {\n\n const err = _( 'Facecheck konnte nicht übernommen werden.' );\n\n try {\n\n const response = yield call( Api.takeFaceCheck, action.payload );\n\n if ( response.statusId > 0 ) {\n\n yield put( { type: TAKING_FACE_CHECK_SUCCEEDED, payload: { ...action.payload, data: response.data } } );\n\n showMessage( { message: _( 'Facecheck übernommen.' ) } );\n\n } else {\n\n yield loadingError( TAKING_FACE_CHECK_FAILED, null, action.payload, err );\n\n }\n\n } catch( e ) {\n\n yield loadingError( TAKING_FACE_CHECK_FAILED, null, action.payload, err );\n\n }\n\n yield put( { type: IS_LOADING, payload: { loading: false } } );\n\n}\n\nfunction* itemsSaga() {\n\n yield all( [\n takeLatest( ADD_PLAYERS_TO_ROSTER, addPlayersToRoster ),\n takeLatest( CONFIRM_GAME_REPORT_REFEREE, confirmGameReportReferee ),\n takeLatest( CONFIRM_ROSTER_PLAYERS, confirmRosterPlayers ),\n takeLatest( EDIT_ROSTER_PLAYER, editRosterPlayer ),\n takeLatest( EDIT_ROSTER_PLAYERS, editRosterPlayers ),\n takeLatest( ELIGIBLE_PLAYERS_REQUESTED, loadEligiblePlayers ),\n takeLatest( ELIGIBLE_TEAM_OFFICIALS_REQUESTED, loadEligibleTeamOfficials ),\n takeLatest( EXTENDED_ELIGIBLE_PLAYERS_REQUESTED, loadExtendedEligiblePlayers ),\n takeLatest( EXTENDED_ELIGIBLE_TEAM_OFFICIALS_REQUESTED, loadExtendedEligibleTeamOfficials ),\n takeLatest( GAME_REPORT_REFEREE_REQUESTED, loadGameReportReferee ),\n takeLatest( GAMES_REQUESTED, loadGames ),\n takeLatest( OVERWRITE_GAME_REPORT_REFEREE, overwriteGameReportReferee ),\n takeLatest( PUBLISH_ROSTER , publishRoster ),\n takeLatest( REMOVE_ROSTER_PLAYER, removeRosterPlayer ),\n takeLatest( REFEREES_REQUESTED, loadReferees ),\n takeLatest( ROSTERS_REQUESTED, loadRosters ),\n takeLatest( SAVE_GAME_REPORT_REFEREE_DRAFT, saveGameReportRefereeDraft ),\n takeLatest( SCORES_REQUESTED, loadScores ),\n takeLatest( SEASONS_REQUESTED, loadSeasons ),\n takeLatest( SET_ROSTER_STATUS, setRosterStatus ),\n takeLatest( SIGN_GAME_REPORT_REFEREE, signGameReportReferee ),\n takeLatest( SIGN_SUPPLEMENTARY, signSupplementary ),\n takeLatest( TAKE_FACE_CHECK, takeFaceCheck )\n ] );\n\n}\n\nexport default itemsSaga;","import { all, fork } from 'redux-saga/effects';\nimport authSaga from './auth';\nimport itemsSaga from './items';\n\nexport default function* sagas() {\n\n yield all( [\n fork( authSaga ),\n fork( itemsSaga )\n ] );\n\n};","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/lib/integration/react';\nimport { persistor, store, sagaMiddleware } from './js/store/store';\nimport SplashScreen from './js/components/SplashScreen';\nimport App from './js/containers/App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport sagas from './js/store/sagas';\n\nimport 'onsenui/css/onsenui.css';\nimport '@hockeydata/numeric-input/dist/index.css';\nimport './css/index.scss';\n\nsagaMiddleware.run( sagas );\n\nReactDOM.render(\n \n } persistor={persistor}>\n \n \n ,\n document.getElementById( 'app-root' )\n);\n\nconst serviceWorkerConfiguration = {\n\n onUpdate: registration => {\n\n // console.log( 'serviceWorkerConfiguration.onUpdate.registration', registration );\n\n if ( registration && registration.waiting ) {\n\n window.appUpdateAvailable = true;\n\n }\n\n },\n\n onSuccess: registration => {\n\n // console.log( 'serviceWorkerConfiguration.onSuccess.registration', registration );\n\n }\n\n};\n\nserviceWorkerRegistration.register( serviceWorkerConfiguration );"],"sourceRoot":""}
© hockeydata