{"version":3,"sources":["app/lib/picker.js","app/lib/picker.date.js","init.jsx","app/lib/materialize.js","app/lib/colors.js","app/theme.js","app/globals.js","app/lib/browserHistory.js","app/lib/actionTypes.js","modules/app/constants/actionTypes.js","app/lib/action.js","modules/app/actions/flashMessage.js","modules/app/actions/httpError.js","modules/app/actions/index.js","modules/app/sagas/flashMessageOnServerError.js","modules/app/sagas/flashMessageOnServerSuccess.js","modules/app/sagas/httpError.js","modules/auth/constants/actionTypes.js","modules/auth/actions/login.js","modules/auth/actions/logout.js","modules/auth/selectors.js","app/lib/ajax.js","modules/auth/repository/index.js","modules/auth/sagas/login.js","modules/auth/sagas/redirectOnLogin.js","modules/auth/sagas/redirectOnLogout.js","modules/auth/sagas/refreshOn401.js","modules/visits/constants/actionTypes.js","modules/visits/repository/index.js","modules/visits/actions/storeVisit.js","modules/visits/actions/deleteVisit.js","modules/visits/actions/getUnits.js","modules/visits/actions/storeUnit.js","modules/visits/actions/deleteUnit.js","modules/visits/actions/getTimeSlots.js","modules/visits/actions/verifyUnit.js","modules/visits/actions/getGoods.js","modules/visits/actions/storeGood.js","modules/visits/actions/deleteGood.js","modules/visits/actions/getDocs.js","modules/visits/actions/storeDoc.js","modules/visits/actions/deleteDoc.js","modules/visits/actions/submitVisit.js","modules/visits/actions/docsAndGoods.js","modules/visits/actions/getVisits.js","modules/visits/actions/index.js","modules/visits/sagas/fetchVisitAndUnitsAsync.js","app/lib/format.js","app/lib/serverDataCache.js","app/businessRules/serverToClientMap.js","app/businessRules/clientToServerMap.js","app/lib/invert.js","app/businessRules/defaultUnitFieldValues.js","app/lib/iso6346Check.js","app/businessRules/index.js","modules/visits/constants/unitVerificationStatus.js","modules/visits/sagas/storeUnit.js","modules/visits/sagas/storeVisit.js","modules/visits/sagas/deleteVisit.js","modules/visits/sagas/submitVisit.js","modules/visits/sagas/fetchUnits.js","modules/visits/sagas/fetchVisits.js","modules/visits/sagas/deleteUnit.js","modules/visits/sagas/verifyUnit.js","modules/visits/sagas/fetchGoods.js","modules/visits/sagas/storeGood.js","modules/visits/sagas/deleteGood.js","modules/visits/sagas/fetchDocs.js","modules/visits/sagas/storeDoc.js","modules/visits/sagas/deleteDoc.js","modules/visits/sagas/fetchVisitOnStoreUnit.js","modules/visits/sagas/fetchVisitOnDeleteUnit.js","modules/visits/sagas/fetchTimeSlots.js","modules/visits/sagas/redirectToEditVisitOnCreateVisit.js","modules/visits/sagas/redirectTo404OnVisitNotFound.js","modules/visits/sagas/redirectOnSubmit.js","modules/visits/sagas/clearVisitOnFormReset.js","modules/app/repositories/BaseRepository.js","modules/profile/repositories/ProfileRepository.js","modules/profile/actions/index.js","modules/profile/constants/actionTypes.js","modules/profile/sagas/setLanguageOnLogin.js","modules/sagas.js","app/lib/auth-helpers.js","app/access.js","app/api.js","modules/profile/reducers/profile.js","modules/profile/reducers/licensePlates.js","modules/visits/reducers/visits.js","modules/visits/reducers/visit.js","modules/visits/reducers/timeSlots.js","modules/visits/reducers/timeSlotConfig.js","modules/visits/reducers/unitVerification.js","modules/visits/reducers/goods.js","modules/app/constants/crudStatus.js","modules/visits/reducers/docs.js","modules/auth/reducers/auth.js","modules/app/reducers/session.js","modules/reports/reducers/reports.js","modules/rootReducer.js","app/store/index.js","app/middleware/promise.js","app/middleware/reqres.js","app/lib/bindCheckAuth.js","modules/app/repositories/AppRepository.js","routes/app/components/ProgressBar.jsx","app/lib/PureRenderComponent.js","modules/app/repositories/I18nRepository.js","routes/app/containers/Intl.jsx","routes/app/components/VersionCheck/VersionCheck.jsx","routes/RootComponent.jsx","modules/auth/actions/index.js","modules/profile/selectors.js","modules/app/constants/materialize.js","routes/app/components/Icon.jsx","app/lib/idgen.js","routes/app/components/Button.jsx","routes/app/components/Col.jsx","routes/app/components/Input.jsx","routes/app/components/Row.jsx","routes/app/components/Table.jsx","routes/app/components/Overlay.jsx","routes/app/components/OverlayTrigger.jsx","routes/app/components/Modal.jsx","routes/app/components/Toast.jsx","routes/app/components/Collapsible.jsx","routes/app/components/CollapsibleItem.jsx","routes/app/components/Spinner.jsx","routes/app/components/Chip.jsx","routes/app/components/Card.jsx","routes/app/components/CardPanel.jsx","routes/app/components/Tooltip.jsx","routes/app/components/Select.jsx","routes/app/components/FreeTextSelect.jsx","routes/app/components/Bubble.jsx","routes/app/components/TableActions.jsx","routes/app/components/Header.jsx","routes/app/components/Page.jsx","routes/app/components/PageMain.jsx","routes/app/components/PageLeft.jsx","routes/app/containers/Navigation.jsx","routes/app/components/Footer/TechInfo.jsx","routes/app/components/Footer/index.js","routes/app/components/Footer/Footer.jsx","routes/app/components/FlashMessage/FlashMessage.jsx","modules/app/selectors.js","routes/app/containers/App.jsx","app/lib/actionCreatorsFor.js","modules/reports/selectors.js","routes/dashboard/components/Widget/index.js","routes/dashboard/components/Widget/Widget.jsx","app/lib/charts/Chart.LineBar.js","app/lib/charts/core.jsx","app/lib/charts/LineBar.js","routes/app/components/Preloader.jsx","routes/dashboard/components/Chart/ActualTrucks/ActualTrucks.jsx","routes/dashboard/components/Chart/ActualTrucks/index.js","routes/dashboard/components/Chart/ActualOccupancy/ActualOccupancy.jsx","routes/dashboard/components/Chart/ActualOccupancy/index.js","routes/dashboard/components/Chart/AverageLeadTime/AverageLeadTime.jsx","routes/dashboard/components/Chart/AverageLeadTime/index.js","routes/dashboard/components/Chart/ActualLeadTime/Gauge.jsx","routes/dashboard/components/Chart/ActualLeadTime/index.js","routes/dashboard/components/Chart/ActualLeadTime/ActualLeadTime.jsx","routes/dashboard/components/Pivot/Pivot.jsx","routes/dashboard/components/Pivot/RailStatusIn/index.js","routes/dashboard/components/Pivot/RailStatusIn/RailStatusIn.jsx","routes/dashboard/components/Pivot/RailStatusOut/index.js","routes/dashboard/components/Pivot/RailStatusOut/RailStatusOut.jsx","routes/dashboard/components/Dashboard.jsx","routes/dashboard/containers/DashboardPage.jsx","routes/auth/containers/Login.jsx","routes/auth/containers/Logout.jsx","routes/settings/containers/LicensePlates.jsx","app/lib/history.js","routes/settings/containers/Settings.jsx","app/lib/getFormValues.js","routes/app/components/ButtonGroup/index.js","routes/app/components/ButtonGroup/ButtonGroup.jsx","routes/visits/components/VisitOverview/Visit/VisitStatus/Chip.jsx","routes/visits/components/TimeSlotPicker/Barometer/Barometer.jsx","routes/visits/components/TimeSlotPicker/Barometer/index.js","routes/visits/components/TimeSlotPicker/TimeSlot.jsx","routes/visits/components/TimeSlotPicker/Day.jsx","routes/visits/components/TimeSlotPicker/TimeSlotModal.jsx","routes/visits/components/TimeSlotPicker/TimeSlotPicker.jsx","routes/visits/components/VisitForm/UnitsTable.jsx","app/lib/resetForm.js","app/lib/setFormData.js","routes/visits/components/UnitForm/GoodsDetailModal.jsx","routes/visits/components/UnitForm/GoodsTable.jsx","routes/app/components/FileInput/FileInput.jsx","routes/app/components/FileInput/FileUpload.jsx","routes/visits/components/UnitForm/Attachments/Attachments.jsx","routes/visits/components/UnitForm/Attachments/index.js","routes/visits/components/UnitForm/DocsDetailModal.jsx","routes/visits/components/UnitForm/DocsTable.jsx","routes/visits/components/VisitOverview/Visit/UnitReasons/UnitReasons.jsx","routes/visits/components/UnitForm/UnitForm.jsx","routes/visits/components/VisitForm/VisitForm.jsx","modules/visits/selectors.js","routes/visits/containers/Visit.jsx","routes/visits/components/VisitOverview/Visit/VisitHeader.jsx","routes/app/components/SvgIcon/ImportIcon.jsx","routes/app/components/SvgIcon/ExportIcon.jsx","routes/visits/components/VisitOverview/Visit/Unit/Unit.jsx","routes/visits/components/VisitOverview/Visit/Unit/Units.jsx","routes/visits/components/VisitOverview/Visit/VisitBody.jsx","routes/visits/components/VisitOverview/Visit/Visit.jsx","routes/visits/components/VisitFilterForm/index.js","routes/visits/components/VisitFilterForm/VisitFilterForm.jsx","routes/visits/containers/VisitFilter.jsx","routes/visits/components/VisitOverview/VisitOverview.jsx","routes/visits/containers/VisitOverview.jsx","routes/error/components/NotFound.jsx","routes/app/containers/Upload.jsx","app/lib/redirectTo.jsx","index.jsx","routes/index.jsx"],"names":["window","Picker","$","$window","$document","document","$html","documentElement","PickerConstructor","ELEMENT","NAME","COMPONENT","OPTIONS","IS_DEFAULT_THEME","STATE","id","Math","abs","random","Date","SETTINGS","extend","defaults","CLASSES","klasses","klass","$ELEMENT","PickerInstance","this","start","P","prototype","constructor","$node","methods","open","type","autofocus","getActiveElement","readOnly","editable","component","$root","_","node","createWrappedComponent","picker","on","keydown","handleKeydownEvent","focusin","event","removeClass","focused","stopPropagation","mousedown click","target","children","is","preventDefault","focus","addClass","blur","handleFocusToOpenEvent","$target","targetData","data","targetDisabled","hasClass","navDisabled","disabled","activeElement","href","contains","nav","set","item","highlight","pick","clear","close","aria","formatSubmit","name","hiddenName","hiddenPrefix","hiddenSuffix","_hidden","value","get","container","append","after","prepareElementHidden","input","val","format","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","setTimeout","apply","debounce","handlingOpen","handler","off","haspopup","expanded","readonly","owns","onStart","stop","onStop","onOpen","onClose","onSet","element","theme","currentStyle","getComputedStyle","isUsingDefaultTheme","trigger","render","entireComponent","html","find","box","nodes","parentNode","removeChild","remove","removeData","dontGiveFocus","active","opened","css","getScrollbarWidth","which","keycode","keyCode","keycodeToMove","key","click","go","highlighted","giveFocus","options","thing","thingItem","thingValue","thingIsObject","isPlainObject","thingObject","undefined","muted","formats","toString","method","internal","thingName","thingMethod","push","i","names","namesCount","length","_trigger","methodList","map","wrap","frame","holder","isKeycodeDelete","test","height","$outer","appendTo","widthWithoutScroll","offsetWidth","$inner","widthWithScroll","attribute","ariaSet","setAttribute","err","prefix","group","groupObject","loopObjectScope","nodesList","counter","min","max","wrapper","isArray","join","lead","number","callback","scope","digits","string","isDate","call","indexOf","isInteger","getDate","ariaAttr","attr","attrVal","Component","fn","action","componentData","each","factory","jQuery","DatePicker","settings","collectionDisabled","calendar","elementValue","elementDataValue","valueString","formatString","isRTL","direction","queue","now","select","view","disable","enable","slice","shift","40","38","39","37","timeChange","highlightedObject","targetDate","year","month","date","interval","selectMonth","selectYear","includeToday","buttonToday","calendarItem","split","pop","match","create","isInfiniteValue","Infinity","obj","normalize","getFullYear","getMonth","day","getDay","getTime","createRange","from","to","createDate","withinRange","range","dateUnit","overlapRanges","one","two","rel","setDate","navigate","targetDateObject","targetYear","targetMonth","isTargetArray","isTargetObject","viewsetObject","setHours","measure","parse","viewset","dateObject","validate","hasEnabledBeforeTarget","hasEnabledAfterTarget","reachedMin","reachedMax","originalDateObject","isFlippedBase","minLimitObject","maxLimitObject","hasEnabledWeekdays","filter","dateTime","dateToVerify","isDisabledMatch","dateToDisable","firstDay","inverted","parsingObject","toArray","label","formattingLabel","formatLength","replace","substr","yyyy","yy","mm","m","dd","d","getWordLengthFromCollection","collection","word","getFirstWordLength","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","itemObject","isDateExact","isDateOverlap","flipEnable","deactivate","datesToDisable","disabledItems","unitToDisable","matchFound","index","activate","datesToEnable","disabledItemsCount","unitToEnable","disabledUnit","isExactRange","isOpen","fullCollection","nowObject","selectedObject","disabledCollection","tableHead","showWeekdaysFull","weekdaysLetter","DAYS_IN_WEEK","weekdays","createMonthNav","next","role","controls","labelMonthNext","labelMonthPrev","createMonthLabel","override","monthsCollection","showMonthsShort","selectMonths","loopedMonth","labelMonthSelect","createYearLabel","focusedYear","numberYears","selectYears","minYear","maxYear","lowestYear","highestYear","availableYears","neededYears","loopedYear","labelYearSelect","display_day","createWeekdayLabel","month_display","day_display","year_display","date_display","header","WEEKS_IN_CALENDAR","rowCounter","shiftDateBy","isSelected","isHighlighted","isDisabled","formattedDate","infocus","outfocus","selected","activedescendant","table","calendar_container","today","footer","navPrev","navNext","buttonClear","buttonClose","originalEmit","hammer","el","$el","Hammer","hammerify","Manager","emit","gesture","jqueryHammer","Vel","hexToRgb","hex","result","exec","r","parseInt","g","b","primary","secondary","third","config","defaultLocale","supportedLocales","basename","baseURI","location","origin","setConfig","cnf","apiRoutes","Object","assign","GET_TIME_SLOTS","template","getAPIUrl","USER_LOGIN","USER_REFRESH_LOGIN","GET_COMPANY_DATA","GET_VISITS","GET_VISIT","GET_VISIT_UNITS","PUT_VISIT","DELETE_VISIT","SUBMIT_VISIT","POST_VISIT","POST_UNIT","PUT_UNIT","DELETE_UNIT","VERIFY_UNIT","GET_GOODS","PUT_GOOD","POST_GOOD","DELETE_GOOD","GET_DOCS","PUT_DOC","POST_DOC","DELETE_DOC","UPLOAD_DOC","DOWNLOAD_FILE","DELETE_FILE","ACTUAL_TRUCKS","ACTUAL_LEAD_TIME","ACTUAL_OCCUPANCY","AVERAGE_LEAD_TIME","RAIL_STATUS_IN","RAIL_STATUS_OUT","registrationUrl","GET_CONFIG","getAppUrl","GET_STATS","GET_TRANSLATIONS","GET_PROFILE","colors","colorsRGB","rgbColors","color","colorName","convertAllHexToRGB","UNIT_KINDS","path","api","browserHistory","useRouterHistory","createHistory","createActionType","base","toUpperCase","concat","createRequestTypes","REQUEST","SUCCESS","ERROR","FORM_DATA_LOAD","DATA_LOAD_REQUEST","DATA_LOAD_DONE","DATA_LOAD_SUCCESS","DATA_LOAD_ERROR","HTTP_ERROR_401","FLASH_MESSAGE","SET","REMOVE","payload","objectSpread","crud","request","success","error","actions_flashMessage","messageIds","titleId","ttl","params","httpError","http401","failedAction","loadDataAction","resource","actionTypes","loadDataDoneAction","loadDataSuccessAction","message","loadDataErrorAction","handleFlashMessage","_handleHttpErrorCode","_handleInterceptedError","_handleServerError","_handleServerErrors","flashMessageOnServerError","delay","ms","Promise","resolve","messageId","_args","regenerator_default","a","_context","prev","put","flashMessage","_marked","_ref","response","errorCode","_context2","body","status","statusText","_marked2","_ref2","_context3","_marked3","_ref3","errors","_context4","code","_marked4","_ref4","_ref4$payload","_context5","_marked5","_context6","takeEvery","_marked6","_handleServerSuccess","flashMessageOnServerSuccess","flashMessageOnServerSuccess_marked","_ref$payload","flashMessageOnServerSuccess_marked2","flashMessageOnServerSuccess_marked3","httpErrorAction","httpError_marked","httpError_marked2","LOGIN","LOGOUT","login","username","password","jwt","sessionData","logout","getJWT","state","token","isAuthenticated","throwServerError","Error","json","then","catch","handleServerResponse","promise","buildHeaders","store","getState","headers","Accept","Content-Type","Authorization","Headers","post","route","_ref$method","_ref$jwtHeader","jwtHeader","Request","mode","JSON","stringify","fetch","_ref2$method","_ref2$query","query","str","p","encodeURIComponent","buildQuery","del","uploadFile","loginUser","refreshUser","authorize","sent","loginAction","t0","login_marked","take","race","login_marked2","redirectOnLogin","routeActions","redirectOnLogin_marked","redirectOnLogout","redirectOnLogout_marked","refreshOn401","_jwt","refreshOn401_marked","TIME_SLOTS","VISITS","VISIT","STORE_VISIT","GET_UNITS","STORE_UNIT","RESET","VISIT_AND_UNITS","CLEAR","STORE_GOOD","STORE_DOC","DOCS_AND_GOODS","getVisits","filters","getVisit","vtrac","getVisitUnits","saveVisit","updateVisit","removeVisit","submitVisit","saveUnit","updateUnit","utrac","removeUnit","getTimeSlots","slotEta","dom","days","verifyUnit","getGoods","updateGood","trac","saveGood","removeGood","getDocs","updateDoc","saveDoc","removeDoc","storeVisit","formData","visit","actions_deleteVisit","storeUnit","unit","deleteUnit","actions_getTimeSlots","timeSlots","actions_verifyUnit","ok","dims","reset","storeGood","good","actions_deleteGood","storeDoc","doc","actions_deleteDoc","docsAndGoods","fetchVisitSuccess","fetchVisitAndUnits","fetchVisitAndUnitsSuccess","fetchVisitAndUnitsError","clearLoadedVisit","fetchVisit","types","getVisitAPI","appLoader","_fetchVisitAndUnitsAsync","fetchVisitAndUnitsAsync","units","slicedToArray","fetchVisitAndUnitsAsync_marked","fetchVisitAndUnitsAsync_marked2","serverDateFormat","displayDateFormat","serverToDate","memoize","serverDate","parsedDate","moment","isValid","serverToTime","serverTime","parsedTime","serverToDisplayDate","serverToDisplayTime","serverToDisplayTimeSlot","displayToServerDate","displayDate","displayToServerTime","displayTime","cache","storeData","getData","objectKey","isString","serverKeyMap","ref","submit","serverValueMap","empty","rid","unitKind","dim","desc","regDate","packagingUnity","trim","serverUnitToClientMap","u","serverVisitToClientMap","_units","_visit","slotFrom","timeslot","slotTo","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","Symbol","iterator","done","return","serverGoodToClientMap","_good","serverDocToClientMap","_doc","clientKeyMap","keys","invert","exclude","clientValueMap","licensePlate","chassisPlate","lq","maritime","environment","waste","clientVisitToServerMap","isUpdate","fromAndTo","displayToServerTimeSlot","ownerTransId","clientUnitToServerMap","_unit","clientGoodToServerMap","isObject","mapBooleansToInt","values","_values","isBoolean","booleanToInt","hasOwnProperty","hzd","hzdData","hzdId","originalHzdId","clientDocToServerMap","defaultUnitFieldValues","pos","ridReg","iso6346Check","con","sum","n","pow","dropOffOnly","fieldName","pickUpOnly","showUnitField","formFields","unitVerification","inOut","showDropOffUnitField","showUnitFieldCustomCheck","showDocField","_storeUnit","storeUnitActions","storeUnit_marked","takeLatest","storeUnit_marked2","_storeVisit","storeVisitActions","storeVisit_marked","storeVisit_marked2","_deleteVisit","deleteVisit","deleteVisitActions","deleteVisit_marked","deleteVisit_marked2","_submitVisit","submitVisitActions","submitVisit_marked","submitVisit_marked2","_fetchUnits","fetchUnits","getUnits","fetchUnits_marked","fetchUnits_marked2","_fetchVisits","fetchVisits","visits","fetchVisits_marked","fetchVisits_marked2","_deleteUnit","deleteUnitActions","deleteUnit_marked","deleteUnit_marked2","_verifyUnit","verifyUnitActions","verifyUnit_marked","verifyUnit_marked2","_fetchGoods","fetchGoods","goods","fetchGoods_marked","fetchGoods_marked2","_storeGood","storeGoodActions","storeGood_marked","storeGood_marked2","_deleteGood","deleteGood","deleteGoodActions","deleteGood_marked","deleteGood_marked2","_fetchDocs","fetchDocs","docs","fetchDocs_marked","fetchDocs_marked2","_storeDoc","storeDocActions","storeDoc_marked","storeDoc_marked2","_deleteDoc","deleteDoc","deleteDocActions","deleteDoc_marked","deleteDoc_marked2","_fetchVisitOnStoreUnit","fetchVisitOnStoreUnit","fetchVisitOnStoreUnit_marked","fetchVisitOnStoreUnit_marked2","_fetchVisitOnDeleteUnit","fetchVisitOnDeleteUnit","fetchVisitOnDeleteUnit_marked","fetchVisitOnDeleteUnit_marked2","_fetchTimeSlots","fetchTimeSlots","fetchTimeSlots_marked","fetchTimeSlots_marked2","redirectToEditVisitOnCreateVisit","redirectToEditVisitOnCreateVisit_marked","redirectTo404OnVisitNotFound","redirectTo404OnVisitNotFound_marked","redirectOnSubmit","redirectOnSubmit_marked","_clearVisitOnFormReset","clearVisitOnFormReset","form","abrupt","clearVisitOnFormReset_marked","clearVisitOnFormReset_marked2","BaseRepository","parseJSON","preferredLicensePlate","getCompanyName","COMPANY_NAME_FETCH_REQUEST","COMPANY_NAME_FETCH_SUCCESS","COMPANY_NAME_FETCH_FAILED","PROFILE_SET_LOCALE","setPreferredLicensePlate","redirect","dispatch","fetchCompanyName","setPreferredLanguage","locale","browserStore","setLanguageOnLogin","lang","setLanguageOnLogin_marked","sagaMiddleware","createSagaMiddleware","checkAccess","requiredLevel","currentLevel","bitMask","userRoles","roles","invariant","reduce","intCode","title","buildRoles","accessLevels","accessLevelDeclarations","declarationsArr","level","resultBitMask","levelName","levelsArr","roleName","buildAccessLevels","public","anon","user","admin","actualTrucks","actualLeadTime","dayOfWeek","actualOccupancy","averageLeadTime","railStatusImport","_ref5","railStatusExport","_ref6","createReducer","profile","Map","profileWithCompanyName","cTerminals","terminals","terminal","rights","cRights","agg","toConsumableArray","profileWithTerminals","fromJS","_action$sessionData","reqComp","reqCompName","unitKinds","transCompList","typeDocList","unitStates","prefLP","prefComp","pu","us","merge","fullName","requestingCompany","licensePlates","authActionTypes","List","of","unitIndex","reg","mergeDeep","findIndex","delete","setIn","count","has","_v","toJS","begin","end","timeSlot","findBeginAndEnd","INITIAL_STATE","goodIndex","docIndex","auth","isAuthenticating","userName","accessLvl","errorId","statusCode","session","reduxFormActions","DESTROY","deleteIn","RAIL_STATUS_IMPORT","RAIL_STATUS_EXPORT","reportsReducer","isLoading","isError","immutableize","reducer","getIn","reducers","profileReducer","visitsReducer","visitReducer","timeSlotsReducer","timeSlotConfigReducer","licensePlatesReducer","authReducer","sessionReducer","unitVerificationReducer","formReducer","routeReducer","goodsReducer","docsReducer","rootReducer","combineReducers","middleware","syncHistory","thunk","rest","objectWithoutProperties","_types","FAILURE","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","actionType","console","log","actions","requestName","toLowerCase","initialState","companyName","navigator","language","browserLanguage","currentLocale","firstName","lastName","compose","applyMiddleware","f","createStore","finalCreateStore","bindCheckAuth","redux","notAuthorizedHandler","accessDeniedHandler","accessLevel","checkAccessHandler","nextState","currentAccessLvl","isAuthorized","getStats","ProgressBar","classes","style","props","progress","indeterminate","determinate","width","react_default","createElement","className","ClassNames","React","PureRenderComponent","PureRenderMixin","shouldComponentUpdate","I18nRepository","Intl","_this","classCallCheck","possibleConstructorReturn","getPrototypeOf","messages","messagesLoading","getLanguageData","_this2","getTranslations","setState","nextProps","_this$props","components_ProgressBar","react_intl","propTypes","PropTypes","oneOf","IntlContainer","connect","VersionCheck","hash","hashChanged","refreshState","AppRepository","stats","files","clearInterval","iv","refreshBrowser","e","reload","setInterval","versionCheckInterval","onClick","RootComponent","loading","getConfig","jwtDecode","initRouting","requireAccess","routes","createRoutes","lib","components_VersionCheck_VersionCheck","react_router_lib","history","getPackagingUnity","getUnitKinds","getDocTypes","getTerminals","getVisitIds","keySeq","getLicensePlates","getLocale","getExecutingTransportCompanies","getOwnerTransporterId","getPrefComp","isAllowed","right","getUnitStates","materialize","STYLES","WAVES","SIZES","PLACEMENTS","SCALES","ICON_SIZES","Icon","material-icons","constants","forEach","s","classNames","idgen","oldId","Button","renderIcon","bind","assertThisInitialized","renderFab","Children","child","icon","components_Icon","fab","modal","waves","Comp","btn","waves-effect","showStyle","Col","offset","col","defaultProps","Input","defaultValue","_onChange","isSelect","browserDefault","initMaterialDatePicker","initMaterialSelect","refs","inputEl","material_select","$inputText","datePickerOptions","datePicker","pickadate","onChange","_this3","initialValue","placeholder","wrapperClass","labelSwitchOff","labelSwitchOn","help","suffix","touched","input-field","size","inputType","inputClasses","browser-default","labelClasses","htmlLabel","htmlFor","helpLabel","errorLabel","cloneElement","autoComplete","only","Row","Table","centered","hoverable","responsive-table","responsive","striped","bordered","Overlay","_renderOverlay","_unrenderOverlay","_overlayTarget","getContainerDOMNode","appendChild","_mountOverlayTarget","_overlayInstance","ReactDOM","renderOverlay","unmountComponentAtNode","isMounted","findDOMNode","OverlayTrigger","isOverlayShown","showOverlay","overlayID","overlay","onRequestHide","toggle","openModal","Modal","fixedFooter","bottomSheet","onClickAgree","onClickDisagree","textAgree","closeOnAgree","textDisagree","agreeElement","components_OverlayTrigger","components_Button","flat","Toast","Materialize","toast","rounded","Collapsible","renderItem","handleSelect","activeKey","defaultActiveKey","accordion","collapsible","eventKey","onSelect","noJQuery","popout","initCollapsible","cx","data-collapsible","CollapsibleItem","handleClick","renderBody","display","collapsible-header","Spinner","spinnerClasses","spinner-layer","Card","renderTitle","reveal","revealIcon","card-title","grey-text","text-darken-4","activator","textClassName","card","renderReveal","renderAction","CardPanel","card-panel","Tooltip","tt","tooltip","text","other","data-position","data-tooltip","Select","items","optionLabel","optionValue","opt","components_Input","renderOptions","FreeTextSelect","l","components_Select","_this$props2","renderSelect","Bubble","windowSize","containerSelector","circle","circleWrapper","backgroundColor","clone","position","background-color","border-radius","left","pageX","top","pageY","margin-left","margin-top","webkit-user-select","-moz-user-select","-ms-user-select","z-index","animationProps","animationSettings","duration","easing","complete","detach","isFunction","onComplete","overflow","animate","innerWidth","innerHeight","sqrt","Header","marginLeft","spring","opacity","page-header","react_motion","defaultStyles","getStartValue","styles","getEndValue","configs","Page","page-main","components_Row","PageMain","marginTop","sideNav","full","colClasses","offset-m3","colM","components_Col","esm_extends","PageLeft","sideBar","Navigation","_Component","inherits","esm_createClass","sideMenuTrigger","closeOnClick","activeClassName","data-activates","settingsLink","logoutLink","NavigationContainer","actionCreators","TechInfo","process","Footer","Footer_TechInfo","onLocaleChange","lastMessages","FlashMessage","formatMessage","msg","flash","isRequestingData","isRequestingResource","req","getFlashMessage","App","getChildContext","localeChangedHandler","isRequesting","intl","components_FlashMessage_FlashMessage","components_Footer","bool","object","intlShape","isRequired","childContextTypes","AppContainer","injectIntl","requestActionsFor","resourceName","getReports","Widget","onRefresh","components_Card","Chart","helpers","Type","labelsFilter","scaleBeginAtZero","scaleShowGridLines","scaleGridLineColor","scaleGridLineWidth","barShowStroke","barStrokeWidth","barValueSpacing","barDatasetSpacing","bezierCurve","bezierCurveTension","pointDot","pointDotRadius","pointDotStrokeWidth","pointHitDetectionRadius","datasetStroke","datasetStrokeWidth","datasetFill","legendTemplate","initialize","barDatasets","lineDatasets","ScaleClass","Scale","offsetGridLines","calculateBarX","datasetCount","datasetIndex","barIndex","xWidth","calculateBaseWidth","xAbsolute","calculateX","barWidth","calculateBarWidth","PointClass","Point","strokeWidth","radius","hitDetectionRadius","ctx","chart","inRange","mouseX","x","datasets","showTooltips","bindEvents","tooltipEvents","evt","activeData","getDataAtEvent","eachBars","bar","restore","eachPoints","point","fillColor","highlightFill","strokeColor","highlightStroke","showTooltip","BarClass","Rectangle","showStroke","dataset","datasetObject","bars","pointColor","pointStrokeColor","points","dataPoint","labels","datasetLabel","pointHighlightFill","pointHighlightStroke","buildScale","scale","y","endPoint","save","update","activeElements","getPointsAtEvent","getBarsAtEvent","pointsArray","eventPosition","getRelativePosition","barsArray","datasetIterator","self","scaleOptions","templateString","scaleLabel","textColor","scaleFontColor","fontSize","scaleFontSize","fontStyle","scaleFontStyle","fontFamily","scaleFontFamily","valuesCount","beginAtZero","integersOnly","scaleIntegersOnly","calculateYRange","currentHeight","updatedRanges","calculateScaleRange","dataTotal","xLabels","font","fontString","lineWidth","scaleLineWidth","lineColor","scaleLineColor","gridLineWidth","gridLineColor","padding","showScale","showLabels","scaleShowLabels","scaleOverride","noop","steps","scaleSteps","stepValue","scaleStepWidth","scaleStartValue","addData","valuesArray","lineDataSetIndex","barDataSetIndex","addXLabel","removeXLabel","reflow","newScaleProps","draw","ease","easingDecimal","hasValue","previousPoint","findPreviousWhere","pointsWithValues","where","transition","calculateY","tension","controlPoints","splineCurve","findNextWhere","nextPoint","outer","startPoint","inner","strokeStyle","beginPath","moveTo","previous","bezierCurveTo","lineTo","stroke","fillStyle","closePath","fill","ChartElements","forceRedraw","Elements","changed","dataArray","dataIndex","tooltipLabels","tooltipColors","medianPosition","dataCollection","xMax","yMax","xMin","yMin","xPositions","yPositions","multiTooltipTemplate","_saved","MultiTooltip","xPadding","tooltipXPadding","yPadding","tooltipYPadding","xOffset","tooltipXOffset","tooltipFillColor","tooltipFontColor","tooltipFontFamily","tooltipFontStyle","tooltipFontSize","titleTextColor","tooltipTitleFontColor","titleFontFamily","tooltipTitleFontFamily","titleFontStyle","tooltipTitleFontStyle","titleFontSize","tooltipTitleFontSize","cornerRadius","tooltipCornerRadius","legendColors","legendColorBackground","multiTooltipKeyBackground","Element","tooltipPosition","round","caretHeight","tooltipCaretSize","tooltipTemplate","core","chartType","methodNames","dataKey","extras","ChartClass","_React$Component","_getPrototypeOf2","_len","Array","_key","displayName","initializeChart","require","getContext","redraw","destroy","dataKeys","updatePoints","calculateXLabelRotation","_props","extra","Line","Radar","Bar","segment","segmentIndex","segments","setIndex","pointIndex","LineBar","vars","Preloader","spinners","preloader-wrapper","flashing","components_Spinner","chartOptions","maintainAspectRatio","rawDataToChartData","raw","isEmpty","dayStart","startHour","dayEnd","histCount","actualCount","ActualTrucks","fetchData","rawData","components_Widget","isoWeekday","components_Preloader","charts_LineBar","dataSet1","dataSet2","maxReg","actualReg","ActualOccupancy","dateField","react_chartjs","maxRefMinutes","dataSet0","avgLeadTime","AverageLeadTime","dayOfWeekField","percentColors","pct","getColorForPercentage","lower","upper","rangePct","pctLower","pctUpper","floor","Gauge","arc","arcEndRad","arcStartRad","degToRad","endPadRad","margin","needle","percToDeg","percToRad","sectionIndx","sectionPerc","startPadRad","totalPercent","_i","percent","numSections","d3","gauge","bottom","perc","deg","PI","padRad","svg","outerRadius","innerRadius","startAngle","endAngle","Needle","len","drawOn","mkCmd","animateOn","selectAll","tween","percentOfPercent","thetaRad","topX","topY","cos","sin","ActualLeadTime","ActualLeadTime_Gauge","refValues","Pivot","_ref$data","timeLabel","grandTotal","totals","inThePast","entry","time","components_Table","c","rowSpan","total","RailStatusIn","components_Pivot_Pivot","RailStatusOut","Dashboard","fields","reports","components_Header","components_Page","Chart_ActualTrucks","getActualTrucks","Chart_ActualLeadTime","getActualLeadTime","Chart_ActualOccupancy","getActualOccupancy","Chart_AverageLeadTime","getAverageLeadTime","Pivot_RailStatusIn","getRailStatusImport","Pivot_RailStatusOut","getRailStatusExport","DashboardPage","components_Dashboard","DashboardContainer","reduxForm","getFormState","reduxMountPoint","initialValues","bindActionCreators","Login","signIn","redirectTo","goToRegistration","headerClass","_this$props$fields","handleSubmit","enableDashboard","tabIndex","LoginContainer","profileSelectors","Logout","LicensePlates","_PureRenderComponent","getValues","submitting","components_Toast","array","LicensePlatesContainer","Settings","pageId","license-plate","routeParams","page","components_PageLeft","collection-item","rightArrow","components_PageMain","pageIdToTitle","pageIdToComponent","SettingsContainer","getFormValues","formObj","isNil","ButtonGroup","Chip","Barometer","translate","blocks","components_Tooltip","isBeforeNow","isAfter","TimeSlot","_node","ts","subtract","durationInQuarter","hours","minutes","hist","curr","formatTimeSlot","ClassName","parents","closeModal","TimeSlotPicker_Barometer","Day","onDateChange","displayDay","selectHandler","TimeSlotPicker_TimeSlot","TimeSlotModal","translateFn","hasData","components_Modal","TimeSlotPicker_Day","TimeSlotPicker","TimeSlotPicker_TimeSlotModal","UnitsTable","addUnit","editUnit","showUnit","components_Bubble","floating","overflowX","data-field","colSpan","reference","ctNumber","resetForm","formEl","isNumber","setFormData","_setFormData","prop","GoodsDetailModal","packUnity","showHazardous","_ref$fields","nettoWeight","packagingId","packagingCount","colliId","AgreeEl","transId","checked","ridId","unNr","cls","packingGroup","GoodsTable","goodForm","activeGood","addGood","hazardous","openForm","closeForm","UnitForm_GoodsDetailModal","FileInput","file","handleOnClick","fileInputEl","handleChange","uploadedFile","dataTransfer","isImage","includes","preview","URL","createObjectURL","buttonText","inputAttributes","accept","src","FileUpload","pending","fileInputChangedHandler","uploadDocument","onFileUploadSuccess","onFileUploadFail","uploadUrl","FormData","errorMessage","clearFile","components_FileInput_FileInput","uploadText","cancelText","Attachments","fileUploadSuccessHandler","uploaded","filename","deleteFile","fileId","attachments","FileInput_FileUpload","documentId","DocsDetailModal","docTypes","regPlace","UnitForm_Attachments","DocsTable","updateIdInForm","newDocsFound","getIdOfLastDoc","docForm","UnitForm_DocsDetailModal","UnitReasons","reasons","reason","subject","UnitForm","getDimensions","onCancel","onSubmit","ISO","visitDate","visitLicensePlate","netto","skipGoodsDocsEntry","components_CardPanel","Visit_UnitReasons_UnitReasons","businessRules","components_ButtonGroup","dirty","UnitForm_GoodsTable","addField","UnitForm_DocsTable","VisitForm","_unitWrapper","activeUnit","isEdit","isSubmitting","chassisTypes","canSubmit","chassisType","dateChanged","onTimeSlotDateChange","saveDraft","onOpenUnitForm","onCloseUnitForm","onOpenTimeSlot","timeSlotConfig","mainTitle","isEditUnit","unitWrapperClasses","unit-wrapper","unit-wrapper--edit","cancelUnitForm","closeBubble","removeField","fadeOut","VisitStatus_Chip","t","getDomainName","components_TimeSlotPicker_TimeSlotPicker","components_FreeTextSelect","VisitForm_UnitsTable","show","initial","content","components_UnitForm_UnitForm","hasVisit","hasIn","getTimeSlotConfig","getUnitVerification","Visit","navigatedFromEditToNew","prevProps","isEditVisit","dateChangedHandler","timeSlotDateChangedHandler","openTimeSlotHandler","isBefore","saveUnitHandler","activeUnitIndex","getUnitKindFromCode","getDimFromDesc","getActiveUnit","verifyUnitHandler","closeUnitFormHandler","openUnitFormHandler","saveGoodHandler","saveDocHandler","saveDraftHandler","getChassisTypes","addUnitHandler","removeUnitHandler","editUnitHandler","defaultChassisType","default","_arguments","selectedTerminal","components_VisitForm_VisitForm","shape","visitIds","loadVisit","VisitContainer","required","timeSlotFormat","maxLen12","maxLen35","maxLen15","maxLen5","minLen6","minLen3","iso6346","chassis","isNaN","prefCompId","VisitHeader","classNameDate","reg-header__date","classNameTimeslot","reg-header__timeslot","ImportIcon","viewBox","ExportIcon","Unit","SvgIcon_ExportIcon","SvgIcon_ImportIcon","components_CollapsibleItem","renderUnitHeader","renderUnitBody","Units","components_Collapsible","Visit_Unit_Unit","VisitBody","transName","Units_Units","onDelete","Visit_VisitHeader","Visit_VisitBody","VisitFilterForm","onClickFilter","statuses","lp","tc","vn","VisitFilter","toggleFilterExpanded","filterExpanded","submitHandler","omitBy","arr","defineProperty","field","components_VisitFilterForm","buildSelectDataFrom","VisitOverview","_ref$actions","containers_VisitFilter","VisitOverview_Visit_Visit","VisitOverviewContainer","components_VisitOverview_VisitOverview","NotFound","Upload","maxWidth","Redirect","router","contextTypes","RootComponent_RootComponent","onEnter","UploadContainer","getElementById"],"mappings":"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","file":"static/js/main.b4ec3b99.chunk.js","sourcesContent":["/* eslint-disable */\n\n/*!\n * pickadate.js v3.5.0, 2014/04/13\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n\n(function ( factory ) {\n\n window.Picker = factory( jQuery );\n\n}(function( $ ) {\n\n var $window = $( window )\n var $document = $( document )\n var $html = $( document.documentElement )\n\n\n /**\n * The picker constructor that creates a blank picker.\n */\n function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\n\n // If there’s no element, return the picker constructor.\n if ( !ELEMENT ) return PickerConstructor\n\n\n var\n IS_DEFAULT_THEME = false,\n\n\n // The state of the picker.\n STATE = {\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) )\n },\n\n\n // Merge the defaults and options passed.\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\n\n\n // Merge the default classes with the settings classes.\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\n\n\n // The element node wrapper into a jQuery object.\n $ELEMENT = $( ELEMENT ),\n\n\n // Pseudo picker constructor.\n PickerInstance = function() {\n return this.start()\n },\n\n\n // The picker prototype.\n P = PickerInstance.prototype = {\n\n constructor: PickerInstance,\n\n $node: $ELEMENT,\n\n\n /**\n * Initialize everything\n */\n start: function() {\n\n // If it’s already started, do nothing.\n if ( STATE && STATE.start ) return P\n\n\n // Update the picker states.\n STATE.methods = {}\n STATE.start = true\n STATE.open = false\n STATE.type = ELEMENT.type\n\n\n // Confirm focus state, convert into text input to remove UA stylings,\n // and set as readonly to prevent keyboard popup.\n ELEMENT.autofocus = ELEMENT == getActiveElement()\n ELEMENT.readOnly = !SETTINGS.editable\n ELEMENT.id = ELEMENT.id || STATE.id\n if ( ELEMENT.type != 'text' ) {\n ELEMENT.type = 'text'\n }\n\n\n // Create a new picker component with the settings.\n P.component = new COMPONENT(P, SETTINGS)\n\n\n // Create the picker root with a holder and then prepare it.\n P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id=\"' + ELEMENT.id + '_root\" tabindex=\"0\"') )\n prepareElementRoot()\n\n\n // If there’s a format for the hidden input element, create the element.\n if ( SETTINGS.formatSubmit ) {\n prepareElementHidden()\n }\n\n\n // Prepare the input element.\n prepareElement()\n\n\n // Insert the root as specified in the settings.\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\n else $ELEMENT.after( P.$root )\n\n\n // Bind the default component and settings events.\n P.on({\n start: P.component.onStart,\n //render: P.component.onRender, //TODO dvg: Gives error\n stop: P.component.onStop,\n open: P.component.onOpen,\n close: P.component.onClose,\n set: P.component.onSet\n }).on({\n start: SETTINGS.onStart,\n //render: SETTINGS.onRender,\n stop: SETTINGS.onStop,\n open: SETTINGS.onOpen,\n close: SETTINGS.onClose,\n set: SETTINGS.onSet\n })\n\n\n // Once we’re all set, check the theme in use.\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] )\n\n\n // If the element has autofocus, open the picker.\n if ( ELEMENT.autofocus ) {\n P.open()\n }\n\n\n // Trigger queued the “start” and “render” events.\n return P.trigger( 'start' ).trigger( 'render' )\n }, //start\n\n\n /**\n * Render a new picker\n */\n render: function( entireComponent ) {\n\n // Insert a new component holder in the root or box.\n if ( entireComponent ) P.$root.html( createWrappedComponent() )\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\n\n // Trigger the queued “render” events.\n return P.trigger( 'render' )\n }, //render\n\n\n /**\n * Destroy everything\n */\n stop: function() {\n\n // If it’s already stopped, do nothing.\n if ( !STATE.start ) return P\n\n // Then close the picker.\n P.close()\n\n // Remove the hidden field.\n if ( P._hidden ) {\n P._hidden.parentNode.removeChild( P._hidden )\n }\n\n // Remove the root.\n P.$root.remove()\n\n // Remove the input class, remove the stored data, and unbind\n // the events (after a tick for IE - see `P.close`).\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\n setTimeout( function() {\n $ELEMENT.off( '.' + STATE.id )\n }, 0)\n\n // Restore the element state\n ELEMENT.type = STATE.type\n ELEMENT.readOnly = false\n\n // Trigger the queued “stop” events.\n P.trigger( 'stop' )\n\n // Reset the picker states.\n STATE.methods = {}\n STATE.start = false\n\n return P\n }, //stop\n\n\n /**\n * Open up the picker\n */\n open: function( dontGiveFocus ) {\n\n // If it’s already open, do nothing.\n if ( STATE.open ) return P\n\n // Add the “active” class.\n $ELEMENT.addClass( CLASSES.active )\n aria( ELEMENT, 'expanded', true )\n\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\n // killing transitions :(. So add the “opened” state on the next tick.\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n setTimeout( function() {\n\n // Add the “opened” class to the picker root.\n P.$root.addClass( CLASSES.opened )\n aria( P.$root[0], 'hidden', false )\n\n }, 0 )\n\n // If we have to give focus, bind the element and doc events.\n if ( dontGiveFocus !== false ) {\n\n // Set it as open.\n STATE.open = true\n\n // Prevent the page from scrolling.\n if ( IS_DEFAULT_THEME ) {\n $html.\n css( 'overflow', 'hidden' ).\n css( 'padding-right', '+=' + getScrollbarWidth() )\n }\n\n // Pass focus to the root element’s jQuery object.\n // * Workaround for iOS8 to bring the picker’s root into view.\n P.$root[0].focus()\n\n // Bind the document events.\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\n\n var target = event.target\n\n // If the target of the event is not the element, close the picker picker.\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\n // Also, for Firefox, a click on an `option` element bubbles up directly\n // to the doc. So make sure the target wasn't the doc.\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\n // which causes the picker to unexpectedly close when right-clicking it. So make\n // sure the event wasn’t a right-click.\n if ( target != ELEMENT && target != document && event.which != 3 ) {\n\n // If the target was the holder that covers the screen,\n // keep the element focused to maintain tabindex.\n P.close( target === P.$root.children()[0] )\n }\n\n }).on( 'keydown.' + STATE.id, function( event ) {\n\n var\n // Get the keycode.\n keycode = event.keyCode,\n\n // Translate that to a selection change.\n keycodeToMove = P.component.key[ keycode ],\n\n // Grab the target.\n target = event.target\n\n\n // On escape, close the picker and give focus.\n if ( keycode == 27 ) {\n P.close( true )\n }\n\n\n // Check if there is a key movement or “enter” keypress on the element.\n else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) {\n\n // Prevent the default action to stop page movement.\n event.preventDefault()\n\n // Trigger the key movement action.\n if ( keycodeToMove ) {\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\n }\n\n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\n P.set( 'select', P.component.item.highlight ).close()\n }\n }\n\n\n // If the target is within the root and “enter” is pressed,\n // prevent the default action and trigger a click on the target instead.\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\n event.preventDefault()\n target.click()\n }\n })\n }\n\n // Trigger the queued “open” events.\n return P.trigger( 'open' )\n }, //open\n\n\n /**\n * Close the picker\n */\n close: function( giveFocus ) {\n\n // If we need to give focus, do it before changing states.\n if ( giveFocus ) {\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\n // The focus is triggered *after* the close has completed - causing it\n // to open again. So unbind and rebind the event at the next tick.\n P.$root.off( 'focus.toOpen' )[0].focus()\n setTimeout( function() {\n P.$root.on( 'focus.toOpen', handleFocusToOpenEvent )\n }, 0 )\n }\n\n // Remove the “active” class.\n $ELEMENT.removeClass( CLASSES.active )\n aria( ELEMENT, 'expanded', false )\n\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\n // killing transitions :(. So remove the “opened” state on the next tick.\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n setTimeout( function() {\n\n // Remove the “opened” and “focused” class from the picker root.\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\n aria( P.$root[0], 'hidden', true )\n\n }, 0 )\n\n // If it’s already closed, do nothing more.\n if ( !STATE.open ) return P\n\n // Set it as closed.\n STATE.open = false\n\n // Allow the page to scroll.\n if ( IS_DEFAULT_THEME ) {\n $html.\n css( 'overflow', '' ).\n css( 'padding-right', '-=' + getScrollbarWidth() )\n }\n\n // Unbind the document events.\n $document.off( '.' + STATE.id )\n\n // Trigger the queued “close” events.\n return P.trigger( 'close' )\n }, //close\n\n\n /**\n * Clear the values\n */\n clear: function( options ) {\n return P.set( 'clear', null, options )\n }, //clear\n\n\n /**\n * Set something\n */\n set: function( thing, value, options ) {\n\n var thingItem, thingValue,\n thingIsObject = $.isPlainObject( thing ),\n thingObject = thingIsObject ? thing : {}\n\n // Make sure we have usable options.\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\n\n if ( thing ) {\n\n // If the thing isn’t an object, make it one.\n if ( !thingIsObject ) {\n thingObject[ thing ] = value\n }\n\n // Go through the things of items to set.\n for ( thingItem in thingObject ) {\n\n // Grab the value of the thing.\n thingValue = thingObject[ thingItem ]\n\n // First, if the item exists and there’s a value, set it.\n if ( thingItem in P.component.item ) {\n if ( thingValue === undefined ) thingValue = null\n P.component.set( thingItem, thingValue, options )\n }\n\n // Then, check to update the element value and broadcast a change.\n if ( thingItem == 'select' || thingItem == 'clear' ) {\n $ELEMENT.\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\n trigger( 'change' )\n }\n }\n\n // Render a new picker.\n P.render()\n }\n\n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\n return options.muted ? P : P.trigger( 'set', thingObject )\n }, //set\n\n\n /**\n * Get something\n */\n get: function( thing, format ) {\n\n // Make sure there’s something to get.\n thing = thing || 'value'\n\n // If a picker state exists, return that.\n if ( STATE[ thing ] != null ) {\n return STATE[ thing ]\n }\n\n // Return the submission value, if that.\n if ( thing == 'valueSubmit' ) {\n if ( P._hidden ) {\n return P._hidden.value\n }\n thing = 'value'\n }\n\n // Return the value, if that.\n if ( thing == 'value' ) {\n return ELEMENT.value\n }\n\n // Check if a component item exists, return that.\n if ( thing in P.component.item ) {\n if ( typeof format == 'string' ) {\n var thingValue = P.component.get( thing )\n return thingValue ?\n PickerConstructor._.trigger(\n P.component.formats.toString,\n P.component,\n [ format, thingValue ]\n ) : ''\n }\n return P.component.get( thing )\n }\n }, //get\n\n\n\n /**\n * Bind events on the things.\n */\n on: function( thing, method, internal ) {\n\n var thingName, thingMethod,\n thingIsObject = $.isPlainObject( thing ),\n thingObject = thingIsObject ? thing : {}\n\n if ( thing ) {\n\n // If the thing isn’t an object, make it one.\n if ( !thingIsObject ) {\n thingObject[ thing ] = method\n }\n\n // Go through the things to bind to.\n for ( thingName in thingObject ) {\n\n // Grab the method of the thing.\n thingMethod = thingObject[ thingName ]\n\n // If it was an internal binding, prefix it.\n if ( internal ) {\n thingName = '_' + thingName\n }\n\n // Make sure the thing methods collection exists.\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\n\n // Add the method to the relative method collection.\n STATE.methods[ thingName ].push( thingMethod )\n }\n }\n\n return P\n }, //on\n\n\n\n /**\n * Unbind events on the things.\n */\n off: function() {\n var i, thingName,\n names = arguments;\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\n thingName = names[i]\n if ( thingName in STATE.methods ) {\n delete STATE.methods[thingName]\n }\n }\n return P\n },\n\n\n /**\n * Fire off method events.\n */\n trigger: function( name, data ) {\n var _trigger = function( name ) {\n var methodList = STATE.methods[ name ]\n if ( methodList ) {\n methodList.map( function( method ) {\n PickerConstructor._.trigger( method, P, [ data ] )\n })\n }\n }\n _trigger( '_' + name )\n _trigger( name )\n return P\n } //trigger\n } //PickerInstance.prototype\n\n\n /**\n * Wrap the picker holder components together.\n */\n function createWrappedComponent() {\n\n // Create a picker wrapper holder\n return PickerConstructor._.node( 'div',\n\n // Create a picker wrapper node\n PickerConstructor._.node( 'div',\n\n // Create a picker frame\n PickerConstructor._.node( 'div',\n\n // Create a picker box node\n PickerConstructor._.node( 'div',\n\n // Create the components nodes.\n P.component.nodes( STATE.open ),\n\n // The picker box class\n CLASSES.box\n ),\n\n // Picker wrap class\n CLASSES.wrap\n ),\n\n // Picker frame class\n CLASSES.frame\n ),\n\n // Picker holder class\n CLASSES.holder\n ) //endreturn\n } //createWrappedComponent\n\n\n\n /**\n * Prepare the input element with all bindings.\n */\n function prepareElement() {\n\n $ELEMENT.\n\n // Store the picker data by component name.\n data(NAME, P).\n\n // Add the “input” class name.\n addClass(CLASSES.input).\n\n // Remove the tabindex.\n // attr('tabindex', -1).\n\n // If there’s a `data-value`, update the value of the element.\n val( $ELEMENT.data('value') ?\n P.get('select', SETTINGS.format) :\n ELEMENT.value\n ).\n\n // On focus/click, open the picker.\n on( 'focus.' + STATE.id + ' click.' + STATE.id,\n debounce(function(event) {\n event.preventDefault()\n P.open()\n }, 150))\n\n // Mousedown handler to capture when the user starts interacting\n // with the picker. This is used in working around a bug in Chrome 73.\n .on('mousedown', function() {\n STATE.handlingOpen = true;\n var handler = function() {\n // By default mouseup events are fired before a click event.\n // By using a timeout we can force the mouseup to be handled\n // after the corresponding click event is handled.\n setTimeout(function() {\n $(document).off('mouseup', handler);\n STATE.handlingOpen = false;\n }, 0);\n };\n $(document).on('mouseup', handler);\n });\n\n\n // Only bind keydown events if the element isn’t editable.\n if ( !SETTINGS.editable ) {\n\n $ELEMENT.\n //\n // // On focus/click, focus onto the root to open it up.\n // on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) {\n // event.preventDefault()\n // P.$root[0].focus()\n // }).\n\n // Handle keyboard event based on the picker being opened or not.\n on( 'keydown.' + STATE.id, handleKeydownEvent )\n }\n\n\n // Update the aria attributes.\n aria(ELEMENT, {\n haspopup: true,\n expanded: false,\n readonly: false,\n owns: ELEMENT.id + '_root'\n })\n }\n\n function debounce(func, wait, immediate) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n\n /**\n * Prepare the root picker element with all bindings.\n */\n function prepareElementRoot() {\n\n P.$root.\n\n on({\n\n // For iOS8.\n keydown: handleKeydownEvent,\n\n // When something within the root is focused, stop from bubbling\n // to the doc and remove the “focused” state from the root.\n focusin: function( event ) {\n P.$root.removeClass( CLASSES.focused )\n event.stopPropagation()\n },\n\n // When something within the root holder is clicked, stop it\n // from bubbling to the doc.\n 'mousedown click': function( event ) {\n\n var target = event.target\n\n // Make sure the target isn’t the root holder so it can bubble up.\n if ( target != P.$root.children()[ 0 ] ) {\n\n event.stopPropagation()\n\n // * For mousedown events, cancel the default action in order to\n // prevent cases where focus is shifted onto external elements\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\n // Also, for Firefox, don’t prevent action on the `option` element.\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\n\n event.preventDefault()\n\n // Re-focus onto the root so that users can click away\n // from elements focused within the picker.\n P.$root[0].focus()\n }\n }\n }\n }).\n\n // Add/remove the “target” class on focus and blur.\n on({\n focus: function() {\n $ELEMENT.addClass( CLASSES.target )\n },\n blur: function() {\n $ELEMENT.removeClass( CLASSES.target )\n }\n }).\n\n // Open the picker and adjust the root “focused” state\n on( 'focus.toOpen', handleFocusToOpenEvent ).\n\n // If there’s a click on an actionable element, carry out the actions.\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\n\n var $target = $( this ),\n targetData = $target.data(),\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\n\n // * For IE, non-focusable elements can be active elements as well\n // (http://stackoverflow.com/a/2684561).\n activeElement = getActiveElement()\n activeElement = activeElement && ( activeElement.type || activeElement.href )\n\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\n P.$root[0].focus()\n }\n\n // If something is superficially changed, update the `highlight` based on the `nav`.\n if ( !targetDisabled && targetData.nav ) {\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\n }\n\n // If something is picked, set `select` then close with focus.\n else if ( !targetDisabled && 'pick' in targetData ) {\n P.set( 'select', targetData.pick )\n }\n\n // If a “clear” button is pressed, empty the values and close with focus.\n else if ( targetData.clear ) {\n P.clear().close( true )\n }\n\n else if ( targetData.close ) {\n P.close( true )\n }\n\n }) //P.$root\n\n aria( P.$root[0], 'hidden', true )\n }\n\n\n /**\n * Prepare the hidden input element along with all bindings.\n */\n function prepareElementHidden() {\n\n var name\n\n if ( SETTINGS.hiddenName === true ) {\n name = ELEMENT.name\n ELEMENT.name = ''\n }\n else {\n name = [\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\n ]\n name = name[0] + ELEMENT.name + name[1]\n }\n\n P._hidden = $(\n ''\n )[0]\n\n $ELEMENT.\n\n // If the value changes, update the hidden input with the correct format.\n on('change.' + STATE.id, function() {\n P._hidden.value = ELEMENT.value ?\n P.get('select', SETTINGS.formatSubmit) :\n ''\n })\n\n\n // Insert the hidden input as specified in the settings.\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden )\n else $ELEMENT.after( P._hidden )\n }\n\n\n // For iOS8.\n function handleKeydownEvent( event ) {\n\n var keycode = event.keyCode,\n\n // Check if one of the delete keys was pressed.\n isKeycodeDelete = /^(8|46)$/.test(keycode)\n\n // For some reason IE clears the input value on “escape”.\n if ( keycode == 27 ) {\n P.close()\n return false\n }\n\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\n\n // Prevent it from moving the page and bubbling to doc.\n event.preventDefault()\n event.stopPropagation()\n\n // If `delete` was pressed, clear the values and close the picker.\n // Otherwise open the picker.\n if ( isKeycodeDelete ) { P.clear().close() }\n else { P.open() }\n }\n }\n\n\n // Separated for IE\n function handleFocusToOpenEvent( event ) {\n\n // Stop the event from propagating to the doc.\n event.stopPropagation()\n\n // If it’s a focus event, add the “focused” class to the root.\n if ( event.type == 'focus' ) {\n P.$root.addClass( CLASSES.focused )\n }\n\n // And then finally open the picker.\n P.open()\n }\n\n\n // Return a new picker instance.\n return new PickerInstance()\n } //PickerConstructor\n\n\n\n /**\n * The default classes and prefix to use for the HTML classes.\n */\n PickerConstructor.klasses = function( prefix ) {\n prefix = prefix || 'picker'\n return {\n\n picker: prefix,\n opened: prefix + '--opened',\n focused: prefix + '--focused',\n\n input: prefix + '__input',\n active: prefix + '__input--active',\n target: prefix + '__input--target',\n\n holder: prefix + '__holder',\n\n frame: prefix + '__frame',\n wrap: prefix + '__wrap',\n\n box: prefix + '__box'\n }\n } //PickerConstructor.klasses\n\n\n\n /**\n * Check if the default theme is being used.\n */\n function isUsingDefaultTheme( element ) {\n\n var theme,\n prop = 'position'\n\n // For IE.\n if ( element.currentStyle ) {\n theme = element.currentStyle[prop]\n }\n\n // For normal browsers.\n else if ( window.getComputedStyle ) {\n theme = getComputedStyle( element )[prop]\n }\n\n return theme == 'fixed'\n }\n\n\n\n /**\n * Get the width of the browser’s scrollbar.\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\n */\n function getScrollbarWidth() {\n\n if ( $html.height() <= $window.height() ) {\n return 0\n }\n\n var $outer = $( '
' ).\n appendTo( 'body' )\n\n // Get the width without scrollbars.\n var widthWithoutScroll = $outer[0].offsetWidth\n\n // Force adding scrollbars.\n $outer.css( 'overflow', 'scroll' )\n\n // Add the inner div.\n var $inner = $( '
' ).appendTo( $outer )\n\n // Get the width with scrollbars.\n var widthWithScroll = $inner[0].offsetWidth\n\n // Remove the divs.\n $outer.remove()\n\n // Return the difference between the widths.\n return widthWithoutScroll - widthWithScroll\n }\n\n\n\n /**\n * PickerConstructor helper methods.\n */\n PickerConstructor._ = {\n\n /**\n * Create a group of nodes. Expects:\n * `\n {\n min: {Integer},\n max: {Integer},\n i: {Integer},\n node: {String},\n item: {Function}\n }\n * `\n */\n group: function( groupObject ) {\n\n var\n // Scope for the looped object\n loopObjectScope,\n\n // Create the nodes list\n nodesList = '',\n\n // The counter starts from the `min`\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\n\n\n // Loop from the `min` to `max`, incrementing by `i`\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\n\n // Trigger the `item` function within scope of the object\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\n\n // Splice the subgroup and create nodes out of the sub nodes\n nodesList += PickerConstructor._.node(\n groupObject.node,\n loopObjectScope[ 0 ], // the node\n loopObjectScope[ 1 ], // the classes\n loopObjectScope[ 2 ] // the attributes\n )\n }\n\n // Return the list of nodes\n return nodesList\n }, //group\n\n\n /**\n * Create a dom node string\n */\n node: function( wrapper, item, klass, attribute ) {\n\n // If the item is false-y, just return an empty string\n if ( !item ) return ''\n\n // If the item is an array, do a join\n item = $.isArray( item ) ? item.join( '' ) : item\n\n // Check for the class\n klass = klass ? ' class=\"' + klass + '\"' : ''\n\n // Check for any attributes\n attribute = attribute ? ' ' + attribute : ''\n\n // Return the wrapped item\n return '<' + wrapper + klass + attribute + '>' + item + ''\n }, //node\n\n\n /**\n * Lead numbers below 10 with a zero.\n */\n lead: function( number ) {\n return ( number < 10 ? '0': '' ) + number\n },\n\n\n /**\n * Trigger a function otherwise return the value.\n */\n trigger: function( callback, scope, args ) {\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\n },\n\n\n /**\n * If the second character is a digit, length is 2 otherwise 1.\n */\n digits: function( string ) {\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\n },\n\n\n /**\n * Tell if something is a date object.\n */\n isDate: function( value ) {\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\n },\n\n\n /**\n * Tell if something is an integer.\n */\n isInteger: function( value ) {\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\n },\n\n\n /**\n * Create ARIA attribute strings.\n */\n ariaAttr: ariaAttr\n } //PickerConstructor._\n\n\n\n /**\n * Extend the picker with a component and defaults.\n */\n PickerConstructor.extend = function( name, Component ) {\n\n // Extend jQuery.\n $.fn[ name ] = function( options, action ) {\n\n // Grab the component data.\n var componentData = this.data( name )\n\n // If the picker is requested, return the data object.\n if ( options == 'picker' ) {\n return componentData\n }\n\n // If the component data exists and `options` is a string, carry out the action.\n if ( componentData && typeof options == 'string' ) {\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\n }\n\n // Otherwise go through each matched element and if the component\n // doesn’t exist, create a new picker using `this` element\n // and merging the defaults and options with a deep copy.\n return this.each( function() {\n var $this = $( this )\n if ( !$this.data( name ) ) {\n new PickerConstructor( this, name, Component, options )\n }\n })\n }\n\n // Set the defaults.\n $.fn[ name ].defaults = Component.defaults\n } //PickerConstructor.extend\n\n\n\n function aria(element, attribute, value) {\n if ( $.isPlainObject(attribute) ) {\n for ( var key in attribute ) {\n ariaSet(element, key, attribute[key])\n }\n }\n else {\n ariaSet(element, attribute, value)\n }\n }\n function ariaSet(element, attribute, value) {\n element.setAttribute(\n (attribute == 'role' ? '' : 'aria-') + attribute,\n value\n )\n }\n function ariaAttr(attribute, data) {\n if ( !$.isPlainObject(attribute) ) {\n attribute = { attribute: data }\n }\n data = ''\n for ( var key in attribute ) {\n var attr = (key == 'role' ? '' : 'aria-') + key,\n attrVal = attribute[key]\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\n }\n return data\n }\n\n// IE8 bug throws an error for activeElements within iframes.\n function getActiveElement() {\n try {\n return document.activeElement\n } catch ( err ) { }\n }\n\n\n\n// Expose the picker constructor.\n return PickerConstructor\n\n\n}));\n\n\n","/* eslint-disable no-undef */\n\n/*!\n * Date picker for pickadate.js v3.5.0\n * http://amsul.github.io/pickadate.js/date.htm\n */\n(function ( factory ) {\n\n factory( Picker, jQuery );\n\n}(function( Picker, $ ) {\n\n\n /**\n * Globals and constants\n */\n var DAYS_IN_WEEK = 7,\n WEEKS_IN_CALENDAR = 6,\n _ = Picker._\n\n\n\n /**\n * The date picker constructor\n */\n function DatePicker( picker, settings ) {\n\n var calendar = this,\n element = picker.$node[ 0 ],\n elementValue = element.value,\n elementDataValue = picker.$node.data( 'value' ),\n valueString = elementDataValue || elementValue,\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\n isRTL = function() {\n\n return element.currentStyle ?\n\n // For IE.\n element.currentStyle.direction == 'rtl' :\n\n // For normal browsers.\n getComputedStyle( picker.$root[0] ).direction == 'rtl'\n }\n\n calendar.settings = settings\n calendar.$node = picker.$node\n\n // The queue of methods that will be used to build item objects.\n calendar.queue = {\n min: 'measure create',\n max: 'measure create',\n now: 'now create',\n select: 'parse create validate',\n highlight: 'parse navigate create validate',\n view: 'parse create validate viewset',\n disable: 'deactivate',\n enable: 'activate'\n }\n\n // The component's item object.\n calendar.item = {}\n\n calendar.item.clear = null\n calendar.item.disable = ( settings.disable || [] ).slice( 0 )\n calendar.item.enable = -(function( collectionDisabled ) {\n return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1\n })( calendar.item.disable )\n\n calendar.\n set( 'min', settings.min ).\n set( 'max', settings.max ).\n set( 'now' )\n\n // When there’s a value, set the `select`, which in turn\n // also sets the `highlight` and `view`.\n if ( valueString ) {\n calendar.set( 'select', valueString, { format: formatString })\n }\n\n // If there’s no value, default to highlighting “today”.\n else {\n calendar.\n set( 'select', null ).\n set( 'highlight', calendar.item.now )\n }\n\n\n // The keycode to movement mapping.\n calendar.key = {\n 40: 7, // Down\n 38: -7, // Up\n 39: function() { return isRTL() ? -1 : 1 }, // Right\n 37: function() { return isRTL() ? 1 : -1 }, // Left\n go: function( timeChange ) {\n var highlightedObject = calendar.item.highlight,\n targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange )\n calendar.set(\n 'highlight',\n targetDate,\n { interval: timeChange }\n )\n this.render()\n }\n }\n\n\n // Bind some picker events.\n picker.\n on( 'render', function() {\n picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() {\n var value = this.value\n if ( value ) {\n picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] )\n picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' )\n }\n })\n picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() {\n var value = this.value\n if ( value ) {\n picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] )\n picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' )\n }\n })\n }, 1 ).\n on( 'open', function() {\n var includeToday = ''\n if ( calendar.disabled( calendar.get('now') ) ) {\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\n }\n picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false )\n }, 1 ).\n on( 'close', function() {\n picker.$root.find( 'button, select' ).attr( 'disabled', true )\n }, 1 )\n\n } //DatePicker\n\n\n /**\n * Set a datepicker item object.\n */\n DatePicker.prototype.set = function( type, value, options ) {\n\n var calendar = this,\n calendarItem = calendar.item\n\n // If the value is `null` just set it immediately.\n if ( value === null ) {\n if ( type == 'clear' ) type = 'select'\n calendarItem[ type ] = value\n return calendar\n }\n\n // Otherwise go through the queue of methods, and invoke the functions.\n // Update this as the time unit, and set the final value as this item.\n // * In the case of `enable`, keep the queue but set `disable` instead.\n // And in the case of `flip`, keep the queue but set `enable` instead.\n calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) {\n value = calendar[ method ]( type, value, options )\n return value\n }).pop()\n\n // Check if we need to cascade through more updates.\n if ( type == 'select' ) {\n calendar.set( 'highlight', calendarItem.select, options )\n }\n else if ( type == 'highlight' ) {\n calendar.set( 'view', calendarItem.highlight, options )\n }\n else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {\n if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) {\n calendar.set( 'select', calendarItem.select, options )\n }\n if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) {\n calendar.set( 'highlight', calendarItem.highlight, options )\n }\n }\n\n return calendar\n } //DatePicker.prototype.set\n\n\n /**\n * Get a datepicker item object.\n */\n DatePicker.prototype.get = function( type ) {\n return this.item[ type ]\n } //DatePicker.prototype.get\n\n\n /**\n * Create a picker date object.\n */\n DatePicker.prototype.create = function( type, value, options ) {\n\n var isInfiniteValue,\n calendar = this\n\n // If there’s no value, use the type as the value.\n value = value === undefined ? type : value\n\n\n // If it’s infinity, update the value.\n if ( value == -Infinity || value == Infinity ) {\n isInfiniteValue = value\n }\n\n // If it’s an object, use the native date object.\n else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {\n value = value.obj\n }\n\n // If it’s an array, convert it into a date and make sure\n // that it’s a valid date – otherwise default to today.\n else if ( $.isArray( value ) ) {\n value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] )\n value = _.isDate( value ) ? value : calendar.create().obj\n }\n\n // If it’s a number or date object, make a normalized date.\n else if ( _.isInteger( value ) || _.isDate( value ) ) {\n value = calendar.normalize( new Date( value ), options )\n }\n\n // If it’s a literal true or any other case, set it to now.\n else /*if ( value === true )*/ {\n value = calendar.now( type, value, options )\n }\n\n // Return the compiled object.\n return {\n year: isInfiniteValue || value.getFullYear(),\n month: isInfiniteValue || value.getMonth(),\n date: isInfiniteValue || value.getDate(),\n day: isInfiniteValue || value.getDay(),\n obj: isInfiniteValue || value,\n pick: isInfiniteValue || value.getTime()\n }\n } //DatePicker.prototype.create\n\n\n /**\n * Create a range limit object using an array, date object,\n * literal “true”, or integer relative to another time.\n */\n DatePicker.prototype.createRange = function( from, to ) {\n\n var calendar = this,\n createDate = function( date ) {\n if ( date === true || $.isArray( date ) || _.isDate( date ) ) {\n return calendar.create( date )\n }\n return date\n }\n\n // Create objects if possible.\n if ( !_.isInteger( from ) ) {\n from = createDate( from )\n }\n if ( !_.isInteger( to ) ) {\n to = createDate( to )\n }\n\n // Create relative dates.\n if ( _.isInteger( from ) && $.isPlainObject( to ) ) {\n from = [ to.year, to.month, to.date + from ];\n }\n else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {\n to = [ from.year, from.month, from.date + to ];\n }\n\n return {\n from: createDate( from ),\n to: createDate( to )\n }\n } //DatePicker.prototype.createRange\n\n\n /**\n * Check if a date unit falls within a date range object.\n */\n DatePicker.prototype.withinRange = function( range, dateUnit ) {\n range = this.createRange(range.from, range.to)\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\n }\n\n\n /**\n * Check if two date range objects overlap.\n */\n DatePicker.prototype.overlapRanges = function( one, two ) {\n\n var calendar = this\n\n // Convert the ranges into comparable dates.\n one = calendar.createRange( one.from, one.to )\n two = calendar.createRange( two.from, two.to )\n\n return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) ||\n calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to )\n }\n\n\n /**\n * Get the date today.\n */\n DatePicker.prototype.now = function( type, value, options ) {\n value = new Date()\n if ( options && options.rel ) {\n value.setDate( value.getDate() + options.rel )\n }\n return this.normalize( value, options )\n }\n\n\n /**\n * Navigate to next/prev month.\n */\n DatePicker.prototype.navigate = function( type, value, options ) {\n\n var targetDateObject,\n targetYear,\n targetMonth,\n targetDate,\n isTargetArray = $.isArray( value ),\n isTargetObject = $.isPlainObject( value ),\n viewsetObject = this.item.view/*,\n safety = 100*/\n\n\n if ( isTargetArray || isTargetObject ) {\n\n if ( isTargetObject ) {\n targetYear = value.year\n targetMonth = value.month\n targetDate = value.date\n }\n else {\n targetYear = +value[0]\n targetMonth = +value[1]\n targetDate = +value[2]\n }\n\n // If we’re navigating months but the view is in a different\n // month, navigate to the view’s year and month.\n if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) {\n targetYear = viewsetObject.year\n targetMonth = viewsetObject.month\n }\n\n // Figure out the expected target year and month.\n targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 )\n targetYear = targetDateObject.getFullYear()\n targetMonth = targetDateObject.getMonth()\n\n // If the month we’re going to doesn’t have enough days,\n // keep decreasing the date until we reach the month’s last date.\n while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) {\n targetDate -= 1\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\n }*/\n }\n\n value = [ targetYear, targetMonth, targetDate ]\n }\n\n return value\n } //DatePicker.prototype.navigate\n\n\n /**\n * Normalize a date by setting the hours to midnight.\n */\n DatePicker.prototype.normalize = function( value/*, options*/ ) {\n value.setHours( 0, 0, 0, 0 )\n return value\n }\n\n\n /**\n * Measure the range of dates.\n */\n DatePicker.prototype.measure = function( type, value/*, options*/ ) {\n\n var calendar = this\n\n // If it’s anything false-y, remove the limits.\n if ( !value ) {\n value = type == 'min' ? -Infinity : Infinity\n }\n\n // If it’s a string, parse it.\n else if ( typeof value == 'string' ) {\n value = calendar.parse( type, value )\n }\n\n // If it's an integer, get a date relative to today.\n else if ( _.isInteger( value ) ) {\n value = calendar.now( type, value, { rel: value } )\n }\n\n return value\n } ///DatePicker.prototype.measure\n\n\n /**\n * Create a viewset object based on navigation.\n */\n DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) {\n return this.create([ dateObject.year, dateObject.month, 1 ])\n }\n\n\n /**\n * Validate a date as enabled and shift if needed.\n */\n DatePicker.prototype.validate = function( type, dateObject, options ) {\n\n var calendar = this,\n\n // Keep a reference to the original date.\n originalDateObject = dateObject,\n\n // Make sure we have an interval.\n interval = options && options.interval ? options.interval : 1,\n\n // Check if the calendar enabled dates are inverted.\n isFlippedBase = calendar.item.enable === -1,\n\n // Check if we have any enabled dates after/before now.\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\n\n // The min & max limits.\n minLimitObject = calendar.item.min,\n maxLimitObject = calendar.item.max,\n\n // Check if we’ve reached the limit during shifting.\n reachedMin, reachedMax,\n\n // Check if the calendar is inverted and at least one weekday is enabled.\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) {\n\n // If there’s a date, check where it is relative to the target.\n if ( $.isArray( value ) ) {\n var dateTime = calendar.create( value ).pick\n if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true\n else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true\n }\n\n // Return only integers for enabled weekdays.\n return _.isInteger( value )\n }).length/*,\n\n safety = 100*/\n\n\n\n // Cases to validate for:\n // [1] Not inverted and date disabled.\n // [2] Inverted and some dates enabled.\n // [3] Not inverted and out of range.\n //\n // Cases to **not** validate for:\n // • Navigating months.\n // • Not inverted and date enabled.\n // • Inverted and all dates disabled.\n // • ..and anything else.\n if ( !options || !options.nav ) if (\n /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) ||\n /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||\n /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) )\n ) {\n\n\n // When inverted, flip the direction if there aren’t any enabled weekdays\n // and there are no enabled dates in the direction of the interval.\n if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {\n interval *= -1\n }\n\n\n // Keep looping until we reach an enabled date.\n while ( /*safety &&*/ calendar.disabled( dateObject ) ) {\n\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\n }*/\n\n\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\n if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) {\n dateObject = originalDateObject\n interval = interval > 0 ? 1 : -1\n }\n\n\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\n if ( dateObject.pick <= minLimitObject.pick ) {\n reachedMin = true\n interval = 1\n dateObject = calendar.create([\n minLimitObject.year,\n minLimitObject.month,\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\n ])\n }\n else if ( dateObject.pick >= maxLimitObject.pick ) {\n reachedMax = true\n interval = -1\n dateObject = calendar.create([\n maxLimitObject.year,\n maxLimitObject.month,\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\n ])\n }\n\n\n // If we’ve reached both limits, just break out of the loop.\n if ( reachedMin && reachedMax ) {\n break\n }\n\n\n // Finally, create the shifted date using the interval and keep looping.\n dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ])\n }\n\n } //endif\n\n\n // Return the date object settled on.\n return dateObject\n } //DatePicker.prototype.validate\n\n\n /**\n * Check if a date is disabled.\n */\n DatePicker.prototype.disabled = function( dateToVerify ) {\n\n var\n calendar = this,\n\n // Filter through the disabled dates to check if this is one.\n isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) {\n\n // If the date is a number, match the weekday with 0index and `firstDay` check.\n if ( _.isInteger( dateToDisable ) ) {\n return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7\n }\n\n // If it’s an array or a native JS date, create and match the exact date.\n if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) {\n return dateToVerify.pick === calendar.create( dateToDisable ).pick\n }\n\n // If it’s an object, match a date within the “from” and “to” range.\n if ( $.isPlainObject( dateToDisable ) ) {\n return calendar.withinRange( dateToDisable, dateToVerify )\n }\n })\n\n // If this date matches a disabled date, confirm it’s not inverted.\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) {\n return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' ||\n $.isPlainObject( dateToDisable ) && dateToDisable.inverted\n }).length\n\n // Check the calendar “enabled” flag and respectively flip the\n // disabled state. Then also check if it’s beyond the min/max limits.\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n dateToVerify.pick < calendar.item.min.pick ||\n dateToVerify.pick > calendar.item.max.pick\n\n } //DatePicker.prototype.disabled\n\n\n /**\n * Parse a string into a usable type.\n */\n DatePicker.prototype.parse = function( type, value, options ) {\n\n var calendar = this,\n parsingObject = {}\n\n // If it’s already parsed, we’re good.\n if ( !value || typeof value != 'string' ) {\n return value\n }\n\n // We need a `.format` to parse the value with.\n if ( !( options && options.format ) ) {\n options = options || {}\n options.format = calendar.settings.format\n }\n\n // Convert the format into an array and then map through it.\n calendar.formats.toArray( options.format ).map( function( label ) {\n\n var\n // Grab the formatting label.\n formattingLabel = calendar.formats[ label ],\n\n // The format length is from the formatting label function or the\n // label length without the escaping exclamation (!) mark.\n formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length\n\n // If there's a format label, split the value up to the format length.\n // Then add it to the parsing object with appropriate label.\n if ( formattingLabel ) {\n parsingObject[ label ] = value.substr( 0, formatLength )\n }\n\n // Update the value as the substring from format length to end.\n value = value.substr( formatLength )\n })\n\n // Compensate for month 0index.\n return [\n parsingObject.yyyy || parsingObject.yy,\n +( parsingObject.mm || parsingObject.m ) - 1,\n parsingObject.dd || parsingObject.d\n ]\n } //DatePicker.prototype.parse\n\n\n /**\n * Various formats to display the object in.\n */\n DatePicker.prototype.formats = (function() {\n\n // Return the length of the first word in a collection.\n function getWordLengthFromCollection( string, collection, dateObject ) {\n\n // Grab the first word from the string.\n var word = string.match( /\\w+/ )[ 0 ]\n\n // If there's no month index, add it to the date object\n if ( !dateObject.mm && !dateObject.m ) {\n dateObject.m = collection.indexOf( word ) + 1\n }\n\n // Return the length of the word.\n return word.length\n }\n\n // Get the length of the first word in a string.\n function getFirstWordLength( string ) {\n return string.match( /\\w+/ )[ 0 ].length\n }\n\n return {\n\n d: function( string, dateObject ) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected date.\n return string ? _.digits( string ) : dateObject.date\n },\n dd: function( string, dateObject ) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected date with a leading zero.\n return string ? 2 : _.lead( dateObject.date )\n },\n ddd: function( string, dateObject ) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the short selected weekday.\n return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ]\n },\n dddd: function( string, dateObject ) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the full selected weekday.\n return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ]\n },\n m: function( string, dateObject ) {\n\n // If there's a string, then get the length of the digits\n // Otherwise return the selected month with 0index compensation.\n return string ? _.digits( string ) : dateObject.month + 1\n },\n mm: function( string, dateObject ) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected month with 0index and leading zero.\n return string ? 2 : _.lead( dateObject.month + 1 )\n },\n mmm: function( string, dateObject ) {\n\n var collection = this.settings.monthsShort\n\n // If there's a string, get length of the relevant month from the short\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]\n },\n mmmm: function( string, dateObject ) {\n\n var collection = this.settings.monthsFull\n\n // If there's a string, get length of the relevant month from the full\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]\n },\n yy: function( string, dateObject ) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected year by slicing out the first 2 digits.\n return string ? 2 : ( '' + dateObject.year ).slice( 2 )\n },\n yyyy: function( string, dateObject ) {\n\n // If there's a string, then the length is always 4.\n // Otherwise return the selected year.\n return string ? 4 : dateObject.year\n },\n\n // Create an array by splitting the formatting string passed.\n toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) },\n\n // Format an object into a string using the formatting options.\n toString: function ( formatString, itemObject ) {\n var calendar = this\n return calendar.formats.toArray( formatString ).map( function( label ) {\n return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' )\n }).join( '' )\n }\n }\n })() //DatePicker.prototype.formats\n\n\n\n\n /**\n * Check if two date units are the exact.\n */\n DatePicker.prototype.isDateExact = function( one, two ) {\n\n var calendar = this\n\n // When we’re working with weekdays, do a direct comparison.\n if (\n ( _.isInteger( one ) && _.isInteger( two ) ) ||\n ( typeof one == 'boolean' && typeof two == 'boolean' )\n ) {\n return one === two\n }\n\n // When we’re working with date representations, compare the “pick” value.\n if (\n ( _.isDate( one ) || $.isArray( one ) ) &&\n ( _.isDate( two ) || $.isArray( two ) )\n ) {\n return calendar.create( one ).pick === calendar.create( two ).pick\n }\n\n // When we’re working with range objects, compare the “from” and “to”.\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\n return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to )\n }\n\n return false\n }\n\n\n /**\n * Check if two date units overlap.\n */\n DatePicker.prototype.isDateOverlap = function( one, two ) {\n\n var calendar = this,\n firstDay = calendar.settings.firstDay ? 1 : 0\n\n // When we’re working with a weekday index, compare the days.\n if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {\n one = one % 7 + firstDay\n return one === calendar.create( two ).day + 1\n }\n if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {\n two = two % 7 + firstDay\n return two === calendar.create( one ).day + 1\n }\n\n // When we’re working with range objects, check if the ranges overlap.\n if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {\n return calendar.overlapRanges( one, two )\n }\n\n return false\n }\n\n\n /**\n * Flip the “enabled” state.\n */\n DatePicker.prototype.flipEnable = function(val) {\n var itemObject = this.item\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\n }\n\n\n /**\n * Mark a collection of dates as “disabled”.\n */\n DatePicker.prototype.deactivate = function( type, datesToDisable ) {\n\n var calendar = this,\n disabledItems = calendar.item.disable.slice(0)\n\n\n // If we’re flipping, that’s all we need to do.\n if ( datesToDisable == 'flip' ) {\n calendar.flipEnable()\n }\n\n else if ( datesToDisable === false ) {\n calendar.flipEnable(1)\n disabledItems = []\n }\n\n else if ( datesToDisable === true ) {\n calendar.flipEnable(-1)\n disabledItems = []\n }\n\n // Otherwise go through the dates to disable.\n else {\n\n datesToDisable.map(function( unitToDisable ) {\n\n var matchFound\n\n // When we have disabled items, check for matches.\n // If something is matched, immediately break out.\n for ( var index = 0; index < disabledItems.length; index += 1 ) {\n if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) {\n matchFound = true\n break\n }\n }\n\n // If nothing was found, add the validated unit to the collection.\n if ( !matchFound ) {\n if (\n _.isInteger( unitToDisable ) ||\n _.isDate( unitToDisable ) ||\n $.isArray( unitToDisable ) ||\n ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )\n ) {\n disabledItems.push( unitToDisable )\n }\n }\n })\n }\n\n // Return the updated collection.\n return disabledItems\n } //DatePicker.prototype.deactivate\n\n\n /**\n * Mark a collection of dates as “enabled”.\n */\n DatePicker.prototype.activate = function( type, datesToEnable ) {\n\n var calendar = this,\n disabledItems = calendar.item.disable,\n disabledItemsCount = disabledItems.length\n\n // If we’re flipping, that’s all we need to do.\n if ( datesToEnable == 'flip' ) {\n calendar.flipEnable()\n }\n\n else if ( datesToEnable === true ) {\n calendar.flipEnable(1)\n disabledItems = []\n }\n\n else if ( datesToEnable === false ) {\n calendar.flipEnable(-1)\n disabledItems = []\n }\n\n // Otherwise go through the disabled dates.\n else {\n\n datesToEnable.map(function( unitToEnable ) {\n\n var matchFound,\n disabledUnit,\n index,\n isExactRange\n\n // Go through the disabled items and try to find a match.\n for ( index = 0; index < disabledItemsCount; index += 1 ) {\n\n disabledUnit = disabledItems[index]\n\n // When an exact match is found, remove it from the collection.\n if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) {\n matchFound = disabledItems[index] = null\n isExactRange = true\n break\n }\n\n // When an overlapped match is found, add the “inverted” state to it.\n else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) {\n if ( $.isPlainObject( unitToEnable ) ) {\n unitToEnable.inverted = true\n matchFound = unitToEnable\n }\n else if ( $.isArray( unitToEnable ) ) {\n matchFound = unitToEnable\n if ( !matchFound[3] ) matchFound.push( 'inverted' )\n }\n else if ( _.isDate( unitToEnable ) ) {\n matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]\n }\n break\n }\n }\n\n // If a match was found, remove a previous duplicate entry.\n if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\n if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) {\n disabledItems[index] = null\n break\n }\n }\n\n // In the event that we’re dealing with an exact range of dates,\n // make sure there are no “inverted” dates because of it.\n if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) {\n if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) {\n disabledItems[index] = null\n break\n }\n }\n\n // If something is still matched, add it into the collection.\n if ( matchFound ) {\n disabledItems.push( matchFound )\n }\n })\n }\n\n // Return the updated collection.\n return disabledItems.filter(function( val ) { return val != null })\n } //DatePicker.prototype.activate\n\n\n /**\n * Create a string for the nodes in the picker.\n */\n DatePicker.prototype.nodes = function( isOpen ) {\n\n var\n calendar = this,\n settings = calendar.settings,\n calendarItem = calendar.item,\n nowObject = calendarItem.now,\n selectedObject = calendarItem.select,\n highlightedObject = calendarItem.highlight,\n viewsetObject = calendarItem.view,\n disabledCollection = calendarItem.disable,\n minLimitObject = calendarItem.min,\n maxLimitObject = calendarItem.max,\n\n\n // Create the calendar table head using a copy of weekday labels collection.\n // * We do a copy so we don't mutate the original array.\n tableHead = (function( collection, fullCollection ) {\n\n // If the first day should be Monday, move Sunday to the end.\n if ( settings.firstDay ) {\n collection.push( collection.shift() )\n fullCollection.push( fullCollection.shift() )\n }\n\n // Create and return the table head group.\n return _.node(\n 'thead',\n _.node(\n 'tr',\n _.group({\n min: 0,\n max: DAYS_IN_WEEK - 1,\n i: 1,\n node: 'th',\n item: function( counter ) {\n return [\n collection[ counter ],\n settings.klass.weekdays,\n 'scope=col title=\"' + fullCollection[ counter ] + '\"'\n ]\n }\n })\n )\n ) //endreturn\n\n // Materialize modified\n })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead\n\n\n // Create the nav for next/prev month.\n createMonthNav = function( next ) {\n\n // Otherwise, return the created month tag.\n return _.node(\n 'div',\n ' ',\n settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + (\n\n // If the focused month is outside the range, disabled the button.\n ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) ||\n ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ?\n ' ' + settings.klass.navDisabled : ''\n ),\n 'data-nav=' + ( next || -1 ) + ' ' +\n _.ariaAttr({\n role: 'button',\n controls: calendar.$node[0].id + '_table'\n }) + ' ' +\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '\"'\n ) //endreturn\n }, //createMonthNav\n\n\n // Create the month label.\n //Materialize modified\n createMonthLabel = function(override) {\n\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\n\n // Materialize modified\n if (override == \"short_months\") {\n monthsCollection = settings.monthsShort;\n }\n\n // If there are months to select, add a dropdown menu.\n if ( settings.selectMonths && override == undefined) {\n\n return _.node( 'select',\n _.group({\n min: 0,\n max: 11,\n i: 1,\n node: 'option',\n item: function( loopedMonth ) {\n\n return [\n\n // The looped month and no classes.\n monthsCollection[ loopedMonth ], 0,\n\n // Set the value and selected index.\n 'value=' + loopedMonth +\n ( viewsetObject.month == loopedMonth ? ' selected' : '' ) +\n (\n (\n ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) ||\n ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month )\n ) ?\n ' disabled' : ''\n )\n ]\n }\n }),\n settings.klass.selectMonth + ' browser-default',\n ( isOpen ? '' : 'disabled' ) + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\n 'title=\"' + settings.labelMonthSelect + '\"'\n )\n }\n\n // Materialize modified\n if (override == \"short_months\")\n if (selectedObject != null)\n return _.node( 'div', monthsCollection[ selectedObject.month ] );\n else return _.node( 'div', monthsCollection[ viewsetObject.month ] );\n\n // If there's a need for a month selector\n return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month )\n }, //createMonthLabel\n\n\n // Create the year label.\n // Materialize modified\n createYearLabel = function(override) {\n\n var focusedYear = viewsetObject.year,\n\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\n // divide in half to get half before and half after focused year.\n numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 )\n\n // If there are years to select, add a dropdown menu.\n if ( numberYears ) {\n\n var\n minYear = minLimitObject.year,\n maxYear = maxLimitObject.year,\n lowestYear = focusedYear - numberYears,\n highestYear = focusedYear + numberYears\n\n // If the min year is greater than the lowest year, increase the highest year\n // by the difference and set the lowest year to the min year.\n if ( minYear > lowestYear ) {\n highestYear += minYear - lowestYear\n lowestYear = minYear\n }\n\n // If the max year is less than the highest year, decrease the lowest year\n // by the lower of the two: available and needed years. Then set the\n // highest year to the max year.\n if ( maxYear < highestYear ) {\n\n var availableYears = lowestYear - minYear,\n neededYears = highestYear - maxYear\n\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\n highestYear = maxYear\n }\n\n if ( settings.selectYears && override == undefined ) {\n return _.node( 'select',\n _.group({\n min: lowestYear,\n max: highestYear,\n i: 1,\n node: 'option',\n item: function( loopedYear ) {\n return [\n\n // The looped year and no classes.\n loopedYear, 0,\n\n // Set the value and selected index.\n 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' )\n ]\n }\n }),\n settings.klass.selectYear + ' browser-default',\n ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\n 'title=\"' + settings.labelYearSelect + '\"'\n )\n }\n }\n\n // Materialize modified\n if (override == \"raw\")\n return _.node( 'div', focusedYear )\n\n // Otherwise just return the year focused\n return _.node( 'div', focusedYear, settings.klass.year )\n } //createYearLabel\n\n\n // Materialize modified\n var createDayLabel = function() {\n if (selectedObject != null)\n return _.node( 'div', selectedObject.date)\n else return _.node( 'div', nowObject.date)\n }\n var createWeekdayLabel = function() {\n var display_day;\n\n if (selectedObject != null)\n display_day = selectedObject.day;\n else\n display_day = nowObject.day;\n var weekday = settings.weekdaysFull[ display_day ]\n return weekday\n }\n\n\n // Create and return the entire calendar.\n return _.node(\n // Date presentation View\n 'div',\n _.node(\n 'div',\n createWeekdayLabel(),\n \"picker__weekday-display\"\n )+\n _.node(\n // Div for short Month\n 'div',\n createMonthLabel(\"short_months\"),\n settings.klass.month_display\n )+\n _.node(\n // Div for Day\n 'div',\n createDayLabel() ,\n settings.klass.day_display\n )+\n _.node(\n // Div for Year\n 'div',\n createYearLabel(\"raw\") ,\n settings.klass.year_display\n ),\n settings.klass.date_display\n )+\n // Calendar container\n _.node('div',\n _.node('div',\n ( settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) +\n createMonthNav() + createMonthNav( 1 ),\n settings.klass.header\n ) + _.node(\n 'table',\n tableHead +\n _.node(\n 'tbody',\n _.group({\n min: 0,\n max: WEEKS_IN_CALENDAR - 1,\n i: 1,\n node: 'tr',\n item: function( rowCounter ) {\n\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\n var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0\n\n return [\n _.group({\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\n max: function() {\n return this.min + DAYS_IN_WEEK - 1\n },\n i: 1,\n node: 'td',\n item: function( targetDate ) {\n\n // Convert the time date from a relative date to a target date.\n targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ])\n\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\n isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\n formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] )\n\n return [\n _.node(\n 'div',\n targetDate.date,\n (function( klasses ) {\n\n // Add the `infocus` or `outfocus` classes based on month in view.\n klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus )\n\n // Add the `today` class if needed.\n if ( nowObject.pick == targetDate.pick ) {\n klasses.push( settings.klass.now )\n }\n\n // Add the `selected` class if something's selected and the time matches.\n if ( isSelected ) {\n klasses.push( settings.klass.selected )\n }\n\n // Add the `highlighted` class if something's highlighted and the time matches.\n if ( isHighlighted ) {\n klasses.push( settings.klass.highlighted )\n }\n\n // Add the `disabled` class if something's disabled and the object matches.\n if ( isDisabled ) {\n klasses.push( settings.klass.disabled )\n }\n\n return klasses.join( ' ' )\n })([ settings.klass.day ]),\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\n role: 'gridcell',\n label: formattedDate,\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\n activedescendant: isHighlighted ? true : null,\n disabled: isDisabled ? true : null\n })\n ),\n '',\n _.ariaAttr({ role: 'presentation' })\n ] //endreturn\n }\n })\n ] //endreturn\n }\n })\n ),\n settings.klass.table,\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\n role: 'grid',\n controls: calendar.$node[0].id,\n readonly: true\n })\n )\n , settings.klass.calendar_container) // end calendar\n\n +\n\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\n _.node(\n 'div',\n _.node( 'button', settings.today, \"btn-flat picker__today\",\n 'type=button data-pick=' + nowObject.pick +\n ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id }) ) +\n _.node( 'button', settings.clear, \"btn-flat picker__clear\",\n 'type=button data-clear=1' +\n ( isOpen ? '' : ' disabled' ) + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id }) ) +\n _.node('button', settings.close, \"btn-flat picker__close\",\n 'type=button data-close=true ' +\n ( isOpen ? '' : ' disabled' ) + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id }) ),\n settings.klass.footer\n ) //endreturn\n } //DatePicker.prototype.nodes\n\n\n\n\n /**\n * The date picker defaults.\n */\n DatePicker.defaults = (function( prefix ) {\n\n return {\n\n // The title label to use for the month nav buttons\n labelMonthNext: 'Next month',\n labelMonthPrev: 'Previous month',\n\n // The title label to use for the dropdown selectors\n labelMonthSelect: 'Select a month',\n labelYearSelect: 'Select a year',\n\n // Months and weekdays\n monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ],\n monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ],\n weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],\n weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],\n\n // Materialize modified\n weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ],\n\n // Today and clear\n today: 'Today',\n clear: 'Clear',\n close: 'Close',\n\n // The format to show on the `input` element\n format: 'd mmmm, yyyy',\n\n // Classes\n klass: {\n\n table: prefix + 'table',\n\n header: prefix + 'header',\n\n\n // Materialize Added klasses\n date_display: prefix + 'date-display',\n day_display: prefix + 'day-display',\n month_display: prefix + 'month-display',\n year_display: prefix + 'year-display',\n calendar_container: prefix + 'calendar-container',\n // end\n\n\n\n navPrev: prefix + 'nav--prev',\n navNext: prefix + 'nav--next',\n navDisabled: prefix + 'nav--disabled',\n\n month: prefix + 'month',\n year: prefix + 'year',\n\n selectMonth: prefix + 'select--month',\n selectYear: prefix + 'select--year',\n\n weekdays: prefix + 'weekday',\n\n day: prefix + 'day',\n disabled: prefix + 'day--disabled',\n selected: prefix + 'day--selected',\n highlighted: prefix + 'day--highlighted',\n now: prefix + 'day--today',\n infocus: prefix + 'day--infocus',\n outfocus: prefix + 'day--outfocus',\n\n footer: prefix + 'footer',\n\n buttonClear: prefix + 'button--clear',\n buttonToday: prefix + 'button--today',\n buttonClose: prefix + 'button--close'\n }\n }\n })( Picker.klasses().picker + '__' )\n\n\n\n\n\n /**\n * Extend the picker to add the date picker.\n */\n Picker.extend( 'pickadate', DatePicker )\n\n\n}));\n\n\n","import $ from 'jquery';\n\nwindow.jQuery = window.$ = $;\n","import $ from 'jquery';\n\n//import 'materialize-css';\n\nimport Hammer from 'materialize-css/js/hammer.min';\nimport Vel from 'materialize-css/js/velocity.min';\n// import 'materialize-css/js/jquery.hammer';\nimport 'materialize-css/js/dropdown';\nimport 'materialize-css/js/jquery.easing.1.3';\n\nimport 'materialize-css/js/global';\n\nimport 'materialize-css/js/forms';\nimport 'materialize-css/js/waves';\nimport 'materialize-css/js/sideNav';\nimport 'materialize-css/js/collapsible';\nimport 'materialize-css/js/leanModal';\nimport 'materialize-css/js/toasts';\nimport 'materialize-css/js/tooltip';\n\nimport './picker';\nimport './picker.date';\n\n// 'materialize-css/js/jquery.hammer'\nfunction jqueryHammer() {\n function hammerify(el, options) {\n var $el = $(el);\n if(!$el.data(\"hammer\")) {\n $el.data(\"hammer\", new Hammer($el[0], options));\n }\n }\n\n $.fn.hammer = function(options) {\n return this.each(function() {\n hammerify(this, options);\n });\n };\n\n// extend the emit method to also trigger jQuery events\n Hammer.Manager.prototype.emit = (function(originalEmit) {\n return function(type, data) {\n originalEmit.call(this, type, data);\n $(this.element).trigger({\n type: type,\n gesture: data\n });\n };\n })(Hammer.Manager.prototype.emit);\n}\n\njqueryHammer();\n\nwindow.Hammer = Hammer;\nwindow.Vel = Vel;\n\n//import 'materialize-css/js/date_picker/picker';\n//import 'materialize-css/js/date_picker/picker.date';\n","export const hexToRgb = (hex) => {\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n};","// DO NOT CHANGE -- THIS FILE IS GENERATED\n\nconst theme = {\n primary: '#6ab023',\n secondary: '#00305d',\n third: '#a9011b',\n};\n\nexport default theme;\n","import _ from 'lodash';\nimport $ from 'jquery';\nimport {hexToRgb} from 'app/lib/colors';\nimport theme from \"./theme\";\n\nlet config = {};\n\nexport const settings = {\n defaultLocale: 'en',\n supportedLocales: ['en', 'nl', 'de', 'fr'],\n basename: typeof document !== 'undefined' && document.baseURI ? document.baseURI.replace(document.location.origin, '') : $('html > head > base').attr('href')\n};\n\nexport const setConfig = (cnf) => {\n config = cnf;\n buildAPIRoutes();\n};\n\nexport const versionCheckInterval = () => {\n return config.versionCheckInterval || 6000;\n};\n\nexport const registrationUrl = () => config.registrationUrl;\n\nexport let apiRoutes = {\n GET_CONFIG: getAppUrl('config.json'),\n GET_STATS: getAppUrl('asset-manifest.json'),\n GET_TRANSLATIONS: getAppUrl('assets/i18n'),\n GET_PROFILE: getAppUrl('api-mock/profile.json')\n};\n\nexport const colors = theme;\nexport const colorsRGB = convertAllHexToRGB(colors);\n\nexport const UNIT_KINDS = {\n CONTAINER: \" \",\n SWAP_BODY: \"C\",\n NON_ISO: \"F\",\n TRAILER: \"P\"\n};\n\nfunction getAPIUrl(path) {\n if (process.env.REACT_APP_MOCK) {\n return 'api-mock/' + path + '.json';\n }\n\n return config.api + '/api/' + path;\n // return GLOBAL.api + '/api/' + path;\n}\n\nfunction buildAPIRoutes() {\n apiRoutes = Object.assign(apiRoutes, {\n\n GET_TIME_SLOTS: _.template(getAPIUrl('timeslots/${ slotEta }?dom=${ dom }&days=${ days }')),\n\n USER_LOGIN: getAPIUrl('login'),\n USER_REFRESH_LOGIN: getAPIUrl('login/refresh'),\n GET_COMPANY_DATA: getAPIUrl('company'),\n\n GET_VISITS: getAPIUrl('visits/filter'),\n GET_VISIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }')),\n GET_VISIT_UNITS: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }/units')),\n PUT_VISIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }')),\n DELETE_VISIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }')),\n SUBMIT_VISIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }/submit')),\n POST_VISIT: getAPIUrl('visits'),\n\n POST_UNIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }/units')),\n PUT_UNIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }/units/${ utrac }')),\n DELETE_UNIT: _.template(getAPIUrl('visits/${ vtrac.toLowerCase() }/units/${ utrac }')),\n VERIFY_UNIT: getAPIUrl('units/verify'),\n\n GET_GOODS: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/goods')),\n PUT_GOOD: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/goods/${ trac }')),\n POST_GOOD: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/goods')),\n DELETE_GOOD: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/goods/${ id }')),\n\n GET_DOCS: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/docs')),\n PUT_DOC: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/docs/${ trac }')),\n POST_DOC: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/docs')),\n DELETE_DOC: _.template(getAPIUrl('units/${ utrac.toLowerCase() }/docs/${ id }')),\n\n UPLOAD_DOC: _.template(getAPIUrl('attach/doc/${ id }')),\n DOWNLOAD_FILE: _.template(getAPIUrl('attach/item/${ id }')),\n DELETE_FILE: _.template(getAPIUrl('attach/item/${ id }')),\n\n ACTUAL_TRUCKS: _.template(getAPIUrl('reports/actualtrucks?dom=${ dom }&date=${ date }')),\n ACTUAL_LEAD_TIME: _.template(getAPIUrl('reports/actualleadtime?dom=${ dom }')),\n ACTUAL_OCCUPANCY: _.template(getAPIUrl('reports/actualtimeslotoccupancy?dom=${ dom }&date=${ date }')),\n AVERAGE_LEAD_TIME: _.template(getAPIUrl('reports/avgtimeslotleadtime?dom=${ dom }&dayOfWeek=${ dayOfWeek }')),\n\n RAIL_STATUS_IN: _.template(getAPIUrl('reports/railstatus?type=1&dom=${ dom }')),\n RAIL_STATUS_OUT: _.template(getAPIUrl('reports/railstatus?type=2&dom=${ dom }'))\n });\n}\n\nfunction getAppUrl(path) {\n return settings.basename + path;\n}\n\nfunction convertAllHexToRGB(colors) {\n let rgbColors = {};\n _.each(colors, (color, colorName) => {\n rgbColors[colorName] = hexToRgb(color);\n });\n return rgbColors;\n}\n","import { createHistory, useBasename } from 'history';\nimport { Router, useRouterHistory } from 'react-router';\nimport { settings } from 'app/globals';\n\nexport const browserHistory = useRouterHistory(createHistory)({\n basename: settings.basename\n});","const actionNamespace = 'brc/';\n\n\nexport const createActionType = (base) => {\n base = base.toUpperCase();\n return `${actionNamespace}${base}`;\n};\n\nexport const createRequestTypes = (base) => {\n return {\n REQUEST : createActionType(`${base}_REQUEST`),\n SUCCESS : createActionType(`${base}_SUCCESS`),\n ERROR : createActionType(`${base}_ERROR`)\n };\n};\n","import { createActionType } from 'app/lib/actionTypes';\n\nexport const FORM_DATA_LOAD = createActionType('FORM_DATA_LOAD');\nexport const DATA_LOAD_REQUEST = createActionType('DATA_LOAD_REQUEST');\nexport const DATA_LOAD_DONE = createActionType('DATA_LOAD_DONE');\nexport const DATA_LOAD_SUCCESS = createActionType('DATA_LOAD_SUCCESS');\nexport const DATA_LOAD_ERROR = createActionType('DATA_LOAD_ERROR');\n\nexport const HTTP_ERROR_401 = createActionType('HTTP_ERROR_401');\n\nexport const FLASH_MESSAGE = {\n SET: createActionType('FLASH_MESSAGE_SET'),\n REMOVE: createActionType('FLASH_MESSAGE_REMOVE')\n};","const action = type => (payload={}) => ({type, ...payload});\n\nexport const crud = type => ({\n request: (data) => action(type.REQUEST)(data),\n success: (data) => action(type.SUCCESS)(data),\n error: (data) => action(type.ERROR)(data)\n});\n\nexport default action;\n","import action from 'app/lib/action';\nimport {FLASH_MESSAGE} from '../constants/actionTypes';\n\nexport default {\n set: (id, messageIds, titleId, theme, ttl, params) => action(FLASH_MESSAGE.SET)({id, messageIds, titleId, theme, ttl, params}),\n remove: (id) => action(FLASH_MESSAGE.REMOVE)({id})\n};\n","import action from 'app/lib/action';\nimport {HTTP_ERROR_401} from '../constants/actionTypes';\n\nexport default {\n http401: (error, failedAction) => action(HTTP_ERROR_401)({error, failedAction})\n};","import * as actionTypes from '../constants/actionTypes';\nimport flashMessage from './flashMessage';\nimport httpError from './httpError';\n\nexport { flashMessage, httpError };\n\nexport const loadFormDataAction = (form, id) => ({\n type: actionTypes.FORM_DATA_LOAD,\n payload: {\n form,\n id\n }\n});\n\nexport const loadDataAction = (resource) => ({\n type: actionTypes.DATA_LOAD_REQUEST,\n payload: {\n resource\n }\n});\n\nexport const loadDataDoneAction = (resource) => ({\n type: actionTypes.DATA_LOAD_DONE,\n payload: {\n resource\n }\n});\n\nexport const loadDataSuccessAction = (resource, message) => ({\n type: actionTypes.DATA_LOAD_SUCCESS,\n payload: {\n resource,\n message\n }\n});\n\nexport const loadDataErrorAction = (resource, error, failedAction) => ({\n type: actionTypes.DATA_LOAD_ERROR,\n payload: {\n resource,\n error,\n failedAction\n }\n});","import _ from 'lodash';\nimport { takeEvery } from 'redux-saga';\nimport { put } from 'redux-saga/effects';\n\nimport { flashMessage } from '../actions';\nimport { DATA_LOAD_ERROR } from '../constants/actionTypes';\n\nconst delay = ms => (\n new Promise(resolve => {\n setTimeout(() => resolve(), ms);\n })\n);\n\nfunction *handleFlashMessage(id, messageId, titleId='', ttl = 4000, theme = 'error' , params) {\n yield put(flashMessage.set(id,messageId, titleId, theme, ttl, params));\n yield delay(ttl);\n yield put(flashMessage.remove(id));\n}\n\nfunction *_handleHttpErrorCode({body, response, titleId}) {\n let errorCode = `serverError.${response && response.status}`;\n yield handleFlashMessage(response && response.statusText,errorCode);\n}\nfunction *_handleInterceptedError({body, response, titleId}) {\n let errorCode = `serverError.${response.status}`;\n yield handleFlashMessage(response.statusText,errorCode, titleId);\n}\nfunction *_handleServerError({body:{errors},titleId}) {\n yield _.map(errors, error => {\n return handleFlashMessage(`serverError.${error.code}`, `serverError.${error.code}`, titleId, undefined, undefined, error.params);\n });\n}\n\nfunction *_handleServerErrors({payload:{resource,error}}) {\n\n if (!error.body) {\n yield _handleHttpErrorCode(error);\n } else if (!error.body.errors) {\n yield _handleInterceptedError(error);\n } else {\n yield _handleServerError(error);\n }\n}\n\n\nexport function *flashMessageOnServerError() {\n yield takeEvery(DATA_LOAD_ERROR, _handleServerErrors);\n}\n","import _ from 'lodash';\nimport { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { flashMessage } from '../actions';\nimport { DATA_LOAD_SUCCESS } from '../constants/actionTypes';\n\nconst delay = ms => (\n new Promise(resolve => {\n setTimeout(() => resolve(), ms);\n })\n);\n\nfunction *handleFlashMessage(id, messageId, titleId='', ttl = 1500, theme = '') {\n yield put(flashMessage.set(id,messageId, titleId, theme, ttl));\n yield delay(ttl);\n yield put(flashMessage.remove(id));\n}\n\nfunction *_handleServerSuccess({payload:{resource, message}}) {\n if (message) {\n yield handleFlashMessage(resource, message);\n }\n}\n\n\nexport function *flashMessageOnServerSuccess() {\n yield takeEvery(DATA_LOAD_SUCCESS, _handleServerSuccess);\n}","import { takeEvery } from 'redux-saga';\nimport { put } from 'redux-saga/effects';\n\nimport { httpError as httpErrorAction } from '../actions';\nimport { DATA_LOAD_ERROR } from '../constants/actionTypes';\n\nfunction *_handleServerErrors({payload:{resource,error,failedAction}}) {\n if (!error.response || error.response.status === 401) {\n yield put(httpErrorAction.http401(error, failedAction));\n }\n}\n\n\nexport function *httpError() {\n yield takeEvery(DATA_LOAD_ERROR, _handleServerErrors);\n}\n","import { createActionType, createRequestTypes } from 'app/lib/actionTypes';\n\nexport const LOGIN = createRequestTypes('LOGIN');\n\nexport const LOGOUT = createActionType('LOGOUT');\n","import action from 'app/lib/action';\nimport { LOGIN } from '../constants/actionTypes';\n\nexport default {\n request : (username, password) => action(LOGIN.REQUEST)({username, password}),\n success : (jwt, sessionData) => action(LOGIN.SUCCESS)({jwt, sessionData}),\n error : (error) => action(LOGIN.ERROR)({error})\n};\n","import action from 'app/lib/action';\nimport { LOGOUT } from '../constants/actionTypes';\n\nconst logout = () => action(LOGOUT)();\n\nexport default logout;","\nexport const getJWT = state => state.get('auth').token;\nexport const isAuthenticated = state => !!state.get('auth').isAuthenticated;","import {store} from 'app/store';\nimport {getJWT} from 'modules/auth/selectors';\n\nconst buildQuery = (obj) => {\n let str = [];\n for(let p in obj)\n str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));\n return str.join('&');\n};\n\nconst throwServerError = (response) => (body) => {\n let error = new Error(response.statusText);\n error.response = response;\n error.body = body.body || body;\n throw error;\n};\n\nconst status = (response) => {\n if (response.status >= 200 && response.status < 300) {\n return Promise.resolve(response);\n } else {\n return response.json()\n .then(throwServerError(response))\n .catch(throwServerError(response));\n }\n};\n\nconst json = (response) => {\n if (response.status !== 204) {\n return response.json();\n }\n return response;\n};\n\nconst handleServerResponse = (promise) => promise.then(status).then(json);\n\nconst buildHeaders = (jwtHeader=true) => {\n const jwt = jwtHeader && getJWT(store.getState());\n let headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (jwt) {\n headers.Authorization = `Bearer ${jwt}`;\n }\n return new Headers(headers);\n};\n\nexport const post = (route, body, {method='post', jwtHeader=true} = {}) => {\n let request = new Request(route, {\n method: method,\n mode: 'cors',\n headers: buildHeaders(jwtHeader),\n body: JSON.stringify(body)\n });\n return () => handleServerResponse(fetch(request));\n};\n\nexport const put = (route, body) => {\n return post(route,body,{method:'put'});\n};\n\nexport const get = (route, {method='get',query=null} = {}) => {\n if (query) {\n route = route + '?' + buildQuery(query);\n }\n let request = new Request(route, {\n method: method,\n headers: buildHeaders()\n });\n return () => handleServerResponse(fetch(request));\n};\n\nexport const del = (route) => {\n return get(route,{method:'delete'});\n};\n\nexport const uploadFile = (route, data) => {\n const jwt = getJWT(store.getState());\n let headers = {};\n if (jwt) {\n headers.Authorization = `Bearer ${jwt}`;\n }\n \n return fetch(route, {\n method: 'POST',\n body: data,\n headers: new Headers(headers)\n });\n};","import * as api from 'app/lib/ajax';\nimport { apiRoutes } from 'app/globals';\n\nexport const loginUser = (username, password) => {\n if (process.env.REACT_APP_MOCK) return () => require('./mock').loginUser(username, password);\n\n return api.post(apiRoutes.USER_LOGIN, {\n username,\n password\n });\n\n};\n\nexport const refreshUser = (jwt) => {\n if (process.env.REACT_APP_MOCK) return () => require('./mock').refreshUser(jwt);\n\n return api.post(apiRoutes.USER_REFRESH_LOGIN, {jwt}, {jwtHeader: false});\n};\n\n\n","import { take, call, put, select, race } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataDoneAction } from 'modules/app/actions';\nimport { LOGIN, LOGOUT } from 'modules/auth/constants/actionTypes';\nimport { login as loginAction } from 'modules/auth/actions';\nimport { loginUser } from '../repository';\n\n\nfunction *authorize({username, password}) {\n yield put(loadDataAction('login'));\n try {\n const {jwt, sessionData} = yield call(loginUser(username, password));\n yield put(loginAction.success(jwt, sessionData));\n } catch(error) {\n yield put(loginAction.error(error));\n }\n yield put(loadDataDoneAction('login'));\n}\n\nexport function *login() {\n while(true) {\n const {username, password} = yield take(LOGIN.REQUEST);\n\n yield race([\n take(LOGOUT),\n call(authorize, {username, password})\n ]);\n }\n}\n","import { take, put } from 'redux-saga/effects';\nimport { routeActions } from 'redux-simple-router';\n\nimport { LOGIN, LOGOUT } from 'modules/auth/constants/actionTypes';\n\nexport function *redirectOnLogin() {\n while(true) {\n yield take(LOGIN.REQUEST);\n yield take(LOGIN.SUCCESS);\n yield put(routeActions.push('/visits'));\n }\n}\n\n","import { take, put } from 'redux-saga/effects';\nimport { routeActions } from 'redux-simple-router';\n\nimport { LOGOUT } from 'modules/auth/constants/actionTypes';\n\nexport function *redirectOnLogout() {\n while(true) {\n yield take(LOGOUT);\n yield put(routeActions.push('/login'));\n }\n}\n\n","import { take, put, select, call } from 'redux-saga/effects';\n\nimport { HTTP_ERROR_401 } from 'modules/app/constants/actionTypes';\nimport { login, logout } from '../actions';\nimport { refreshUser } from '../repository';\nimport { getJWT } from '../selectors';\n\nexport function *refreshOn401() {\n while(true) {\n const {failedAction} = yield take(HTTP_ERROR_401);\n const jwt = yield select(getJWT);\n\n if (!jwt) {\n yield put(logout());\n } else {\n try {\n const {jwt,sessionData} = yield call(refreshUser(jwt));\n yield put(login.success(jwt, sessionData));\n yield put(failedAction);\n } catch (error) {\n yield put(logout());\n }\n }\n\n }\n}\n\n","import { createActionType, createRequestTypes } from 'app/lib/actionTypes';\n\nexport const TIME_SLOTS = createRequestTypes('TIME_SLOTS');\nexport const VISITS = createRequestTypes('VISITS');\nexport const VISIT = createRequestTypes('VISIT');\nexport const SUBMIT_VISIT = createRequestTypes('SUBMIT_VISIT');\nexport const GET_VISIT = createRequestTypes('GET_VISIT');\nexport const STORE_VISIT = createRequestTypes('STORE_VISIT');\nexport const GET_UNITS = createRequestTypes('GET_UNITS');\nexport const STORE_UNIT = createRequestTypes('STORE_UNIT');\nexport const DELETE_VISIT = createRequestTypes('DELETE_VISIT');\nexport const DELETE_UNIT = createRequestTypes('DELETE_UNIT');\nexport const VERIFY_UNIT = Object.assign(\n createRequestTypes('VERIFY_UNIT'), {\n RESET: createActionType('VERIFY_UNIT_RESET')\n});\nexport const VISIT_AND_UNITS = Object.assign(\n createRequestTypes('VISIT_AND_UNITS'), {\n CLEAR: createActionType('VISIT_AND_UNITS_CLEAR')\n});\n\nexport const GET_GOODS = createRequestTypes('GET_GOODS');\nexport const STORE_GOOD = createRequestTypes('STORE_GOOD');\nexport const DELETE_GOOD = createRequestTypes('DELETE_GOOD');\n\n\nexport const GET_DOCS = createRequestTypes('GET_DOCS');\nexport const STORE_DOC = createRequestTypes('STORE_DOC');\nexport const DELETE_DOC = createRequestTypes('DELETE_DOC');\n\nexport const DOCS_AND_GOODS = {\n CLEAR: createActionType('DOCS_AND_GOODS_CLEAR') \n};\n\nexport const VISIT_FETCH_SUCCESS = 'VISIT_FETCH_SUCCESS';\n\nexport const VISIT_STORE_REQUEST = 'VISIT_STORE_REQUEST';\nexport const VISIT_STORE_FAILURE = 'VISIT_STORE_FAILURE';\nexport const VISIT_STORE_SUCCESS = 'VISIT_STORE_SUCCESS';\n","import {apiRoutes} from 'app/globals';\nimport * as api from 'app/lib/ajax';\n\n\nexport const getVisits = (filters) => (\n !process.env.REACT_APP_MOCK ? api.get(apiRoutes.GET_VISITS,{query:filters}) : () => require('./mock').getVisits()\n);\n\nexport const getVisit = (vtrac) => (\n !process.env.REACT_APP_MOCK ? api.get(apiRoutes.GET_VISIT({vtrac})) : () => require('./mock').getVisit(vtrac)\n);\n\nexport const getVisitUnits = (vtrac) => (\n !process.env.REACT_APP_MOCK ? api.get(apiRoutes.GET_VISIT_UNITS({vtrac})) : () => require('./mock').getVisitUnits(vtrac)\n);\n\nexport const saveVisit = (data) => (\n !process.env.REACT_APP_MOCK ? api.post(apiRoutes.POST_VISIT, data) : () => require('./mock').saveVisit(data)\n);\n\nexport const updateVisit = (data, vtrac) => (\n !process.env.REACT_APP_MOCK ? api.put(apiRoutes.PUT_VISIT({vtrac}), data) : () => require('./mock').saveVisit(data, vtrac)\n);\n\nexport const removeVisit = (vtrac) => (\n api.del(apiRoutes.DELETE_VISIT({vtrac}))\n);\n\nexport const submitVisit = (vtrac) => (\n api.put(apiRoutes.SUBMIT_VISIT({vtrac}))\n);\n\nexport const saveUnit = (data, vtrac) => (\n api.post(apiRoutes.POST_UNIT({vtrac}), data)\n);\n\nexport const updateUnit = (data, vtrac, utrac) => (\n api.put(apiRoutes.PUT_UNIT({vtrac, utrac}), data)\n);\n\nexport const removeUnit = (vtrac, utrac) => (\n !process.env.REACT_APP_MOCK ? api.del(apiRoutes.DELETE_UNIT({vtrac, utrac})) : () => require('./mock').removeUnit(utrac)\n);\n\nexport const getTimeSlots = (slotEta, dom, days) => (\n api.get(apiRoutes.GET_TIME_SLOTS({slotEta, dom, days}))\n);\n\nexport const verifyUnit = (payload) => (\n api.post(apiRoutes.VERIFY_UNIT, payload)\n);\n\nexport const getGoods = (utrac) => (\n api.get(apiRoutes.GET_GOODS({utrac}))\n);\n\nexport const updateGood = (utrac, data) => (\n api.put(apiRoutes.PUT_GOOD({utrac, trac: data.id}), data)\n);\n\nexport const saveGood = (utrac, data) => (\n api.post(apiRoutes.POST_GOOD({utrac}), data)\n);\n\nexport const removeGood = (utrac, id) => (\n api.del(apiRoutes.DELETE_GOOD({utrac, id}))\n);\n\nexport const getDocs = (utrac) => (\n api.get(apiRoutes.GET_DOCS({utrac}))\n);\n\nexport const updateDoc = (utrac, data) => (\n api.put(apiRoutes.PUT_DOC({utrac, trac: data.id}), data)\n);\n\nexport const saveDoc = (utrac, data) => (\n api.post(apiRoutes.POST_DOC({utrac}), data)\n);\n\nexport const removeDoc = (utrac, id) => (\n api.del(apiRoutes.DELETE_DOC({utrac, id}))\n);\n","/**\n * @CoreConcept(name=\"Redux Action\", description=\"This is a good Redux action example.\n */\n\nimport action from 'app/lib/action';\nimport {STORE_VISIT} from '../constants/actionTypes';\n\nexport default {\n request : (formData) => action(STORE_VISIT.REQUEST)({formData}),\n success : (visit) => action(STORE_VISIT.SUCCESS)({visit}),\n error : (error) => action(STORE_VISIT.ERROR)({error})\n};","import action from 'app/lib/action';\nimport {DELETE_VISIT} from '../constants/actionTypes';\n\nexport default {\n request : (trac) => action(DELETE_VISIT.REQUEST)({trac}),\n success : (trac) => action(DELETE_VISIT.SUCCESS)({trac}),\n error : (error) => action(DELETE_VISIT.ERROR)({error})\n};","import {crud} from 'app/lib/action';\nimport {GET_UNITS} from '../constants/actionTypes';\n\nexport default crud(GET_UNITS);","import action from 'app/lib/action';\nimport {STORE_UNIT} from '../constants/actionTypes';\n\nexport default {\n request : (formData) => action(STORE_UNIT.REQUEST)({formData}),\n success : (unit, vtrac) => action(STORE_UNIT.SUCCESS)({unit, vtrac}),\n error : (error) => action(STORE_UNIT.ERROR)({error})\n};","import action from 'app/lib/action';\nimport {DELETE_UNIT} from '../constants/actionTypes';\n\nexport default {\n request : (vtrac, utrac) => action(DELETE_UNIT.REQUEST)({vtrac, utrac}),\n success : (trac, vtrac) => action(DELETE_UNIT.SUCCESS)({trac, vtrac}),\n error : (error) => action(DELETE_UNIT.ERROR)({error})\n};","import action from 'app/lib/action';\nimport {TIME_SLOTS} from '../constants/actionTypes';\n\nexport default {\n request : (date, dom, days = 3) => action(TIME_SLOTS.REQUEST)({date, dom, days}),\n success : (timeSlots) => action(TIME_SLOTS.SUCCESS)({timeSlots}),\n error : (error) => action(TIME_SLOTS.ERROR)({error})\n};","import action from 'app/lib/action';\nimport {VERIFY_UNIT} from '../constants/actionTypes';\n\nexport default {\n request : (unit, dom) => action(VERIFY_UNIT.REQUEST)({unit, dom}),\n success : ({ok, dims}) => action(VERIFY_UNIT.SUCCESS)({ok, dims}),\n error : (error) => action(VERIFY_UNIT.ERROR)({error}),\n reset : () => action(VERIFY_UNIT.RESET)()\n};","import {crud} from 'app/lib/action';\nimport {GET_GOODS} from '../constants/actionTypes';\n\nexport default crud(GET_GOODS);","import action from 'app/lib/action';\nimport {STORE_GOOD} from '../constants/actionTypes';\n\nexport default {\n request : (utrac, formData) => action(STORE_GOOD.REQUEST)({utrac, formData}),\n success : (good) => action(STORE_GOOD.SUCCESS)({good}),\n error : (error) => action(STORE_GOOD.ERROR)({error})\n};","import action from 'app/lib/action';\nimport {DELETE_GOOD} from '../constants/actionTypes';\n\nexport default {\n request : (utrac, id) => action(DELETE_GOOD.REQUEST)({utrac, id}),\n success : (id) => action(DELETE_GOOD.SUCCESS)({id}),\n error : (error) => action(DELETE_GOOD.ERROR)({error})\n};","import {crud} from 'app/lib/action';\nimport {GET_DOCS} from '../constants/actionTypes';\n\nexport default crud(GET_DOCS);","import action from 'app/lib/action';\nimport {STORE_DOC} from '../constants/actionTypes';\n\nexport default {\n request : (utrac, formData) => action(STORE_DOC.REQUEST)({utrac, formData}),\n success : (doc) => action(STORE_DOC.SUCCESS)({doc}),\n error : (error) => action(STORE_DOC.ERROR)({error})\n};","import action from 'app/lib/action';\nimport {DELETE_DOC} from '../constants/actionTypes';\n\nexport default {\n request : (utrac, id) => action(DELETE_DOC.REQUEST)({utrac, id}),\n success : (id) => action(DELETE_DOC.SUCCESS)({id}),\n error : (error) => action(DELETE_DOC.ERROR)({error})\n};","import {crud} from 'app/lib/action';\nimport {SUBMIT_VISIT} from '../constants/actionTypes';\n\nexport default crud(SUBMIT_VISIT);","import action from 'app/lib/action';\nimport {DOCS_AND_GOODS} from '../constants/actionTypes';\n\nexport default {\n clear : () => action(DOCS_AND_GOODS.CLEAR)()\n};","import {crud} from 'app/lib/action';\nimport {VISITS} from '../constants/actionTypes';\n\nexport default crud(VISITS);","import action from 'app/lib/action';\nimport * as actionTypes from '../constants/actionTypes';\nimport { getTimeSlots as getTS, getVisits as getVisitsAPI, getVisit as getVisitAPI, saveVisit } from '../repository';\n\nimport storeVisit from './storeVisit';\nimport deleteVisit from './deleteVisit';\nimport getUnits from './getUnits';\nimport storeUnit from './storeUnit';\nimport deleteUnit from './deleteUnit';\nimport getTimeSlots from './getTimeSlots';\nimport verifyUnit from './verifyUnit';\nimport getGoods from './getGoods';\nimport storeGood from './storeGood';\nimport deleteGood from './deleteGood';\nimport getDocs from './getDocs';\nimport storeDoc from './storeDoc';\nimport deleteDoc from './deleteDoc';\nimport submitVisit from './submitVisit';\nimport docsAndGoods from './docsAndGoods';\nimport getVisits from './getVisits';\n\nlet {VISITS, VISIT, VISIT_AND_UNITS, TIME_SLOTS, GET_VISIT} = actionTypes;\n\nconst fetchVisitSuccess = (visit) => action(GET_VISIT.SUCCESS)({visit});\nconst fetchVisitAndUnits = (vtrac) => action(VISIT_AND_UNITS.REQUEST)({vtrac});\nconst fetchVisitAndUnitsSuccess = (visit) => action(VISIT_AND_UNITS.SUCCESS)({visit});\nconst fetchVisitAndUnitsError = (error) => action(VISIT_AND_UNITS.ERROR)({error});\nconst clearLoadedVisit = () => action(VISIT_AND_UNITS.CLEAR)();\n\n// ========================================================\n// PUBLIC\n// ========================================================\n\n\nexport {\n clearLoadedVisit,\n fetchVisit,\n fetchVisitSuccess,\n fetchVisitAndUnits,\n fetchVisitAndUnitsSuccess,\n fetchVisitAndUnitsError,\n\n getVisits,\n storeVisit,\n deleteVisit,\n submitVisit,\n getUnits,\n storeUnit,\n deleteUnit,\n getTimeSlots,\n verifyUnit,\n getGoods,\n storeGood,\n deleteGood,\n getDocs,\n storeDoc,\n deleteDoc,\n docsAndGoods\n};\n\nfunction fetchVisit(vtrac) {\n return {\n types: [\n VISIT.REQUEST,\n VISIT.SUCCESS,\n VISIT.ERROR\n ],\n promise: getVisitAPI(vtrac),\n appLoader: 'visit'\n };\n}\n","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction, loadDataErrorAction } from 'modules/app/actions';\nimport { fetchVisitAndUnitsSuccess, fetchVisitAndUnitsError } from '../actions';\nimport { VISIT_AND_UNITS } from '../constants/actionTypes';\nimport { getVisit, getVisitUnits } from '../repository';\n\n\nfunction *_fetchVisitAndUnitsAsync(action) {\n const {vtrac} = action;\n\n yield put(loadDataAction('visit'));\n try {\n let [visit, units] = yield [\n call(getVisit(vtrac)),\n call(getVisitUnits(vtrac))\n ];\n visit.units = units;\n yield put(fetchVisitAndUnitsSuccess(visit));\n yield put(loadDataSuccessAction('visit'));\n } catch (error) {\n yield put(fetchVisitAndUnitsError(error));\n yield put(loadDataErrorAction('visit', {response: error.response}, action));\n }\n}\n\nexport function *fetchVisitAndUnitsAsync() {\n yield takeEvery(VISIT_AND_UNITS.REQUEST, _fetchVisitAndUnitsAsync);\n}\n","import moment from 'moment';\nimport _ from 'lodash';\n\nexport const serverDateFormat = 'YYYYMMDD';\nexport const displayDateFormat = 'DD/MM/YYYY';\nexport const serverTimeFormat = 'HHmmss';\nexport const displayTimeFormat = 'HH:mm';\n\nexport const serverToDate = _.memoize((serverDate) => {\n if (serverDate.length !== serverDateFormat.length) {\n throw 'Invalid date given, date should have exactly 8 characters';\n }\n\n let parsedDate = moment(serverDate, serverDateFormat);\n\n if (!parsedDate.isValid()) {\n throw 'This is not a valid date';\n }\n \n return parsedDate;\n});\n\nexport const serverToTime = _.memoize((serverTime) => {\n if (serverTime.length !== serverTimeFormat.length) {\n throw 'Invalid time given, time should have exactly 6 characters';\n }\n\n let parsedTime = moment(serverTime, serverTimeFormat);\n\n if (!parsedTime.isValid()) {\n throw 'This is not a valid time';\n }\n\n return parsedTime;\n});\n\nexport const serverToDisplayDate = _.memoize((serverDate) => {\n let parsedDate = serverToDate(serverDate);\n\n return parsedDate.format(displayDateFormat);\n});\n\nexport const serverToDisplayTime = _.memoize((serverTime) => {\n let parsedTime = serverToTime(serverTime);\n\n return parsedTime.format(displayTimeFormat);\n});\n\nexport const serverToDisplayTimeSlot = (from, to) => {\n return serverToDisplayTime(from) + ' - ' + serverToDisplayTime(to);\n};\n\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n\nexport const displayToServerDate = _.memoize((displayDate) => {\n if (displayDate.length !== displayDateFormat.length) {\n throw 'Invalid date given, date should have exactly 10 characters';\n }\n\n let parsedDate = moment(displayDate, displayDateFormat);\n\n if (!parsedDate.isValid()) {\n throw 'This is not a valid date';\n }\n\n return parsedDate.format(serverDateFormat);\n});\n\nexport const displayToServerTime = _.memoize((displayTime) => {\n if (displayTime.length !== displayTimeFormat.length) {\n throw 'Invalid time given, time should have exactly 6 characters';\n }\n\n let parsedTime = moment(displayTime, displayTimeFormat);\n\n if (!parsedTime.isValid()) {\n throw 'This is not a valid time';\n }\n\n return parsedTime.format(serverTimeFormat);\n});\n\nexport const displayToServerTimeSlot = (timeslot) => {\n let fromAndTo = timeslot.split('-');\n return [displayToServerTime(fromAndTo[0].trim()), displayToServerTime(fromAndTo[1].trim())];\n};","import _ from 'lodash';\n\nlet cache = {};\n\nexport const storeData = (name, key, data) => {\n cache[name] = cache[name] || {};\n cache[name][key] = data;\n return key;\n};\n\nexport const getData = (name, key, objectKey) => {\n if (_.isString(key) && cache[name] && cache[name][key]) {\n return cache[name][key];\n }\n if (objectKey && key[objectKey] && cache[name] && cache[name][key[objectKey]]) {\n cache[name][key[objectKey]] = key;\n }\n return key;\n};","import _ from 'lodash';\nimport { serverToDisplayDate, serverToDisplayTimeSlot } from 'app/lib/format';\nimport { storeData } from 'app/lib/serverDataCache';\n\nexport const serverKeyMap = {\n ref: 'reference',\n submit: 'canSubmit'\n};\n\nexport const serverValueMap = {\n slotEta: (value) => serverToDisplayDate(value),\n delay: (value) => value === 1,\n empty: (value) => value === 1 ? '1' : '0',\n rid: (value) => value === 1,\n submit: (value) => value === 1,\n unitKind: (value) => value && storeData('unitKind', value.code, value),\n dim: (value) => value && storeData('dim',value.desc, value),\n regDate: (value) => value.length && serverToDisplayDate(value),\n packagingUnity: (value) => value && value.trim()\n};\n\nexport const serverUnitToClientMap = (unit) => {\n let u = {};\n _.each(unit, function(value, key) {\n key = serverKeyMap[key] || key;\n if (serverValueMap[key]) {\n value = serverValueMap[key](value);\n }\n u[key] = value;\n });\n return u;\n};\n\nexport const serverUnitsToClientMap = (units) => {\n let _units = [];\n for (let unit of units) {\n let u = serverUnitToClientMap(unit);\n _units.push(u);\n }\n return _units;\n};\n\nexport const serverVisitToClientMap = (visit) => {\n let _units = [],\n _visit = {};\n\n if (visit.slotFrom) {\n _visit.timeslot = serverToDisplayTimeSlot(visit.slotFrom, visit.slotTo);\n }\n\n _.each(visit, function(value, key) {\n key = serverKeyMap[key] || key;\n if (serverValueMap[key]) {\n value = serverValueMap[key](value);\n }\n _visit[key] = value;\n });\n\n if (visit.units) {\n for (let unit of visit.units) {\n let u = serverUnitToClientMap(unit);\n _units.push(u);\n }\n _visit.units = _units;\n }\n\n return _visit;\n};\n\nexport const serverGoodToClientMap = (good) => {\n let _good;\n\n if (_.isArray(good)) {\n _good = [];\n _.each(good, function (value){\n _good.push(serverGoodToClientMap(value));\n });\n } else {\n _good = {};\n _.each(good, function (value, key) {\n if (serverValueMap[key]) {\n value = serverValueMap[key](value);\n }\n _good[key] = value;\n });\n }\n\n return _good;\n};\n\nexport const serverDocToClientMap = (doc) => {\n let _doc;\n \n if (_.isArray(doc)) {\n _doc = [];\n _.each(doc, function (value){\n _doc.push(serverDocToClientMap(value));\n });\n } else {\n _doc = {};\n _.each(doc, function (value, key) {\n if (serverValueMap[key]) {\n value = serverValueMap[key](value);\n }\n _doc[key] = value;\n });\n }\n \n return _doc;\n};","import _ from 'lodash';\nimport { displayToServerDate, displayToServerTimeSlot } from 'app/lib/format';\nimport { getData } from 'app/lib/serverDataCache';\nimport { serverKeyMap } from './serverToClientMap';\nimport invert from 'app/lib/invert';\n\nconst clientKeyMap = invert(serverKeyMap);\nconst exclude = ['units', 'timeslot', 'status'];\n\nconst booleanToInt = (value) => (\n value ? 1 : 0\n);\nconst mapBooleansToInt = (values) => {\n let _values = {};\n\n _.each(values, (value, key) => {\n if (_.isObject(value)) {\n _values[key] = mapBooleansToInt(value);\n }\n else if (_.isBoolean(value)) {\n _values[key] = booleanToInt(value);\n } else {\n _values[key] = value;\n }\n });\n\n return _values;\n};\n\nexport const clientValueMap = {\n slotEta: (value) => displayToServerDate(value),\n delay: (value) => value ? 1 : 0,\n empty: (value) => value === '1' ? 1 : 0,\n rid: (value) => value ? 1 : 0,\n unitKind: (value) => getData('unitKind', value, 'code'),\n dim: (value) => getData('dim', value, 'desc'),\n licensePlate: (value) => value === '' ? null : value,\n chassisPlate: (value) => value === '' ? null : value,\n regDate: (value) => value && displayToServerDate(value),\n lq: (value) => !value ? 0 : 1,\n maritime: (value) => !value ? 0 : 1,\n environment: (value) => !value ? 0 : 1,\n waste: (value) => !value ? 0 : 1,\n packagingUnity: (value) => value && value.trim()\n};\n\nexport const clientVisitToServerMap = (visit, isUpdate) => {\n let _visit = {};\n\n if (visit.timeslot) {\n let fromAndTo = displayToServerTimeSlot(visit.timeslot);\n _visit.slotFrom = fromAndTo[0];\n _visit.slotTo = fromAndTo[1];\n }\n\n _.each(visit, function(value, key) {\n key = clientKeyMap[key] || key;\n if (clientValueMap[key]) {\n value = clientValueMap[key](value);\n }\n if (exclude.indexOf(key) === -1) {\n _visit[key] = value;\n }\n });\n\n if (isUpdate) {\n delete _visit.ownerTransId;\n }\n \n return _visit;\n};\n\nexport const clientUnitToServerMap = (unit) => {\n let _unit = {};\n\n _.each(unit, function(value, key) {\n key = clientKeyMap[key] || key;\n if (clientValueMap[key]) {\n value = clientValueMap[key](value);\n }\n if (exclude.indexOf(key) === -1) {\n _unit[key] = value;\n }\n });\n\n delete _unit.good;\n delete _unit.doc;\n\n return _unit;\n};\n\nexport const clientGoodToServerMap = (good) => {\n let _good = {};\n\n _.each(good, function (value, key) {\n if (_.isObject(value)) {\n _good[key] = clientGoodToServerMap(value);\n } else {\n if (clientValueMap[key]) {\n value = clientValueMap[key](value);\n }\n _good[key] = value;\n }\n });\n\n _good = mapBooleansToInt(_good);\n\n if (_good.hasOwnProperty('hzd') || _good.hasOwnProperty('hzdData')) {\n if (_good.hzd && _good.hzdData.hzdId) {\n _good.hzdData.originalHzdId = _good.hzdData.hzdId;\n delete _good.hzdData.hzdId;\n } else if (!_good.hzd) {\n delete _good.hzdData;\n }\n }\n\n delete _good.open;\n\n return _good;\n};\n\n\nexport const clientDocToServerMap = (doc) => {\n let _doc = {};\n\n _.each(doc, function (value, key) {\n if (clientValueMap[key]) {\n value = clientValueMap[key](value);\n }\n _doc[key] = value;\n });\n\n delete _doc.open;\n\n return _doc;\n};","import _ from 'lodash';\n\nexport default function(obj) {\n let result = {};\n let keys = _.keys(obj);\n for (let i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n}","const defaultUnitFieldValues = {\n // inOut: 'I',\n unitKind: ' ',\n //empty: \"1\", //TODO: setting this to true gives error: \"Invalid initialValue supplied to Input\"\n rid: 0,\n pos: 'F',\n good: {\n hzd: false,\n hzdData: {\n ridReg: 'ADR'\n },\n open: false,\n packagingUnity: 'PAL'\n },\n doc: {\n type: 'T1 '\n }\n};\n\nexport default defaultUnitFieldValues;","const iso6346Check = (con) => {\n if (!con || con == '' || con.length != 11) { return false; }\n con = con.toUpperCase();\n let re = /^[A-Z]{4}\\d{7}/;\n if (re.test(con)) {\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n let n = con.substr(i, 1);\n if (i < 4) {\n n = '0123456789A?BCDEFGHIJK?LMNOPQRSTU?VWXYZ'.indexOf(con.substr(i, 1));\n }\n n *= Math.pow(2, i);\n sum += n;\n }\n if (con.substr(0, 4) == 'HLCU') {\n sum -= 2;\n }\n sum %= 11;\n sum %= 10;\n return sum == con.substr(10);\n } else {\n return false; \n }\n};\n\nexport default iso6346Check;","import _ from 'lodash';\nimport {serverVisitToClientMap, serverUnitToClientMap, serverUnitsToClientMap, serverDocToClientMap, serverGoodToClientMap} from './serverToClientMap';\nimport {clientVisitToServerMap, clientUnitToServerMap, clientGoodToServerMap, clientDocToServerMap} from './clientToServerMap';\nimport defaultUnitFieldValues from './defaultUnitFieldValues';\nimport * as VERIFY_STATUS from 'modules/visits/constants/unitVerificationStatus';\nimport iso6346Check from \"../lib/iso6346Check\";\nimport { UNIT_KINDS } from '../globals';\n\nconst showUnitFieldCustomCheck = (formFields, fieldName, unitVerification) => {\n switch (fieldName){\n case 'pos':\n case 'dim':\n return formFields.trac.value || unitVerification.status === VERIFY_STATUS.VERIFIED_OK || unitVerification.dims.length > 0;\n case 'netto':\n return formFields.empty.value === '0' && (formFields.trac.value || unitVerification.status === VERIFY_STATUS.VERIFIED_OK || unitVerification.dims.length > 0);\n case 'goodsOverview':\n case 'docsOverview':\n return !!formFields.trac.value;\n default:\n return true;\n }\n};\n\nexport const unitKindHasISO = _.memoize((unitKind) => {\n const unitKindsWithISO = ['C'];\n return _.indexOf(unitKindsWithISO,unitKind) >= 0;\n});\n\nexport const dropOffOnly = _.memoize((fieldName) => {\n const fieldsForDropOff = ['pos', 'ISO', 'dim', 'unitKind', 'goods', 'documents', 'netto', 'rid'];\n return _.indexOf(fieldsForDropOff,fieldName) >= 0;\n});\n\nexport const pickUpOnly = _.memoize((fieldName) => {\n const fieldsForPickUp = ['pos', 'dim'];\n return _.indexOf(fieldsForPickUp,fieldName) >= 0;\n});\n\nexport const showDropOffUnitField = (formFields, fieldName) => {\n if (fieldName === 'goodsOverview' || fieldName === 'docsOverview') {\n return true;\n }\n\n return dropOffOnly(fieldName);\n};\n\nexport const showVerifyButton = (formFields) => {\n if (formFields.inOut.value === 'I' && !formFields.ctNumber.value) {\n return false;\n } else if (formFields.inOut.value === 'I' && formFields.unitKind.value === UNIT_KINDS.CONTAINER && !iso6346Check(formFields.ctNumber.value)) {\n return false;\n }\n\n // Not saved\n if (!formFields.trac.value) {\n if (formFields.inOut.value === 'O') {\n return (formFields.reference.value || formFields.ctNumber.value)\n && formFields.inOut.value\n && formFields.empty.value;\n }\n\n // reference, inOut and empty value given\n return formFields.reference.value\n && formFields.inOut.value\n && formFields.empty.value;\n }\n\n // saved\n // + dirty form\n return formFields.reference.dirty\n || formFields.inOut.dirty\n || formFields.empty.dirty\n || formFields.unitKind.dirty\n || formFields.ctNumber.dirty\n || formFields.rid.dirty;\n};\n\nexport const showSaveUnitButton = (formFields, unitVerification) => {\n return unitVerification.status === VERIFY_STATUS.VERIFIED_OK || formFields.trac.value;\n};\n\nexport const showUnitField = (formFields, fieldName, unitVerification) => {\n return (formFields.inOut.value === 'I' && showDropOffUnitField(formFields, fieldName) ||\n formFields.inOut.value === 'O' && pickUpOnly(fieldName)) && showUnitFieldCustomCheck(formFields, fieldName, unitVerification);\n};\n\nexport const showDocField = (formFields, fieldName) => {\n if (formFields.type.value && ['ZD', 'GOODS', 'UNIT'].indexOf(formFields.type.value.trim()) > -1) {\n return (['number', 'regPlace', 'regDate'].indexOf(fieldName)) === -1;\n }\n return true;\n};\n\nexport {serverVisitToClientMap, serverUnitToClientMap, serverUnitsToClientMap, serverDocToClientMap, serverGoodToClientMap,\n clientVisitToServerMap, clientUnitToServerMap, clientGoodToServerMap, clientDocToServerMap,\n defaultUnitFieldValues};\n","export const NOT_VERIFIED = 'not_verified';\nexport const VERIFIED_OK = 'ok';\nexport const VERIFIED_NOK = 'nok';\nexport const VERIFYING = 'verifying';","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { clientUnitToServerMap } from 'app/businessRules';\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { storeUnit as storeUnitActions } from '../actions';\nimport { STORE_UNIT } from '../constants/actionTypes';\nimport { saveUnit, updateUnit } from '../repository';\n\n\nfunction *_storeUnit(action) {\n const {formData} = action;\n yield put(loadDataAction('storeUnit'));\n let payload = clientUnitToServerMap(formData);\n\n try {\n let unit;\n if (payload.trac) {\n unit = yield call(updateUnit(payload, payload.vtrac, payload.trac));\n } else {\n unit = yield call(saveUnit(payload, payload.vtrac));\n }\n yield put(storeUnitActions.success(unit, payload.vtrac));\n yield put(loadDataSuccessAction('storeUnit', 'unit.form.save.success'));\n } catch (error) {\n yield put(storeUnitActions.error(error));\n yield put(loadDataErrorAction('storeUnit', {response: error.response, body: error.body, titleId:'unit.form.save.failed'}, action));\n }\n\n}\n\n\nexport function *storeUnit() {\n yield takeLatest(STORE_UNIT.REQUEST, _storeUnit);\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { clientVisitToServerMap } from 'app/businessRules';\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { storeVisit as storeVisitActions } from '../actions';\nimport { STORE_VISIT } from '../constants/actionTypes';\nimport { saveVisit, updateVisit } from '../repository';\n\n\nfunction *_storeVisit(action) {\n const {formData} = action;\n yield put(loadDataAction('storeVisit'));\n\n try {\n let visit, payload;\n if (formData.trac) {\n payload = clientVisitToServerMap(formData, true);\n visit = yield call(updateVisit(payload, payload.trac));\n } else {\n payload = clientVisitToServerMap(formData);\n visit = yield call(saveVisit(payload));\n }\n yield put(storeVisitActions.success(visit));\n yield put(loadDataSuccessAction('storeVisit', 'visit.form.save.success'));\n } catch (error) {\n yield put(storeVisitActions.error(error));\n yield put(loadDataErrorAction('storeVisit', {response: error.response, body: error.body, titleId:'visit.form.save.failed'}, action));\n }\n\n}\n\n\nexport function *storeVisit() {\n yield takeLatest(STORE_VISIT.REQUEST, _storeVisit);\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { deleteVisit as deleteVisitActions } from '../actions';\nimport { DELETE_VISIT } from '../constants/actionTypes';\nimport { removeVisit } from '../repository';\n\n\nfunction *_deleteVisit(action) {\n const {trac} = action;\n yield put(loadDataAction('deleteVisit'));\n\n try {\n yield call(removeVisit(trac));\n yield put(deleteVisitActions.success(trac));\n yield put(loadDataSuccessAction('deleteVisit', 'visit.delete.success'));\n } catch (error) {\n yield put(deleteVisitActions.error(error));\n yield put(loadDataErrorAction('deleteVisit', {response: error.response, body: error.body, titleId:'visit.delete.failed'}, action));\n }\n\n}\n\n\nexport function *deleteVisit() {\n yield takeLatest(DELETE_VISIT.REQUEST, _deleteVisit);\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { submitVisit as submitVisitActions } from '../actions';\nimport { SUBMIT_VISIT } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\nfunction *_submitVisit(action) {\n const {trac} = action;\n yield put(loadDataAction('submitVisit'));\n\n try {\n let response = yield call(api.submitVisit(trac));\n yield put(submitVisitActions.success(response));\n yield put(loadDataSuccessAction('submitVisit', 'visit.submit.success'));\n } catch (error) {\n yield put(submitVisitActions.error(error));\n yield put(loadDataErrorAction('submitVisit', {response: error.response, body: error.body, titleId:'visit.submit.failed'}, action));\n }\n\n}\n\n\nexport function *submitVisit() {\n yield takeLatest(SUBMIT_VISIT.REQUEST, _submitVisit);\n}","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataDoneAction, loadDataErrorAction } from 'modules/app/actions';\nimport { getUnits } from '../actions';\nimport { GET_UNITS } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\nfunction *_fetchUnits(action) {\n const {vtrac} = action;\n yield put(loadDataAction('units'));\n try {\n const units = yield call(api.getVisitUnits(vtrac));\n yield put(getUnits.success({units,vtrac}));\n yield put(loadDataDoneAction('units'));\n } catch (error) {\n yield put(getUnits.error(error));\n yield put(loadDataErrorAction('units', {response: error.response}, action));\n }\n}\n\nexport function *fetchUnits() {\n yield takeEvery(GET_UNITS.REQUEST, _fetchUnits);\n}\n","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction, loadDataDoneAction, loadDataErrorAction } from 'modules/app/actions';\nimport { getVisits } from '../actions';\nimport { VISITS } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\nfunction *_fetchVisits(action) {\n yield put(loadDataAction('visits'));\n try {\n const visits = yield call(api.getVisits(action.filters));\n yield put(getVisits.success({visits}));\n yield put(loadDataDoneAction('visits'));\n } catch (error) {\n yield put(getVisits.error(error));\n yield put(loadDataErrorAction('visits', {response: error.response}, action));\n }\n}\n\nexport function *fetchVisits() {\n yield takeEvery(VISITS.REQUEST, _fetchVisits);\n}\n","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { deleteUnit as deleteUnitActions } from '../actions';\nimport { DELETE_UNIT } from '../constants/actionTypes';\nimport { removeUnit } from '../repository';\n\n\nfunction *_deleteUnit(action) {\n const {vtrac, utrac} = action;\n yield put(loadDataAction('deleteUnit'));\n\n try {\n yield call(removeUnit(vtrac, utrac));\n yield put(deleteUnitActions.success(utrac, vtrac));\n yield put(loadDataSuccessAction('deleteUnit', 'unit.delete.success'));\n } catch (error) {\n yield put(deleteUnitActions.error(error));\n yield put(loadDataErrorAction('deleteUnit', {response: error.response, body: error.body, titleId:'unit.delete.failed'}, action));\n }\n\n}\n\n\nexport function *deleteUnit() {\n yield takeLatest(DELETE_UNIT.REQUEST, _deleteUnit);\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\nimport _ from 'lodash';\nimport { clientUnitToServerMap } from 'app/businessRules';\nimport { loadDataAction,loadDataDoneAction,loadDataErrorAction } from 'modules/app/actions';\nimport { verifyUnit as verifyUnitActions } from '../actions';\nimport { VERIFY_UNIT } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\n\nfunction *_verifyUnit(action) {\n const {unit, dom} = action;\n yield put(loadDataAction('verifyUnit'));\n let payload = clientUnitToServerMap(unit);\n payload.dom = dom;\n\n try {\n let response = yield call(api.verifyUnit(payload));\n yield put(verifyUnitActions.success(response));\n yield put(loadDataDoneAction('verifyUnit'));\n } catch (error) {\n yield put(verifyUnitActions.error(error));\n yield put(loadDataErrorAction('verifyUnit', {response: error.response, body: error.body, titleId:'unit.form.verify.failed'}, action));\n }\n\n}\n\n\nexport function *verifyUnit() {\n yield takeLatest(VERIFY_UNIT.REQUEST, _verifyUnit);\n}","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataDoneAction, loadDataErrorAction } from 'modules/app/actions';\nimport { getGoods } from '../actions';\nimport { GET_GOODS } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\nfunction *_fetchGoods(action) {\n const {trac} = action;\n yield put(loadDataAction('goods'));\n try {\n const goods = yield call(api.getGoods(trac));\n yield put(getGoods.success({goods, utrac:trac}));\n yield put(loadDataDoneAction('goods'));\n } catch (error) {\n yield put(getGoods.error(error));\n yield put(loadDataErrorAction('goods', {response: error.response}, action));\n }\n}\n\nexport function *fetchGoods() {\n yield takeEvery(GET_GOODS.REQUEST, _fetchGoods);\n}\n","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { clientGoodToServerMap } from 'app/businessRules';\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { storeGood as storeGoodActions } from '../actions';\nimport { STORE_GOOD } from '../constants/actionTypes';\nimport { saveGood, updateGood } from '../repository';\n\n\nfunction *_storeGood(action) {\n const {utrac, formData} = action;\n yield put(loadDataAction('storeGood'));\n const payload = clientGoodToServerMap(formData);\n\n try {\n let good;\n if (formData.id) {\n good = yield call(updateGood(utrac, payload));\n } else {\n good = yield call(saveGood(utrac, payload));\n }\n yield put(storeGoodActions.success(good));\n yield put(loadDataSuccessAction('storeGood', 'good.form.save.success'));\n } catch (error) {\n yield put(storeGoodActions.error(error));\n yield put(loadDataErrorAction('storeGood', {response: error.response, body: error.body, titleId:'good.form.save.failed'}, action));\n }\n\n}\n\n\nexport function *storeGood() {\n yield takeLatest(STORE_GOOD.REQUEST, _storeGood);\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { deleteGood as deleteGoodActions } from '../actions';\nimport { DELETE_GOOD } from '../constants/actionTypes';\nimport { removeGood } from '../repository';\n\n\nfunction *_deleteGood(action) {\n const {utrac, id} = action;\n yield put(loadDataAction('deleteGood'));\n\n try {\n yield call(removeGood(utrac, id));\n yield put(deleteGoodActions.success(id));\n yield put(loadDataSuccessAction('deleteGood', 'good.delete.success'));\n } catch (error) {\n yield put(deleteGoodActions.error(error));\n yield put(loadDataErrorAction('deleteGood', {response: error.response, body: error.body, titleId:'good.delete.failed'}, action));\n }\n\n}\n\n\nexport function *deleteGood() {\n yield takeLatest(DELETE_GOOD.REQUEST, _deleteGood);\n}","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataDoneAction, loadDataErrorAction } from 'modules/app/actions';\nimport { getDocs } from '../actions';\nimport { GET_DOCS } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\nfunction *_fetchDocs(action) {\n const {trac} = action;\n yield put(loadDataAction('docs'));\n try {\n const docs = yield call(api.getDocs(trac));\n yield put(getDocs.success({docs, utrac:trac}));\n yield put(loadDataDoneAction('docs'));\n } catch (error) {\n yield put(getDocs.error(error));\n yield put(loadDataErrorAction('docs', {response: error.response}, action));\n }\n}\n\nexport function *fetchDocs() {\n yield takeEvery(GET_DOCS.REQUEST, _fetchDocs);\n}\n","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { clientDocToServerMap } from 'app/businessRules';\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { storeDoc as storeDocActions } from '../actions';\nimport { STORE_DOC } from '../constants/actionTypes';\nimport { saveDoc, updateDoc } from '../repository';\n\n\nfunction *_storeDoc(action) {\n const {utrac, formData} = action;\n yield put(loadDataAction('storeDoc'));\n const payload = clientDocToServerMap(formData);\n\n try {\n let doc;\n if (formData.id) {\n doc = yield call(updateDoc(utrac, payload));\n } else {\n doc = yield call(saveDoc(utrac, payload));\n }\n yield put(storeDocActions.success(doc));\n yield put(loadDataSuccessAction('storeDoc', 'doc.form.save.success'));\n } catch (error) {\n yield put(storeDocActions.error(error));\n yield put(loadDataErrorAction('storeDoc', {response: error.response, body: error.body, titleId:'doc.form.save.failed'}, action));\n }\n\n}\n\n\nexport function *storeDoc() {\n yield takeLatest(STORE_DOC.REQUEST, _storeDoc);\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction,loadDataErrorAction } from 'modules/app/actions';\nimport { deleteDoc as deleteDocActions } from '../actions';\nimport { DELETE_DOC } from '../constants/actionTypes';\nimport { removeDoc } from '../repository';\n\n\nfunction *_deleteDoc(action) {\n const {utrac, id} = action;\n yield put(loadDataAction('deleteDoc'));\n\n try {\n yield call(removeDoc(utrac, id));\n yield put(deleteDocActions.success(id));\n yield put(loadDataSuccessAction('deleteDoc', 'doc.delete.success'));\n } catch (error) {\n yield put(deleteDocActions.error(error));\n yield put(loadDataErrorAction('deleteDoc', {response: error.response, body: error.body, titleId:'doc.delete.failed'}, action));\n }\n\n}\n\n\nexport function *deleteDoc() {\n yield takeLatest(DELETE_DOC.REQUEST, _deleteDoc);\n}","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { fetchVisitSuccess } from '../actions';\nimport { STORE_UNIT } from '../constants/actionTypes';\nimport { getVisit } from '../repository';\n\n\nfunction *_fetchVisitOnStoreUnit({vtrac}) {\n\n try {\n let visit = yield call(getVisit(vtrac));\n\n yield put(fetchVisitSuccess(visit));\n } catch (error) {\n //Do nothing\n }\n}\n\nexport function *fetchVisitOnStoreUnit() {\n yield takeEvery(STORE_UNIT.SUCCESS, _fetchVisitOnStoreUnit);\n}\n","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { fetchVisitSuccess } from '../actions';\nimport { DELETE_UNIT } from '../constants/actionTypes';\nimport { getVisit } from '../repository';\n\n\nfunction *_fetchVisitOnDeleteUnit({vtrac}) {\n\n try {\n let visit = yield call(getVisit(vtrac));\n\n yield put(fetchVisitSuccess(visit));\n } catch (error) {\n //Do nothing\n }\n}\n\nexport function *fetchVisitOnDeleteUnit() {\n yield takeEvery(DELETE_UNIT.SUCCESS, _fetchVisitOnDeleteUnit);\n}\n","import { takeEvery } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { loadDataAction,loadDataSuccessAction, loadDataErrorAction } from 'modules/app/actions';\nimport { getTimeSlots } from '../actions';\nimport { TIME_SLOTS } from '../constants/actionTypes';\nimport * as api from '../repository';\n\n\nfunction *_fetchTimeSlots(action) {\n const {date, dom, days} = action;\n yield put(loadDataAction('timeSlots'));\n try {\n const timeSlots = yield call(api.getTimeSlots(date, dom, days));\n yield put(getTimeSlots.success(timeSlots));\n yield put(loadDataSuccessAction('timeSlots'));\n } catch (error) {\n yield put(getTimeSlots.error(error));\n yield put(loadDataErrorAction('timeSlots', {response: error.response}, action));\n }\n}\n\nexport function *fetchTimeSlots() {\n yield takeEvery(TIME_SLOTS.REQUEST, _fetchTimeSlots);\n}\n","import { take, put } from 'redux-saga/effects';\nimport { routeActions } from 'redux-simple-router';\n\nimport { STORE_VISIT } from '../constants/actionTypes';\n\nexport function *redirectToEditVisitOnCreateVisit() {\n while(true) {\n yield take(STORE_VISIT.REQUEST);\n const {visit} = yield take(STORE_VISIT.SUCCESS);\n yield put(routeActions.push('/visits/' + visit.trac));\n }\n}","import { take, put } from 'redux-saga/effects';\nimport { routeActions } from 'redux-simple-router';\n\nimport { VISIT_AND_UNITS } from '../constants/actionTypes';\n\nexport function *redirectTo404OnVisitNotFound() {\n while(true) {\n const {error} = yield take(VISIT_AND_UNITS.ERROR);\n if(error.response.status === 404) {\n yield put(routeActions.push('/notfound'));\n }\n }\n}","import { take, put } from 'redux-saga/effects';\nimport { routeActions } from 'redux-simple-router';\n\nimport { SUBMIT_VISIT } from '../constants/actionTypes';\n\nexport function *redirectOnSubmit() {\n while(true) {\n yield take(SUBMIT_VISIT.REQUEST);\n yield take(SUBMIT_VISIT.SUCCESS);\n yield put(routeActions.push('/visits'));\n }\n}","import { takeLatest } from 'redux-saga';\nimport { take, put, call } from 'redux-saga/effects';\n\nimport { clearLoadedVisit } from '../actions';\nimport { VISIT_AND_UNITS } from '../constants/actionTypes';\n\n\nfunction *_clearVisitOnFormReset(action) {\n if (action.form !== 'visit') {\n return;\n }\n\n yield put(clearLoadedVisit());\n}\n\n\nexport function *clearVisitOnFormReset() {\n yield takeLatest('redux-form/RESET', _clearVisitOnFormReset);\n}","import {getJWT} from 'modules/auth/selectors';\nimport {store} from 'app/store';\n\n/**\n * @Deprecated\n */\nexport default class BaseRepository {\n\n static parseJSON = response => {\n return response.json();\n };\n\n static headers = () => {\n const jwt = getJWT(store.getState());\n let headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (jwt) {\n headers.Authorization = `Bearer ${jwt}`;\n }\n return new Headers(headers);\n };\n\n //TODO: On 403: Don't redirect to login page, but show message \"Pls try logging in again\".\n\n //TODO: On 401: Try to refresh once! If successful, retry last action.\n}","import { apiRoutes } from 'app/globals';\nimport BaseRepository from 'modules/app/repositories/BaseRepository';\n\nimport * as api from 'app/lib/ajax';\n\n\nexport const getCompanyName = () => (\n api.get(apiRoutes.GET_COMPANY_DATA)\n);\n\n\nexport default class ProfileRepository {\n\n static getCompanyName() {\n let request = new Request(apiRoutes.GET_COMPANY_DATA, {\n headers: BaseRepository.headers()\n });\n return fetch(request);\n\n //return fetch(apiRoutes.GET_COMPANY_DATA, {\n // method: 'get',\n // headers: BaseRepository.headers\n //});\n //.then(BaseRepository.parseJSON)\n //.catch(function (err) {\n // console.error(err.toString());\n //});\n }\n\n //static getProfile() {\n // let request = new Request(apiRoutes.GET_PROFILE, {\n // headers: BaseRepository.headers()\n // });\n // return fetch(request);\n\n //return fetch(apiRoutes.GET_PROFILE, {\n // method: 'get'\n //});\n //.then(BaseRepository.parseJSON)\n //.catch(function (err) {\n // console.error(err.toString());\n //});\n //}\n\n}\n","import { routeActions } from 'redux-simple-router';\nimport browserStore from 'store';\n\nimport {settings} from 'app/globals';\nimport {getCompanyName} from '../repositories/ProfileRepository';\nimport * as types from '../constants/actionTypes';\n\nlet preferredLicensePlate;\n\n// ========================================================\n// PUBLIC\n// ========================================================\n\nexport {\n setPreferredLicensePlate,\n fetchCompanyName,\n setPreferredLanguage\n};\n\n// ========================================================\n// IMPLEMENTATION\n// ========================================================\n\npreferredLicensePlate = (licensePlate) => ({\n type: types.LICENSE_PLATE_SET_PREFERRED,\n payload: {\n licensePlate\n }\n});\n\nfunction setPreferredLicensePlate(licensePlate, redirect) {\n return dispatch => {\n dispatch(preferredLicensePlate(licensePlate));\n if (redirect) {\n dispatch(routeActions.push(redirect));\n }\n };\n}\n\nfunction fetchCompanyName() {\n return {\n types: [types.COMPANY_NAME_FETCH_REQUEST, types.COMPANY_NAME_FETCH_SUCCESS, types.COMPANY_NAME_FETCH_FAILED],\n promise: getCompanyName()\n };\n\n //return dispatch => {\n // ProfileRepository.getCompanyName()\n // .then(response => {\n // dispatch({\n // type: types.COMPANY_NAME_FETCH_SUCCESS,\n // payload: response.name\n // });\n // });\n //};\n}\n\n//function fetchProfile() {\n// return {\n// types: [types.PROFILE_FETCH_REQUEST,types.PROFILE_FETCH_SUCCESS,types.PROFILE_FETCH_FAILED],\n// promise: ProfileRepository.getProfile()\n// };\n\n //return dispatch => {\n // ProfileRepository.getProfile()\n // .then(response => {\n // dispatch({\n // type: types.PROFILE_FETCH_SUCCESS,\n // payload: response.profile\n // });\n // });\n //};\n//}\n\nfunction setPreferredLanguage(locale = settings.defaultLocale) {\n if (settings.supportedLocales.indexOf(locale) === -1) {\n locale = settings.defaultLocale;\n }\n browserStore.set('locale', locale);\n return dispatch => {\n dispatch({\n type: types.PROFILE_SET_LOCALE,\n payload: locale\n });\n //document.location.reload();\n };\n}","export const LICENSE_PLATE_SET_PREFERRED = 'LICENSE_PLAT_SET_PREFERRED';\n\nexport const COMPANY_NAME_FETCH_REQUEST = 'COMPANY_NAME_FETCH_REQUEST';\nexport const COMPANY_NAME_FETCH_SUCCESS = 'COMPANY_NAME_FETCH_SUCCESS';\nexport const COMPANY_NAME_FETCH_FAILED = 'COMPANY_NAME_FETCH_FAILED';\n\nexport const PROFILE_FETCH_REQUEST = 'PROFILE_FETCH_REQUEST';\nexport const PROFILE_FETCH_SUCCESS = 'PROFILE_FETCH_SUCCESS';\nexport const PROFILE_FETCH_FAILED = 'PROFILE_FETCH_FAILED';\n\nexport const PROFILE_SET_LOCALE = 'PROFILE_SET_LOCALE';","import { take, put } from 'redux-saga/effects';\n\nimport { LOGIN } from 'modules/auth/constants/actionTypes';\nimport { setPreferredLanguage } from '../actions';\n\nexport function *setLanguageOnLogin() {\n while(true) {\n yield take(LOGIN.REQUEST);\n const {sessionData:{lang}} = yield take(LOGIN.SUCCESS);\n yield put(setPreferredLanguage(lang));\n }\n}\n\n","import createSagaMiddleware from 'redux-saga';\n\nimport { flashMessageOnServerError } from './app/sagas/flashMessageOnServerError';\nimport { flashMessageOnServerSuccess } from './app/sagas/flashMessageOnServerSuccess';\nimport { httpError } from './app/sagas/httpError';\nimport { login } from './auth/sagas/login';\nimport { redirectOnLogin } from './auth/sagas/redirectOnLogin';\nimport { redirectOnLogout } from './auth/sagas/redirectOnLogout';\nimport { refreshOn401 } from './auth/sagas/refreshOn401';\nimport { fetchVisitAndUnitsAsync } from './visits/sagas/fetchVisitAndUnitsAsync';\nimport { storeUnit } from './visits/sagas/storeUnit';\nimport { storeVisit } from './visits/sagas/storeVisit';\nimport { deleteVisit } from './visits/sagas/deleteVisit';\nimport { submitVisit } from './visits/sagas/submitVisit';\nimport { fetchUnits } from './visits/sagas/fetchUnits';\nimport { fetchVisits } from './visits/sagas/fetchVisits';\nimport { deleteUnit } from './visits/sagas/deleteUnit';\nimport { verifyUnit } from './visits/sagas/verifyUnit';\nimport { fetchGoods } from './visits/sagas/fetchGoods';\nimport { storeGood } from './visits/sagas/storeGood';\nimport { deleteGood } from './visits/sagas/deleteGood';\nimport { fetchDocs } from './visits/sagas/fetchDocs';\nimport { storeDoc } from './visits/sagas/storeDoc';\nimport { deleteDoc } from './visits/sagas/deleteDoc';\nimport { fetchVisitOnStoreUnit } from './visits/sagas/fetchVisitOnStoreUnit';\nimport { fetchVisitOnDeleteUnit } from './visits/sagas/fetchVisitOnDeleteUnit';\nimport { fetchTimeSlots } from './visits/sagas/fetchTimeSlots';\nimport { redirectToEditVisitOnCreateVisit } from './visits/sagas/redirectToEditVisitOnCreateVisit';\nimport { redirectTo404OnVisitNotFound } from './visits/sagas/redirectTo404OnVisitNotFound';\nimport { redirectOnSubmit } from './visits/sagas/redirectOnSubmit';\nimport { clearVisitOnFormReset } from './visits/sagas/clearVisitOnFormReset';\nimport { setLanguageOnLogin } from './profile/sagas/setLanguageOnLogin';\n\n/**\n * @CoreConcept(name=\"Redux Sagas\", description=\"Asynchronously handle application side effects. More info: https://github.com/yelouafi/redux-saga\")\n */\nexport const sagaMiddleware = createSagaMiddleware(\n flashMessageOnServerError, flashMessageOnServerSuccess, httpError,\n login, redirectOnLogin, redirectOnLogout, refreshOn401,\n setLanguageOnLogin,\n fetchVisitAndUnitsAsync, fetchVisitOnStoreUnit, fetchVisitOnDeleteUnit, fetchUnits, fetchVisits, storeUnit, storeVisit, deleteVisit, submitVisit, deleteUnit, verifyUnit, fetchTimeSlots, redirectToEditVisitOnCreateVisit, redirectTo404OnVisitNotFound, redirectOnSubmit,\n fetchGoods, storeGood, deleteGood, clearVisitOnFormReset,\n fetchDocs, storeDoc, deleteDoc\n);\n","import _ from 'lodash';\nimport invariant from 'invariant';\n\n\nexport function checkAccess(requiredLevel, currentLevel) {\n return !!(requiredLevel.bitMask & currentLevel.bitMask);\n}\n\nexport function accessEquals(requiredLevel, currentLevel) {\n return requiredLevel.bitMask === currentLevel.bitMask;\n}\n\nexport class NotAuthorizedException {\n constructor(to = '/login') {\n this.redirectTo = to;\n }\n}\n\nexport class AccessDeniedException {\n constructor(to = '/403') {\n this.redirectTo = to;\n }\n}\n\n/*\n Method to build a distinct bit mask for each role\n It starts off with \"1\" and shifts the bit to the left for each element in the\n roles array parameter\n */\nexport function buildRoles(roles) {\n let bitMask = '01';\n\n invariant(\n roles.length <= 31,\n 'You have too many roles!' +\n 'Max=31 before the bit shift pushes the accompanying integer out of the memory footprint for an integer'\n );\n\n // dbg\n const userRoles = _.reduce(roles, (result, role) => {\n const intCode = parseInt(bitMask, 2);\n result[role] = {\n bitMask: intCode,\n title: role\n };\n bitMask = (intCode << 1 ).toString(2);\n return result;\n }, {});\n\n return userRoles;\n}\n\n/*\n This method builds access level bit masks based on the accessLevelDeclaration parameter which must\n contain an array for each access level containing the allowed user roles.\n */\nexport function buildAccessLevels(accessLevelDeclarations, userRoles) {\n\n /*\n Zero step - transform\n { level1Name: level1, level2Name: level2 } object\n =>\n [ { name: level1Name, level: level1 }, { name: level2Name, level: level2 } ] array\n */\n const declarationsArr = _.map(accessLevelDeclarations, (level, name) => ({ name, level }));\n\n /*\n First step: filter access levels like:\n 'public': '*',\n That means every user role enabled, so bitMask => sum of all bit masks\n */\n let accessLevels = _\n .filter(declarationsArr, ({ level }) => typeof level === 'string') // eslint-disable-line no-shadow\n .reduce((result, { level, name }) => { // eslint-disable-line no-shadow\n\n invariant(\n level === '*',\n 'Access Control Error: Could not parse \"' + level + '\" as access definition for level \"' + name + '\"'\n );\n\n const resultBitMask = _.reduce(userRoles, (result) => result + '1', ''); // eslint-disable-line no-shadow\n\n result[name] = {\n bitMask: parseInt(resultBitMask, 2)\n };\n\n return result;\n }, {})\n ;\n\n /*\n Second step: filter access levels like:\n 'user': ['user', 'admin'],\n That means we need to iterate on ['user', 'admin'] array and summ bit mask for 'user' and 'admin'\n */\n accessLevels = _\n .filter(declarationsArr, ({ level }) => typeof level !== 'string') // eslint-disable-line no-shadow\n .reduce((result, { level, name }) => { // eslint-disable-line no-shadow\n const levelName = name;\n const levelsArr = level;\n const resultBitMask = _.reduce(levelsArr, (resultBitMask, roleName) => { // eslint-disable-line no-shadow\n\n invariant(\n userRoles.hasOwnProperty(roleName) === true,\n 'Access Control Error: Could not find role \"' + roleName + '\" in registered roles while building access for \"' + levelName + '\"'\n );\n\n return resultBitMask | userRoles[roleName].bitMask;\n }, 0);\n\n\n result[name] = {\n bitMask: resultBitMask\n };\n return result;\n }, accessLevels)\n ;\n return accessLevels;\n}","import { buildRoles, buildAccessLevels } from './lib/auth-helpers.js';\n\n/*\n List all the roles you wish to use in the app\n You have a max of 31 before the bit shift pushes the accompanying integer out of\n the memory footprint for an integer\n */\nconst roles = [\n 'banned',\n 'public',\n 'user',\n 'admin'\n];\n\n/*\n Build out all the access levels you want referencing the roles listed above\n You can use the \"*\" symbol to represent access to all roles.\n The left-hand side specifies the name of the access level, and the right-hand side\n specifies what user roles have access to that access level. E.g. users with user role\n 'user' and 'admin' have access to the access level 'user'.\n */\nconst levels = {\n 'public': '*',\n 'anon': ['public'],\n 'user': ['user', 'admin'],\n 'admin': ['admin']\n};\n\nexport const userRoles = buildRoles(roles);\nexport const accessLevels = buildAccessLevels(levels, userRoles);","import {post, get} from './lib/ajax';\nimport {apiRoutes} from './globals';\n\nexport const actualTrucks = ({dom, date}) => (\n get(apiRoutes.ACTUAL_TRUCKS({dom, date}))\n);\n\nexport const actualLeadTime = ({dom, dayOfWeek}) => (\n get(apiRoutes.ACTUAL_LEAD_TIME({dom, dayOfWeek}))\n);\n\nexport const actualOccupancy = ({dom, date}) => (\n get(apiRoutes.ACTUAL_OCCUPANCY({dom, date}))\n);\n\nexport const averageLeadTime = ({dom, dayOfWeek}) => (\n get(apiRoutes.AVERAGE_LEAD_TIME({dom, dayOfWeek}))\n);\n\nexport const railStatusImport = ({dom}) => (\n get(apiRoutes.RAIL_STATUS_IN({dom}))\n);\n\nexport const railStatusExport = ({dom}) => (\n get(apiRoutes.RAIL_STATUS_OUT({dom}))\n);","import { createReducer } from 'immutable-reducers';\nimport browserStore from 'store';\nimport _ from 'lodash';\n\nimport {fromJS, Map} from 'immutable';\nimport * as types from '../constants/actionTypes';\nimport {LOGIN} from 'modules/auth/constants/actionTypes';\n\nexport default createReducer(['profile'], (profile = Map(), action) => {\n switch (action.type) {\n case types.LICENSE_PLATE_SET_PREFERRED:\n return profile.set('licensePlate', action.payload.licensePlate);\n\n case types.COMPANY_NAME_FETCH_SUCCESS:\n const profileWithCompanyName = profile\n .set('companyName', action.payload.name);\n\n const cTerminals = action.payload.terminals.filter(terminal => terminal.rights && terminal.rights.length > 0);\n const cRights = cTerminals.reduce((agg, terminal) => [...agg, ...terminal.rights], []);\n\n const profileWithTerminals =\n !profile.get('terminals').length && cTerminals.length > 0\n ? profileWithCompanyName.set('terminals', fromJS(cTerminals))\n : profileWithCompanyName;\n\n return !profile.get('rights').length && cRights.length > 0\n ? profileWithTerminals.set('rights', fromJS(cRights))\n : profileWithTerminals;\n\n case types.PROFILE_SET_LOCALE:\n return profile.set('locale', action.payload);\n\n case LOGIN.SUCCESS:\n const {name, reqComp, reqCompName, terminals, unitKinds, packagingUnity, transCompList, typeDocList, rights, unitStates, prefLP, prefComp} = action.sessionData;\n _.each(packagingUnity, (pu) => {\n pu.code = pu.code.trim();\n });\n _.each(unitStates, (us) => {\n us.code = us.code.trim();\n });\n return profile.merge({\n fullName: name,\n ownerTransId: reqComp,\n requestingCompany: reqCompName,\n licensePlate: prefLP,\n prefComp,\n terminals,\n unitKinds,\n packagingUnity,\n typeDocList,\n transCompList,\n rights,\n unitStates\n });\n }\n return profile;\n});\n","import { createReducer } from 'immutable-reducers';\nimport { userRoles } from 'app/access';\nimport { List } from 'immutable';\nimport jwtDecode from 'jwt-decode';\n\nimport * as authActionTypes from 'modules/auth/constants/actionTypes';\nimport * as actionTypes from '../constants/actionTypes';\n\nexport default createReducer(['licensePlates'], (licensePlates = {}, action) => {\n let payload = action.payload;\n\n switch (action.type) {\n case authActionTypes.LOGIN:\n return List.of('1-ABC-123', '123-ABC', 'ABC-123'); //TODO: should be payload data\n //return List.of(...payload.profile.licensePlates);\n case authActionTypes.LOGOUT:\n return List.of();\n default:\n break;\n }\n return licensePlates;\n});\n","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\n\nimport {serverUnitsToClientMap} from 'app/businessRules';\nimport * as actionTypes from '../constants/actionTypes';\nimport {VISITS, DELETE_VISIT, GET_UNITS, GET_GOODS, GET_DOCS} from '../constants/actionTypes';\n\n\nexport default createReducer(['visits'], (visits = Map(), action) => {\n let payload = action.payload;\n let unitIndex = 0;\n let index = 0;\n\n switch (action.type) {\n case actionTypes.VISIT_STORE_REQUEST:\n break;\n\n case actionTypes.VISIT_FETCH_SUCCESS:\n case actionTypes.VISIT_STORE_SUCCESS:\n let reg = visits.get(payload.id);\n if (!reg) {\n reg = fromJS(payload.data);\n } else {\n reg.mergeDeep(payload.data);\n }\n return visits.set(payload.id, reg);\n\n case VISITS.SUCCESS:\n return fromJS(action.visits);\n\n case DELETE_VISIT.SUCCESS:\n index = visits.findIndex(visit => visit.get('trac') === action.trac);\n return visits.delete(index);\n\n case GET_UNITS.SUCCESS:\n index = visits.findIndex(visit => visit.get('trac') === action.vtrac);\n return visits.setIn([index, 'units'], fromJS(action.units));\n\n case GET_GOODS.SUCCESS:\n unitIndex = 0;\n if (visits.count() === 0) {\n break;\n }\n\n index = visits.findIndex(visit => {\n if (!visit.has('units')) {\n return false;\n }\n unitIndex = visit.get('units').findIndex(unit => unit.get('trac') === action.utrac);\n return unitIndex !== -1;\n });\n\n return visits.setIn([index, 'units', unitIndex, 'goods'], fromJS(action.goods));\n\n case GET_DOCS.SUCCESS:\n unitIndex = 0;\n if (visits.count() === 0) {\n break;\n }\n\n index = visits.findIndex(visit => {\n if (!visit.has('units')) {\n return false;\n }\n unitIndex = visit.get('units').findIndex(unit => unit.get('trac') === action.utrac);\n return unitIndex !== -1;\n });\n\n return visits.setIn([index, 'units', unitIndex, 'docs'], fromJS(action.docs));\n\n case actionTypes.VISIT_STORE_FAILURE:\n break;\n\n default:\n break;\n }\n return visits;\n});\n","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\nimport _ from 'lodash';\n\nimport { serverVisitToClientMap, serverUnitToClientMap } from 'app/businessRules';\nimport {VISIT, VISIT_AND_UNITS, STORE_VISIT, STORE_UNIT, DELETE_UNIT, GET_VISIT} from '../constants/actionTypes';\n\n\nexport default createReducer(['visit'], (visit = Map(), action) => {\n let units, index;\n\n switch (action.type) {\n\n case STORE_VISIT.SUCCESS:\n let _v = serverVisitToClientMap(action.visit);\n if (!_v.units && visit.has('units')) {\n _v.units = visit.get('units').toJS();\n }\n return fromJS(_v);\n\n case VISIT_AND_UNITS.SUCCESS:\n return fromJS(serverVisitToClientMap(action.visit));\n\n case VISIT_AND_UNITS.CLEAR:\n return Map();\n\n case VISIT.SUCCESS:\n return fromJS(serverVisitToClientMap(action.payload));\n\n case GET_VISIT.SUCCESS:\n return visit.merge(serverVisitToClientMap(action.visit));\n\n case STORE_UNIT.SUCCESS:\n let unit = serverUnitToClientMap(action.unit);\n index = 0;\n if (visit.has('units')) {\n units = visit.get('units').toJS();\n index = _.findIndex(units, {trac: unit.trac});\n index = index > -1 ? index : units.length;\n } else {\n units = [];\n }\n units[index] = unit;\n return visit.set('units', fromJS(units));\n\n case DELETE_UNIT.SUCCESS:\n units = visit.get('units').toJS();\n _.remove(units, {trac: action.trac});\n return visit.set('units', fromJS(units));\n \n default:\n return visit;\n }\n});","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\n\nimport { TIME_SLOTS, VISIT_AND_UNITS } from '../constants/actionTypes';\n\nexport default createReducer(['timeSlots'], (timeSlots = Map(), action) => {\n\n switch (action.type) {\n\n case VISIT_AND_UNITS.CLEAR:\n case TIME_SLOTS.REQUEST:\n case TIME_SLOTS.ERROR:\n return Map();\n\n case TIME_SLOTS.SUCCESS:\n return fromJS(action.timeSlots);\n\n default:\n break;\n }\n \n return timeSlots;\n});","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\nimport _ from 'lodash';\n\nimport { TIME_SLOTS, VISIT_AND_UNITS } from '../constants/actionTypes';\n\nconst findBeginAndEnd = (timeSlots) => {\n let begin = '235999', end = '0';\n \n _.each(timeSlots, (d) => {\n _.each(d, (timeSlot) => {\n begin = Math.min(begin, timeSlot.begin);\n end = Math.max(end, timeSlot.end);\n });\n });\n\n return {\n begin: begin,\n end: end\n };\n};\n\nexport default createReducer(['timeSlotConfig'], (state = Map(), action) => {\n\n switch (action.type) {\n\n case VISIT_AND_UNITS.CLEAR:\n case TIME_SLOTS.REQUEST:\n case TIME_SLOTS.ERROR:\n return Map();\n\n case TIME_SLOTS.SUCCESS:\n return fromJS(findBeginAndEnd(action.timeSlots));\n\n default:\n break;\n }\n\n return state;\n});","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\n\nimport { VERIFY_UNIT, VISIT_AND_UNITS } from '../constants/actionTypes';\nimport * as STATUS from '../constants/unitVerificationStatus';\n\nconst INITIAL_STATE = {\n status: STATUS.NOT_VERIFIED,\n dims: []\n};\n\nexport default createReducer(['unitVerification'], (state = fromJS(INITIAL_STATE), action) => {\n\n switch (action.type) {\n\n case VERIFY_UNIT.REQUEST:\n return state.set('status', STATUS.VERIFYING);\n\n case VISIT_AND_UNITS.CLEAR:\n case VERIFY_UNIT.RESET:\n case VERIFY_UNIT.ERROR:\n return fromJS(INITIAL_STATE);\n\n case VERIFY_UNIT.SUCCESS:\n return state.set('status', action.ok === 1 ? STATUS.VERIFIED_OK : STATUS.VERIFIED_NOK)\n .set('dims', action.dims);\n\n default:\n break;\n }\n\n return state;\n});","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\nimport _ from 'lodash';\nimport * as status from 'modules/app/constants/crudStatus';\nimport { VISIT_AND_UNITS, GET_GOODS, STORE_GOOD, DELETE_GOOD, DOCS_AND_GOODS } from '../constants/actionTypes';\nimport { serverGoodToClientMap } from 'app/businessRules';\n\nconst INITIAL_STATE = {\n status: status.INITIAL,\n goods: []\n};\n\nconst findIndex = (state, id) => (\n _.findIndex(state.get('goods').toJS(), {id})\n);\n\nexport default createReducer(['goods'], (state = fromJS(INITIAL_STATE), action) => {\n\n switch (action.type) {\n\n case GET_GOODS.REQUEST:\n return state.set('status', status.LOADING).set('goods', fromJS(INITIAL_STATE.goods));\n\n case GET_GOODS.ERROR:\n return state.set('status', status.ERROR).set('goods', fromJS(INITIAL_STATE.goods));\n\n case GET_GOODS.SUCCESS:\n return state.set('status', status.SUCCESS).set('goods', fromJS(serverGoodToClientMap(action.goods)));\n\n case STORE_GOOD.SUCCESS:\n const goodIndex = findIndex(state,action.good.id);\n if (goodIndex > -1) {\n return state.set('goods', state.get('goods').set(goodIndex, fromJS(serverGoodToClientMap(action.good))));\n } else {\n return state.set('goods', state.get('goods').push(fromJS(serverGoodToClientMap(action.good))));\n }\n\n case DELETE_GOOD.SUCCESS:\n const index = findIndex(state, action.id);\n return state.set('goods', state.get('goods').delete(index));\n\n case DOCS_AND_GOODS.CLEAR:\n case VISIT_AND_UNITS.CLEAR:\n return fromJS(INITIAL_STATE);\n\n default:\n break;\n }\n\n return state;\n});","export const INITIAL = 'INITIAL';\nexport const LOADING = 'LOADING';\nexport const SUCCESS = 'SUCCESS';\nexport const ERROR = 'ERROR';","import { createReducer } from 'immutable-reducers';\nimport { fromJS, Map } from 'immutable';\nimport _ from 'lodash';\n\nimport { serverDocToClientMap } from 'app/businessRules';\nimport * as status from 'modules/app/constants/crudStatus';\nimport { VISIT_AND_UNITS, GET_DOCS, STORE_DOC, DELETE_DOC, DOCS_AND_GOODS } from '../constants/actionTypes';\n\nconst INITIAL_STATE = {\n status: status.INITIAL,\n docs: []\n};\n\nconst findIndex = (state, id) => (\n _.findIndex(state.get('docs').toJS(), {id})\n);\n\nexport default createReducer(['docs'], (state = fromJS(INITIAL_STATE), action) => {\n\n switch (action.type) {\n\n case GET_DOCS.REQUEST:\n return state.set('status', status.LOADING).set('docs', fromJS(INITIAL_STATE.docs));\n\n case GET_DOCS.ERROR:\n return state.set('status', status.ERROR).set('docs', fromJS(INITIAL_STATE.docs));\n\n case GET_DOCS.SUCCESS:\n return state.set('status', status.SUCCESS).set('docs', fromJS(serverDocToClientMap(action.docs)));\n\n case STORE_DOC.SUCCESS:\n const docIndex = findIndex(state,action.doc.id);\n if (docIndex > -1) {\n return state.set('docs', state.get('docs').set(docIndex, fromJS(serverDocToClientMap(action.doc))));\n } else {\n return state.set('docs', state.get('docs').push(fromJS(serverDocToClientMap(action.doc))));\n }\n\n case DELETE_DOC.SUCCESS:\n const index = findIndex(state, action.id);\n return state.set('docs', state.get('docs').delete(index));\n\n case DOCS_AND_GOODS.CLEAR:\n case VISIT_AND_UNITS.CLEAR:\n return fromJS(INITIAL_STATE);\n \n default:\n break;\n }\n\n return state;\n});","import { createReducer } from 'immutable-reducers';\nimport { userRoles } from 'app/access';\nimport { Map, fromJS } from 'immutable';\nimport browserStore from 'store';\n\nimport {LOGIN, LOGOUT} from '../constants/actionTypes';\n\nexport const authReducer = (auth = {}, action) => {\n\n switch (action.type) {\n case LOGIN.REQUEST:\n return Object.assign({}, auth, {\n isAuthenticating: true\n });\n case LOGIN.SUCCESS:\n // :( reducers should be pure\n browserStore.set('token', action.jwt);\n browserStore.set('sessionData', action.sessionData);\n\n return Object.assign({}, auth, {\n isAuthenticating: false,\n isAuthenticated: true,\n token: action.jwt,\n userName: action.sessionData.username,\n accessLvl: userRoles.user,\n statusText: null,\n errorCode: null,\n errorId: null\n });\n case LOGIN.ERROR:\n // :( reducers should be pure\n browserStore.remove('token');\n browserStore.remove('sessionData');\n\n return Object.assign({}, auth, {\n isAuthenticating: false,\n isAuthenticated: false,\n token: null,\n userName: null,\n statusText: action.error.response.statusText,\n errorCode: action.error.response.statusCode,\n errorId: action.error.body && action.error.body.errors ? action.error.body.errors[0].code : '500'\n });\n case LOGOUT:\n // :( reducers should be pure\n browserStore.remove('token');\n browserStore.remove('sessionData');\n\n return Object.assign({}, auth, {\n isAuthenticated: false,\n token: null,\n userName: null,\n accessLvl: userRoles.public\n });\n default:\n break;\n }\n return auth;\n};\n\nexport default createReducer(['auth'], authReducer);\n","import _ from 'lodash';\nimport { createReducer } from 'immutable-reducers';\nimport { actionTypes as reduxFormActions } from 'redux-form';\nimport { Map } from 'immutable';\n\nimport { FLASH_MESSAGE } from '../constants/actionTypes';\nimport * as actionTypes from '../constants/actionTypes';\n\nexport default createReducer(['session'], (session = Map(), action) => {\n let payload = action.payload;\n\n switch (action.type) {\n case actionTypes.FORM_DATA_LOAD:\n return session.setIn(['formData', payload.form], payload.id);\n\n case reduxFormActions.DESTROY:\n return session.deleteIn(['formData',action.form]);\n\n case actionTypes.DATA_LOAD_REQUEST:\n return session.setIn(['requesting', payload.resource], true);\n\n case actionTypes.DATA_LOAD_DONE:\n case actionTypes.DATA_LOAD_SUCCESS:\n case actionTypes.DATA_LOAD_ERROR:\n return session.deleteIn(['requesting', payload.resource]);\n\n case FLASH_MESSAGE.SET:\n return session.setIn(['flashMessage', action.id], {\n messageIds: _.isArray(action.messageIds) ? action.messageIds : [action.messageIds],\n theme: action.theme,\n titleId: action.titleId,\n ttl: action.ttl,\n params: action.params\n });\n\n case FLASH_MESSAGE.REMOVE:\n return session.deleteIn(['flashMessage', action.id]);\n\n default:\n break;\n }\n\n return session;\n});\n","import {fromJS, Map} from 'immutable';\nimport { createReducer } from 'immutable-reducers';\nimport { createRequestTypes } from 'app/lib/actionTypes';\n\nconst ACTUAL_TRUCKS = createRequestTypes('actual_trucks');\nconst ACTUAL_LEAD_TIME = createRequestTypes('actual_lead_time');\nconst ACTUAL_OCCUPANCY = createRequestTypes('actual_occupancy');\nconst AVERAGE_LEAD_TIME = createRequestTypes('average_lead_time');\nconst RAIL_STATUS_IMPORT = createRequestTypes('rail_status_import');\nconst RAIL_STATUS_EXPORT = createRequestTypes('rail_status_export');\n\nconst INITIAL_STATE = {\n actualTrucks: {},\n actualOccupancy: {},\n averageLeadTime: {},\n actualLeadTime: {},\n railStatusImport: {},\n railStatusExport: {}\n};\n\nexport const reportsReducer = createReducer(['reports'], (state = fromJS(INITIAL_STATE), action) => {\n switch(action.type) {\n\n case ACTUAL_TRUCKS.REQUEST:\n return state.set('actualTrucks', {isLoading:true});\n \n case ACTUAL_TRUCKS.SUCCESS:\n return state.set('actualTrucks', action.result);\n\n case ACTUAL_TRUCKS.ERROR:\n return state.set('actualTrucks', {isError:true});\n \n case ACTUAL_LEAD_TIME.REQUEST:\n return state.set('actualLeadTime', {isLoading:true});\n \n case ACTUAL_LEAD_TIME.SUCCESS:\n return state.set('actualLeadTime', action.result);\n\n case ACTUAL_LEAD_TIME.ERROR:\n return state.set('actualLeadTime', {isError:true});\n \n case ACTUAL_OCCUPANCY.REQUEST:\n return state.set('actualOccupancy', {isLoading:true});\n \n case ACTUAL_OCCUPANCY.SUCCESS:\n return state.set('actualOccupancy', action.result);\n\n case ACTUAL_OCCUPANCY.ERROR:\n return state.set('actualOccupancy', {isError:true});\n \n case AVERAGE_LEAD_TIME.REQUEST:\n return state.set('averageLeadTime', {isLoading:true});\n \n case AVERAGE_LEAD_TIME.SUCCESS:\n return state.set('averageLeadTime', action.result);\n\n case AVERAGE_LEAD_TIME.ERROR:\n return state.set('averageLeadTime', {isError:true});\n\n case RAIL_STATUS_IMPORT.REQUEST:\n return state.set('railStatusImport', {isLoading:true});\n case RAIL_STATUS_IMPORT.SUCCESS:\n return state.set('railStatusImport', action.result);\n case RAIL_STATUS_IMPORT.ERROR:\n return state.set('railStatusImport', {isError:true});\n\n case RAIL_STATUS_EXPORT.REQUEST:\n return state.set('railStatusExport', {isLoading:true});\n case RAIL_STATUS_EXPORT.SUCCESS:\n return state.set('railStatusExport', action.result);\n case RAIL_STATUS_EXPORT.ERROR:\n return state.set('railStatusExport', {isError:true});\n\n default:\n return state;\n }\n\n});\n\n","import { combineReducers } from 'immutable-reducers';\nimport { routeReducer } from 'redux-simple-router';\nimport { fromJS } from 'immutable';\nimport { reducer as formReducer } from 'redux-form';\n\nimport { profileReducer, licensePlatesReducer } from './profile/reducers';\nimport { visitsReducer, visitReducer, timeSlotsReducer, timeSlotConfigReducer, unitVerificationReducer, goodsReducer, docsReducer } from './visits/reducers';\nimport { authReducer } from './auth/reducers';\nimport { sessionReducer } from './app/reducers';\nimport { reportsReducer } from './reports/reducers';\n\nconst immutableize = (path, reducer) => (state, action) => {\n let response = reducer(state.getIn(path).toJS(), action);\n if (state === response) {\n return state;\n }\n return state.setIn(path, fromJS(response));\n};\nconst immutableFormReducer = immutableize(['form'], formReducer);\nconst immutableRouteReducer = immutableize(['route'], routeReducer);\n\nconst reducers = [\n profileReducer,\n visitsReducer,\n visitReducer,\n timeSlotsReducer,\n timeSlotConfigReducer,\n licensePlatesReducer,\n authReducer,\n sessionReducer,\n unitVerificationReducer,\n immutableFormReducer,\n immutableRouteReducer,\n goodsReducer,\n docsReducer,\n reportsReducer\n];\n\nconst rootReducer = combineReducers(...reducers);\n\nexport default rootReducer;","import { createStore, applyMiddleware, compose } from 'redux';\nimport { combineReducers } from 'immutable-reducers';\nimport thunk from 'redux-thunk';\nimport { Map, fromJS } from 'immutable';\nimport browserStore from 'store';\nimport { syncHistory } from 'redux-simple-router';\n\nimport { browserHistory } from 'app/lib/browserHistory';\nimport { sagaMiddleware } from 'modules/sagas';\nimport { settings } from 'app/globals';\nimport { userRoles, accessLevels } from 'app/access';\n// import loggerMiddleware from 'app/middleware/logger';\nimport promiseMiddleware from 'app/middleware/promise';\nimport reqresMiddleware from 'app/middleware/reqres';\nimport rootReducer from 'modules/rootReducer';\n\n\nconst currentLocale = function () {\n let locale = browserStore.get('locale');\n if (settings.supportedLocales.indexOf(locale) !== -1) {\n return locale;\n }\n\n locale = navigator.language || navigator.browserLanguage;\n\n if (settings.supportedLocales.indexOf(locale) !== -1) {\n return locale;\n }\n\n return settings.defaultLocale;\n};\n\n//-------------------------------------------------\n// Store middleware\n//-------------------------------------------------\nconst reduxRouterMiddleware = syncHistory(browserHistory);\n\nlet middleware = [reduxRouterMiddleware,thunk,promiseMiddleware,reqresMiddleware,sagaMiddleware];\n\nif (process.env.NODE_ENV === 'development') {\n //middleware.push(loggerMiddleware);\n}\n\n\n//-------------------------------------------------\n// Store initial state\n//-------------------------------------------------\n\n/**\n * @PointOfInterest(\"Global State\")\n */\nlet state = fromJS({\n // TODO\n accessLvl: {},\n // TODO\n auth: {},\n // Contains the data for the current form\n form: {},\n // A list of all license plates for the logged in user\n licensePlates: [],\n // Profile data of the logged in user\n profile: {licensePlate:'', companyName:'', terminals: [], rights: [], locale: currentLocale(), firstName:'', lastName:'',requestingCompany:''},\n // A list of the announced visits\n visits: {},\n // Contains information about the current route\n route: {},\n // Contains temporary data for the current user session\n session: {},\n // Contains time slot info for the selected visit day\n timeSlots: {}\n});\n\nconst initialState = state.set('auth', {isAuthenticating: false, accessLvl: userRoles.public});\n\n\n//-------------------------------------------------\n// Create the Store\n//-------------------------------------------------\n\nconst finalCreateStore = compose(\n applyMiddleware(\n ...middleware\n ),\n process.env.NODE_ENV === 'development' && window.devToolsExtension ? window.devToolsExtension() : f => f\n)(createStore);\n\nif (process.env.NODE_ENV === 'development' && module.hot) {\n // Enable Webpack hot module replacement for reducers\n module.hot.accept('../../modules/rootReducer', () => {\n const nextRootReducer = require('../../modules/rootReducer');\n store.replaceReducer(nextRootReducer);\n });\n}\n\nexport const store = finalCreateStore(rootReducer, initialState);\n\n//-------------------------------------------------\n// Additional Store methods\n//-------------------------------------------------\n\nexport function isAuthorized(state) {\n return state.get('auth').accessLvl.bitMask !== accessLevels.anon.bitMask;\n}\n","import _ from 'lodash';\nimport {loadDataAction,loadDataDoneAction} from 'modules/app/actions';\nimport {httpError} from 'modules/app/actions';\n\n/**\n * @CoreConcept(name=\"Redux Middleware\", description=\"This is a good Redux middleware example. If an action contains a promise then\n * success and fail actions are dispatched after the promise is resolved\")\n * @deprecated This middleware is migrated to the reqres middleware. See the dashboard page actions for usage example\n */\nexport default (store) => (next) => (action) => {\n const { promise, types, appLoader, ...rest } = action;\n if (!promise) {\n return next(action);\n }\n\n const [REQUEST, SUCCESS, FAILURE] = types;\n\n next({ ...rest, type: REQUEST });\n\n if (appLoader) {\n next(loadDataAction(appLoader));\n }\n let realPromise = promise.constructor.name === 'Promise' ? promise : promise();\n\n return realPromise\n .then((result) => {\n if (appLoader) {\n next(loadDataDoneAction(appLoader));\n }\n if (_.isString(SUCCESS)) {\n next({ ...rest, payload:result, type: SUCCESS });\n }\n else if (_.isArray(SUCCESS)) {\n for (let actionType of SUCCESS) {\n console.log(actionType);\n next(_.isObject(actionType) ? actionType : { ...rest, payload:result, type: actionType });\n }\n }\n })\n .catch((error) => {\n if (appLoader) {\n next(loadDataDoneAction(appLoader));\n }\n if (error.response && error.response.status === 401) {\n next(httpError.http401(error,action));\n }\n if (error.body) {\n next({ ...rest, payload: {body:error.body, ...error}, type: FAILURE });\n } else {\n next({ ...rest, error, type: FAILURE });\n }\n });\n\n};\n","import * as api from '../api';\n\nexport default (store) => (next) => (action) => {\n const { request, actions, ...rest } = action;\n\n if (!request) {\n return next(action);\n }\n\n const requestName = request.toLowerCase().replace(/_([a-z])/g, function (g) { return g[1].toUpperCase(); });\n\n if (!api[requestName]) {\n return next(action);\n }\n\n next(action);\n\n const promise = api[requestName](rest);\n\n return promise().then(result => {\n next(actions.success({result}));\n }).catch(error => {\n next(actions.error({error, response: error.response, body: error.body}));\n });\n\n};\n","import { isAuthorized } from 'app/store';\nimport { checkAccess } from './auth-helpers';\n\n/**\n * Creates requireAccess function and binds it to redux.\n *\n * @param redux Redux instance\n * @param {Function} notAuthorizedHandler called when access is denied and user is not authorized (eq 401 code)\n * @param {Function} accessDeniedHandler called when access is denied for current user (eq 403 code)\n * @returns {Function} Return function with signature requireAuth(accessLevel, [checkAccessHandler]).\n * checkAccessHandler is optional, by default checkAccessHandler = checkAccess (from access-helpers.js)\n */\nexport default function bindCheckAuth(redux, notAuthorizedHandler, accessDeniedHandler) {\n return (accessLevel, checkAccessHandler = checkAccess) => (nextState, replace) => {\n const state = redux.getState();\n const currentAccessLvl = state.get('auth').accessLvl;\n if (checkAccessHandler(accessLevel, currentAccessLvl)) {\n // Access granted\n return;\n }\n\n if (!isAuthorized(state)) {\n notAuthorizedHandler(nextState, replace);\n return;\n }\n\n accessDeniedHandler(nextState, replace);\n };\n}","import { apiRoutes } from 'app/globals';\nimport * as api from 'app/lib/ajax';\n\n\nexport const getConfig = () => (\n api.get(apiRoutes.GET_CONFIG)\n);\n\nexport const getStats = () => (\n api.get(apiRoutes.GET_STATS)\n);","import React from 'react';\nimport ClassNames from 'classnames';\n\nclass ProgressBar extends React.Component {\n render() {\n let classes, style;\n if(typeof this.props.progress === 'undefined') {\n classes = {indeterminate: true};\n } else {\n classes = {determinate: true};\n style = {\n width: this.props.progress + '%'\n };\n }\n\n return (\n
\n
\n
\n );\n }\n}\n\nProgressBar.propTypes = {\n /**\n * A number between 0..100 that indicates the current progress,\n * when provided, a determinate bar with the progress is displayed,\n * otherwise a indeterminate bar is shown\n */\n progress: React.PropTypes.number,\n className: React.PropTypes.string\n};\n\nexport default ProgressBar;","import { Component } from 'react';\nimport PureRenderMixin from 'react-addons-pure-render-mixin';\n\nexport default class PureRenderComponent extends Component {\n shouldComponentUpdate () {\n return PureRenderMixin.shouldComponentUpdate.apply(this, arguments);\n }\n}\n","import { apiRoutes } from 'app/globals';\nimport BaseRepository from './BaseRepository';\n\n\nexport default class I18nRepository {\n\n static getTranslations(locale = 'en') {\n\n return fetch(`${apiRoutes.GET_TRANSLATIONS}/${locale}.json`, {\n method: 'get'\n })\n .then(BaseRepository.parseJSON)\n .catch(function (err) {\n console.error(err.toString());\n });\n }\n\n}","import 'stylesheets/base.scss';\n\nimport React, { Component, PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { IntlProvider } from 'react-intl';\nimport moment from 'moment';\n\nimport ProgressBar from 'routes/app/components/ProgressBar';\nimport 'app/lib/materialize';\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport { settings } from 'app/globals';\nimport I18nRepository from 'modules/app/repositories/I18nRepository';\n\nclass Intl extends PureRenderComponent {\n\n static propTypes = {\n children: PropTypes.element,\n locale: PropTypes.oneOf(settings.supportedLocales)\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n messages: {},\n messagesLoading: true\n };\n\n this.getLanguageData(props.locale);\n }\n\n getLanguageData(locale) {\n return I18nRepository.getTranslations(locale).then(messages => {\n moment.locale(locale);\n this.setState({\n messages: messages,\n messagesLoading: false\n });\n });\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.locale !== this.props.locale) {\n this.getLanguageData(nextProps.locale);\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Prevent re-render when locale change, the component has to wait on data load (= 'getLanguageData')\n // before re-rendering the component.\n return nextProps.locale === this.props.locale;\n }\n\n render() {\n let {locale, children, ...props} = this.props;\n\n if (this.state.messagesLoading) {\n return
;\n }\n\n return (\n \n {children}\n \n );\n\n }\n\n}\n\nfunction mapStateToProps(state) {\n return {\n locale: state.get('profile').get('locale')\n };\n}\n\nexport const IntlContainer = connect(mapStateToProps)(Intl);\n\nexport default Intl;\n","import React, {Component, PropTypes} from 'react';\nimport {versionCheckInterval} from 'app/globals';\nimport * as AppRepository from 'modules/app/repositories/AppRepository';\nimport './style.scss';\n\nclass VersionCheck extends Component {\n\n state = {\n hash: null,\n hashChanged: false\n };\n\n componentWillMount() {\n this.iv = setInterval(this.refreshState, versionCheckInterval());\n }\n\n refreshState = () => {\n AppRepository.getStats()().then(stats => {\n const hash = stats.files['main.js'];\n if (this.state.hash && this.state.hash !== hash) {\n this.setState({hash: hash, hashChanged: true});\n clearInterval(this.iv);\n } else {\n this.setState({hash: hash});\n }\n });\n };\n\n refreshBrowser = (e) => {\n e.preventDefault();\n window.location.reload(true);\n };\n\n render() {\n\n if (this.state.hashChanged) {\n return (\n
A new version of Fast Gate is available.\n Please refresh your browser.\n
\n );\n }\n\n return null;\n }\n}\n\nexport default VersionCheck;\n","import React, {Component, PropTypes} from 'react';\nimport { Provider } from 'react-redux';\nimport { Router } from 'react-router';\n\nimport { browserHistory } from 'app/lib/browserHistory';\nimport { store } from 'app/store';\nimport { setConfig } from 'app/globals';\nimport bindCheckAuth from 'app/lib/bindCheckAuth';\nimport * as api from 'modules/app/repositories/AppRepository';\nimport { authenticate } from 'modules/auth/actions';\nimport { fetchCompanyName } from 'modules/profile/actions';\nimport { IntlContainer } from 'routes/app/containers/Intl';\nimport ProgressBar from 'routes/app/components/ProgressBar';\nimport VersionCheck from 'routes/app/components/VersionCheck/VersionCheck';\n\n\nexport default class RootComponent extends Component {\n\n static propTypes = {\n createRoutes: PropTypes.func.isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.getConfig().then(() => {\n // Init Data\n store.dispatch(authenticate());\n store.dispatch(fetchCompanyName());\n });\n\n this.initRouting(props);\n\n }\n\n state = {\n loading: true\n };\n\n getConfig() {\n return api.getConfig()().then(config => {\n setConfig(config);\n this.setState({loading: false});\n });\n }\n\n initRouting(props) {\n const requireAccess = bindCheckAuth(store, (nextState, replace) => {\n replace('/login');\n //replaceState({\n // next: nextState.location.pathname\n //}, '/login?next=' + nextState.location.pathname);\n }, (nextState, replace) => {\n replace('/login');\n //replaceState({},'/login'); //TODO: should redirect to /403\n });\n\n this.routes = props.createRoutes(requireAccess);\n\n //syncReduxAndRouter(history, store, state => {\n // return state.get('route').toJS();\n //});\n }\n\n render() {\n if (this.state.loading) {\n return
;\n }\n return (\n \n \n
\n \n {this.routes}\n
\n
\n
\n );\n }\n\n}\n","import jwtDecode from 'jwt-decode';\nimport browserStore from 'store';\n\nimport { LOGOUT } from '../constants/actionTypes';\nimport login from './login';\nimport logout from './logout';\n\nexport {\n authenticate,\n login,\n logout\n};\n\n\nfunction authenticate() {\n return dispatch => {\n try {\n let jwt = browserStore.get('token');\n if (jwt) {\n jwtDecode(jwt); // Is token valid?\n let sessionData = browserStore.get('sessionData');\n dispatch(login.success(jwt, sessionData));\n }\n } catch (e) {\n dispatch({\n type: LOGOUT\n });\n }\n };\n}","import _ from 'lodash';\n\nexport const getPackagingUnity = state => state.getIn(['profile', 'packagingUnity']).toJS();\nexport const getUnitKinds = state => state.getIn(['profile', 'unitKinds']).toJS();\nexport const getDocTypes = state => state.getIn(['profile', 'typeDocList']).toJS();\nexport const getTerminals = state => state.getIn(['profile','terminals']).toJS();\nexport const getVisitIds = state => state.get('visits').keySeq().toJS();\nexport const getLicensePlates = state => state.get('licensePlates').toJS();\nexport const getLicensePlate = state => state.get('profile').get('licensePlate');\nexport const getLocale = state => state.getIn(['profile','locale']);\nexport const getExecutingTransportCompanies = state => state.getIn(['profile','transCompList']).toJS();\nexport const getOwnerTransporterId = state => state.getIn(['profile','ownerTransId']);\nexport const getPrefComp = state => state.getIn(['profile','prefComp']);\nexport const isAllowed = state => right => _.indexOf(state.getIn(['profile', 'rights']).toJS(), ''+right) !== -1;\nexport const getUnitStates = state => state.getIn(['profile','unitStates']).toJS();\n","export default {\n STYLES: [\n 'large',\n 'floating',\n 'flat'\n ],\n WAVES: [\n 'light',\n 'red',\n 'yellow',\n 'orange',\n 'purple',\n 'green',\n 'teal'\n ],\n SIZES: [\n 's',\n 'm',\n 'l'\n ],\n PLACEMENTS: [\n 'left',\n 'center',\n 'right'\n ],\n SCALES: [\n 'big',\n 'small'\n ],\n ICON_SIZES: [\n 'tiny',\n 'small',\n 'medium',\n 'large'\n ]\n};","import React from 'react';\nimport constants from 'modules/app/constants/materialize';\nimport classNames from 'classnames';\n\nclass Icon extends React.Component {\n render() {\n let classes = {\n 'material-icons': true\n };\n constants.PLACEMENTS.forEach(p => {\n classes[p] = this.props[p];\n });\n\n constants.ICON_SIZES.forEach(s => {\n classes[s] = this.props[s];\n });\n return {this.props.children};\n }\n}\n\nIcon.propTypes = {\n tiny: React.PropTypes.bool,\n small: React.PropTypes.bool,\n medium: React.PropTypes.bool,\n large: React.PropTypes.bool,\n className: React.PropTypes.string,\n children: React.PropTypes.node\n};\n\nexport default Icon;","let id = 0;\n\nexport function resetID() {\n id = 0;\n}\n\nexport default function idgen() {\n let oldId = id;\n id += 1;\n return oldId;\n}","import React from 'react';\nimport constants from 'modules/app/constants/materialize';\nimport classNames from 'classnames';\nimport Icon from './Icon';\nimport idgen from 'app/lib/idgen';\n\nclass Button extends React.Component {\n constructor(props) {\n super(props);\n this.renderIcon = this.renderIcon.bind(this);\n this.renderFab = this.renderFab.bind(this);\n }\n\n renderFab(className) {\n return (\n
\n \n {this.renderIcon()}\n \n
    \n {\n React.Children.map(this.props.children, child => {\n return
  • {child}
  • ;\n })\n }\n
\n
\n );\n }\n\n renderIcon() {\n if (this.props.icon) {\n return {this.props.icon};\n } else {\n return null;\n }\n }\n\n render() {\n let {\n className, node, fab, modal, disabled, waves, ...props\n } = this.props;\n let Comp = node || 'button';\n let classes = {\n btn: true,\n disabled,\n 'waves-effect': waves\n };\n\n if (constants.WAVES.indexOf(waves) > -1) {\n classes['waves-' + waves] = true;\n }\n\n constants.STYLES.forEach(style => {\n let showStyle = this.props[style];\n classes['btn-' + style] = showStyle;\n if (showStyle) {\n classes.btn = false;\n }\n });\n\n if (modal) {\n classes['modal-action'] = true;\n classes['modal-' + modal] = true;\n }\n if (fab) {\n return this.renderFab(classNames(classes, className));\n } else {\n return (\n \n {this.renderIcon()}\n {this.props.children}\n \n );\n }\n }\n}\n\nButton.propTypes = {\n disabled: React.PropTypes.bool,\n /**\n * Enable the floating style\n */\n floating: React.PropTypes.bool,\n /**\n * Fixed action button\n * If enabled, any children button will be rendered as actions, remember to provide an icon.\n * @default vertical\n */\n fab: React.PropTypes.oneOf(['vertical', 'horizontal']),\n /**\n * The icon to display, if specified it will create a button with the material icon\n */\n icon: React.PropTypes.string,\n large: React.PropTypes.bool,\n modal: React.PropTypes.oneOf(['close', 'confirm']),\n node: React.PropTypes.node,\n /**\n * Tooltip to show when mouse hovered\n */\n tooltip: React.PropTypes.string,\n waves: React.PropTypes.oneOf(constants.WAVES),\n\n className: React.PropTypes.string,\n children: React.PropTypes.node\n};\n\n\nexport default Button;","import React from 'react';\nimport classNames from 'classnames';\n\nimport constants from 'modules/app/constants/materialize';\n\nclass Col extends React.Component {\n render() {\n let {node, offset, className, children, ...props} = this.props;\n let Comp = node;\n let classes = {col: true};\n constants.SIZES.forEach(s => {\n if (this.props[s]) {\n classes[s + this.props[s]] = true;\n }\n });\n\n if (offset) {\n offset.split(' ').forEach(off => {\n classes['offset-' + off] = true;\n });\n }\n return (\n \n {children}\n \n );\n }\n}\n\nCol.propTypes = {\n /**\n * The node to be used for the column\n * @default div\n */\n node: React.PropTypes.node.isRequired,\n /**\n * Columns for small size screens\n */\n s: React.PropTypes.number,\n /**\n * Columns for middle size screens\n */\n m: React.PropTypes.number,\n /**\n * Columns for large size screens\n */\n l: React.PropTypes.number,\n /**\n * To offset, simply add s2 to the class where s signifies the screen\n * class-prefix (s = small, m = medium, l = large) and the number after\n * is the number of columns you want to offset by.\n */\n offset: React.PropTypes.string,\n\n className: React.PropTypes.string,\n children: React.PropTypes.node\n};\n\nCol.defaultProps = {node: 'div'};\n\nexport default Col;","import React from 'react';\nimport classNames from 'classnames';\nimport $ from 'jquery';\nimport idgen from 'app/lib/idgen';\nimport constants from 'modules/app/constants/materialize';\nimport moment from 'moment';\n\n\nclass Input extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {value: props.defaultValue || props.value};\n this._onChange = this._onChange.bind(this);\n this.isSelect = this.isSelect.bind(this);\n }\n\n componentDidMount() {\n if (this.props.type === 'select' && !this.props.browserDefault && typeof $ !== 'undefined') {\n this.initMaterialSelect();\n $(this.refs.inputEl).on('change', this._onChange);\n } else if (this.props.type === 'date' && !this.props.browserDefault && typeof $ !== 'undefined') {\n this.initMaterialDatePicker();\n } /*else if (this.props.type === 'switch' && !this.props.browserDefault && typeof $ !== 'undefined') {\n $(this.refs.inputEl).on('change', this._onChange);\n }*/\n }\n\n initMaterialSelect() {\n setTimeout(()=>{$(this.refs.inputEl).material_select();}, 0);\n }\n\n initMaterialDatePicker() {\n let component = this;\n let format = this.props.format || 'DD/MM/YYYY';\n let $inputText = $(this.refs.inputEl);\n let options = this.props.datePickerOptions || {};\n\n let $inputDate = $(this.refs.datePicker).pickadate({\n selectMonths: options.selectMonths || true, // Creates a dropdown to control month\n selectYears: options.selectYears || 0, // Creates a dropdown of 2 years to control year,\n min: options.min || new Date(/*new Date().getTime() + (24 * 60 * 60 * 1000)*/), // Only allow dates beginning from today\n max: options.max /*|| new Date(new Date().getTime() + ((24 * 60 * 60 * 1000) * 2))*/\n });\n\n let picker = $inputDate.pickadate('picker');\n\n let setPickerDateFromInput = function () {\n let parsedDate = moment(this.value, format);\n\n if (parsedDate.isValid()) {\n picker.set('select', [parsedDate.get('year'), parsedDate.get('month'), parsedDate.get('date')]);\n } else {\n //TODO: Invalid date\n }\n };\n\n $inputText.on('change', setPickerDateFromInput);\n\n picker.on('set', function(data) {\n if (!data.select) {\n return;\n }\n\n let val = moment(this.get('value')).format(format);\n //$inputText.val(val);\n component._onChange(val);\n picker.close();\n });\n }\n\n _onChange(e) {\n let value = e.target ? e.target.value : e;\n\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n\n this.setState({\n value\n });\n }\n\n isSelect() {\n return this.props.type === 'select';\n }\n\n render() {\n let { browserDefault, defaultValue, initialValue, placeholder, id, type, label, wrapperClass,\n children, validate, onChange, labelSwitchOff, labelSwitchOn, help, suffix, touched, error, ...props} = this.props;\n\n let classes = {\n col: true,\n 'input-field': type !== 'checkbox' && type !== 'radio' && type !== 'switch'\n };\n constants.SIZES.forEach(size => {\n if (this.props[size]) {\n classes[size + this.props[size]] = true;\n }\n });\n if (!id) {\n id = `input_${idgen()}`;\n }\n let inputClasses = {\n validate,\n 'browser-default': browserDefault\n };\n\n let Comp, inputType;\n switch (type) {\n case 'textarea':\n Comp = 'textarea';\n inputClasses['materialize-textarea'] = true;\n break;\n case 'switch':\n Comp = 'input';\n inputType = 'checkbox';\n break;\n case 'date':\n Comp = 'input';\n inputClasses['datepicker'] = true;\n inputType = 'text';\n break;\n default:\n Comp = 'input';\n inputType = type || 'text';\n }\n\n let labelClasses = {\n active: initialValue || this.state.value || this.isSelect() || this.props.placeholder || this.props.value\n };\n\n let htmlLabel = label ? : null;\n let helpLabel = help ?
{help}
: null;\n let errorLabel = touched && error ?
{error}
: null;\n\n labelSwitchOff = labelSwitchOff || 'Off';\n labelSwitchOn = labelSwitchOn || 'On';\n\n if (this.isSelect()) {\n let options = placeholder && !defaultValue ? [] : [];\n options = options.concat(React.Children.map(children, (child) => {\n return React.cloneElement(child, {'key': child.props.value});\n }));\n this.initMaterialSelect();\n return (\n
\n {htmlLabel}\n \n {options}\n \n
\n );\n } else if (type === 'switch') {\n return (\n
\n \n
\n );\n } else if (type === 'date') {\n //setTimeout(()=>{$(this.refs.inputEl).trigger('change');}, 0);\n return (\n
\n today\n \n \n {htmlLabel}\n {helpLabel}\n
\n );\n\n } else {\n let icon = null;\n if (React.Children.count(children) == 1) {\n icon = React.Children.only(children);\n }\n\n return (\n
\n {icon === null ? null : React.cloneElement(icon, {className: 'prefix'})}\n {suffix === undefined ? null :
{suffix}
}\n \n {htmlLabel}\n {helpLabel}\n {errorLabel}\n
\n );\n }\n }\n\n}\n\nInput.propTypes = {\n s: React.PropTypes.number,\n m: React.PropTypes.number,\n l: React.PropTypes.number,\n label: React.PropTypes.node,\n labelSwitchOn: React.PropTypes.string,\n labelSwitchOff: React.PropTypes.string,\n /**\n * Input field type, e.g. select, checkbox, radio, text, tel, email\n * @default 'text'\n */\n type: React.PropTypes.string,\n defaultValue: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.bool]),\n placeholder: React.PropTypes.string,\n wrapperClass: React.PropTypes.string,\n id: React.PropTypes.string,\n name: React.PropTypes.string,\n validate: React.PropTypes.bool,\n browserDefault: React.PropTypes.bool,\n onChange: React.PropTypes.func,\n children: React.PropTypes.node,\n initialValue: React.PropTypes.node,\n value: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.bool]),\n help: React.PropTypes.node,\n suffix: React.PropTypes.node,\n format: React.PropTypes.string,\n error: React.PropTypes.node,\n invalid: React.PropTypes.bool,\n touched: React.PropTypes.bool,\n datePickerOptions: React.PropTypes.object\n};\n\nInput.defaultProps = {type: 'text', value: ''};\n\nexport default Input;\n","import React from 'react';\nimport classNames from 'classnames';\n\nclass Row extends React.Component {\n render() {\n let {className, children, ...props} = this.props;\n let Comp = this.props.node;\n\n return (\n \n {children}\n \n );\n }\n}\n\nRow.propTypes = {\n node: React.PropTypes.node.isRequired,\n className: React.PropTypes.string,\n children: React.PropTypes.node\n};\n\nRow.defaultProps = {node: 'div'};\n\nexport default Row;","import React from 'react';\nimport classNames from 'classnames';\n\nclass Table extends React.Component {\n render() {\n let classes = {\n centered: this.props.centered,\n highlight: this.props.hoverable,\n 'responsive-table': this.props.responsive,\n striped: this.props.striped,\n bordered: this.props.bordered\n };\n\n let {className, children, ...props} = this.props;\n\n return (\n \n {children}\n
\n );\n }\n}\n\nTable.propTypes = {\n /**\n * Center align all the text in the table\n * @default false\n */\n centered: React.PropTypes.bool,\n /**\n * Highlight the row that's hovered\n * @default false\n */\n hoverable: React.PropTypes.bool,\n /**\n * Enable response to make the table horizontally scrollable on smaller screens\n * @default false\n */\n responsive: React.PropTypes.bool,\n /**\n * Striped style\n * @default false\n */\n striped: React.PropTypes.bool,\n /**\n * Add border to each row\n * @default false\n */\n bordered: React.PropTypes.bool,\n\n className: React.PropTypes.string,\n children: React.PropTypes.node\n};\n\n\nexport default Table;","import React, {Component,PropTypes} from 'react';\nimport ReactDOM from 'react-dom';\n\nclass Overlay extends Component {\n\n static propTypes = {\n container: PropTypes.node.isRequired\n };\n\n static defaultProps = {\n container: {\n // Provide `findDOMNode` fn mocking a React component API. The `document.body`\n // reference needs to be contained within this function so that it is not accessed\n // in environments where it would not be defined, e.g. nodejs. Equally this is needed\n // before the body is defined where `document.body === null`, this ensures\n // `document.body` is only accessed after componentDidMount.\n findDOMNode: function findDOMNode() {\n return document.body;\n }\n }\n };\n\n componentDidMount() {\n this._renderOverlay();\n }\n\n componentDidUpdate() {\n this._renderOverlay();\n }\n\n componentWillUnmount() {\n this._unrenderOverlay();\n if (this._overlayTarget) {\n this.getContainerDOMNode()\n .removeChild(this._overlayTarget);\n this._overlayTarget = null;\n }\n }\n\n _mountOverlayTarget() {\n this._overlayTarget = document.createElement('div');\n this.getContainerDOMNode()\n .appendChild(this._overlayTarget);\n }\n\n _renderOverlay() {\n if (!this._overlayTarget) {\n this._mountOverlayTarget();\n }\n\n // Save reference to help testing\n this._overlayInstance = ReactDOM.render(this.renderOverlay(), this._overlayTarget);\n }\n\n _unrenderOverlay() {\n ReactDOM.unmountComponentAtNode(this._overlayTarget);\n this._overlayInstance = null;\n }\n\n getOverlayDOMNode() {\n if (!this.isMounted()) {\n throw new Error('getOverlayDOMNode(): A component must be mounted to have a DOM node.');\n }\n\n return this._overlayInstance.findDOMNode();\n }\n\n getContainerDOMNode() {\n return this.props.container.findDOMNode ?\n this.props.container.findDOMNode() : this.props.container;\n }\n}\n\nexport default Overlay;","import React from 'react';\nimport $ from 'jquery';\nimport Overlay from './Overlay';\nimport idgen from 'app/lib/idgen';\n\nclass OverlayTrigger extends Overlay {\n\n static propTypes = {\n /**\n *\n */\n overlay: React.PropTypes.node\n };\n\n /**\n * I.E. 10 Fix: Otherwise, Overlay has no 'container' prop\n */\n static defaultProps = {\n container: {\n findDOMNode: function findDOMNode() {\n return document.body;\n }\n }\n };\n\n constructor(props) {\n super(props);\n this.state = {isOverlayShown: false};\n this.showOverlay = this.showOverlay.bind(this);\n this.renderOverlay = this.renderOverlay.bind(this);\n this.overlayID = `overlay_${idgen()}`;\n }\n\n render() {\n let {overlay, children, ...props} = this.props;\n let child = React.Children.only(children);\n return React.cloneElement(\n child,\n {onClick: this.showOverlay}\n );\n }\n\n renderOverlay() {\n return React.cloneElement(this.props.overlay, {onRequestHide: this.toggle, id: this.overlayID});\n }\n\n showOverlay() {\n $('#' + this.overlayID).openModal();\n }\n}\n\n\nexport default OverlayTrigger;\n","import React, {Component, PropTypes} from 'react';\nimport Button from './Button';\nimport classNames from 'classnames';\nimport OverlayTrigger from './OverlayTrigger';\n\nclass Modal extends Component {\n\n static propTypes = {\n /**\n * Text to shown in the header of the modal\n */\n header: PropTypes.string,\n /**\n * The button to trigger the display of the modal\n */\n trigger: PropTypes.node.isRequired,\n /**\n * FixedFooter styled modal\n * @default false\n */\n fixedFooter: PropTypes.bool,\n /**\n * BottomSheet styled modal\n * @default false\n */\n bottomSheet: PropTypes.bool,\n\n children: PropTypes.node,\n onClickAgree: PropTypes.func,\n onClickDisagree: PropTypes.func,\n textAgree: PropTypes.string,\n textDisagree: PropTypes.string,\n agreeElement: PropTypes.node,\n className: PropTypes.string,\n closeOnAgree: PropTypes.bool\n };\n\n static defaultProps = {\n fixedFooter: false,\n bottomSheet: false,\n textAgree: 'Agree',\n textDisagree: 'Disagree',\n closeOnAgree: true,\n onClickDisagree: () => {\n }\n };\n\n\n render() {\n let {\n header, trigger, children, fixedFooter, bottomSheet, onClickAgree, onClickDisagree, textAgree, closeOnAgree,\n textDisagree, agreeElement, className, ...props\n } = this.props;\n\n let classes = {modal: true};\n classes['modal-fixed-footer'] = fixedFooter;\n classes['bottom-sheet'] = bottomSheet;\n\n return (\n \n
\n

{header}

\n {children}\n
\n
\n \n\n {agreeElement ?\n
{agreeElement}
\n :\n onClickAgree && closeOnAgree ?\n \n :\n \n }\n
\n
\n }>\n \n {trigger}\n \n \n );\n }\n}\n\nexport default Modal;","\nimport React, {Component, PropTypes} from 'react';\nimport classNames from 'classnames';\n\nimport Button from './Button';\n\nclass Toast extends Component{\n static propTypes = {\n toast: PropTypes.string.isRequired,\n rounded: PropTypes.bool,\n onClick: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string\n };\n\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this, props.onClick);\n }\n\n onClick(onClick) {\n // eslint-disable-next-line no-undef\n Materialize.toast(this.props.toast, 1500);\n if (onClick) {\n onClick();\n }\n }\n\n render() {\n let classes = {\n rounded: this.props.rounded\n };\n\n let {className, children, onClick, ...props} = this.props;\n\n return (\n \n );\n }\n}\nexport default Toast;\n","import React, {Component,PropTypes} from 'react';\nimport cx from 'classnames';\nimport $ from 'jquery';\n\nclass Collapsible extends Component {\n\n static propTypes = {\n /**\n * There are two ways a collapsible can behave. It can either allow multiple sections to stay open,\n * or it can only allow one section to stay open at a time, which is called an accordion.\n * @default false\n */\n accordion: PropTypes.bool,\n /**\n * Enable popout style\n */\n popout: PropTypes.bool,\n defaultActiveKey: PropTypes.number,\n onSelect: PropTypes.func,\n /**\n * Set to true to disable the jQuery animations\n */\n noJQuery: PropTypes.bool,\n\n className: PropTypes.string,\n children: PropTypes.node\n };\n\n static defaultProps = {\n accordion: false,\n noJQuery: true\n };\n\n constructor(props) {\n super(props);\n this.renderItem = this.renderItem.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.state = {\n activeKey: props.defaultActiveKey\n };\n }\n\n initCollapsible(accordion) {\n if (typeof $ !== 'undefined') {\n setTimeout(()=>{\n $(this.refs.el).collapsible({\n accordion\n });\n }, 0);\n }\n }\n\n renderItem(child, index) {\n let props = {\n key: child.key ? child.key : index,\n ref: child.ref\n };\n if (this.props.accordion) {\n props.expanded = child.props.eventKey === this.state.activeKey;\n props.onSelect = this.handleSelect;\n }\n if (!this.props.noJQuery){\n props.expanded = true;\n }\n return React.cloneElement(child, props);\n }\n\n handleSelect(key) {\n if (this.props.onSelect) {\n this.props.onSelect(key);\n }\n\n if (this.state.activeKey === key) {\n key = null;\n }\n this.setState({\n activeKey: key\n });\n }\n\n render() {\n let {\n accordion, popout, className, children, noJQuery, ...props\n } = this.props;\n let classes = {\n collapsible: true,\n popout\n };\n let collapsible = accordion ? 'accordion' : 'expandable';\n\n if (!noJQuery) {\n this.initCollapsible(!!accordion);\n }\n\n return (\n \n );\n }\n}\n\nexport default Collapsible;","import React, { Component, PropTypes } from 'react';\nimport cx from 'classnames';\nimport Icon from './Icon';\n\nclass CollapsibleItem extends React.Component {\n\n static propTypes = {\n header: PropTypes.node.isRequired,\n icon: PropTypes.string,\n onSelect: PropTypes.func,\n onOpen: PropTypes.func,\n /**\n * If the item is expanded by default\n * @default false\n */\n expanded: PropTypes.bool,\n /**\n * The value to pass to the onSelect callback\n */\n eventKey: PropTypes.node,\n /**\n * The node type of the header\n * @default a\n */\n node: PropTypes.node,\n\n children: PropTypes.node\n };\n\n //static defaultProps = {\n // expanded: false\n //};\n\n constructor(props) {\n super(props);\n this.state = {expanded: props.expanded};\n this.handleClick = this.handleClick.bind(this);\n this.renderBody = this.renderBody.bind(this);\n this.renderIcon = this.renderIcon.bind(this);\n }\n\n handleClick() {\n if (this.props.onSelect) {\n this.props.onSelect(this.props.eventKey);\n } else {\n if (!this.state.expanded && this.props.onOpen) {\n this.props.onOpen(this.props.eventKey); \n }\n this.setState({expanded: !this.state.expanded});\n }\n }\n\n renderBody() {\n let style = {display: 'block'};\n return (\n
\n {this.props.children}\n
\n );\n }\n\n renderIcon(icon) {\n return {icon};\n }\n\n render() {\n let {node, header, expanded, icon, children, ...props} = this.props;\n let Comp = node || 'div';\n\n expanded = (typeof expanded !== 'undefined') ? expanded : this.state.expanded;\n\n let classes = {\n 'collapsible-header': true\n };\n\n return (\n
  • \n \n {icon ? this.renderIcon(icon) : null}\n {header}\n \n {expanded ? this.renderBody() : null}\n
  • \n );\n }\n\n}\n\nexport default CollapsibleItem;","import React from 'react';\nimport ClassNames from 'classnames';\n\nconst Spinner = ({color, only}) => {\n let spinnerClasses = {\n 'spinner-layer': true\n };\n if (only) {\n spinnerClasses['spinner-' + color + '-only'] = true;\n } else {\n spinnerClasses['spinner-' + color] = true;\n }\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nSpinner.propTypes = {\n color: React.PropTypes.string,\n only: React.PropTypes.bool\n};\n\nSpinner.defaultProps = {\n only: true\n \n};\n\nexport default Spinner;","import React, { Component, PropTypes } from 'react';\n\nclass Chip extends Component {\n\n static propTypes = {\n /**\n * If show a close icon\n * @default false\n */\n close: PropTypes.bool,\n\n children: PropTypes.node\n };\n\n render() {\n let close = '';\n if (this.props.close) {\n close = close;\n }\n\n return (\n
    \n {this.props.children}\n {close}\n
    \n );\n }\n}\n\nexport default Chip;","import React from 'react';\nimport cx from 'classnames';\nimport Icon from './Icon';\n\nclass Card extends React.Component {\n constructor(props) {\n super(props);\n this.renderTitle = this.renderTitle.bind(this);\n }\n\n renderTitle(title, reveal) {\n let revealIcon = null;\n if (reveal) {\n revealIcon = more_vert;\n }\n let classes = {\n 'card-title': true,\n 'grey-text': true,\n 'text-darken-4': true,\n 'activator': reveal\n };\n return (\n \n {title}\n {revealIcon}\n \n );\n }\n\n renderReveal(title, reveal) {\n return (\n
    \n {title}close\n {reveal}\n
    \n );\n }\n\n renderAction(actions) {\n return
    {actions}
    ;\n }\n \n render() {\n let {title, header, className, textClassName, actions, reveal, children, ...props} = this.props;\n let classes = { card: true };\n return (\n
    \n {header}\n
    \n {title ? this.renderTitle(title, reveal) : null}\n
    {children}
    \n
    \n {this.renderReveal(title, reveal)}\n {actions ? this.renderAction(actions) : null}\n
    \n );\n }\n}\n\nCard.propTypes = {\n title: React.PropTypes.node,\n textClassName: React.PropTypes.string,\n reveal: React.PropTypes.element,\n header: React.PropTypes.element,\n // The buttons to be displayed at the action area\n actions: React.PropTypes.arrayOf(React.PropTypes.element),\n className: React.PropTypes.string,\n children: React.PropTypes.node\n};\n\nexport default Card;","import React, {PropTypes} from 'react';\nimport ClassNames from 'classnames';\n\nconst CardPanel = ({className, children, ...props}) => {\n const classes = {\n 'card-panel': true\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nCardPanel.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node\n};\n\nexport default CardPanel;","import React, {PropTypes} from 'react';\nimport $ from 'jquery';\n\nclass Tooltip extends React.Component {\n static propTypes = {\n children: PropTypes.node,\n text: PropTypes.string\n };\n\n componentDidMount() {\n $(this.refs.tt).tooltip({delay: 50});\n }\n\n componentWillUnmount() {\n $(this.refs.tt).tooltip('remove');\n }\n\n render() {\n const {children, text, ...other} = this.props;\n return (\n
    \n {children}\n
    \n );\n }\n}\n\nexport default Tooltip;","import React from 'react';\nimport classNames from 'classnames';\nimport idgen from 'app/lib/idgen';\nimport constants from 'modules/app/constants/materialize';\n\nimport Input from './Input';\n\nclass Select extends React.Component {\n\n renderOptions() {\n let items = [],\n {options, optionLabel, optionValue} = this.props;\n\n for (let i = 0; i < options.length; i++) {\n let opt = options[i];\n\n let label = optionLabel ? opt[optionLabel] : opt;\n let value = optionValue ? opt[optionValue] : opt;\n\n items.push();\n }\n\n return items;\n }\n\n render() {\n return (\n {this.renderOptions()}\n );\n }\n\n}\n\nSelect.propTypes = {\n options: React.PropTypes.array.isRequired,\n optionLabel: React.PropTypes.string,\n optionValue: React.PropTypes.string\n};\n\nexport default Select;","import React from 'react';\nimport ClassNames from 'classnames';\nimport idgen from 'app/lib/idgen';\nimport constants from 'modules/app/constants/materialize';\n\nimport Input from './Input';\nimport Select from './Select';\n\nimport 'stylesheets/components/freeTextSelect.scss';\n\nclass FreeTextSelect extends React.Component {\n\n renderOptions() {\n let items = [],\n options = this.props.options;\n\n for (let i = 0; i < options.length; i++) {\n let opt = options[i];\n items.push();\n }\n\n return items;\n }\n\n\n renderSelect() {\n let {s, m, l, label, className, ...rest} = this.props;\n\n return (\n //
    \n \n );\n\n }\n}\nexport default Footer;","import './style.scss';\n\nimport React, {PropTypes} from 'react';\nimport $ from 'jquery';\n\nlet lastMessages = null;\n\nconst FlashMessage = ({messages, formatMessage}) => {\n if (messages !== lastMessages) {\n lastMessages = messages;\n messages.forEach((msg) => {\n let flash = formatMessage({id: msg.messageIds[0] }, msg.params);\n if (msg.titleId) {\n let title = formatMessage({id: msg.titleId});\n flash = $(`
    ${title}${flash}
    `);\n }\n // eslint-disable-next-line no-undef\n Materialize.toast(flash, msg.ttl, msg.theme);\n });\n }\n return
    flashmsg
    ;\n};\n\nFlashMessage.propTypes = {\n messages: PropTypes.object.isRequired,\n formatMessage: PropTypes.func.isRequired\n};\n\nexport default FlashMessage;\n","\nexport const isRequestingData = (state, resource) => {\n if (resource) return isRequestingResource(state, resource);\n let req = state.getIn(['session', 'requesting']);\n if (!req) return false;\n return req.count() > 0;\n};\n\nexport const isRequestingResource = (state, resource) => (!!state.getIn(['session', 'requesting', resource]));\n\nexport const getFlashMessage = state => state.getIn(['session','flashMessage']);","import 'stylesheets/base.scss';\n\nimport React, {Component, PropTypes} from 'react';\nimport {connect} from 'react-redux';\nimport {intlShape, injectIntl} from 'react-intl';\n\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport {NavigationContainer} from './Navigation';\nimport Footer from '../components/Footer';\nimport ProgressBar from '../components/ProgressBar';\nimport FlashMessage from '../components/FlashMessage/FlashMessage';\nimport {settings} from 'app/globals';\nimport {setPreferredLanguage} from 'modules/profile/actions';\nimport {isRequestingData, getFlashMessage} from 'modules/app/selectors';\nimport {getLocale} from 'modules/profile/selectors';\nimport {isAuthenticated, getJWT} from 'modules/auth/selectors';\n\nclass App extends PureRenderComponent {\n\n static propTypes = {\n children: PropTypes.element,\n isAuthenticated: PropTypes.bool,\n locale: PropTypes.oneOf(settings.supportedLocales),\n isRequesting: PropTypes.bool,\n flashMessage: PropTypes.object,\n intl: intlShape.isRequired,\n token: PropTypes.string\n };\n\n static childContextTypes = {\n token: PropTypes.string\n };\n\n getChildContext = () => {\n return {\n token: this.props.token\n };\n };\n\n localeChangedHandler = (e) => {\n this.props.setPreferredLanguage(e.target.value);\n };\n\n render() {\n let {isAuthenticated, locale, children, isRequesting, flashMessage, intl:{formatMessage}, ...props} = this.props;\n\n if (!isAuthenticated) {\n return (\n
    \n {flashMessage && flashMessage.size > 0 &&\n }\n {isRequesting &&
    }\n {children}\n
    \n );\n } else {\n return (\n
    \n {flashMessage && flashMessage.size > 0 &&\n }\n {isRequesting &&
    }\n \n
    {children}
    \n
    \n );\n }\n\n\n }\n\n}\n\nfunction mapStateToProps(state) {\n return {\n isAuthenticated: isAuthenticated(state),\n locale: getLocale(state),\n isRequesting: isRequestingData(state),\n flashMessage: getFlashMessage(state),\n token: getJWT(state)\n };\n}\n\nexport const AppContainer = connect(mapStateToProps, {setPreferredLanguage})(injectIntl(App));\n\nexport default App;\n","import action from './action';\nimport {createActionType, createRequestTypes} from './actionTypes';\n\nexport const requestActionsFor = (resourceName) => {\n if (resourceName == null) throw new Error('requestActionsFor: Expected resourceName');\n resourceName = resourceName.toUpperCase();\n\n const actionTypes = createRequestTypes(resourceName);\n\n let actionCreators = {\n success : (payload) => action(actionTypes.SUCCESS)(payload),\n error : (payload) => action(actionTypes.ERROR)(payload)\n };\n\n return {\n request : (payload) => action(actionTypes.REQUEST)({request: resourceName, actions:{...actionCreators}, ...payload}),\n ...actionCreators\n };\n};\n\nexport const simpleActionFor = (actionType, resourceName) => {\n if (actionType == null) throw new Error('simpleActionFor: Expected resourceName');\n\n return (payload) => action(actionType || createActionType(resourceName))(payload);\n};\n","\nexport const getReports = state => state.get('reports').toJS();","import Widget from './Widget';\n\nexport default Widget;\n","import React, {PropTypes} from 'react';\nimport {Card} from 'routes/app/components';\nimport {FormattedMessage} from 'react-intl';\nimport './style.scss';\n\nconst Widget = ({children, title, onRefresh}) => {\n const actions = [\n {e.preventDefault(); onRefresh();}}>\n ];\n return (\n \n {children}\n \n );\n};\n\nWidget.propTypes = {\n onRefresh: PropTypes.func,\n children: PropTypes.node,\n title: PropTypes.node\n};\n\nexport default Widget;","import _ from 'lodash';\n\nimport Chart from 'chart.js';\nwindow.Chart = Chart;\n\n//new chart type LineBar - its a bit like bar and line\n//were slammed together at high speed, not pretty,\n//but they are part of each other now\n(function(){\n \"use strict\";\n\n let root = this,\n Chart = root.Chart,\n helpers = Chart.helpers;\n\n\n let defaultConfig = {\n //Function - Whether the current x-axis label should be filtered out, takes in current label and\n //index, return true to filter out the label return false to keep the label\n labelsFilter : function(label,index){return false;},\n\n //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value\n scaleBeginAtZero : true,\n\n //Boolean - Whether grid lines are shown across the chart\n scaleShowGridLines : true,\n\n //String - Colour of the grid lines\n scaleGridLineColor : \"rgba(0,0,0,.05)\",\n\n //Number - Width of the grid lines\n scaleGridLineWidth : 1,\n\n //Boolean - If there is a stroke on each bar\n barShowStroke : true,\n\n //Number - Pixel width of the bar stroke\n barStrokeWidth : 2,\n\n //Number - Spacing between each of the X value sets\n barValueSpacing : 5,\n\n //Number - Spacing between data sets within X values\n barDatasetSpacing : 1,\n\n //Boolean - Whether the line is curved between points\n bezierCurve : true,\n\n //Number - Tension of the bezier curve between points\n bezierCurveTension : 0.4,\n\n //Boolean - Whether to show a dot for each point\n pointDot : true,\n\n //Number - Radius of each point dot in pixels\n pointDotRadius : 4,\n\n //Number - Pixel width of point dot stroke\n pointDotStrokeWidth : 1,\n\n //Number - amount extra to add to the radius to cater for hit detection outside the drawn point\n pointHitDetectionRadius : 20,\n\n //Boolean - Whether to show a stroke for datasets\n datasetStroke : true,\n\n //Number - Pixel width of dataset stroke\n datasetStrokeWidth : 2,\n\n //Boolean - Whether to fill the dataset with a colour\n datasetFill : true,\n\n //String - A legend template\n legendTemplate : \"\"\n\n };\n\n\n Chart.Type.extend({\n name: \"LineBar\",\n defaults : defaultConfig,\n initialize: function(data){\n //Expose options as a scope letiable here so we can access it in the ScaleClass\n let options = this.options;\n //two new letibale to hold the different graph types\n this.barDatasets = [];\n this.lineDatasets = [];\n\n //generate the scale, let bar take control here as he needs the width.\n this.ScaleClass = Chart.Scale.extend({\n offsetGridLines : true,\n calculateBarX : function(datasetCount, datasetIndex, barIndex){\n //Reusable method for calculating the xPosition of a given bar based on datasetIndex & width of the bar\n let xWidth = this.calculateBaseWidth(),\n xAbsolute = this.calculateX(barIndex) - (xWidth/2),\n barWidth = this.calculateBarWidth(datasetCount);\n\n return xAbsolute + (barWidth * datasetIndex) + (datasetIndex * options.barDatasetSpacing) + barWidth/2;\n },\n calculateBaseWidth : function(){\n return (this.calculateX(1) - this.calculateX(0)) - (2*options.barValueSpacing);\n },\n calculateBarWidth : function(datasetCount){\n //The padding between datasets is to the right of each bar, providing that there are more than 1 dataset\n let baseWidth = this.calculateBaseWidth() - ((datasetCount - 1) * options.barDatasetSpacing);\n\n return (baseWidth / datasetCount);\n }\n });\n\n //Declare the extension of the default point, to cater for the options passed in to the constructor\n this.PointClass = Chart.Point.extend({\n strokeWidth : this.options.pointDotStrokeWidth,\n radius : this.options.pointDotRadius,\n display: this.options.pointDot,\n hitDetectionRadius : this.options.pointHitDetectionRadius,\n ctx : this.chart.ctx,\n inRange : function(mouseX){\n return (Math.pow(mouseX-this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius,2));\n }\n });\n\n this.datasets = [];\n\n //Set up tooltip events on the chart\n if (this.options.showTooltips){\n helpers.bindEvents(this, this.options.tooltipEvents, function(evt){\n let activeData = (evt.type !== 'mouseout') ? this.getDataAtEvent(evt) : [];\n this.eachBars(function(bar){\n bar.restore(['fillColor', 'strokeColor']);\n });\n this.eachPoints(function(point){\n point.restore(['fillColor', 'strokeColor']);\n });\n helpers.each(activeData, function(active){\n active.fillColor = active.highlightFill;\n active.strokeColor = active.highlightStroke;\n });\n this.showTooltip(activeData);\n });\n }\n\n //Declare the extension of the default point, to cater for the options passed in to the constructor\n this.BarClass = Chart.Rectangle.extend({\n strokeWidth : this.options.barStrokeWidth,\n showStroke : this.options.barShowStroke,\n ctx : this.chart.ctx\n });\n\n //Iterate through each of the datasets, and build this into a property of the chart\n helpers.each(data.datasets,function(dataset,datasetIndex){\n\n let datasetObject = {\n label : dataset.label || null,\n fillColor : dataset.fillColor,\n strokeColor : dataset.strokeColor,\n type: dataset.type,\n bars : [],\n pointColor : dataset.pointColor,\n pointStrokeColor : dataset.pointStrokeColor,\n points : []\n };\n\n this.datasets.push(datasetObject);\n switch(dataset.type)\n {\n case \"line\":\n this.lineDatasets.push(datasetObject);\n helpers.each(dataset.data,function(dataPoint,index){\n //Add a new point for each piece of data, passing any required data to draw.\n datasetObject.points.push(new this.PointClass({\n value : dataPoint,\n label : data.labels[index],\n datasetLabel: dataset.label,\n strokeColor : dataset.pointStrokeColor,\n fillColor : dataset.pointColor,\n highlightFill : dataset.pointHighlightFill || dataset.pointColor,\n highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor\n }));\n },this);\n break;\n\n default:\n this.barDatasets.push(datasetObject);\n helpers.each(dataset.data,function(dataPoint,index){\n //Add a new point for each piece of data, passing any required data to draw.\n datasetObject.bars.push(new this.BarClass({\n value : dataPoint,\n label : data.labels[index],\n datasetLabel: dataset.label,\n strokeColor : dataset.strokeColor,\n fillColor : dataset.fillColor,\n highlightFill : dataset.highlightFill || dataset.fillColor,\n highlightStroke : dataset.highlightStroke || dataset.strokeColor\n }));\n },this);\n\n break;\n }\n\n\n },this);\n\n this.buildScale(data.labels);\n\n helpers.each(this.lineDatasets,function(dataset,datasetIndex){\n //Iterate through each of the datasets, and build this into a property of the chart\n this.eachPoints(function(point, index){\n helpers.extend(point, {\n x: this.scale.calculateX(index),\n y: this.scale.endPoint\n });\n point.save();\n }, this);\n },this);\n\n this.BarClass.prototype.base = this.scale.endPoint;\n this.eachBars(function(bar, index, datasetIndex){\n helpers.extend(bar, {\n width : this.scale.calculateBarWidth(this.barDatasets.length),\n x: this.scale.calculateBarX(this.barDatasets.length, datasetIndex, index),\n y: this.scale.endPoint\n });\n bar.save();\n }, this);\n\n this.render();\n },\n update : function(){\n this.scale.update();\n // Reset any highlight colours before updating.\n helpers.each(this.activeElements, function(activeElement){\n activeElement.restore(['fillColor', 'strokeColor']);\n });\n\n this.eachBars(function(bar){\n bar.save();\n });\n this.eachPoints(function(point){\n point.save();\n });\n this.render();\n },\n eachPoints : function(callback){\n //use the lineDataSets\n helpers.each(this.lineDatasets,function(dataset){\n helpers.each(dataset.points,callback,this);\n },this);\n },\n eachBars : function(callback){\n //user the barDataSets\n helpers.each(this.barDatasets,function(dataset, datasetIndex){\n helpers.each(dataset.bars, callback, this, datasetIndex);\n },this);\n },\n\n\n getDataAtEvent : function(e)\n {\n\n return this.getPointsAtEvent(e).concat(this.getBarsAtEvent(e));\n },\n getPointsAtEvent : function(e){\n let pointsArray = [],\n eventPosition = helpers.getRelativePosition(e);\n helpers.each(this.lineDatasets,function(dataset){\n helpers.each(dataset.points,function(point){\n if (point.inRange(eventPosition.x,eventPosition.y)) pointsArray.push(point);\n });\n },this);\n return pointsArray;\n },\n getBarsAtEvent : function(e){\n let barsArray = [],\n eventPosition = helpers.getRelativePosition(e),\n datasetIterator = function(dataset){\n barsArray.push(dataset.bars[barIndex]);\n },\n barIndex;\n\n for (let datasetIndex = 0; datasetIndex < this.barDatasets.length; datasetIndex++) {\n for (barIndex = 0; barIndex < this.barDatasets[datasetIndex].bars.length; barIndex++) {\n if (this.barDatasets[datasetIndex].bars[barIndex].inRange(eventPosition.x,eventPosition.y)){\n helpers.each(this.barDatasets, datasetIterator);\n return barsArray;\n }\n }\n }\n\n return barsArray;\n },\n buildScale : function(labels){\n let self = this;\n\n let dataTotal = function(){\n let values = [];\n self.eachBars(function(bar){\n values.push(bar.value);\n });\n return values;\n };\n\n let scaleOptions = {\n labelsFilter: this.options.labelsFilter,\n templateString : this.options.scaleLabel,\n height : this.chart.height,\n width : this.chart.width,\n ctx : this.chart.ctx,\n textColor : this.options.scaleFontColor,\n fontSize : this.options.scaleFontSize,\n fontStyle : this.options.scaleFontStyle,\n fontFamily : this.options.scaleFontFamily,\n valuesCount : labels.length,\n beginAtZero : this.options.scaleBeginAtZero,\n integersOnly : this.options.scaleIntegersOnly,\n calculateYRange: function(currentHeight){\n let updatedRanges = helpers.calculateScaleRange(\n dataTotal(),\n currentHeight,\n this.fontSize,\n this.beginAtZero,\n this.integersOnly\n );\n helpers.extend(this, updatedRanges);\n },\n xLabels : labels,\n font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),\n lineWidth : this.options.scaleLineWidth,\n lineColor : this.options.scaleLineColor,\n gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,\n gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : \"rgba(0,0,0,0)\",\n padding : (this.options.showScale) ? 0 : (this.options.barShowStroke) ? this.options.barStrokeWidth : 0,\n showLabels : this.options.scaleShowLabels,\n display : this.options.showScale\n };\n\n if (this.options.scaleOverride){\n helpers.extend(scaleOptions, {\n calculateYRange: helpers.noop,\n steps: this.options.scaleSteps,\n stepValue: this.options.scaleStepWidth,\n min: this.options.scaleStartValue,\n max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)\n });\n }\n\n this.scale = new this.ScaleClass(scaleOptions);\n },\n addData : function(valuesArray,label){\n //Map the values array for each of the datasets\n\n let lineDataSetIndex = 0;\n let barDataSetIndex = 0;\n helpers.each(valuesArray,function(value,datasetIndex){\n switch(this.datasets[datasetIndex].type)\n {\n case \"line\":\n //Add a new point for each piece of data, passing any required data to draw.\n this.lineDatasets[lineDataSetIndex].points.push(new this.PointClass({\n value : value,\n label : label,\n x: this.scale.calculateX(this.scale.valuesCount+1),\n y: this.scale.endPoint,\n strokeColor : this.lineDatasets[lineDataSetIndex].pointStrokeColor,\n fillColor : this.lineDatasets[lineDataSetIndex].pointColor\n }));\n lineDataSetIndex++;\n break;\n\n default:\n //Add a new point for each piece of data, passing any required data to draw.\n this.barDatasets[barDataSetIndex].bars.push(new this.BarClass({\n value : value,\n label : label,\n x: this.scale.calculateBarX(this.barDatasets.length, barDataSetIndex, this.scale.valuesCount+1),\n y: this.scale.endPoint,\n width : this.scale.calculateBarWidth(this.barDatasets.length),\n base : this.scale.endPoint,\n strokeColor : this.barDatasets[barDataSetIndex].strokeColor,\n fillColor : this.barDatasets[barDataSetIndex].fillColor\n }));\n barDataSetIndex++;\n break;\n }\n },this);\n this.scale.addXLabel(label);\n //Then re-render the chart.\n this.update();\n },\n removeData : function(){\n this.scale.removeXLabel();\n //Then re-render the chart.\n helpers.each(this.barDatasets,function(dataset){\n dataset.bars.shift();\n },this);\n\n helpers.each(this.lineDatasets,function(dataset){\n dataset.points.shift();\n },this);\n\n this.update();\n },\n reflow : function(){\n helpers.extend(this.BarClass.prototype,{\n y: this.scale.endPoint,\n base : this.scale.endPoint\n });\n let newScaleProps = helpers.extend({\n height : this.chart.height,\n width : this.chart.width\n });\n this.scale.update(newScaleProps);\n },\n draw : function(ease){\n let easingDecimal = ease || 1;\n this.clear();\n\n let ctx = this.chart.ctx;\n\n // Some helper methods for getting the next/prev points\n let hasValue = function(item){\n return item.value !== null;\n },\n nextPoint = function(point, collection, index){\n return helpers.findNextWhere(collection, hasValue, index) || point;\n },\n previousPoint = function(point, collection, index){\n return helpers.findPreviousWhere(collection, hasValue, index) || point;\n };\n\n this.scale.draw(easingDecimal);\n\n //Draw all the bars for each dataset\n helpers.each(this.lineDatasets,function(dataset,datasetIndex){\n let pointsWithValues = helpers.where(dataset.points, hasValue);\n //Transition each point first so that the line and point drawing isn't out of sync\n //We can use this extra loop to calculate the control points of this dataset also in this loop\n helpers.each(dataset.points, function(point, index){\n if (point.hasValue()){\n point.transition({\n y : this.scale.calculateY(point.value),\n x : this.scale.calculateX(index)\n }, easingDecimal);\n }\n },this);\n\n // Control points need to be calculated in a seperate loop, because we need to know the current x/y of the point\n // This would cause issues when there is no animation, because the y of the next point would be 0, so beziers would be skewed\n if (this.options.bezierCurve){\n helpers.each(pointsWithValues, function(point, index){\n let tension = (index > 0 && index < pointsWithValues.length - 1) ? this.options.bezierCurveTension : 0;\n point.controlPoints = helpers.splineCurve(\n previousPoint(point, pointsWithValues, index),\n point,\n nextPoint(point, pointsWithValues, index),\n tension\n );\n\n // Prevent the bezier going outside of the bounds of the graph\n\n // Cap puter bezier handles to the upper/lower scale bounds\n if (point.controlPoints.outer.y > this.scale.endPoint){\n point.controlPoints.outer.y = this.scale.endPoint;\n }\n else if (point.controlPoints.outer.y < this.scale.startPoint){\n point.controlPoints.outer.y = this.scale.startPoint;\n }\n\n // Cap inner bezier handles to the upper/lower scale bounds\n if (point.controlPoints.inner.y > this.scale.endPoint){\n point.controlPoints.inner.y = this.scale.endPoint;\n }\n else if (point.controlPoints.inner.y < this.scale.startPoint){\n point.controlPoints.inner.y = this.scale.startPoint;\n }\n },this);\n }\n\n\n //Draw the line between all the points\n ctx.lineWidth = this.options.datasetStrokeWidth;\n ctx.strokeStyle = dataset.strokeColor;\n ctx.beginPath();\n\n helpers.each(pointsWithValues, function(point, index){\n if (index === 0){\n ctx.moveTo(point.x, point.y);\n }\n else{\n if(this.options.bezierCurve){\n let previous = previousPoint(point, pointsWithValues, index);\n\n ctx.bezierCurveTo(\n previous.controlPoints.outer.x,\n previous.controlPoints.outer.y,\n point.controlPoints.inner.x,\n point.controlPoints.inner.y,\n point.x,\n point.y\n );\n }\n else{\n ctx.lineTo(point.x,point.y);\n }\n }\n }, this);\n\n ctx.stroke();\n\n if (this.options.datasetFill && pointsWithValues.length > 0){\n //Round off the line by going to the base of the chart, back to the start, then fill.\n ctx.lineTo(pointsWithValues[pointsWithValues.length - 1].x, this.scale.endPoint);\n ctx.lineTo(pointsWithValues[0].x, this.scale.endPoint);\n ctx.fillStyle = dataset.fillColor;\n ctx.closePath();\n ctx.fill();\n }\n\n //Now draw the points over the line\n //A little inefficient double looping, but better than the line\n //lagging behind the point positions\n helpers.each(pointsWithValues,function(point){\n point.draw();\n });\n\n\n },this);\n helpers.each(this.barDatasets,function(dataset,datasetIndex){\n helpers.each(dataset.bars,function(bar,index){\n if (bar.hasValue()){\n bar.base = this.scale.endPoint;\n //Transition then draw\n bar.transition({\n x : this.scale.calculateBarX(this.barDatasets.length, datasetIndex, index),\n y : this.scale.calculateY(bar.value),\n width : this.scale.calculateBarWidth(this.barDatasets.length)\n }, easingDecimal).draw();\n }\n },this);\n },this);\n },\n showTooltip : function(ChartElements, forceRedraw){\n // Only redraw the chart if we've actually changed what we're hovering on.\n if (typeof this.activeElements === 'undefined') this.activeElements = [];\n\n let isChanged = (function(Elements){\n let changed = false;\n\n if (Elements.length !== this.activeElements.length){\n changed = true;\n return changed;\n }\n\n helpers.each(Elements, function(element, index){\n if (element !== this.activeElements[index]){\n changed = true;\n }\n }, this);\n return changed;\n }).call(this, ChartElements);\n\n if (!isChanged && !forceRedraw){\n return;\n }\n else{\n this.activeElements = ChartElements;\n }\n this.draw();\n if (ChartElements.length > 0){\n // If we have multiple datasets, show a MultiTooltip for all of the data points at that index\n if (this.datasets && this.datasets.length > 1) {\n let dataArray,\n dataIndex;\n\n for (let i = this.lineDatasets.length - 1; i >= 0; i--) {\n dataArray = this.datasets[i].points;\n dataIndex = helpers.indexOf(dataArray, ChartElements[0]);\n if (dataIndex !== -1){\n break;\n }\n }\n if(dataIndex === -1)\n {\n for (let i = this.barDatasets.length - 1; i >= 0; i--) {\n dataArray = this.datasets[i].bars;\n dataIndex = helpers.indexOf(dataArray, ChartElements[0]);\n if (dataIndex !== -1){\n break;\n }\n }\n }\n let tooltipLabels = [],\n tooltipColors = [],\n medianPosition = (function(index) {\n\n // Get all the points at that particular index\n let Elements = [],\n dataCollection,\n xPositions = [],\n yPositions = [],\n xMax,\n yMax,\n xMin,\n yMin;\n helpers.each(this.lineDatasets, function(dataset){\n dataCollection = dataset.points;\n if (dataCollection[dataIndex] && dataCollection[dataIndex].hasValue()){\n Elements.push(dataCollection[dataIndex]);\n }\n });\n helpers.each(this.barDatasets, function(dataset){\n dataCollection = dataset.bars;\n if (dataCollection[dataIndex] && dataCollection[dataIndex].hasValue()){\n Elements.push(dataCollection[dataIndex]);\n }\n });\n\n helpers.each(Elements, function(element) {\n xPositions.push(element.x);\n yPositions.push(element.y);\n\n\n //Include any colour information about the element\n tooltipLabels.push(helpers.template(this.options.multiTooltipTemplate, element));\n tooltipColors.push({\n fill: element._saved.fillColor || element.fillColor,\n stroke: element._saved.strokeColor || element.strokeColor\n });\n\n }, this);\n\n yMin = helpers.min(yPositions);\n yMax = helpers.max(yPositions);\n\n xMin = helpers.min(xPositions);\n xMax = helpers.max(xPositions);\n\n return {\n x: (xMin > this.chart.width/2) ? xMin : xMax,\n y: (yMin + yMax)/2\n };\n }).call(this, dataIndex);\n\n new Chart.MultiTooltip({\n x: medianPosition.x,\n y: medianPosition.y,\n xPadding: this.options.tooltipXPadding,\n yPadding: this.options.tooltipYPadding,\n xOffset: this.options.tooltipXOffset,\n fillColor: this.options.tooltipFillColor,\n textColor: this.options.tooltipFontColor,\n fontFamily: this.options.tooltipFontFamily,\n fontStyle: this.options.tooltipFontStyle,\n fontSize: this.options.tooltipFontSize,\n titleTextColor: this.options.tooltipTitleFontColor,\n titleFontFamily: this.options.tooltipTitleFontFamily,\n titleFontStyle: this.options.tooltipTitleFontStyle,\n titleFontSize: this.options.tooltipTitleFontSize,\n cornerRadius: this.options.tooltipCornerRadius,\n labels: tooltipLabels,\n legendColors: tooltipColors,\n legendColorBackground : this.options.multiTooltipKeyBackground,\n title: ChartElements[0].label,\n chart: this.chart,\n ctx: this.chart.ctx\n }).draw();\n\n } else {\n _.each(ChartElements, function(Element) {\n let tooltipPosition = Element.tooltipPosition();\n new Chart.Tooltip({\n x: Math.round(tooltipPosition.x),\n y: Math.round(tooltipPosition.y),\n xPadding: this.options.tooltipXPadding,\n yPadding: this.options.tooltipYPadding,\n fillColor: this.options.tooltipFillColor,\n textColor: this.options.tooltipFontColor,\n fontFamily: this.options.tooltipFontFamily,\n fontStyle: this.options.tooltipFontStyle,\n fontSize: this.options.tooltipFontSize,\n caretHeight: this.options.tooltipCaretSize,\n cornerRadius: this.options.tooltipCornerRadius,\n text: _.template(this.options.tooltipTemplate, Element),\n chart: this.chart\n }).draw();\n }, this);\n }\n }\n return this;\n }\n });\n\n\n}).call(window);\n//here ends the LineBar","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default {\n createClass: function(chartType, methodNames, dataKey) {\n let extras = ['clear', 'stop', 'resize', 'toBase64Image', 'generateLegend', 'update', 'addData', 'removeData'];\n \n class ChartClass extends React.Component {\n displayName = chartType + 'Chart';\n state = {};\n \n componentDidMount() {\n this.initializeChart(this.props);\n }\n\n componentWillReceiveProps(nextProps) {\n let chart = this.state.chart;\n if (nextProps.redraw) {\n chart.destroy();\n this.initializeChart(nextProps);\n } else {\n dataKey = dataKey || dataKeys[chart.name];\n updatePoints(nextProps, chart, dataKey);\n if (chart.scale) {\n chart.scale.xLabels = nextProps.data.labels;\n chart.scale.calculateXLabelRotation();\n }\n chart.update();\n }\n }\n\n componentWillUnmount() {\n let chart = this.state.chart;\n chart && chart.destroy();\n }\n\n initializeChart = (nextProps) => {\n let Chart = require('chart.js');\n let el = ReactDOM.findDOMNode(this);\n let ctx = el.getContext(\"2d\");\n let chart = new Chart(ctx)[chartType](nextProps.data, nextProps.options || {});\n this.setState({chart});\n };\n \n render() {\n let _props = {\n ref: 'canvass'\n };\n for (let name in this.props) {\n if (this.props.hasOwnProperty(name)) {\n if (name !== 'data' && name !== 'options') {\n _props[name] = this.props[name];\n }\n }\n }\n return ;\n }\n }\n\n let i;\n for (i=0; i nextProps.data.labels.length) {\n chart.removeData();\n }\n nextProps.data.datasets.forEach(function(set, setIndex) {\n set.data.forEach(function(val, pointIndex) {\n if(chart.datasets[setIndex][dataKey]){ //HOTFIX: rendering LineBar next to Bar gives errors\n if (typeof(chart.datasets[setIndex][dataKey][pointIndex]) == \"undefined\") {\n addData(nextProps, chart, setIndex, pointIndex);\n } else {\n chart.datasets[setIndex][dataKey][pointIndex].value = val;\n }\n }\n });\n });\n }\n};\n\nlet addData = function(nextProps, chart, setIndex, pointIndex) {\n let values = [];\n nextProps.data.datasets.forEach(function(set) {\n values.push(set.data[pointIndex]);\n });\n chart.addData(values, nextProps.data.labels[setIndex]);\n};\n","import './Chart.LineBar';\nimport _ from 'lodash';\n// import vars from 'react-chartjs/lib/core';\nimport vars from './core.jsx';\n\nconst LineBar = vars.createClass('LineBar', ['getPointsAtEvent','getBarsAtEvent']);\n\nexport default LineBar;","import React from 'react';\nimport ClassNames from 'classnames';\nimport Spinner from './Spinner';\n\nlet colors = ['blue', 'red', 'yellow', 'green'];\n\nclass Preloader extends React.Component {\n render() {\n let classes = {\n 'preloader-wrapper': true,\n active: this.props.active\n };\n\n if (this.props.size) {\n classes[this.props.size] = true;\n }\n\n let spinners;\n if (this.props.flashing) {\n spinners = [];\n colors.map(color => {\n spinners.push();\n });\n } else {\n spinners = ;\n }\n return (\n
    \n {spinners}\n
    \n );\n }\n}\n\nPreloader.propTypes = {\n /**\n * The scale of the circle\n * @default 'medium'\n */\n size: React.PropTypes.oneOf(['big', 'small', 'medium']),\n /**\n * Whether to spin\n * @default true\n */\n active: React.PropTypes.bool,\n /**\n * The color of the circle, if not flashing\n * @default 'blue'\n */\n color: React.PropTypes.oneOf(['blue', 'red', 'yellow', 'green']),\n /**\n * Wheter to circle four different colors\n * @default false\n */\n flashing: React.PropTypes.bool,\n /**\n * \n */\n className: React.PropTypes.string\n};\n\nPreloader.defaultProps = {\n active: true,\n flashing: false,\n color: 'blue'\n};\n\nexport default Preloader;","import React, {PropTypes, Component} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport {serverDateFormat} from 'app/lib/format';\nimport Widget from '../../Widget';\nimport {colorsRGB} from 'app/globals';\nimport LineBarChart from 'app/lib/charts/LineBar';\nimport Preloader from 'routes/app/components/Preloader';\nimport './style.scss';\n\n/*const chartData = {\n labels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n datasets: [\n {\n label: \"My First dataset\",\n type: \"bar\",\n fillColor: \"rgba(220,220,220,0.2)\",\n strokeColor: \"rgba(220,220,220,1)\",\n pointColor: \"rgba(220,220,220,1)\",\n pointStrokeColor: \"#fff\",\n pointHighlightFill: \"#fff\",\n pointHighlightStroke: \"rgba(220,220,220,1)\",\n data: [65, 59, 80, 81, 56, 55, 40]\n },\n {\n label: \"My Second dataset\",\n type: \"line\",\n fillColor: \"rgba(151,187,205,0.2)\",\n strokeColor: \"rgba(151,187,205,1)\",\n pointColor: \"rgba(151,187,205,1)\",\n pointStrokeColor: \"#fff\",\n pointHighlightFill: \"#fff\",\n pointHighlightStroke: \"rgba(151,187,205,1)\",\n data: [28, 48, 40, 19, 86, 27, 90]\n }\n ]\n };*/\nconst chartOptions = {\n showScale: true,\n scaleShowLabels: false,\n showTooltips: false,\n responsive: true,\n maintainAspectRatio: false\n};\n\nconst rawDataToChartData = (raw) => {\n const data = {labels: [], datasets: []};\n\n if (_.isEmpty(raw)) {\n return data;\n }\n\n const dayStart = raw.startHour;\n const dayEnd = dayStart + raw.histCount.length;\n\n for (let i = dayStart; i < dayEnd; i++) {\n data.labels.push(i);\n }\n\n data.datasets.push({\n label: 'History count',\n type: 'bar',\n fillColor: 'rgba(220,220,220,0.2)',\n strokeColor: 'rgba(220,220,220,1)',\n pointColor: 'rgba(220,220,220,1)',\n pointStrokeColor: '#fff',\n pointHighlightFill: '#fff',\n pointHighlightStroke: 'rgba(220,220,220,1)',\n data: raw.histCount\n });\n\n data.datasets.push({\n label: 'Actual count',\n type: 'line',\n fillColor: 'transparent',\n strokeColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},1)`,\n pointColor: 'transparent',\n pointStrokeColor: 'transparent',\n data: new Array(raw.histCount.length).fill(raw.actualCount)\n });\n\n return data;\n};\n\nclass ActualTrucks extends Component {\n\n static propTypes = {\n rawData: PropTypes.object.isRequired,\n intl: PropTypes.object,\n fetch: PropTypes.func.isRequired,\n values: PropTypes.shape({\n dom: PropTypes.string\n })\n };\n \n componentWillMount() {\n this.fetchData();\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.values.dom !== nextProps.values.dom) {\n this.fetchData(nextProps.values.dom);\n }\n }\n\n fetchData = (dom) => {\n dom = dom || this.props.values.dom;\n this.props.fetch({dom, date: moment().format(serverDateFormat)});\n };\n\n render() {\n const {rawData, intl:{formatMessage}} = this.props;\n\n return (\n }>\n\n {rawData.isLoading ?\n \n :\n rawData.isError ?\n \n :\n
    \n \n

    \n \n

    \n
    \n }\n \n );\n }\n\n}\n\nexport default ActualTrucks;","import ActualTrucks from './ActualTrucks';\n\nexport default ActualTrucks;\n","import React, {PropTypes, Component} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport {Bar as BarChart} from 'react-chartjs'; //stacked bar? @see https://github.com/Regaddi/Chart.StackedBar.js/blob/master/src/Chart.StackedBar.js\nimport {colorsRGB} from 'app/globals';\nimport {serverToDisplayTimeSlot, serverDateFormat, displayDateFormat, displayToServerDate} from 'app/lib/format';\nimport Widget from '../../Widget';\nimport Preloader from 'routes/app/components/Preloader';\nimport Input from 'routes/app/components/Input';\nimport Col from 'routes/app/components/Col';\nimport Row from 'routes/app/components/Row';\nimport '../style.scss';\n\nconst chartOptions = {\n showScale: true,\n scaleShowLabels: false,\n showTooltips: false,\n responsive: true,\n maintainAspectRatio: false\n};\n\nconst rawDataToChartData = (raw) => {\n\n const data = {labels: [], datasets: []};\n\n if (_.isEmpty(raw)) {\n return data;\n }\n\n let dataSet1 = {\n label: 'Max. registrations',\n fillColor: 'rgba(220,220,220,0.2)',\n strokeColor: 'rgba(220,220,220,1)',\n pointColor: 'rgba(220,220,220,1)',\n pointStrokeColor: '#fff',\n pointHighlightFill: '#fff',\n pointHighlightStroke: 'rgba(220,220,220,1)',\n data: []\n };\n let dataSet2 = {\n label: 'Actual registrations',\n fillColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},0.2)`,\n strokeColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},1)`,\n pointColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},1)`,\n pointStrokeColor: '#fff',\n pointHighlightFill: '#fff',\n pointHighlightStroke: 'rgba(151,187,205,1)',\n data: []\n };\n\n for (let timeSlot of raw) {\n data.labels.push(serverToDisplayTimeSlot(timeSlot.begin, timeSlot.end));\n dataSet1.data.push(timeSlot.maxReg);\n dataSet2.data.push(timeSlot.actualReg);\n }\n\n data.datasets = [dataSet1, dataSet2];\n\n return data;\n};\n\nclass ActualOccupancy extends Component {\n\n static propTypes = {\n rawData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n intl: PropTypes.object,\n fetch: PropTypes.func.isRequired,\n dateField: PropTypes.object,\n values: PropTypes.shape({\n dom: PropTypes.string,\n date: PropTypes.string\n })\n };\n\n componentWillMount() {\n this.fetchData();\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.values.dom !== nextProps.values.dom || this.props.values.date !== nextProps.values.date) {\n this.fetchData(nextProps.values.dom, nextProps.values.date);\n }\n }\n\n fetchData = (dom, date) => {\n dom = dom || this.props.values.dom;\n date = date || this.props.values.date;\n this.props.fetch({dom, date: displayToServerDate(date)});\n };\n\n render() {\n const {rawData, intl:{formatMessage}, dateField} = this.props;\n\n return (\n }>\n\n \n \n \n \n \n\n {rawData.isLoading ?\n \n :\n rawData.isError ?\n \n :\n rawData.length === 0 ?\n \n :\n
    \n \n
      \n
    • \n
    • \n
    \n
    \n }\n \n );\n }\n\n}\n\nexport default ActualOccupancy;","import ActualOccupancy from './ActualOccupancy';\n\nexport default ActualOccupancy;\n","import React, {PropTypes, Component} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport {Line as LineChart} from 'react-chartjs'; //stacked bar? @see https://github.com/Regaddi/Chart.StackedBar.js/blob/master/src/Chart.StackedBar.js\nimport {serverToDisplayTimeSlot, serverToDisplayTime} from 'app/lib/format';\nimport Widget from '../../Widget';\nimport Preloader from 'routes/app/components/Preloader';\nimport Input from 'routes/app/components/Input';\nimport Col from 'routes/app/components/Col';\nimport Row from 'routes/app/components/Row';\nimport {colorsRGB} from 'app/globals';\n\nconst chartOptions = {\n showScale: true,\n scaleShowLabels: false,\n showTooltips: false,\n responsive: true,\n maintainAspectRatio: false\n};\n\nconst rawDataToChartData = ({values, maxRefMinutes}) => {\n\n\n const data = {labels: [], datasets: []};\n\n if (_.isEmpty(values)) {\n return data;\n }\n\n // values = [{\"begin\":\"060000\",\"end\":\"100000\",\"avgLeadTime\":120},{\"begin\":\"100000\",\"end\":\"120000\",\"avgLeadTime\":40},{\"begin\":\"120000\",\"end\":\"150000\",\"avgLeadTime\":120},{\"begin\":\"150000\",\"end\":\"213000\",\"avgLeadTime\":90}];\n\n // Dummy dataset, to always keep values between 0 and maxRefMinutes\n let dataSet0 = {\n fillColor: 'transparent',\n pointColor: 'transparent',\n strokeColor: 'transparent',\n data: [0,maxRefMinutes]\n };\n\n let dataSet1 = {\n label: 'Max. registrations',\n fillColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},0.2)`,\n strokeColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},1)`,\n pointColor: `rgba(${colorsRGB.secondary.r},${colorsRGB.secondary.g},${colorsRGB.secondary.b},1)`,\n pointStrokeColor: '#fff',\n pointHighlightFill: '#fff',\n pointHighlightStroke: 'rgba(151,187,205,1)',\n data: []\n };\n\n if (values.length > 1) {\n for (let timeSlot of values) {\n data.labels.push(serverToDisplayTimeSlot(timeSlot.begin, timeSlot.end));\n dataSet1.data.push(timeSlot.avgLeadTime);\n }\n } else if (values.length === 1) {\n data.labels.push(serverToDisplayTime(values[0].begin));\n data.labels.push(serverToDisplayTime(values[0].end));\n dataSet1.data.push(values[0].avgLeadTime);\n dataSet1.data.push(values[0].avgLeadTime);\n }\n\n data.datasets = [dataSet0, dataSet1];\n\n return data;\n};\n\nclass AverageLeadTime extends Component {\n\n static propTypes = {\n rawData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n intl: PropTypes.object,\n fetch: PropTypes.func.isRequired,\n dayOfWeekField: PropTypes.object,\n values: PropTypes.shape({\n dom: PropTypes.string,\n dayOfWeek: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n })\n };\n\n componentWillMount() {\n this.fetchData();\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.values.dom !== nextProps.values.dom || this.props.values.dayOfWeek !== nextProps.values.dayOfWeek) {\n this.fetchData(nextProps.values.dom, nextProps.values.dayOfWeek);\n }\n }\n\n fetchData = (dom, dayOfWeek) => {\n dom = dom || this.props.values.dom;\n dayOfWeek = dayOfWeek || this.props.values.dayOfWeek;\n this.props.fetch({dom, dayOfWeek});\n };\n\n render() {\n const {rawData, intl:{formatMessage}, dayOfWeekField} = this.props;\n\n return (\n }>\n\n \n \n \n {_.map([1,2,3,4,5,6,7], (day) => (\n \n ))}\n \n \n \n\n {rawData.isLoading ?\n \n :\n rawData.isError ?\n \n :\n !rawData.values || rawData.values.length === 0 ?\n \n :\n
    \n \n
    \n }\n \n );\n }\n\n}\n\nexport default AverageLeadTime;","import AverageLeadTime from './AverageLeadTime';\n\nexport default AverageLeadTime;\n","import React, {PropTypes} from 'react';\nimport d3 from 'd3';\nimport './style.scss';\n\n// const percentColors = [\n// { pct: 0.0, color: { r: 0x00, g: 0xff, b: 0 } },\n// { pct: 0.5, color: { r: 0xff, g: 0xff, b: 0 } },\n// { pct: 1.0, color: { r: 0xff, g: 0x00, b: 0 } }\n// ];\n\nconst percentColors = [\n { pct: 0.0, color: { r: 0x43, g: 0xcc, b: 0x83 } },\n { pct: 0.5, color: { r: 0xf8, g: 0xfa, b: 71 } },\n { pct: 1.0, color: { r: 0xef, g: 0x53, b: 50 } }\n];\n\nconst getColorForPercentage = function(pct) {\n let i;\n for (i = 1; i < percentColors.length - 1; i++) {\n if (pct < percentColors[i].pct) {\n break;\n }\n }\n let lower = percentColors[i - 1];\n let upper = percentColors[i];\n let range = upper.pct - lower.pct;\n let rangePct = (pct - lower.pct) / range;\n let pctLower = 1 - rangePct;\n let pctUpper = rangePct;\n let color = {\n r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),\n g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),\n b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)\n };\n return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';\n // or output as hex if preferred\n};\n\n//http://codepen.io/boars/pen/kzFvj\nclass Gauge extends React.Component {\n\n static propTypes = {\n percent: PropTypes.number,\n numSections: PropTypes.number\n };\n\n static defaultProps = {\n numSections: 5\n };\n\n componentDidMount() {\n this.draw();\n }\n\n shouldComponentUpdate(nextProps) {\n return nextProps.percent !== this.props.percent || nextProps.numSections !== this.props.numSections;\n }\n\n componentDidUpdate() {\n d3.select(this.refs.gauge).html('');\n this.draw();\n }\n\n draw = () => {\n let Needle, arc, arcEndRad, arcStartRad, barWidth, chart, chartInset, degToRad,\n el, endPadRad, height, margin, needle, padRad, percToDeg, percToRad,\n radius, sectionIndx, sectionPerc, startPadRad, svg, totalPercent, width, _i;\n\n const {percent, numSections} = this.props;\n barWidth = 20;\n sectionPerc = 1 / numSections / 2;\n padRad = 0.05;\n chartInset = 0;\n totalPercent = .75;\n\n el = d3.select(/*'#chartguage'*/this.refs.gauge);\n\n margin = {\n top: 120,\n right: 0,\n bottom: 0,\n left: 0\n };\n\n\n width = 300;\n height = 150;\n //width = el[0][0].offsetWidth + margin.left;\n //height = el[0][0].offsetWidth + margin.top;\n //radius = Math.min(width, height) / 2;\n radius = 100;\n\n percToDeg = function (perc) {\n return perc * 360;\n };\n\n percToRad = function (perc) {\n return degToRad(percToDeg(perc));\n };\n\n degToRad = function (deg) {\n return deg * Math.PI / 180;\n };\n\n svg = el.append('svg').attr('width', width + margin.left + margin.right).attr('height', height);\n\n chart = svg.append('g').attr('transform', \"translate(\" + ((width / 2) + margin.left) + \", \" + margin.top + \")\");\n\n for (sectionIndx = _i = 1; 1 <= numSections ? _i <= numSections : _i >= numSections; sectionIndx = 1 <= numSections ? ++_i : --_i) {\n arcStartRad = percToRad(totalPercent);\n arcEndRad = arcStartRad + percToRad(sectionPerc);\n totalPercent += sectionPerc;\n startPadRad = sectionIndx === 0 ? 0 : padRad / 2;\n endPadRad = sectionIndx === numSections ? 0 : padRad / 2;\n arc = d3.svg.arc().outerRadius(radius - chartInset).innerRadius(radius - chartInset - barWidth).startAngle(arcStartRad + startPadRad).endAngle(arcEndRad - endPadRad);\n chart.append('path').attr('class', \"arc chart-color\" + sectionIndx).attr('d', arc).attr('fill',getColorForPercentage((sectionIndx - 1)/(numSections - 1)));\n }\n\n Needle = (function () {\n function Needle(len, radius) {\n this.len = len;\n this.radius = radius;\n }\n\n Needle.prototype.drawOn = function (el, perc) {\n el.append('circle').attr('class', 'needle-center').attr('cx', 0).attr('cy', 0).attr('r', this.radius);\n return el.append('path').attr('class', 'needle').attr('d', this.mkCmd(perc));\n };\n\n Needle.prototype.animateOn = function (el, perc) {\n let self;\n self = this;\n return el.transition().delay(500).ease('bounce').duration(2000).selectAll('.needle').tween('progress', function () {\n return function (percentOfPercent) {\n let progress;\n progress = percentOfPercent * perc;\n return d3.select(this).attr('d', self.mkCmd(progress));\n };\n });\n };\n\n Needle.prototype.mkCmd = function (perc) {\n let centerX, centerY, leftX, leftY, rightX, rightY, thetaRad, topX, topY;\n thetaRad = percToRad(perc / 2);\n centerX = 0;\n centerY = 0;\n topX = centerX - this.len * Math.cos(thetaRad);\n topY = centerY - this.len * Math.sin(thetaRad);\n leftX = centerX - this.radius * Math.cos(thetaRad - Math.PI / 2);\n leftY = centerY - this.radius * Math.sin(thetaRad - Math.PI / 2);\n rightX = centerX - this.radius * Math.cos(thetaRad + Math.PI / 2);\n rightY = centerY - this.radius * Math.sin(thetaRad + Math.PI / 2);\n return \"M \" + leftX + \" \" + leftY + \" L \" + topX + \" \" + topY + \" L \" + rightX + \" \" + rightY;\n };\n\n return Needle;\n\n })();\n\n needle = new Needle(90, 8);\n\n needle.drawOn(chart, 0);\n\n needle.animateOn(chart, percent);\n };\n\n render() {\n return
    ;\n }\n}\n\nexport default Gauge;","import ActualLeadTime from './ActualLeadTime';\n\nexport default ActualLeadTime;\n","import React, {PropTypes, Component} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport moment from 'moment';\nimport {displayDateFormat} from 'app/lib/format';\nimport Widget from '../../Widget';\nimport Preloader from 'routes/app/components/Preloader';\nimport Gauge from './Gauge';\n\nconst rawDataToChartData = (raw) => {\n let config = {percent: 0, numSections: 5};\n\n if (raw) {\n config.percent = raw.actualLeadTime / 100;\n config.numSections = raw.refValues.length + 1;\n }\n\n return config;\n};\n\nclass ActualLeadTime extends Component {\n\n static propTypes = {\n rawData: PropTypes.object.isRequired,\n intl: PropTypes.object,\n fetch: PropTypes.func.isRequired,\n values: PropTypes.shape({\n dom: PropTypes.string\n })\n };\n\n componentWillMount() {\n this.fetchData();\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.values.dom !== nextProps.values.dom) {\n this.fetchData(nextProps.values.dom);\n }\n }\n\n fetchData = (dom) => {\n dom = dom || this.props.values.dom;\n this.props.fetch({dom});\n };\n\n render() {\n const {rawData, intl:{formatMessage}} = this.props;\n\n return (\n }>\n\n {rawData.isLoading ?\n \n :\n rawData.isError ?\n \n :\n Object.keys(rawData).length === 0 ?\n \n :\n \n }\n \n );\n }\n}\n\nexport default ActualLeadTime;","import React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport map from 'lodash/map';\nimport moment from 'moment';\nimport isString from 'lodash/isString';\nimport {serverToDisplayTime, serverToDisplayDate, serverDateFormat, serverTimeFormat} from 'app/lib/format';\nimport {Table} from 'routes/app/components';\nimport './style.scss';\n\nconst Pivot = ({data:{data, labels, timeLabel, grandTotal, totals, type}}) => {\n const now = moment();\n const inThePast = map(data, entry => {\n return moment(entry.date + entry.time, serverDateFormat + serverTimeFormat) < now;\n });\n\n return (\n
    \n \n \n \n \n {map(data, (entry, c) => (\n \n ))}\n \n \n \n \n ))}\n \n \n \n {map(labels, (label, index) => (\n \n \n {map(data, (entry, i) => (\n \n ))}\n \n \n ))}\n \n \n \n \n {map(data, (entry, c) => (\n \n ))}\n \n \n \n
    {timeLabel}\n
    {entry.date && serverToDisplayDate(entry.date)}
    \n
    {entry.time && serverToDisplayTime(entry.time)}
    \n
    \n {map(data, (entry, c) => (\n \n
    {entry.name}
    \n
    {label}\n {entry.values[index]}\n {totals[index]}
    {entry.total}{grandTotal}
    \n
    \n );\n};\n\nPivot.propTypes = {\n data: PropTypes.shape({\n type: PropTypes.number,\n timeLabel: PropTypes.string,\n labels: PropTypes.array,\n data: PropTypes.array,\n totals: PropTypes.array,\n grandTotal: PropTypes.number\n })\n};\n\nexport default Pivot;","import RailStatusIn from './RailStatusIn';\n\nexport default RailStatusIn;\n","import React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport Preloader from 'routes/app/components/Preloader';\nimport Widget from '../../Widget';\nimport Pivot from '../Pivot';\n\nclass RailStatusIn extends React.Component {\n static propTypes = {\n rawData: PropTypes.object.isRequired,\n fetch: PropTypes.func.isRequired,\n values: PropTypes.shape({\n dom: PropTypes.string\n })\n };\n\n componentWillMount() {\n this.fetchData();\n }\n\n fetchData = (dom) => {\n dom = dom || this.props.values.dom;\n this.props.fetch({dom});\n };\n\n render() {\n const {rawData} = this.props;\n return (\n }>\n {rawData.isLoading ?\n \n :\n rawData.isError ?\n \n :\n \n }\n \n );\n }\n}\n\nexport default RailStatusIn;","import RailStatusOut from './RailStatusOut';\n\nexport default RailStatusOut;\n","import React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport Preloader from 'routes/app/components/Preloader';\nimport Widget from '../../Widget';\nimport Pivot from '../Pivot';\n\nclass RailStatusOut extends React.Component {\n static propTypes = {\n rawData: PropTypes.object.isRequired,\n fetch: PropTypes.func.isRequired,\n values: PropTypes.shape({\n dom: PropTypes.string\n })\n };\n\n componentWillMount() {\n this.fetchData();\n }\n\n fetchData = (dom) => {\n dom = dom || this.props.values.dom;\n this.props.fetch({dom});\n };\n\n render() {\n const {rawData} = this.props;\n return (\n }>\n {rawData.isLoading ?\n \n :\n rawData.isError ?\n \n :\n \n }\n \n );\n }\n}\n\nexport default RailStatusOut;","import React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport moment from 'moment';\nimport {Header, Page, PageMain, PageLeft, Input, Select, Row, Col} from 'routes/app/components';\nimport {Line as LineChart} from 'react-chartjs';\nimport {Bar as BarChart} from 'react-chartjs';\nimport ActualTrucks from './Chart/ActualTrucks';\nimport ActualOccupancy from './Chart/ActualOccupancy';\nimport AverageLeadTime from './Chart/AverageLeadTime';\nimport ActualLeadTime from './Chart/ActualLeadTime';\nimport RailStatusIn from './Pivot/RailStatusIn';\nimport RailStatusOut from './Pivot/RailStatusOut';\nimport './style.scss';\nimport {Link} from \"react-router\";\nimport Button from \"../../app/components/Button\";\n\n\nconst Dashboard = ({terminals, fields, actions, reports, isAllowed, isAuthenticated, ...other}) => {\n return (\n
    \n
    \n

    Dashboard

    \n {!isAuthenticated &&\n \n \n \n }\n
    \n \n \n \n {terminals.length > 1 &&\n \n }\n \n \n\n \n {isAllowed(91910) && fields.dom.value &&\n \n \n \n }\n\n {isAllowed(91911) && fields.dom.value &&\n \n \n \n }\n\n {isAllowed(91920) && fields.dom.value &&\n \n \n \n }\n {isAllowed(91921) && fields.dom.value &&\n \n \n \n }\n \n\n {isAllowed(91922) && fields.dom.value &&\n
    \n \n \n \n \n \n \n \n \n \n \n
    }\n\n {/*\n \n \n */}\n
    \n
    \n );\n};\n\nDashboard.propTypes = {\n terminals: PropTypes.array.isRequired,\n fields: PropTypes.object,\n isAllowed: PropTypes.func,\n actions: PropTypes.object,\n reports: PropTypes.object,\n isAuthenticated: PropTypes.bool.isRequired\n};\n\nexport default Dashboard;\n","import 'stylesheets/components/page.scss';\nimport 'stylesheets/global.scss';\n\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport {reduxForm} from 'redux-form';\nimport {bindActionCreators} from 'redux';\nimport {injectIntl} from 'react-intl';\nimport moment from 'moment';\nimport {requestActionsFor} from 'app/lib/actionCreatorsFor';\nimport {serverToDisplayTimeSlot, serverDateFormat, displayDateFormat, displayToServerDate} from 'app/lib/format';\nimport {getTerminals, isAllowed} from 'modules/profile/selectors';\nimport {getReports} from 'modules/reports/selectors';\nimport {isAuthenticated} from \"../../../modules/auth/selectors\";\nimport Dashboard from '../components/Dashboard';\n\nexport class DashboardPage extends React.Component {\n\n render() {\n return (\n \n );\n }\n\n}\n\nfunction mapStateToProps(state) {\n const terminals = getTerminals(state);\n return {\n terminals,\n reports: getReports(state),\n isAllowed: isAllowed(state),\n isAuthenticated: isAuthenticated(state),\n initialValues: {\n dom: terminals.length> 0 ? terminals[0].code : null,\n date: moment().format(displayDateFormat),\n dayOfWeek: moment().isoWeekday()+''\n }\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n actions: bindActionCreators({\n getActualTrucks: requestActionsFor('actual_trucks').request,\n getActualLeadTime: requestActionsFor('actual_lead_time').request,\n getActualOccupancy: requestActionsFor('actual_occupancy').request,\n getAverageLeadTime: requestActionsFor('average_lead_time').request,\n getRailStatusImport: requestActionsFor('rail_status_import').request,\n getRailStatusExport: requestActionsFor('rail_status_export').request\n }, dispatch)\n };\n}\n\nexport const DashboardContainer = reduxForm({\n form: 'dashboard',\n fields: ['dom', 'date', 'dayOfWeek'],\n getFormState: (state, reduxMountPoint) => state.get(reduxMountPoint).toJS()\n}, mapStateToProps, mapDispatchToProps)(injectIntl(DashboardPage));\n","/* eslint react/no-did-mount-set-state: 0 */\n\nimport 'stylesheets/global.scss';\nimport './Login.scss';\n\nimport React, { Component, PropTypes } from 'react';\nimport PureRenderMixin from 'react-addons-pure-render-mixin';\nimport { bindActionCreators } from 'redux';\nimport { FormattedMessage } from 'react-intl';\nimport { reduxForm } from 'redux-form';\nimport { Link } from 'react-router';\n\nimport { login, logout } from 'modules/auth/actions';\nimport * as profileSelectors from 'modules/profile/selectors';\nimport { Input, Icon, Row, Col, Button } from 'routes/app/components';\nimport { registrationUrl } from 'app/globals';\n\nconst validate = values => {\n const errors = {};\n if (!values.username) {\n errors.username = ;\n } else if (values.username.length > 10) {\n errors.username = ;\n }\n if (!values.password) {\n errors.password = ;\n } else if (values.password.length > 10) {\n errors.password = ;\n }\n\n return errors;\n};\n\nexport class Login extends Component {\n\n static propTypes = {\n /*location: PropTypes.object.isRequired,*/\n fields: PropTypes.object.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n actions: PropTypes.object.isRequired,\n isAuthenticating: PropTypes.bool,\n isAuthenticated: PropTypes.bool,\n errorCode: PropTypes.string,\n companyName: PropTypes.string,\n enableDashboard: PropTypes.bool.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n headerClass: 'login__header',\n redirectTo: /*this.props.location.query.next || '/settings/license-plate'*/ '/'\n };\n }\n\n componentDidMount() {\n if (!this.props.isAuthenticated) {\n setTimeout(()=> {\n this.setState({\n headerClass: this.state.headerClass + ' in'\n });\n }, 500);\n }\n }\n\n signIn = (values) => {\n this.props.actions.login.request(values.username, values.password, this.state.redirectTo);\n };\n\n goToRegistration = (e) => {\n e.preventDefault();\n window.location = registrationUrl();\n };\n\n render() {\n let {fields:{username, password}, handleSubmit, enableDashboard} = this.props;\n\n if (this.props.isAuthenticated) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n
    \n
    \n

    {this.props.companyName}

    \n

    Fast Gate

    \n
    \n
    \n \n \n {enableDashboard &&\n
    \n \n \n \n
    \n }\n \n \n
    \n\n {this.props.errorCode ?\n
    \n
    : ''}\n\n \n }\n {...username} autoComplete=\"off\" tabIndex=\"1\">account_circle\n {/*username.touched && username.error &&
    {username.error}
    */}\n }\n type=\"password\" {...password} tabIndex=\"2\">vpn_key\n
    \n \n {registrationUrl() &&\n \n \n \n }\n \n \n \n \n
    \n \n
    \n
    \n );\n }\n\n}\n\nconst mapStateToProps = (state) => ({\n companyName: state.getIn(['profile', 'companyName']),\n isAuthenticating: state.get('auth').isAuthenticating,\n isAuthenticated: state.get('auth').isAuthenticated,\n errorCode: state.get('auth').errorId,\n enableDashboard: profileSelectors.getTerminals(state).length > 0\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n actions: {\n login: bindActionCreators(login, dispatch),\n logout: bindActionCreators(logout, dispatch)\n }\n});\n\nexport const LoginContainer = reduxForm({\n form: 'login',\n fields: ['username', 'password'],\n validate,\n getFormState: (state, reduxMountPoint) => state.get(reduxMountPoint).toJS()\n}, mapStateToProps, mapDispatchToProps)(Login);\n","import React, {Component} from 'react';\nimport { logout } from 'modules/auth/actions';\nimport { store } from 'app/store';\n\nexport class Logout extends Component {\n\n componentWillMount() {\n store.dispatch(logout());\n }\n\n componentWillUnmount() {\n window.location.reload(false);\n }\n\n render() {\n return
    Logging out...
    ;\n }\n\n}\n","import 'stylesheets/components/licensePlates.scss';\nimport 'stylesheets/components/page.scss';\nimport 'stylesheets/global.scss';\n\nimport React, {PropTypes} from 'react';\nimport { reduxForm, getValues } from 'redux-form';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport history from 'app/lib/history';\nimport { store } from 'app/store';\nimport * as actionCreators from 'modules/profile/actions';\nimport { Select, Input, Row, Col, Toast } from 'routes/app/components';\n\nconst formName = 'licenseplates';\n\nexport const fields = ['licensePlate'];\n\nexport class LicensePlates extends PureRenderComponent {\n\n static propTypes = {\n fields: PropTypes.object.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n submitting: PropTypes.bool.isRequired,\n setPreferredLicensePlate: PropTypes.func.isRequired,\n licensePlate: PropTypes.string,\n licensePlates: PropTypes.array\n };\n\n get formData() {\n return getValues(store.getState().get('form').get(formName).toJS());\n }\n\n constructor(props) {\n super(props);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n getLicensePlates() {\n return ['None'].concat(this.props.licensePlates);\n }\n\n handleSubmit() {\n this.props.setPreferredLicensePlate(this.formData.licensePlate);\n }\n\n render() {\n\n const {fields: {licensePlate}, handleSubmit, submitting} = this.props;\n\n return (\n \n\n \n \n \n \n \n \n \n {hzd.value ? \n\n \n \n \n \n \n\n {/* //TODO: find out why this doesn't work\n \n\n \n\n */}\n\n \n \n \n \n \n \n \n \n : null}\n \n }\n \n \n \n \n );\n};\n\nGoodsDetailModal.propTypes = {\n children: PropTypes.node,\n onClickAgree: PropTypes.func,\n onClickDisagree: PropTypes.func,\n fields: PropTypes.object,\n packUnity: React.PropTypes.array,\n showHazardous: React.PropTypes.bool,\n translate: PropTypes.func\n};\n\nexport default GoodsDetailModal;","import React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\n\nimport {defaultUnitFieldValues} from 'app/businessRules';\nimport setFormData from 'app/lib/setFormData';\nimport resetForm from 'app/lib/resetForm';\nimport Table from 'routes/app/components/Table';\nimport Button from 'routes/app/components/Button';\nimport Icon from 'routes/app/components/Icon';\nimport Modal from 'routes/app/components/Modal';\nimport TableActions from 'routes/app/components/TableActions';\nimport GoodsDetailModal from './GoodsDetailModal';\n\n\nconst GoodsTable = ({goods, goodForm, activeGood, addGood, removeGood, saveGood, packUnity, hazardous, translate}) => {\n\n const openForm = () => goodForm.open.onChange(true);\n const closeForm = () => goodForm.open.onChange(false);\n\n return (\n
      \n
    • \n

      \n\n {/**/}\n \n \n \n
    • \n
    • \n \n \n \n \n \n \n \n \n \n \n {goods.length === 0 &&\n \n \n \n }\n {goods.length > 0 && goods.map((good, index) =>\n /*index < goods.length - 1 &&*/\n \n \n \n \n \n\n \n \n )}\n \n
      {good.desc}{good.nettoWeight}{good.hzd ? : }{good.id}\n {\n if (good.hzdData && good.hzdData.hzdId) {\n goodForm.hzdData.hzdId.onChange(good.hzdData.hzdId); // make sure the form has the latest hzdId\n }\n setTimeout(()=>saveGood(),0); //Workaround: make sure onChange happens before handling the save\n }\n }\n onClickDisagree={closeForm}\n >\n \n \n\n {removeGood(good.id);}}\n textDisagree={translate({id:'unit.goods.remove.confirm.btnCancel'})}\n textAgree={translate({id:'unit.goods.remove.confirm.btnOK'})}\n trigger={\n \n }>\n

      {translate({id: 'unit.goods.remove.confirm'})}

      \n \n\n
      \n
    • \n
    \n );\n\n};\n\nGoodsTable.propTypes = {\n goods: PropTypes.array,\n goodForm: PropTypes.object,\n activeGood: PropTypes.object,\n addGood: PropTypes.func,\n removeGood: PropTypes.func,\n packUnity: PropTypes.array,\n hazardous: PropTypes.bool,\n translate: PropTypes.func,\n saveGood: PropTypes.func\n};\n\nexport default GoodsTable;","import React, { Component, PropTypes } from 'react';\nimport Button from '../Button';\nimport './style.scss';\n\nexport class FileInput extends Component {\n static propTypes = {\n file: PropTypes.object,\n buttonText: PropTypes.node,\n onChange: PropTypes.func\n };\n\n state = {\n file: null\n };\n\n handleOnClick = (e) => {\n e.preventDefault();\n this.fileInputEl.value = null;\n this.fileInputEl.click();\n };\n\n handleChange = (e) => {\n e.preventDefault();\n\n const uploadedFile = e.dataTransfer ? e.dataTransfer.files[0] : e.target.files[0];\n const isImage = uploadedFile.type.includes('image');\n\n uploadedFile.preview = isImage ? window.URL.createObjectURL(uploadedFile) : null;\n\n // this.setState({\n // file: uploadedFile\n // });\n\n if (this.props.onChange) {\n this.props.onChange(uploadedFile);\n }\n };\n\n render () {\n const { buttonText, onChange, file, ...other } = this.props;\n const inputAttributes = {\n accept: '*',\n type: 'file',\n style: { display: 'none' },\n ref: el => this.fileInputEl = el,\n onChange: this.handleChange\n };\n\n return (\n
    \n {buttonText && !file ?\n \n :\n
    \n );\n }\n}\n\nexport default FileInput;\n","import React, {PropTypes} from 'react';\nimport _ from 'lodash';\nimport {uploadFile} from 'app/lib/ajax';\nimport FileInput from './FileInput';\nimport Button from '../Button';\nimport Preloader from '../Preloader';\n\n\nclass FileUpload extends React.Component {\n\n static propTypes = {\n buttonText: PropTypes.string,\n uploadText: PropTypes.node,\n cancelText: PropTypes.node,\n uploadUrl: PropTypes.string.isRequired,\n onFileUploadSuccess: PropTypes.func,\n onFileUploadFail: PropTypes.func,\n errorMessage: PropTypes.node\n };\n\n static defaultProps = {\n uploadText: 'Upload',\n cancelText: 'Cancel' \n };\n\n state = {\n file: null,\n pending: false,\n message: null\n };\n\n fileInputChangedHandler = (file) => {\n this.setState({file, pending:false, message: null});\n };\n\n uploadDocument = () => {\n const {onFileUploadSuccess, onFileUploadFail, uploadUrl} = this.props;\n let data = new FormData();\n data.append('file', this.state.file);\n\n this.setState({\n pending: true\n });\n\n uploadFile(uploadUrl, data)\n .then((response) => {\n if (response.status > 299) {\n this.setState({pending: false});\n throw Error(response.statusText);\n }\n response.file = this.state.file;\n this.setState({\n pending: false,\n file: null\n });\n return response;\n })\n .then(onFileUploadSuccess || _.noop)\n .catch((err) => {\n this.setState({pending: false, message: this.props.errorMessage});\n if (onFileUploadFail) {\n onFileUploadFail(err);\n }\n });\n };\n\n clearFile = () => {\n this.setState({file:null});\n };\n\n render() {\n return (\n
    \n \n {this.state.file && (this.state.pending ? :
    \n \n {' '}\n \n
    )}\n {this.state.file && this.state.message &&
    {this.state.message}
    }\n
    \n );\n } \n}\n\nexport default FileUpload;","import React, {PropTypes} from 'react';\nimport _ from 'lodash';\nimport {FileUpload} from 'routes/app/components/FileInput';\nimport Row from 'routes/app/components/Row';\nimport Col from 'routes/app/components/Col';\nimport Button from 'routes/app/components/Button';\nimport Table from 'routes/app/components/Table';\nimport {apiRoutes} from 'app/globals';\nimport * as api from 'app/lib/ajax';\n\nimport './style.scss';\n\n\nclass Attachments extends React.Component {\n static propTypes = {\n documentId: PropTypes.string.isRequired,\n attachments: PropTypes.array\n };\n\n static defaultProps = {\n attachments: []\n };\n\n constructor(props) {\n super(props);\n this.state ={\n uploaded: props.attachments\n };\n }\n\n fileUploadSuccessHandler = (response) => {\n response.json().then((data) => {\n this.setState({\n uploaded: this.state.uploaded.concat([{id: data.id, filename: response.file.name}])\n });\n });\n };\n\n deleteFile = (fileId) => {\n api.del(apiRoutes.DELETE_FILE({id:fileId}))();\n let uploaded = _.filter(this.state.uploaded, file => file.id !== fileId);\n this.setState({\n uploaded\n });\n };\n\n render() {\n return (\n
    \n {this.state.uploaded && this.state.uploaded.length > 0 &&\n \n \n {this.state.uploaded.map((file, index) => (\n \n \n \n \n ))}\n \n
    {file.filename}\n \n
    \n }\n\n \n \n \n\n \n \n
    \n );\n }\n}\n\nexport default Attachments;","import Attachments from './Attachments';\n\nexport default Attachments;\n","import React, {PropTypes} from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { showDocField } from 'app/businessRules';\n\nimport Modal from 'routes/app/components/Modal';\nimport Button from 'routes/app/components/Button';\nimport Input from 'routes/app/components/Input';\nimport Select from 'routes/app/components/Select';\nimport Row from 'routes/app/components/Row';\nimport Col from 'routes/app/components/Col';\nimport Attachments from './Attachments';\n\nimport './style.scss';\n\nconst DocsDetailModal = ({translate, attachments, children, docTypes, onClickAgree, onClickDisagree, fields:{\n type, number, regPlace, regDate, id}}) => {\n\n const AgreeEl = (
    \n \n \n
    );\n\n return (\n \n \n \n }\n\n \n \n {showDocField({type}, 'regPlace') &&\n \n }\n\n {showDocField({type}, 'regDate') &&\n \n }\n\n \n\n {id.value ?\n \n :\n {translate({id:'doc.attachment.saveFirst'})}\n }\n\n \n \n );\n};\n\nDocsDetailModal.propTypes = {\n children: PropTypes.node,\n docTypes: PropTypes.array,\n attachments: PropTypes.array,\n onClickAgree: PropTypes.func,\n onClickDisagree: PropTypes.func,\n fields: PropTypes.object,\n translate: PropTypes.func\n};\n\nexport default DocsDetailModal;\n","import React, {PropTypes} from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { defaultUnitFieldValues } from 'app/businessRules';\nimport setFormData from 'app/lib/setFormData';\nimport resetForm from 'app/lib/resetForm';\nimport Table from 'routes/app/components/Table';\nimport Button from 'routes/app/components/Button';\nimport Icon from 'routes/app/components/Icon';\nimport Modal from 'routes/app/components/Modal';\nimport TableActions from 'routes/app/components/TableActions';\nimport DocsDetailModal from './DocsDetailModal';\n\n\n\nclass DocsTable extends React.Component {\n static propTypes = {\n docs: PropTypes.array.isRequired,\n docForm: PropTypes.object.isRequired,\n docTypes: PropTypes.array.isRequired,\n removeDoc: PropTypes.func,\n packUnity: PropTypes.array,\n translate: PropTypes.func,\n saveDoc: PropTypes.func,\n getDocs: PropTypes.func\n };\n\n componentWillReceiveProps(nextProps) {\n if (this.newDocsFound(nextProps)) {\n this.updateIdInForm(nextProps.docForm, this.getIdOfLastDoc(nextProps.docs));\n }\n }\n\n updateIdInForm = (form, id) => {\n form.id.onChange(id);\n };\n\n newDocsFound = (nextProps) => {\n return nextProps.docs.length > this.props.docs.length;\n };\n\n getIdOfLastDoc = (docs) => {\n return docs[docs.length-1].id;\n };\n\n render() {\n const {docs, docForm, docTypes, removeDoc, saveDoc, packUnity, translate, getDocs} = this.props;\n\n const openForm = () => docForm.open.onChange(true);\n const closeForm = () => getDocs() && docForm.open.onChange(false);\n\n return (\n
      \n
    • \n

      \n\n {/**/}\n \n \n \n
    • \n
    • \n \n \n \n \n \n \n \n \n {docs.length === 0 &&\n \n \n \n }\n {docs.length > 0 && docs.map((doc, index) =>\n /*index < docs.length - 1 &&*/\n \n \n \n\n \n \n )}\n \n
      {doc.type}{doc.number}\n \n \n \n\n {removeDoc(doc.id);}}\n textDisagree={translate({id:'unit.docs.remove.confirm.btnCancel'})}\n textAgree={translate({id:'unit.docs.remove.confirm.btnOK'})}\n trigger={\n \n }>\n

      {translate({id:'unit.docs.remove.confirm'})}

      \n \n\n
      \n
    • \n
    \n );\n }\n}\n\nexport default DocsTable;","import React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport _ from 'lodash';\nimport './style.scss';\n\nconst UnitReasons = ({reasons}) => (\n
    \n {_.map(reasons, (reason, index) => (\n
    \n \n {reason.message}\n
    \n ))}\n
    \n);\n\nUnitReasons.propTypes = {\n reasons: PropTypes.array\n};\n\nexport default UnitReasons;","import React, {PropTypes} from 'react';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport _ from 'lodash';\n\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport * as businessRules from 'app/businessRules';\nimport * as VERIFY_STATUS from 'modules/visits/constants/unitVerificationStatus';\n\nimport ButtonGroup from 'routes/app/components/ButtonGroup';\nimport Input from 'routes/app/components/Input';\nimport Select from 'routes/app/components/Select';\nimport Button from 'routes/app/components/Button';\nimport Preloader from 'routes/app/components/Preloader';\nimport Row from 'routes/app/components/Row';\nimport Col from 'routes/app/components/Col';\nimport CardPanel from 'routes/app/components/CardPanel';\nimport GoodsTable from './GoodsTable';\nimport DocsTable from './DocsTable';\nimport UnitReasons from '../VisitOverview/Visit/UnitReasons/UnitReasons';\n\n\nclass UnitForm extends PureRenderComponent {\n\n static propTypes = {\n trac: PropTypes.object,\n dim: PropTypes.object,\n inOut: PropTypes.object,\n netto: PropTypes.object,\n rid: PropTypes.object,\n empty: PropTypes.object,\n reference: PropTypes.object,\n pos: PropTypes.object,\n unitKind: PropTypes.object,\n ctNumber: PropTypes.object,\n\n visitDate: PropTypes.string,\n vtrac: PropTypes.string,\n visitLicensePlate: PropTypes.string,\n packUnity: PropTypes.array,\n docTypes: PropTypes.array,\n unitKinds: PropTypes.array,\n className: PropTypes.string,\n onCancel: PropTypes.func,//.isRequired,\n onSubmit: PropTypes.func,//.isRequired,\n verifyUnit: PropTypes.func,\n unitVerification: PropTypes.object,\n ISO: PropTypes.object,\n goods: PropTypes.array,\n docs: PropTypes.array,\n saveGood: PropTypes.func,\n getDocs: PropTypes.func,\n deleteGood: PropTypes.func.isRequired,\n intl: PropTypes.object,//.isRequired\n skipGoodsDocsEntry: PropTypes.bool.isRequired\n };\n\n getDimensions = () => {\n let dims = _.clone(this.props.unitVerification.dims);\n if (this.props.dim.value && !_.find(dims, {desc:this.props.dim.value})) {\n dims.push({desc:this.props.dim.value});\n }\n return dims;\n };\n\n render() {\n\n let {className, onCancel, onSubmit,\n ISO, goods, good,\n docs, doc,\n visitDate, visitLicensePlate, unitKinds,\n packUnity,\n docTypes,\n saveGood,\n deleteGood,\n saveDoc,\n deleteDoc,\n getDocs,\n vtrac,\n ...props} = this.props;\n\n let {trac, dim, inOut, netto, rid, empty, reference, pos, unitKind, ctNumber, verifyUnit, unitVerification, reasons, skipGoodsDocsEntry} = this.props;\n\n let {formatMessage} = this.props.intl;\n\n let classes = {};\n\n if (!inOut) {\n return
    ...
    ;\n }\n\n return (
    \n\n \n \n \n \n
      \n {visitDate &&
    • : {visitDate}
    • }\n {vtrac &&
    • : {vtrac}
    • }\n {visitLicensePlate &&
    • : {visitLicensePlate}
    • }\n
    \n
    \n \n {reasons.value && reasons.value.length ?\n \n \n \n \n : null\n }\n
    \n\n

    \n\n \n }\n {...inOut} value=\"I\" checked={inOut.value === 'I'} />\n\n }\n {...inOut} value=\"O\" checked={inOut.value === 'O'} />\n \n \n }\n {...empty} value=\"0\" checked={empty.value === \"0\"} />\n\n }\n {...empty} value=\"1\" checked={empty.value === \"1\"} />\n \n \n } {...reference} />\n\n {businessRules.showUnitField(this.props, 'unitKind') &&\n } {...ctNumber} />\n\n {businessRules.showUnitField(this.props, 'rid') &&\n
    \n } type=\"checkbox\" className=\"filled-in\" {...rid} />\n
    \n }\n\n
    \n\n \n \n {businessRules.showVerifyButton(this.props) ?\n \n\n {unitVerification.status === VERIFY_STATUS.VERIFIED_NOK && unitVerification.dims.length === 0 &&\n \n }\n {unitVerification.status === VERIFY_STATUS.VERIFIED_OK &&\n \n }\n\n {unitVerification.status === VERIFY_STATUS.VERIFYING ?\n :\n \n }\n \n :\n \n \n }\n \n \n\n \n\n {/*businessRules.showUnitField(this.props, 'ISO') && businessRules.unitKindHasISO(unitKind.value) &&\n } {...ISO} />\n */}\n\n\n {businessRules.showUnitField(this.props, 'netto', unitVerification) &&\n } {...netto} />\n }\n\n\n {businessRules.showUnitField(this.props, 'dim', unitVerification) &&\n }\n {...pos} value=\"F\" checked={pos.value === 'F'}/>\n }\n {...pos} value=\"M\" checked={pos.value === 'M'}/>\n }\n {...pos} value=\"B\" checked={pos.value === 'B'}/>\n
    \n }\n\n\n\n {/*\n \n \n \n \n \n \n \n */}\n\n \n\n {!skipGoodsDocsEntry && businessRules.showUnitField(this.props, 'goodsOverview') &&\n {\n goods.addField();\n }}\n removeGood={(id) => deleteGood(trac.value, id)}\n translate={formatMessage}\n saveGood={()=>{saveGood(trac.value);}} />\n }\n\n {!skipGoodsDocsEntry && businessRules.showUnitField(this.props, 'docsOverview') &&\n deleteDoc(trac.value, id)}\n translate={formatMessage}\n getDocs={()=>{getDocs({trac:trac.value});}}\n saveDoc={()=>{saveDoc(trac.value);}} />\n }\n\n\n \n {businessRules.showSaveUnitButton(this.props, unitVerification) &&\n \n \n {' '}\n \n {' '}\n }\n \n \n\n \n );\n }\n\n}\n\nexport default injectIntl(UnitForm);\n","import './style.scss';\nimport React, {PropTypes} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport ClassNames from 'classnames';\nimport $ from 'jquery';\nimport _ from 'lodash';\nimport {Link} from 'react-router';\n\nimport {displayDateFormat} from 'app/lib/format';\nimport ButtonGroup from 'routes/app/components/ButtonGroup';\nimport {Header, Page, PageMain} from 'routes/app/components';\nimport {Row, Col} from 'routes/app/components';\nimport {Button, Select, Input, FreeTextSelect, Toast, Modal} from 'routes/app/components';\nimport {Chip} from '../VisitOverview/Visit/VisitStatus';\nimport {TimeSlotPicker} from '../TimeSlotPicker';\nimport UnitsTable from './UnitsTable';\nimport UnitForm from '../UnitForm/UnitForm';\n\nconst VisitForm = ({\n getDocs, activeUnit, formatMessage, isEdit, isSubmitting, isLoading, unitVerification, chassisTypes,\n fields:{status, licensePlate, canSubmit, units, slotEta, dom, timeslot, transId, chassisPlate, chassisType, trac, ownerTransId},\n addUnit, saveUnit, removeUnit, editUnit, dateChanged, onTimeSlotDateChange, saveDraft, submitVisit, verifyUnit, onOpenUnitForm, onCloseUnitForm, saveGood, deleteGood,\n saveDoc, deleteDoc, onOpenTimeSlot,\n packUnity, docTypes, unitKinds, terminals, timeSlots, timeSlotConfig, transCompList, licensePlates, goods, docs, skipGoodsDocsEntry\n}) => {\n\n let _unitWrapper;\n const mainTitle = isEdit ? {trac.value} :\n ;\n const isEditUnit = activeUnit && !!activeUnit.trac.value;\n const unitWrapperClasses = {\n 'unit-wrapper': !isEditUnit,\n 'unit-wrapper--edit': isEditUnit\n };\n\n const showUnitForm = (trac) => {\n let u = $(_unitWrapper);\n u.show();\n onOpenUnitForm(activeUnit);\n setTimeout(() => {\n u.removeClass('initial');\n }, 15);\n };\n\n const submitUnitForm = (close) => {\n saveUnit();\n };\n\n const cancelUnitForm = () => {\n closeBubble();\n if (!isEditUnit) {\n units.removeField(units.length - 1);\n }\n onCloseUnitForm();\n };\n\n const closeBubble = () => {\n let u = $(_unitWrapper);\n u.fadeOut(() => {\n // u.addClass('initial');\n });\n };\n\n const getDomainName = (code) => {\n const terminal= code && _.find(terminals, (t) => {\n return t.code.toLowerCase().trim() === code.toLowerCase().trim()\n });\n\n return terminal ? terminal.name : '';\n };\n\n return (\n
    \n
    \n

    {trac.value}

    \n
    \n \n {isLoading ? ... :\n\n \n\n \n\n {terminals.length > 1 && !trac.value &&\n \n } readOnly/>\n \n \n }\n {terminals.length === 1 &&\n \n }\n\n \n }\n placeholder={formatMessage({id:'input.help.date'})}\n format={displayDateFormat}\n datePickerOptions={{max:new Date(new Date().getTime() + ((24 * 60 * 60 * 1000) * 7))}}\n {...slotEta} onChange={dateChanged} />\n\n {slotEta.value &&\n }\n placeholder={formatMessage({id:'input.help.timeslot'})}\n translateFn={formatMessage}\n onDateChange={onTimeSlotDateChange}\n config={timeSlotConfig}\n data={timeSlots}\n onOpen={onOpenTimeSlot}\n {...timeslot} />\n }\n \n\n {slotEta.value &&\n \n\n } {...licensePlate}\n onChange={(e) => {\n const value = e.target.value.toUpperCase();\n return licensePlate.onChange(value.toUpperCase().replace(/[^A-Z0-9]/g, '') || \" \");\n }}\n value={licensePlate.value ? licensePlate.value.trim() : null}/>\n }\n\n \n }\n\n {slotEta.value &&\n \n {chassisTypes.length > 1 &&\n }\n options={chassisTypes}\n optionValue=\"id\"\n optionLabel=\"descr\"\n {...chassisType}\n />\n }\n }\n {...chassisPlate}\n />\n \n }\n\n {slotEta.value && !trac.value &&\n }\n\n {slotEta.value && trac.value &&\n }\n\n \n \n \n\n {slotEta.value &&\n \n \n \n\n \n\n {canSubmit.value ?\n submitVisit({trac: trac.value})}\n textDisagree={formatMessage({id:'visit.form.submit.cancel'})}\n textAgree={formatMessage({id:'visit.form.submit.agree'})}\n trigger={\n \n }>\n

    {formatMessage({id: 'visit.form.submit.confirm'})}

    \n : \n }\n\n \n\n
    \n \n
    \n }\n\n
    \n }\n\n {activeUnit &&\n
    _unitWrapper = c}>\n
    \n
    \n

    \n \n arrow_back\n \n {isEditUnit ?\n {activeUnit.trac.value} :\n }\n

    \n
    \n
    \n\n verifyUnit(activeUnit)}\n unitVerification={unitVerification}\n goods={goods}\n saveGood={saveGood}\n deleteGood={deleteGood}\n docs={docs}\n saveDoc={saveDoc}\n deleteDoc={deleteDoc}\n getDocs={getDocs}\n vtrac={trac.value}\n skipGoodsDocsEntry={skipGoodsDocsEntry}\n {...activeUnit} />\n
    \n }\n\n
    \n
    \n );\n};\n\nVisitForm.propTypes = {\n getDocs: PropTypes.func,\n activeUnit: PropTypes.object,\n addUnit: PropTypes.func,\n dateChanged: PropTypes.func,\n onTimeSlotDateChange: PropTypes.func,\n editUnit: PropTypes.func,\n saveUnit: PropTypes.func,\n saveGood: PropTypes.func,\n deleteGood: PropTypes.func,\n saveDoc: PropTypes.func,\n deleteDoc: PropTypes.func,\n fields: PropTypes.object,\n formatMessage: PropTypes.func,\n onOpenUnitForm: PropTypes.func,\n onCloseUnitForm: PropTypes.func,\n onOpenTimeSlot: PropTypes.func,\n isEdit: PropTypes.bool,\n isLoading: PropTypes.bool,\n isSubmitting: PropTypes.bool,\n licensePlates: PropTypes.array,\n packUnity: PropTypes.array,\n docTypes: PropTypes.array,\n removeUnit: PropTypes.func,\n saveDraft: PropTypes.func,\n submitVisit: PropTypes.func,\n verifyUnit: PropTypes.func,\n terminals: PropTypes.array,\n timeSlots: PropTypes.object,\n timeSlotConfig: PropTypes.object,\n transCompList: PropTypes.array,\n unitKinds: PropTypes.array,\n unitVerification: PropTypes.object,\n goods: PropTypes.array,\n docs: PropTypes.array,\n chassisTypes: PropTypes.array.isRequired,\n skipGoodsDocsEntry: PropTypes.bool.isRequired\n};\n\nexport default VisitForm;\n","import _ from 'lodash';\n\nexport const getVisits = state => state.get('visits').toJS();\nexport const hasVisit = state => state.hasIn(['visit', 'trac']); // !_.isEmpty(getVisit(state));\nexport const getVisit = state => state.get('visit').toJS();\nexport const getTimeSlots = state => state.get('timeSlots').toJS();\nexport const getTimeSlotConfig = state => state.get('timeSlotConfig').toJS();\nexport const getUnitVerification = state => state.get('unitVerification').toJS();\nexport const getGoods = state => state.getIn(['goods', 'goods']).toJS();\nexport const getDocs = state => state.getIn(['docs', 'docs']).toJS();","import 'stylesheets/global.scss';\nimport 'stylesheets/components/table.scss';\nimport 'stylesheets/components/button.scss';\nimport 'stylesheets/components/page.scss';\nimport 'stylesheets/components/list.scss';\n\nimport React, {Component,PropTypes} from 'react';\nimport ReactDOM from 'react-dom/server';\nimport { reduxForm } from 'redux-form';\nimport _ from 'lodash';\nimport {intlShape, injectIntl} from 'react-intl';\nimport moment from 'moment';\nimport { bindActionCreators } from 'redux';\nimport { FormattedMessage } from 'react-intl';\n\nimport * as businessRules from 'app/businessRules';\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport iso6346Check from 'app/lib/iso6346Check';\nimport {displayDateFormat, serverDateFormat} from 'app/lib/format';\nimport getFormValues from 'app/lib/getFormValues';\n\nimport {VisitForm} from '../components/VisitForm';\nimport {getPackagingUnity,getUnitKinds,getTerminals,getVisitIds,getOwnerTransporterId,\n getPrefComp,\n getLicensePlates,getExecutingTransportCompanies, getDocTypes}\n from 'modules/profile/selectors';\nimport {hasVisit, getVisit, getTimeSlots, getTimeSlotConfig, getUnitVerification, getGoods, getDocs}\n from 'modules/visits/selectors';\nimport {isRequestingResource} from 'modules/app/selectors';\nimport * as actionCreators from 'modules/visits/actions';\nconst formName = 'visit';\n\n\nexport const fields = [\n 'trac',\n 'dom',\n 'slotEta',\n 'timeslot',\n 'licensePlate',\n 'transId',\n 'ownerTransId',\n 'status',\n 'chassisPlate',\n 'chassisType',\n 'canSubmit',\n\n 'units[].nhmCode',\n 'units[].trac',\n 'units[].dim',\n 'units[].inOut',\n 'units[].netto',\n 'units[].rid',\n 'units[].empty',\n 'units[].status',\n 'units[].reasons',\n 'units[].reference',\n 'units[].pos',\n 'units[].unitKind',\n 'units[].ctNumber',\n\n 'units[].ISO',\n\n 'units[].good',\n 'units[].good.open',\n 'units[].good.desc',\n 'units[].good.nettoWeight',\n 'units[].good.packagingId',\n 'units[].good.packagingCount',\n 'units[].good.packagingUnity',\n 'units[].good.colliId',\n 'units[].good.hzd',\n 'units[].good.id',\n 'units[].good.hzdData.lq',\n 'units[].good.hzdData.ridReg',\n 'units[].good.hzdData.ridId',\n 'units[].good.hzdData.originalHzdId',\n 'units[].good.hzdData.hzdId',\n 'units[].good.hzdData.unNr',\n 'units[].good.hzdData.cls',\n 'units[].good.hzdData.packingGroup',\n 'units[].good.hzdData.maritime',\n 'units[].good.hzdData.environment',\n 'units[].good.hzdData.waste',\n\n 'units[].doc',\n 'units[].doc.open',\n 'units[].doc.id',\n 'units[].doc.type',\n 'units[].doc.number',\n 'units[].doc.regPlace',\n 'units[].doc.regDate'\n];\n\nconst validate = (values) => {\n const err = {\n required: ,\n timeSlotFormat: ,\n maxLen12: ,\n maxLen35: ,\n maxLen15: ,\n maxLen5: ,\n minLen6: ,\n minLen3: ,\n iso6346: ,\n number: \n };\n const errors = {};\n\n // VISIT\n\n if (!values.dom) {\n errors.dom = err.required;\n }\n if (!values.slotEta) {\n errors.slotEta = err.required;\n }\n if (values.timeslot && !/^([0-9]{2}:[0-9]{2})$|^([0-9]{2}:[0-9]{2}\\s?-\\s?[0-9]{2}:[0-9]{2})$/.test(values.timeslot)) {\n errors.timeslot = err.timeSlotFormat;\n }\n if (values.licensePlate) {\n if (values.licensePlate.length > 12) {\n errors.licensePlate = err.maxLen12;\n }\n else if (values.licensePlate.length < 6) {\n errors.licensePlate = err.minLen6;\n }\n }\n if (values.chassis) {\n if (values.chassis.length > 12) {\n errors.chassis = err.maxLen12;\n }\n }\n\n errors.units = errors.units || [];\n\n // UNIT\n\n _.each(values.units, (unit, index) => {\n errors.units[index] = errors.units[index] || {};\n errors.units[index].doc = errors.units[index].doc || {};\n errors.units[index].good = errors.units[index].good || {};\n errors.units[index].good.hzdData = errors.units[index].good.hzdData || {};\n\n if (unit.inOut === 'I') {\n if (!unit.reference) {\n errors.units[index].reference = err.required;\n } else if (unit.reference.length > 35) {\n errors.units[index].reference = err.maxLen35;\n } else if (unit.reference.length < 3) {\n errors.units[index].reference = err.minLen3;\n }\n }\n\n if (unit.ctNumber) {\n if (unit.ctNumber.length > 15) {\n errors.units[index].ctNumber = err.maxLen15;\n } else if (!iso6346Check(unit.ctNumber)) {\n errors.units[index].ctNumber = err.iso6346;\n }\n }\n\n if (!unit.empty) {\n if (!unit.netto) {\n errors.units[index].netto = err.required;\n } else if (_.isNaN(parseInt(unit.netto))) {\n errors.units[index].netto = err.number;\n } else if (unit.netto.length > 5) {\n errors.units[index].netto = err.maxLen5;\n }\n }\n\n // GOOD\n if (unit.good.open) {\n\n if (!unit.good.desc) {\n errors.units[index].good.desc = {transId:'error.required'}; //We cannot use the FormattedMessage component here, because a Good opens in a modal where its i18n context is lost\n } else if (unit.good.desc.length > 512) {\n errors.units[index].good.desc = {transId:'error.maxLen', values:{count:512}};\n }\n\n if (!unit.good.nettoWeight) {\n errors.units[index].good.nettoWeight = {transId:'error.required'};\n } else if (_.isNaN(parseInt(unit.good.nettoWeight))) {\n errors.units[index].good.nettoWeight = {transId:'error.number'};\n }\n\n if (unit.good.packagingId && unit.good.packagingId.length > 35) {\n errors.units[index].good.packagingId = {transId:'error.maxLen', values:{count:35}};\n }\n\n if (unit.good.packagingCount && unit.good.packagingCount.length > 9) {\n errors.units[index].good.packagingCount = {transId:'error.maxLen', values:{count:9}};\n } else if (unit.good.packagingCount && _.isNaN(parseInt(unit.good.packagingCount))) {\n errors.units[index].good.packagingCount = {transId:'error.number'};\n }\n\n if (unit.good.colliId && unit.good.colliId.length > 35) {\n errors.units[index].good.colliId = {transId:'error.maxLen', values:{count:35}};\n }\n\n if (unit.good.hzd) {\n\n if (unit.good.hzdData.ridId && unit.good.hzdData.ridId.length > 5) {\n errors.units[index].good.hzdData.ridId = {transId:'error.maxLen', values:{count:5}};\n }\n\n if (!unit.good.hzdData.unNr) {\n errors.units[index].good.hzdData.unNr = {transId:'error.required'};\n } else if (unit.good.hzdData.unNr.length > 5) {\n errors.units[index].good.hzdData.unNr = {transId:'error.maxLen', values:{count:5}};\n }\n\n if (unit.good.hzdData.cls && unit.good.hzdData.cls.length > 7) {\n errors.units[index].good.hzdData.cls = {transId:'error.maxLen', values:{count:7}};\n }\n\n if (unit.good.hzdData.packingGroup && unit.good.hzdData.packingGroup.length > 3) {\n errors.units[index].good.hzdData.packingGroup = {transId:'error.maxLen', values:{count:3}};\n }\n\n }\n }\n\n // DOCUMENT\n if (unit.doc.open) {\n\n if (unit.doc.number && unit.doc.number.length > 40) {\n errors.units[index].doc.number = {transId:'error.maxLen', values:{count:40}};\n } else if (unit.doc.type && ['ZD', 'GOODS', 'UNIT'].indexOf(unit.doc.type.trim()) === -1 && !unit.doc.number) {\n errors.units[index].doc.number = {transId:'error.required'};\n }\n\n if (unit.doc.regPlace && unit.doc.regPlace.length > 15) {\n errors.units[index].doc.regPlace = {transId:'error.maxLen', values:{count:15}};\n }\n\n if (unit.doc.regDate) {\n let parsedDate = moment(unit.doc.regDate, displayDateFormat);\n if (unit.doc.regDate.length !== 10) {\n errors.units[index].doc.regDate = {transId:'error.dateFormat'};\n } else if (!parsedDate.isValid()) {\n errors.units[index].doc.regDate = {transId:'error.dateInvalid'};\n } else if ( parsedDate.isAfter(new Date())) {\n errors.units[index].doc.regDate = {transId:'error.dateFuture'};\n }\n }\n\n }\n\n });\n\n return errors;\n};\n\nexport class Visit extends PureRenderComponent {\n\n static propTypes = {\n fields: PropTypes.object.isRequired,\n actions: PropTypes.shape({\n fetchVisitAndUnits: PropTypes.func,\n clearLoadedVisit: PropTypes.func,\n storeVisit: PropTypes.obj,\n storeUnit: PropTypes.obj,\n getTimeSlots: PropTypes.obj,\n verifyUnit: PropTypes.obj,\n getGoods: PropTypes.obj,\n storeGood: PropTypes.obj,\n deleteGood: PropTypes.obj,\n getDocs: PropTypes.obj,\n storeDoc: PropTypes.obj,\n deleteDoc: PropTypes.obj,\n submitVisit: PropTypes.obj\n }),\n handleSubmit: PropTypes.func.isRequired,\n resetForm: PropTypes.func.isRequired,\n submitting: PropTypes.bool.isRequired,\n licensePlates: PropTypes.array,\n unitKinds: PropTypes.array,\n terminals: PropTypes.array,\n params: PropTypes.object,\n visitIds: PropTypes.array,\n packUnity: PropTypes.array,\n loadVisit: PropTypes.func,\n fetchVisit: PropTypes.func,\n timeSlots: PropTypes.object,\n timeSlotConfig: PropTypes.object,\n transCompList: PropTypes.array,\n isLoading: PropTypes.bool,\n intl: intlShape.isRequired,\n chassisTypes: PropTypes.array.isRequired,\n selectedTerminal: PropTypes.shape({\n code: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n days: PropTypes.number.isRequired,\n skipGoodsDocsEntry: PropTypes.bool.isRequired\n })\n };\n\n constructor(props) {\n super(props);\n this.state = {\n activeUnitIndex: null\n };\n this.addUnitHandler = this.addUnitHandler.bind(this);\n this.removeUnitHandler = this.removeUnitHandler.bind(this);\n this.editUnitHandler = this.editUnitHandler.bind(this);\n }\n\n componentDidMount() {\n if (this.isEditVisit()) {\n this.props.actions.fetchVisitAndUnits(this.props.params.vtrac);\n } else {\n this.props.actions.clearLoadedVisit();\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.values.dom !== nextProps.values.dom && nextProps.chassisTypes.length > 1) {\n const defaultChassisType = _.find(nextProps.chassisTypes, { 'default': true });\n if (defaultChassisType) {\n this.props.fields.chassisType.onChange(defaultChassisType.id);\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.navigatedFromEditToNew(prevProps)) {\n this.props.resetForm();\n }\n }\n\n navigatedFromEditToNew = (prevProps) => (this.props.route.path.indexOf('new') !== -1 && prevProps.route.path.indexOf('new') === -1);\n\n isEditVisit = () => (!!this.props.params.vtrac);\n\n dateChangedHandler = (value) => {\n this.props.fields.slotEta.onChange(value);\n this.props.fields.timeslot.onChange('');\n };\n\n timeSlotDateChangedHandler = (value) => {\n this.props.fields.slotEta.onChange(value);\n };\n\n openTimeSlotHandler = () => {\n let parsedDate = moment(this.props.fields.slotEta.value, displayDateFormat);\n let today = moment();\n\n if (!parsedDate.isValid() || parsedDate.isBefore(today)) {\n parsedDate = today;\n }\n\n this.props.actions.getTimeSlots.request(parsedDate.format(serverDateFormat), this.props.fields.dom.value);\n };\n\n /* -----------------------------\n * UNITS\n * ----------------------------- */\n\n addUnitHandler() {\n this.setState({ activeUnitIndex: this.props.fields.units.length });\n this.props.fields.units.addField(businessRules.defaultUnitFieldValues);\n }\n\n removeUnitHandler(trac) {\n // let index = _.findIndex(this.props.fields.units, (u) => u.trac.value === trac );\n this.setState({ activeUnitIndex: null });\n // this.props.fields.units.removeField(index);\n\n this.props.actions.deleteUnit.request(this.props.fields.trac.value, trac);\n }\n\n editUnitHandler(trac) {\n let index = _.findIndex(this.props.fields.units, (u) => u.trac.value === trac );\n this.setState({ activeUnitIndex: index });\n }\n\n saveUnitHandler = (values) => {\n let unit = values.units[this.state.activeUnitIndex];\n unit.vtrac = values.trac;\n unit.unitKind = this.getUnitKindFromCode(unit.unitKind);\n unit.dim = this.getDimFromDesc(unit.dim);\n this.props.actions.storeUnit.request(unit);\n };\n\n getUnitKindFromCode = (code) => {\n return _.find(this.props.unitKinds, {code: code});\n };\n\n getDimFromDesc = (desc) => {\n if (!desc) {\n return this.props.unitVerification.dims[0];\n }\n const dim = _.find(this.props.unitVerification.dims, {desc});\n return dim || desc;\n };\n\n getActiveUnit = () => {\n const {fields:{units}} = this.props;\n return this.state.activeUnitIndex !== null ? units[this.state.activeUnitIndex] : null;\n };\n\n verifyUnitHandler = (unit) => {\n let u = getFormValues(unit);\n u.unitKind = this.getUnitKindFromCode(u.unitKind);\n delete u.dim;\n this.props.actions.verifyUnit.request(u, this.props.fields.dom.value);\n };\n\n closeUnitFormHandler = () => {\n this.props.actions.verifyUnit.reset();\n this.props.actions.docsAndGoods.clear();\n };\n\n openUnitFormHandler = (unit) => {\n unit.trac.value &&\n this.props.actions.getGoods.request({trac:unit.trac.value}) &&\n this.props.actions.getDocs.request({trac:unit.trac.value});\n };\n\n /* -----------------------------\n * GOODS\n * ----------------------------- */\n saveGoodHandler = (trac, values) => {\n this.props.actions.storeGood.request(trac, _.find(values.units, {trac}).good);\n };\n\n /* -----------------------------\n * DOCS\n * ----------------------------- */\n saveDocHandler = (trac, values) => {\n this.props.actions.storeDoc.request(trac, _.find(values.units, {trac}).doc);\n };\n\n\n /* -----------------------------\n * VISIT\n * ----------------------------- */\n\n saveDraftHandler = (values) => {\n this.props.actions.storeVisit.request(values);\n };\n\n getChassisTypes = () => {\n // const terminalCode = this.props.values.dom;\n // const terminal = _.find(this.props.terminals, { code: terminalCode });\n // return terminal.chassisTypes || [];\n };\n\n render() {\n\n const {handleSubmit, intl, selectedTerminal, ...rest} = this.props;\n const activeUnit = this.getActiveUnit();\n\n return (\n handleSubmit(this.saveUnitHandler)(...arguments)}\n removeUnit={this.removeUnitHandler}\n editUnit={this.editUnitHandler}\n dateChanged={this.dateChangedHandler}\n onTimeSlotDateChange={this.timeSlotDateChangedHandler}\n formatMessage={intl.formatMessage}\n saveDraft={(props) => {handleSubmit(this.saveDraftHandler)(props);}}\n activeUnit={activeUnit}\n fields={this.props.fields}\n verifyUnit={this.verifyUnitHandler}\n onOpenUnitForm={this.openUnitFormHandler}\n onCloseUnitForm={this.closeUnitFormHandler}\n saveGood={(trac) => handleSubmit(this.saveGoodHandler.bind(this, trac))(...arguments)}\n deleteGood={this.props.actions.deleteGood.request}\n submitVisit={this.props.actions.submitVisit.request}\n saveDoc={(trac) => handleSubmit(this.saveDocHandler.bind(this, trac))(...arguments)}\n deleteDoc={this.props.actions.deleteDoc.request}\n getDocs={this.props.actions.getDocs.request}\n onOpenTimeSlot={this.openTimeSlotHandler}\n chassisTypes={this.getChassisTypes()}\n skipGoodsDocsEntry={selectedTerminal ? selectedTerminal.skipGoodsDocsEntry : false}\n {...rest} />\n\n );\n }\n\n}\n\n\nfunction mapStateToProps(state) {\n let timeSlots = getTimeSlots(state),\n timeSlotConfig = getTimeSlotConfig(state),\n licensePlates = getLicensePlates(state),\n visitIds = getVisitIds(state),\n terminals = getTerminals(state),\n unitKinds = getUnitKinds(state),\n docTypes = getDocTypes(state),\n transCompList = getExecutingTransportCompanies(state),\n packUnity = getPackagingUnity(state),\n isLoading = isRequestingResource(state, 'visit'),\n isSubmitting = isRequestingResource(state, 'storeVisit'),\n unitVerification = getUnitVerification(state),\n goods = getGoods(state),\n docs = getDocs(state),\n initialValues = {};\n\n const selectedTerminal = _.find(terminals, { code: state.getIn(['form', 'visit', 'dom', 'value'])});\n const chassisTypes = _.get(selectedTerminal, 'chassisTypes') || [];\n\n if (hasVisit(state)) {\n initialValues = getVisit(state);\n } else {\n let ownerTransId = getOwnerTransporterId(state);\n let prefCompId = getPrefComp(state);\n if (transCompList.length) {\n let foundPrefTrans = _.find(transCompList, ['code', prefCompId]);\n prefCompId = foundPrefTrans ? prefCompId : transCompList[0].code;\n }\n initialValues = {\n dom: terminals.length && terminals[0].code,\n transId: prefCompId,\n ownerTransId: ownerTransId,\n licensePlate: state.get('profile').get('licensePlate') || licensePlates[0],\n status: 'Draft'\n };\n }\n\n return {\n initialValues,\n licensePlates,\n terminals,\n visitIds,\n timeSlots,\n timeSlotConfig,\n packUnity,\n isLoading,\n isSubmitting,\n unitKinds,\n transCompList,\n unitVerification,\n docTypes,\n goods,\n docs,\n chassisTypes,\n selectedTerminal\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n let actions = bindActionCreators(actionCreators, dispatch);\n actions.storeVisit = bindActionCreators(actionCreators.storeVisit, dispatch);\n actions.storeUnit = bindActionCreators(actionCreators.storeUnit, dispatch);\n actions.deleteUnit = bindActionCreators(actionCreators.deleteUnit, dispatch);\n actions.getTimeSlots = bindActionCreators(actionCreators.getTimeSlots, dispatch);\n actions.verifyUnit = bindActionCreators(actionCreators.verifyUnit, dispatch);\n actions.getGoods = bindActionCreators(actionCreators.getGoods, dispatch);\n actions.storeGood = bindActionCreators(actionCreators.storeGood, dispatch);\n actions.deleteGood = bindActionCreators(actionCreators.deleteGood, dispatch);\n actions.getDocs = bindActionCreators(actionCreators.getDocs, dispatch);\n actions.storeDoc = bindActionCreators(actionCreators.storeDoc, dispatch);\n actions.deleteDoc = bindActionCreators(actionCreators.deleteDoc, dispatch);\n actions.submitVisit = bindActionCreators(actionCreators.submitVisit, dispatch);\n actions.docsAndGoods = bindActionCreators(actionCreators.docsAndGoods, dispatch);\n\n return {\n actions\n };\n}\n\nexport const VisitContainer = reduxForm({\n form: formName,\n fields,\n validate,\n getFormState: (state, reduxMountPoint) => state.get(reduxMountPoint).toJS()\n},\nmapStateToProps,\nmapDispatchToProps\n)(injectIntl(Visit));\n","import React, {PropTypes} from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport ClassNames from 'classnames';\n\nimport {serverToDisplayDate,serverToDisplayTime} from 'app/lib/format';\nimport {Chip} from './VisitStatus';\n\nconst VisitHeader = ({trac, visit, slotEta, slotFrom, slotTo, status, licensePlate}) => {\n\n let classNameDate = {\n 'reg-header__date': true,\n empty: !slotEta\n };\n\n let classNameTimeslot = {\n 'reg-header__timeslot': true,\n empty: !slotFrom\n };\n\n return (\n
    \n \n
    {visit}
    \n
    \n {slotEta ? serverToDisplayDate(slotEta) : }\n
    \n \n {slotFrom ? `${serverToDisplayTime(slotFrom)} - ${serverToDisplayTime(slotTo)}` : }\n \n
    {licensePlate}
    \n
    \n );\n};\n\nVisitHeader.propTypes = {\n trac: PropTypes.string,\n visit: PropTypes.string,\n slotEta: PropTypes.string,\n slotFrom: PropTypes.string,\n slotTo: PropTypes.string,\n status: PropTypes.string,\n licensePlate: PropTypes.string\n};\n\nexport default VisitHeader;\n","import React from 'react';\n\nconst ImportIcon = () => (\n \n \n \n \n);\n\nexport default ImportIcon;","import React from 'react';\n\nconst ExportIcon = () => (\n \n \n \n \n);\n\n\nexport default ExportIcon;","import React, { PropTypes } from 'react';\nimport { FormattedMessage, injectIntl, intlShape } from 'react-intl';\nimport _ from 'lodash';\nimport {apiRoutes} from 'app/globals';\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport { CollapsibleItem, Col, Row } from 'routes/app/components';\nimport { ImportIcon, ExportIcon } from 'routes/app/components/SvgIcon';\nimport Modal from 'routes/app/components/Modal';\nimport Button from 'routes/app/components/Button';\nimport Table from 'routes/app/components/Table';\nimport Icon from 'routes/app/components/Icon';\nimport UnitReasons from '../UnitReasons/UnitReasons';\n\nimport './style.scss';\n\nclass Unit extends PureRenderComponent {\n\n static propTypes = {\n index: PropTypes.number,\n unit: PropTypes.object,\n getGoods: PropTypes.func,\n intl: intlShape\n };\n\n renderUnitHeader(unit) {\n return (\n
    \n {unit.status.trim().toLowerCase() === 'rejected' &&\n error_outline\n }\n \n {unit.inOut === 'O' ?\n \n :\n \n }\n \n \n : {unit.trac} \n {unit.reference && : {unit.reference}}\n {unit.ctNumber && : {unit.ctNumber}}\n
    \n );\n }\n\n renderUnitBody(unit) {\n const {formatMessage} = this.props.intl;\n\n return (\n
    \n \n \n
    \n
    : {unit.trac}
    \n {unit.reference &&
    : {unit.reference}
    }\n {unit.ctNumber &&
    : {unit.ctNumber}
    }\n {unit.unitKind &&
    : {unit.unitKind.desc}
    }\n {unit.pos &&
    :
    }\n\n {unit.empty === '0' ?\n
    \n {unit.netto &&
    : {unit.netto} kg
    }\n\n
    : null}\n\n
    :
    \n
    : {unit.dim.desc}
    \n \n\n {unit.reasons.length ?\n \n \n : null\n }\n
    \n {unit.goods &&
    \n :\n
      \n {unit.goods.map((good, i) => (\n
    • \n }\n textDisagree={formatMessage({id:'button.close'})} agreeElement=\" \">\n \n \n \n \n \n \n \n \n \n\n {good.hzd ?\n \n \n \n \n \n \n \n \n \n \n : null}\n
      {formatMessage({id:'good.label.description'})}{good.desc}
      {formatMessage({id:'good.label.netWeight'})}{good.nettoWeight} kg
      {formatMessage({id:'good.label.packagingID'})}{good.packagingId}
      {formatMessage({id:'good.label.packagingCount'})}{good.packagingCount}
      {formatMessage({id:'good.label.numPackIdUnit'})}{good.packagingUnity}
      {formatMessage({id:'good.label.colliID'})}{good.colliId}
      {formatMessage({id:'good.label.hazardous'})}{formatMessage({id:good.hzd ? 'label_yes' : 'label_no'})}
      {formatMessage({id:'good.label.rid'})}{good.hzdData.ridReg}
      {formatMessage({id:'good.label.id'})}{good.hzdData.ridId}
      {formatMessage({id:'good.label.unnr'})}{good.hzdData.unNr}
      {formatMessage({id:'good.label.cls'})}{good.hzdData.cls}
      {formatMessage({id:'good.label.packingGroup'})}{good.hzdData.packingGroup}
      {formatMessage({id:'good.label.limitedQuantities'})}{formatMessage({id:good.hzdData.lq ? 'label_yes' : 'label_no'})}
      {formatMessage({id:'good.label.maritime'})}{formatMessage({id:good.hzdData.maritime ? 'label_yes' : 'label_no'})}
      {formatMessage({id:'good.label.env'})}{formatMessage({id:good.hzdData.environment ? 'label_yes' : 'label_no'})}
      {formatMessage({id:'good.label.waste'})}{formatMessage({id:good.hzdData.waste ? 'label_yes' : 'label_no'})}
      \n \n {good.hzd && } {good.desc} ({good.nettoWeight} kg)\n
    • \n ))}\n
    \n
    }\n\n {unit.docs && unit.docs.length > 0 &&
    \n :\n
      \n {unit.docs.map((doc, i) => (\n
    • \n {doc.type}\n {doc.number ? , {doc.number} : null}\n {doc.regPlace ? , {doc.regPlace} : null}\n {doc.regDate ? , {doc.regDate} : null}\n {doc.attachments && doc.attachments.length > 0 && }\n
    • \n ))}\n
    \n
    }\n\n
    \n );\n }\n\n render() {\n\n let {unit, index, getGoods, getDocs, ...props} = this.props;\n\n return (\n unit.empty === '0' && getGoods({trac:unit.trac}) && getDocs({trac:unit.trac})}>\n {this.renderUnitBody(unit)}\n \n );\n }\n\n}\n\nexport default injectIntl(Unit);\n","import React, { PropTypes } from 'react';\n\nimport PureRenderComponent from 'app/lib/PureRenderComponent';\nimport { Collapsible } from 'routes/app/components';\n\nimport Unit from './Unit';\n\nexport default class Units extends PureRenderComponent {\n\n static propTypes = {\n units: PropTypes.array.isRequired\n };\n\n render() {\n\n let {units, ...props} = this.props;\n\n if (!units.length) {\n return
    No units specified.
    ;\n } else {\n return (\n \n {units.map((unit, index) => {\n return ;\n })}\n \n );\n }\n\n\n }\n\n}","import React, { PropTypes } from 'react';\nimport Units from './Unit/Units';\nimport { Link } from 'react-router';\nimport { intlShape, injectIntl } from 'react-intl';\nimport { Button, Row, Col, Modal, Toast } from 'routes/app/components';\nimport { FormattedMessage } from 'react-intl';\nimport {serverToDisplayDate,serverToDisplayTimeSlot} from 'app/lib/format';\n\nclass VisitBody extends React.Component {\n static propTypes = {\n chassis: PropTypes.string,\n status: PropTypes.string,\n trac: PropTypes.string,\n visit: PropTypes.string,\n dom: PropTypes.string,\n slotEta: PropTypes.string,\n slotFrom: PropTypes.string,\n slotTo: PropTypes.string,\n licensePlate: PropTypes.string,\n transName: PropTypes.string,\n units: PropTypes.array,\n removeVisit: PropTypes.func.isRequired,\n intl: intlShape\n };\n\n render() {\n const {intl:{formatMessage}, chassis, status, trac, visit, slotEta, dom, slotFrom, slotTo, removeVisit, licensePlate, transName, units, ...other} = this.props;\n\n return (\n
    \n \n \n\n
    {visit}
    \n
    {dom}
    \n
    {trac}
    \n
    {serverToDisplayDate(slotEta)}
    \n {slotFrom &&
    {serverToDisplayTimeSlot(slotFrom, slotTo)}
    }\n {transName &&
    {transName}
    }\n {licensePlate &&
    {licensePlate}
    }\n {chassis &&
    : {chassis}
    }\n\n\n \n\n {status !== 'PENDING' &&\n \n
    \n \n \n \n {removeVisit(trac);}}\n modal=\"close\">{formatMessage({id:'visit.remove.confirm.btnOK'})}\n }\n trigger={\n \n }>\n

    {formatMessage({id:'visit.remove.confirm'})}

    \n \n
    \n \n }\n
    \n \n {units && }\n \n
    \n );\n }\n}\n\nexport default injectIntl(VisitBody);\n","import './style.scss';\n\nimport React, { PropTypes } from 'react';\n\nimport { CollapsibleItem } from 'routes/app/components';\nimport VisitHeader from './VisitHeader';\nimport VisitBody from './VisitBody';\n\nconst Visit = ({visit, onDelete, getUnits, ...other}) => (\n\n }\n eventKey={visit.trac}\n onOpen={(vtrac)=>getUnits({vtrac})}>\n \n \n\n);\n\nVisit.propTypes = {\n visit: PropTypes.object.isRequired,\n onDelete: PropTypes.func.isRequired,\n getUnits: PropTypes.func.isRequired\n};\n\nexport default Visit;\n","import VisitFilterForm from './VisitFilterForm';\n\nexport default VisitFilterForm;\n","import React, {PropTypes} from 'react';\nimport {displayDateFormat} from 'app/lib/format';\nimport moment from 'moment';\nimport {Select, Input, Button, Row, Col, Toast, FreeTextSelect, Icon} from 'routes/app/components';\nimport ButtonGroup from 'routes/app/components/ButtonGroup';\nimport {FormattedMessage} from 'react-intl';\nimport './style.scss';\n\nconst VisitFilterForm = ({\n highlight, onClickFilter, expanded, licensePlates, statuses, terminals, transCompList,\n fields:{lp, status, dom, trac, tc, vn, from, to}, onSubmit, resetForm, formatMessage\n}) => {\n\n return (\n
    \n \n \n \n {expanded &&\n
    \n \n {terminals.length > 1 &&\n }\n placeholder={formatMessage({id:'input.help.date'})}\n format={displayDateFormat}\n {...from}\n onChange={(value) => {\n\n let toDate = moment(to.value, displayDateFormat);\n let fromDate = moment(value, displayDateFormat);\n if (toDate < fromDate) {\n to.onChange(value);\n }\n from.onChange(value);\n }}\n />\n\n }\n placeholder={formatMessage({id:'input.help.date'})}\n format={displayDateFormat}\n datePickerOptions={{min: from.value && new Date(moment(from.value, displayDateFormat).format('x'))}}\n {...to}\n onChange={(value) => {\n let toDate = moment(value, displayDateFormat);\n let fromDate = moment(from.value, displayDateFormat);\n value = toDate < fromDate ? from.value : value;\n to.onChange(value);\n }}\n />\n\n } {...trac} />\n } {...vn} />\n\n {transCompList.length > 1 &&\n } {...lp}\n value={lp.value ? lp.value.trim() : null}/>\n }\n