{"version":3,"sources":["icons/Icon.tsx","components/Attributions.tsx","icons/adressbuch.svg","icons/buchhaltung.svg","icons/kuh.svg","icons/landwirtschaft.svg","icons/rechnung.svg","Auth.ts","services/EventsService.ts","services/HttpService.ts","components/Loading.tsx","components/Base/AddressForm.tsx","services/Utils.ts","components/abstract/NavigationListGroupItem.tsx","components/Base/AddressList.tsx","components/Base/Addresses.tsx","services/LicenseService.ts","components/abstract/NavigationCard.tsx","components/abstract/SwipeContainer.tsx","services/LocalizationService.ts","components/Fieldmanager/ConfirmCropDiaryNewEntry.tsx","components/abstract/MultiListSelect.tsx","components/Fieldmanager/SelectCultivations.tsx","components/abstract/ListSelect.tsx","components/Fieldmanager/SelectDatesAndStaff.tsx","components/Fieldmanager/SelectLands.tsx","components/Fieldmanager/SetCultivationUsage.tsx","components/Fieldmanager/SetPartialAreas.tsx","components/Fieldmanager/CropDiaryAddEntry.tsx","components/Fieldmanager/ViewRecentCropDiaryEntries.tsx","components/Fieldmanager/CropDiary.tsx","components/Fieldmanager/index.tsx","components/shared/NewItemBadge.tsx","components/LicensedModules.tsx","components/Home.tsx","components/Invoicemanager/MandatorParams.ts","components/Invoicemanager/ChangeMandator.tsx","components/Invoicemanager/ConfirmNewOrder.tsx","components/Invoicemanager/SelectArticles.tsx","components/Invoicemanager/SelectCustomer.tsx","components/Invoicemanager/SelectDateAndStaff.tsx","components/Invoicemanager/SelectDescriptionAndOrderType.tsx","components/Invoicemanager/SetArticlesDetails.tsx","components/Invoicemanager/OrdersAdd.tsx","components/Invoicemanager/ViewRecentOrders.tsx","components/Invoicemanager/Orders.tsx","components/Invoicemanager/index.tsx","components/Footer.tsx","icons/farmsolution.svg","services/LoginService.ts","components/NavMenu.tsx","components/Layout.tsx","App.tsx","Login.tsx","index.tsx"],"names":["Usage","IconName","Attributions","href","title","Component","Icon","classNames","this","getUsageClass","className","src","getIcon","alt","getIconAlt","props","usage","Page","icon","Accounting","accounting","Addresses","addressbook","Billing","billing","Cattle","cattle","Fieldmanager","fieldmanager","defaultProps","AuthContext","React","createContext","isLoggedIn","setLoggedIn","listeners","onUnauthenticated","EventsService","eventRegistrations","Map","name","has","manager","EventManager","set","console","warn","eventName","callback","registration","get","Error","addCallback","callbacks","args","event","forEach","push","EventServerRequestsUpdate","HttpService","pendingRequests","serverRequestsEvent","registerEvent","Axios","defaults","validateStatus","interceptors","request","use","onInterceptRequest","bind","response","onInterceptResponse","url","take","params","data","status","undefined","value","put","post","config","raise","numPending","length","listener","index","findIndex","splice","error","Loading","role","FrmControl","id","label","children","addtlProps","htmlFor","Checkbox","type","AddressForm","state","loading","contents","renderAddressForm","address","countries","populateData","countriesOptions","map","country","initialValues","onSubmit","values","helpers","a","putJson","setSubmitting","history","validate","countryId","Number","isSubmitting","maxLength","component","disabled","to","countriesPromise","getPaged","addressPromise","match","Promise","all","setState","displayName","key","defaultValue","addr","default","lastName","firstName","trim","addressDisplayName","city","num","decimals","Math","round","factor","pow","NavigationListGroupItem","useHistory","ListGroupItem","onClick","getValueOrDefault","AddressList","addresses","ListGroup","renderEntries","Utils","mobile","email","path","NavigationCard","clickHandler","cardClass","text","linkTag","Link","Card","CardBody","CardTitle","tag","CardText","CardLink","SwipeContainer","useState","activeIndex","setActiveIndex","animating","setAnimating","handlers","useSwipeable","onSwipedLeft","onSwiped","onSwipedRight","preventDefaultTouchmoveEvent","trackMouse","trackTouch","dir","LEFT","next","RIGHT","previous","min","panes","max","pane","CarouselItem","onExiting","onExited","body","useEffect","Carousel","interval","de","registerLocale","setDefaultLocale","getAreaUnit","ConfirmCropDiaryNewEntryRequiresHistory","saving","date","start","end","format","locale","LocalizationService","valueOf","staff","totalArea","renderLandsSummary","renderCultivationsSummary","createEntries","canSave","creationRequest","staffId","land","lands","partialArea","cultivation","cultivations","amount","price","usagePrice","usageId","storageId","postJson","find","item","area","unit","ConfirmCropDiaryNewEntry","MultiListSelect","selectedKeys","Set","listItems","items","onItemClicked","active","curSelected","delete","add","onSelected","filter","SelectCultivation","selected","renderSelector","group","onCultivationSelected","onConfirmSelection","selection","selectedIds","onSelectionChanged","ListSelect","selectedKey","preSelectedKey","onItemSelected","hideArrows","SelectDatesAndStaff","now","Date","today","getFullYear","getMonth","getDate","onChange","onDatesChanged","startDate","endDate","selectsRange","inline","renderStaffSelector","selectors","allStaff","onStaffSelected","onDataUpdated","selectedStaffId","SelectLands","crop","onLandsSelected","getAreaHa","areaA","roundDecimal","SetCultivationUsage","getDerivedStateFromProps","feedPreservations","feedPreservation","fp","storageRooms","s","forms","FormGroup","row","Label","for","xs","size","usages","Col","InputGroup","Input","toString","step","getRelAmount","handleRelativeAmountChange","InputGroupAddon","addonType","InputGroupText","getAbsAmount","handleAbsoluteAmountChange","handlePriceChange","required","handleSelectChange","canContinue","ev","target","substr","valueAsNumber","isAbs","val","feedPreservationPromise","storageRoomsPromise","nextProps","curState","result","resetUsages","SetPartialAreas","handleChange","Button","color","removePartial","reduce","sum","landSummary","preventDefault","prevState","CropDiaryAddEntry","paneIndex","onStartEndSelected","onLandsPartialAreaUpdated","onCultivationUsageUpdated","onLandsUpdated","withPartial","onCultivationsUpdated","withUsage","defaultLand","defaultCultivation","rootId","typeName","ViewRecentCropDiaryEntries","diaryEntries","hasMore","loadMore","populateInitialData","diaryPromise","landsPromise","cultivationsPromise","currentEntries","encodeURIComponent","newEntries","entry","safeResolveItemInMap","landId","cultivationId","CropDiary","CardColumns","license","hasFieldManager","LicenseService","getLicense","NewItemBadge","maxVisibleDays","visibleUntil","introduced","inner","Badge","LicensedModules","renderModules","hasAccounting","hasBilling","hasCattleManager","Home","getMandatorId","mandatorId","ChangeMandator","mandatorsList","mandators","mandator","curMandatorId","getCurrentMandatorId","onMandatorSelected","pathSegment","ChangeMandatorWithOptionalMandator","ConfirmNewOrderWithHistory","description","remarks","orderType","addressDisplayNameWithCity","customer","renderArticlesSummary","articles","create","orderTypeId","addressId","article","discount","ConfirmNewOrder","SelectArticles","category","onArticlesSelected","SelectCustomer","renderCustomerSelector","customers","onCustomerSelected","selectedAddressId","SelectDateAndStaff","SelectDescriptionAndOrderType","minLength","placeholder","handleDescriptionChange","handleRemarksChange","renderOrderTypeSelector","onNext","canMoveNext","orderTypes","onOrderTypeSelected","evt","selectedOrderTypeId","SetArticlesDetails","renderArticleForm","handleAmountChange","handleDiscountChanged","onChanged","getConfirmationPageProps","OrdersAdd","ordersBase","onDateAndStaffSelected","onDescriptionAndOrderTypeSelected","onArticlesUsageUpdated","ViewRecentOrders","orders","renderOrders","orderPromise","currentOrders","newOrders","order","person","Orders","mandatorPrefix","Invoicemanager","mandatorPathSegment","render","formatCurrentMandator","availableMandators","pendingLicense","pendingMandator","getMandator","resolve","InvoicemanagerWithOptionalMandator","Footer","Navbar","Container","NavbarText","version","process","LoginService","resp","reject","reason","username","password","authContext","logout","Logout","useContext","doLogout","NavMenu","toggleNavbar","collapsed","serverRequestUpdate","light","NavbarBrand","farmsolution","NavbarToggler","Collapse","isOpen","navbar","NavItem","NavLink","registerCallback","onServerRequestsUpdate","Layout","App","Login","context","login","errorMessage","setErrors","connstr","setFieldValue","split","part","toLocaleLowerCase","doSubmit","dirty","autoFocus","contextType","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","require","polyfill","setDefault","MainComponent","loggedIn","Provider","getUser","then","ReactDOM","basename"],"mappings":"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","file":"static/js/main.bc805861.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport addressbook from './adressbuch.svg';\nimport accounting from './buchhaltung.svg';\nimport cattle from './kuh.svg';\nimport fieldmanager from './landwirtschaft.svg';\nimport billing from './rechnung.svg';\n\nexport enum Usage {\n Page,\n}\n\nexport enum IconName {\n Accounting,\n Addresses,\n Billing,\n Cattle,\n Fieldmanager,\n}\n\ninterface IconProps {\n usage?: Usage;\n icon: IconName;\n}\n\nexport class Icon extends Component {\n static defaultProps: Partial = {\n usage: Usage.Page,\n };\n\n public render() {\n const classNames = 'icon ' + this.getUsageClass();\n\n return {this.getIconAlt()};\n }\n\n private getUsageClass() {\n switch (this.props.usage) {\n case Usage.Page:\n default:\n return 'page-icon';\n }\n }\n\n private getIcon() {\n switch (this.props.icon) {\n case IconName.Accounting:\n return accounting;\n\n case IconName.Addresses:\n return addressbook;\n\n case IconName.Billing:\n return billing;\n\n case IconName.Cattle:\n return cattle;\n \n case IconName.Fieldmanager:\n return fieldmanager;\n }\n }\n\n private getIconAlt() {\n switch (this.props.icon) {\n case IconName.Accounting:\n return 'Buchhaltung';\n\n case IconName.Addresses:\n return 'Adressen';\n\n case IconName.Billing:\n return 'Faktura';\n\n case IconName.Cattle:\n return 'Kuhtime';\n \n case IconName.Fieldmanager:\n return 'Feldmanager';\n }\n }\n}\n","import React, { Component } from 'react';\n\nexport class Attributions extends Component {\n public render() {\n return <>\n

Impressum

\n

Bilder / Grafiken / Icons

\n \n ;\n }\n}","export default __webpack_public_path__ + \"static/media/adressbuch.742e225b.svg\";","export default __webpack_public_path__ + \"static/media/buchhaltung.809f1f9b.svg\";","export default __webpack_public_path__ + \"static/media/kuh.a2ee0966.svg\";","export default __webpack_public_path__ + \"static/media/landwirtschaft.62b70ce4.svg\";","export default __webpack_public_path__ + \"static/media/rechnung.cc6bdfd0.svg\";","import React from 'react';\n\nexport interface IAuthContext {\n isLoggedIn: boolean;\n\n setLoggedIn: (loggedIn: boolean) => void;\n}\n\nexport const AuthContext = React.createContext({ isLoggedIn: false, setLoggedIn: () => { } });\n\ntype Listener = () => void;\n\nconst listeners: { onUnauthenticated: Listener[] } = { onUnauthenticated: [] };\n\nexport function addEventListener(type: 'onUnauthenticated', listener: Listener) {\n listeners[type].push(listener);\n}\n\nexport function raiseUnauthenticated() {\n listeners.onUnauthenticated.forEach((listener) => listener());\n}\n","export interface IEvent {\n args: T;\n}\n\nexport type ICallback = (event: IEvent) => void;\n\nexport interface IEventRegistration {\n raise(args: T): void;\n}\n\ninterface IEventManager extends IEventRegistration {\n addCallback(callback: ICallback): void;\n}\n\nclass EventsService {\n private eventRegistrations: Map> = new Map>();\n\n public registerEvent(name: string): IEventRegistration | undefined {\n if (!this.eventRegistrations.has(name)) {\n const manager = new EventManager();\n this.eventRegistrations.set(name, manager);\n\n return manager;\n } else {\n console.warn(`The event with name '${name}' has already been registered.`);\n }\n }\n\n public registerCallback(eventName: string, callback: ICallback) {\n const registration = this.eventRegistrations.get(eventName);\n\n if (!registration) {\n throw new Error(`No event with the name '${eventName}' is registered.`);\n }\n\n return registration.addCallback(callback);\n }\n}\n\nclass EventManager implements IEventManager {\n private callbacks: ICallback[] = [];\n\n public raise(args: T): void {\n const event: IEvent = { args };\n\n this.callbacks.forEach((callback) => callback(event));\n }\n\n public addCallback(callback: ICallback): void {\n this.callbacks.push(callback);\n }\n}\n\nexport default new EventsService();\n","import Axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport * as Auth from '../Auth';\nimport EventsService, { IEventRegistration } from './EventsService';\n\nexport interface IServerRequestsUpdate {\n numPending: number;\n}\n\nexport const EventServerRequestsUpdate = 'serverRequestsUpdate';\n\nclass HttpService {\n private pendingRequests: AxiosRequestConfig[] = [];\n private serverRequestsEvent?: IEventRegistration;\n\n constructor() {\n this.serverRequestsEvent = EventsService.registerEvent(EventServerRequestsUpdate);\n\n Axios.defaults.validateStatus = () => true; // Always resolve promises with responses.\n Axios.interceptors.request.use(this.onInterceptRequest.bind(this));\n Axios.interceptors.response.use(this.onInterceptResponse.bind(this));\n }\n\n public async getPaged(url: string, take?: number) {\n\n const params = { take };\n const response = await Axios.get(url, { params });\n\n return response.data;\n }\n\n public async get(url: string) {\n const response = await Axios.get(url);\n\n switch (response.status) {\n case 404:\n return undefined;\n }\n\n return response.data;\n }\n\n public putJson(url: string, value: T) {\n return Axios.put(url, value);\n }\n\n public postJson(url: string, value: T) {\n return Axios.post(url, value);\n }\n\n private onInterceptRequest(config: AxiosRequestConfig) {\n this.pendingRequests.push(config);\n this.serverRequestsEvent?.raise({ numPending: this.pendingRequests.length })\n\n return config;\n }\n\n private onInterceptResponse(response: AxiosResponse) {\n if (response.status === 401) {\n Auth.raiseUnauthenticated();\n }\n\n const index = this.pendingRequests.findIndex((config) => response.config === config);\n\n if (index >= 0) {\n this.pendingRequests.splice(index, 1);\n this.serverRequestsEvent?.raise({ numPending: this.pendingRequests.length })\n } else {\n console.error('Could not find pending request for', response);\n }\n\n return response;\n }\n}\n\nexport default new HttpService();\n","import React, { Component } from 'react';\n\nexport class Loading extends Component {\n public render() {\n return
\n Bitte warten ...\n
;\n }\n}\n","import { Field, Form, Formik } from 'formik';\nimport React, { Component } from 'react';\nimport { Link, RouteComponentProps } from 'react-router-dom';\nimport { Address } from '../../models/address';\nimport { Country } from '../../models/country';\nimport HttpService from '../../services/HttpService';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n id: string;\n}\n\ninterface IState {\n loading: boolean;\n address?: Address;\n countries?: Country[];\n}\n\ninterface IControlBase {\n id: string;\n label: string;\n children: any;\n}\n\ntype IControl = IControlBase & any;\n\n// TODO: Dedicated component for sharing across multiple forms.\nfunction FrmControl({ id, label, children, ...addtlProps }: IControl) {\n return (
\n \n {children}\n
);\n}\n\nfunction Checkbox({ id, label, ...addtlProps }: IControl) {\n return (
\n \n \n
);\n}\n\nexport class AddressForm extends Component, IState> {\n static displayName = AddressForm.name;\n\n constructor(props: RouteComponentProps) {\n super(props);\n this.state = { loading: true };\n }\n\n public render() {\n let contents = this.state.loading\n ? \n : this.renderAddressForm(this.state.address as Address, this.state.countries as Country[]);\n\n return (\n
\n

Adresse bearbeiten

\n {contents}\n
\n );\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private renderAddressForm(address: Address, countries: Country[]) {\n const countriesOptions = countries.map((country) => (\n \n ));\n\n return {\n // TODO: Build service\n await HttpService.putJson('/api/addresses/' + address.id, values);\n helpers.setSubmitting(false);\n this.props.history.push('./');\n }}\n validate={(address) => {\n address.countryId = Number(address.countryId);\n }}\n >\n {({ isSubmitting }) => (\n
\n
\n
\n \n
\n
\n \n
\n
\n \n\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n {countriesOptions}\n \n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n\n
\n \n \n
\n\n
\n \n  \n Zurück zur Liste\n
\n \n )\n }\n ;\n }\n\n private async populateData() {\n const countriesPromise = HttpService.getPaged('/api/countries');\n const addressPromise = HttpService.get
('/api/addresses/' + this.props.match?.params.id);\n\n const [countries, address] = await Promise.all([countriesPromise, addressPromise]);\n\n this.setState({ countries, address, loading: false });\n }\n}\n","import { AddressMin } from '../models/address';\n\nclass Utils {\n public safeResolveItemInMap(key: K, map: Map, defaultValue: V) {\n return map.get(key) || defaultValue;\n }\n\n public default(value: T | null | undefined, defaultValue: T) {\n if (value === null || value === undefined) {\n return defaultValue;\n }\n\n return value;\n }\n\n public addressDisplayName(addr?: AddressMin) {\n return (this.default(addr?.lastName, '') + ' ' + this.default(addr?.firstName, '')).trim();\n }\n\n public addressDisplayNameWithCity(addr?: AddressMin) {\n return (this.addressDisplayName(addr) + ', ' + this.default(addr?.city, '')).trim();\n }\n\n public roundDecimal(num: number | undefined, decimals: number) {\n if (undefined === num) {\n return num;\n }\n else if (decimals <= 0) {\n return Math.round(num);\n }\n\n const factor = Math.pow(10, decimals);\n return Math.round(num * factor) / factor;\n }\n}\n\nexport default new Utils();\n","import React from 'react';\nimport { Link, useHistory } from 'react-router-dom';\nimport { ListGroupItem } from 'reactstrap';\n\ninterface ItemProps {\n children?: React.ReactNode;\n to?: string;\n className?: string;\n}\n\nexport function NavigationListGroupItem(props: ItemProps) {\n const history = useHistory();\n\n if (props.to) {\n return history.push(props.to!)} className={'selectable ' + props.className}>\n {props.children}\n ;\n } else {\n return \n {props.children}\n ;\n }\n}\n","import React, { Component } from 'react';\nimport { ListGroup } from 'reactstrap';\nimport { Address } from '../../models/address';\nimport HttpService from '../../services/HttpService';\nimport Utils from '../../services/Utils';\nimport { NavigationListGroupItem } from '../abstract/NavigationListGroupItem';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n}\n\ninterface IState {\n loading: boolean;\n addresses: Address[];\n}\n\n\nfunction getValueOrDefault(value?: string, defaultValue: string = '-') {\n if (value) {\n return value;\n } else {\n return defaultValue;\n }\n}\n\nexport class AddressList extends Component {\n static displayName = AddressList.name;\n\n constructor(props: IProps) {\n super(props);\n this.state = { addresses: [], loading: true };\n }\n\n componentDidMount() {\n this.populateData();\n }\n\n static renderEntries(addresses: Address[]) {\n return addresses.map((address =>\n \n {getValueOrDefault(Utils.addressDisplayName(address)) + ', ' + address.city}\n
\n {getValueOrDefault(address.mobile) + ', ' + getValueOrDefault(address.email)}\n
\n
));\n }\n\n public render() {\n if (this.state.loading) {\n return \n }\n\n return <>\n
\n Adresse zum Bearbeiten anklicken/antippen.\n
\n {AddressList.renderEntries(this.state.addresses)}\n ;\n }\n\n async populateData() {\n const addresses = await HttpService.getPaged
('/api/addresses');\n this.setState({ addresses, loading: false });\n }\n}\n","import React, { Component } from 'react';\nimport { Route, Switch } from 'react-router';\nimport { Icon, IconName } from '../../icons/Icon';\nimport { AddressForm } from './AddressForm';\nimport { AddressList } from './AddressList';\n\nexport class Addresses extends Component {\n public render() {\n return <>\n

\n \n Adressen\n

\n \n \n \n \n ;\n }\n}","import HttpService from './HttpService';\n\nexport interface ILicense {\n hasAccounting: boolean;\n hasBilling: boolean;\n hasFieldManager: boolean;\n hasCattleManager: boolean;\n}\n\nclass LicenseService {\n public getLicense() {\n return HttpService.get('/auth/license');\n }\n}\n\nexport default new LicenseService();\n","import React from 'react';\nimport { Link, useHistory } from 'react-router-dom';\nimport { Card, CardBody, CardLink, CardText, CardTitle } from 'reactstrap';\n\ninterface CardProps {\n title: React.ReactNode;\n text?: React.ReactNode;\n children?: React.ReactChild | React.ReactChild[];\n to: string;\n disabled?: boolean\n}\n\nexport function NavigationCard(props: CardProps) {\n const history = useHistory();\n\n const disabled = !!props.disabled;\n const clickHandler = disabled ? () => { } : () => history.push(props.to);\n const cardClass = disabled ? 'text-muted' : 'selectable';\n const text = props.text ? props.text : props.children;\n const linkTag = disabled ? 'span' : Link;\n\n return (\n \n \n {props.title}\n {text}\n Weiter »\n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { LEFT, RIGHT, SwipeEventData, useSwipeable } from 'react-swipeable';\nimport { Carousel, CarouselItem } from 'reactstrap';\n\nexport interface ISwipePane {\n title: React.ReactNode;\n body: React.ReactNode;\n}\n\ninterface IProps {\n children?: React.ReactNode;\n panes: ISwipePane[];\n activeIndex?: number;\n}\n\nexport function SwipeContainer(props: IProps) {\n const [activeIndex, setActiveIndex] = useState(props.activeIndex === undefined ? 0 : props.activeIndex);\n const [animating, setAnimating] = useState(false);\n\n const handlers = useSwipeable({\n onSwipedLeft: onSwiped,\n onSwipedRight: onSwiped,\n preventDefaultTouchmoveEvent: true,\n trackMouse: true,\n trackTouch: true,\n });\n\n function onSwiped(event: SwipeEventData) {\n switch (event.dir) {\n case LEFT:\n next();\n break;\n case RIGHT:\n previous();\n break;\n\n default:\n console.error('Unsupported swipe direction:', event.dir);\n break;\n }\n }\n\n function next() {\n if (animating) {\n return;\n }\n\n setActiveIndex(Math.min(props.panes.length - 1, activeIndex + 1));\n }\n\n function previous() {\n if (animating) {\n return;\n }\n\n setActiveIndex(Math.max(0, activeIndex - 1));\n }\n\n const panes = props.panes.map((pane, index) => (\n setAnimating(true)} onExited={() => setAnimating(false)}>\n
{pane.title}
\n {pane.body}\n
\n ));\n\n useEffect(() => {\n if (props.activeIndex !== undefined) {\n setActiveIndex(props.activeIndex);\n }\n }, [props.activeIndex]);\n\n return
\n \n {panes}\n \n {panes}\n
;\n};\n","import de from 'date-fns/locale/de';\nimport { registerLocale, setDefaultLocale } from 'react-datepicker';\n\nclass LocalizationService {\n public readonly de = de;\n constructor() {\n registerLocale('de', de);\n }\n\n public setDefault() {\n setDefaultLocale('de');\n }\n}\n\nexport default new LocalizationService();\n","import { format } from 'date-fns/esm';\nimport React, { Component } from 'react';\nimport { RouterProps, useHistory } from 'react-router';\nimport { CultivationWithUsage } from '../../models/Fieldmanager/cultivationMasterData';\nimport { LandWithPartialArea } from '../../models/Fieldmanager/land';\nimport { Staff } from '../../models/staff';\nimport HttpService from '../../services/HttpService';\nimport LocalizationService from '../../services/LocalizationService';\n\nexport interface ConfirmationProps {\n start?: Date;\n end?: Date;\n staff?: Staff;\n lands: LandWithPartialArea[];\n totalArea: number;\n cultivations: CultivationWithUsage[];\n}\n\ninterface IState {\n saving: boolean;\n}\n\ntype ComponentProps = RouterProps & ConfirmationProps;\n\nfunction getAreaUnit(data: CultivationWithUsage) {\n switch (data.type) {\n case 'SA':\n return 'a';\n\n default:\n return 'ha';\n }\n}\n\nclass ConfirmCropDiaryNewEntryRequiresHistory extends Component {\n constructor(props: ComponentProps) {\n super(props);\n\n this.state = { saving: false, };\n }\n\n public render() {\n const date = this.props.start && this.props.end ?\n <>\n {format(this.props.start!, 'PPP', { locale: LocalizationService.de })}\n {this.props.start?.valueOf() !== this.props.end?.valueOf() ?\n ' bis ' + format(this.props.end!, 'PPP', { locale: LocalizationService.de })\n : <>}\n : <>nicht gewählt;\n\n return
\n
\n
Datum
\n
{date}
\n
\n
\n
Personal
\n
\n {this.props.staff?.displayName}\n
\n
\n
\n
\n Boden{' '}\n \n (total {this.props.totalArea} a)\n \n
\n
\n {ConfirmCropDiaryNewEntryRequiresHistory.renderLandsSummary(this.props)}\n
\n
\n
\n
Arbeit / Position
\n
\n {ConfirmCropDiaryNewEntryRequiresHistory.renderCultivationsSummary(this.props)}\n
\n
\n
\n
\n \n
\n
\n
;\n }\n\n private static canSave(state: IState, props: ConfirmationProps) {\n return !state.saving && // When a write operation is already ongoing, do not allow another one.\n props.start && props.end && props.staff &&\n props.lands.length > 0 &&\n props.cultivations.length > 0 &&\n undefined === props.cultivations.find((item) => !item.amount);\n }\n\n private static renderLandsSummary(props: ComponentProps) {\n const lands = props.lands.map((land) =>\n
  • \n {land.name + ' '}\n (Fläche: {land.partialArea ?\n <>{land.partialArea} a von {land.area} a\n : <>{land.area} a})\n
  • );\n\n return
      \n {lands}\n
    ;\n }\n\n private static renderCultivationsSummary(props: ComponentProps) {\n const cultivations = props.cultivations.map((data) =>\n
  • \n {data.name + ' '}\n \n (\n {data.amount} {data.unit} pro {getAreaUnit(data)}\n {undefined !== data.usagePrice ? <>, Preis: {data.usagePrice} CHF : <>}\n )\n \n
  • );\n\n return
      \n {cultivations}\n
    ;\n }\n\n private async createEntries() {\n const creationRequest = {\n start: this.props.start,\n end: this.props.end,\n staffId: this.props.staff!.id,\n land: this.props.lands.map((land) => ({\n id: land.id,\n partialArea: land.partialArea,\n })),\n cultivation: this.props.cultivations.map((cultivation) => ({\n id: cultivation.id,\n amount: cultivation.amount,\n price: cultivation.usagePrice,\n usageId: cultivation.usageId,\n storageId: cultivation.storageId,\n })),\n };\n\n this.setState({ saving: true });\n try {\n await HttpService.postJson('/api/fieldmanager/cropdiary/new', creationRequest);\n this.props.history.push('../');\n } catch (error) {\n console.error('failed to write entries', error);\n } finally {\n this.setState({ saving: false });\n }\n }\n}\n\nexport function ConfirmCropDiaryNewEntry(props: ConfirmationProps) {\n return ;\n}\n","import React, { Component } from 'react';\nimport { ListGroup, ListGroupItem } from 'reactstrap';\nimport { ListSelectItem } from './ListSelect';\n\ninterface IProps {\n items: ListSelectItem[];\n onSelected: (items: ListSelectItem[]) => void;\n}\n\ninterface IState {\n selectedKeys: Set;\n}\n\nexport class MultiListSelect extends Component, IState> {\n constructor(props: IProps) {\n super(props);\n\n this.state = { selectedKeys: new Set() };\n }\n\n public render() {\n const listItems = this.props.items.map((item) =>\n this.onItemClicked(item)}\n active={this.state.selectedKeys.has(item.key)}\n className='selectable d-flex justify-content-between'>\n
    {item.value}
    \n
    );\n\n return \n {listItems}\n ;\n }\n\n private onItemClicked(item: ListSelectItem) {\n const key = item.key;\n const curSelected = this.state.selectedKeys;\n\n if (curSelected.has(key)) {\n curSelected.delete(key);\n } else {\n curSelected.add(key);\n }\n\n this.props.onSelected(this.props.items.filter((item) => curSelected.has(item.key)));\n this.setState({ selectedKeys: curSelected });\n }\n}\n","import React, { Component } from 'react';\nimport { CultivationMasterData } from '../../models/Fieldmanager/cultivationMasterData';\nimport HttpService from '../../services/HttpService';\nimport { ListSelectItem } from '../abstract/ListSelect';\nimport { MultiListSelect } from '../abstract/MultiListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n onSelectionChanged: (selected: CultivationMasterData[]) => void;\n}\n\ninterface IState {\n loading: boolean;\n data?: CultivationMasterData[];\n\n selected: string[];\n}\n\nexport class SelectCultivation extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { loading: true, selected: [], };\n }\n\n public render() {\n return this.state.loading\n ? \n : this.renderSelector();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const data = await HttpService.getPaged('/api/fieldmanager/cultivationmasterdata');\n this.setState({ data, loading: false });\n }\n\n private renderSelector() {\n const items = this.state.data!.map((item) => ({\n key: item.id,\n value: <>\n {item.name}\n
    \n \n {item.type}{' '}\n Einheit: {item.unit}, Gruppe: {item.group}\n \n
    \n \n }));\n\n return (<>\n Mehrfachauswahl ist möglich.\n \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n\n private onCultivationSelected(selection: ListSelectItem[]) {\n this.setState({ selected: selection.map((item) => item.key) });\n }\n\n private onConfirmSelection() {\n const selectedIds = new Set(this.state.selected);\n this.props.onSelectionChanged(this.state.data!.filter((item) => selectedIds.has(item.id)));\n }\n}\n","import React, { Component } from 'react';\nimport { ListGroup, ListGroupItem } from 'reactstrap';\n\nexport interface ListSelectItem {\n key: TKey;\n value: string | React.ReactNode;\n}\n\ninterface IProps {\n hideArrows?: boolean;\n items: ListSelectItem[];\n preSelectedKey?: TKey;\n onSelected: (item: ListSelectItem) => void;\n}\n\ninterface IState {\n selectedKey?: TKey;\n}\n\nexport class ListSelect extends Component, IState> {\n constructor(props: IProps) {\n super(props);\n\n this.state = { selectedKey: props.preSelectedKey };\n }\n\n public render() {\n const listItems = this.props.items.map((item) =>\n this.onItemSelected(item)}\n active={this.state.selectedKey === item.key}\n className='selectable d-flex justify-content-between'>\n
    {item.value}
    \n {this.props.hideArrows ? <> :
    »
    }\n
    );\n\n return \n {listItems}\n ;\n }\n\n private onItemSelected(item: ListSelectItem) {\n this.props.onSelected(item);\n this.setState({ selectedKey: item.key });\n }\n}\n","import React, { Component } from 'react';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { Staff } from '../../models/staff';\nimport HttpService from '../../services/HttpService';\nimport { ListSelect, ListSelectItem } from '../abstract/ListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n onSelectionChanged: (start: Date, end: Date, staff: Staff) => void;\n}\n\ninterface IState {\n start: Date;\n end: Date;\n selectedStaffId?: string;\n\n loading: boolean;\n allStaff?: Staff[];\n}\n\nexport class SelectDatesAndStaff extends Component {\n constructor(props: IProps) {\n super(props);\n\n const now = new Date();\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);\n this.state = { start: today, end: today, loading: true, };\n }\n\n public render() {\n if (this.state.loading) {\n return ;\n }\n\n return
    \n
    \n
    Beginn und Ende
    \n
    \n Bitte Beginn- und Enddatum auswählen. Für gleiches Datum, zweimal denselben Tag auswählen.\n
    \n \n
    \n
    \n
    Personal
    \n {this.renderStaffSelector()}\n
    \n
    ;\n }\n\n private renderStaffSelector() {\n const selectors = this.state.allStaff!.map((staff) => ({\n key: staff.id,\n value: staff.displayName,\n }))\n\n return ();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private onDatesChanged([start, end]: [Date, Date]) {\n this.setState({ start, end }, this.onDataUpdated.bind(this));\n }\n\n private onStaffSelected(selection: ListSelectItem) {\n this.setState({ selectedStaffId: selection.key }, this.onDataUpdated.bind(this));\n }\n\n private onDataUpdated() {\n const { start, end, selectedStaffId } = this.state;\n\n if (start && end && selectedStaffId) {\n const staff = this.state.allStaff!.find((staff) => staff.id === selectedStaffId);\n this.props.onSelectionChanged(start, end, staff!);\n }\n }\n\n private async populateData() {\n const allStaff = await HttpService.getPaged('/api/staff');\n this.setState({ allStaff, loading: false });\n }\n}\n","import React, { Component } from 'react';\nimport { Land } from '../../models/Fieldmanager/land';\nimport HttpService from '../../services/HttpService';\nimport { ListSelectItem } from '../abstract/ListSelect';\nimport { MultiListSelect } from '../abstract/MultiListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n onSelectionChanged: (selected: Land[]) => void;\n}\n\ninterface IState {\n loading: boolean;\n lands?: Land[];\n\n selected: number[];\n}\n\nexport class SelectLands extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { loading: true, selected: [], };\n }\n\n public render() {\n return this.state.loading\n ? \n : this.renderSelector();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const lands = await HttpService.getPaged('/api/fieldmanager/land');\n this.setState({ lands, loading: false });\n }\n\n private renderSelector() {\n const selectors = this.state.lands!.map((land) => ({\n key: land.id,\n value: <>\n {land.name}\n
    \n {land.type}, {land.crop}, {land.area}\n
    \n \n }))\n\n return <>\n Mehrfachauswahl ist möglich.\n \n
    \n
    \n
    \n \n
    \n
    \n ;\n }\n\n private onLandsSelected(selection: ListSelectItem[]) {\n this.setState({ selected: selection.map((item) => item.key) });\n }\n\n private onConfirmSelection() {\n const selectedIds = new Set(this.state.selected);\n this.props.onSelectionChanged(this.state.lands!.filter((item) => selectedIds.has(item.id)));\n }\n}\n","import React, { Component } from 'react';\nimport { Col, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Label } from 'reactstrap';\nimport { CultivationWithUsage } from '../../models/Fieldmanager/cultivationMasterData';\nimport { FeedPreservation } from '../../models/Fieldmanager/feedPreservation';\nimport { StorageRoom } from '../../models/Fieldmanager/storageRoom';\nimport HttpService from '../../services/HttpService';\nimport Utils from '../../services/Utils';\n\ninterface IProps {\n totalArea: number; // in 'a'\n cultivations: CultivationWithUsage[];\n onSelectionChanged: (selected: CultivationWithUsage[]) => void;\n}\n\ninterface UsageState {\n unit: 'a' | 'ha';\n factor: 100 | 1;\n amount: number;\n isAbs: boolean;\n price?: number;\n usageId?: number;\n storageId?: number;\n}\n\ninterface IState {\n cultivations: CultivationWithUsage[];\n usages: UsageState[];\n\n feedPreservation: FeedPreservation[];\n storageRooms: StorageRoom[];\n}\n\nfunction getAreaHa(areaA: number) {\n return Utils.roundDecimal(areaA / 100, 2)!;\n}\n\nexport class SetCultivationUsage extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = SetCultivationUsage.getDerivedStateFromProps(props) as IState;\n }\n\n public static getDerivedStateFromProps(nextProps: IProps, curState?: IState): IState | Partial {\n let result: Partial = { cultivations: nextProps.cultivations };\n let resetUsages = false;\n\n if (curState?.feedPreservation) {\n result.feedPreservation = curState.feedPreservation;\n }\n if (curState?.storageRooms) {\n result.storageRooms = curState.storageRooms;\n }\n\n if (curState && curState.usages) {\n // TODO: Perhaps also consider verifying IDs of cultivation records.\n // The selection might have changed, but the count might be the same.\n if (curState.usages.length !== nextProps.cultivations.length) {\n resetUsages = true;\n }\n } else {\n resetUsages = true;\n }\n\n if (resetUsages) {\n result.usages = nextProps.cultivations.map((data) => ({\n unit: data.type === 'SA' ? 'a' : 'ha',\n factor: data.type === 'SA' ? 100 : 1,\n amount: data.amount ? data.amount : 0,\n isAbs: false,\n price: data.usagePrice ? data.usagePrice : data.price,\n usageId: data.type === 'ET' ? data.usageId : undefined,\n storageId: data.type === 'ET' ? data.storageId : undefined,\n }));\n }\n\n return result;\n }\n\n public render() {\n const feedPreservations = this.state.feedPreservation?.map((fp) => );\n const storageRooms = this.state.storageRooms?.map((s) => );\n\n const forms = this.state.cultivations.map((cultivation, index) =>
  • \n
    {cultivation.name}
    \n \n \n \n \n \n \n {cultivation.unit}\n \n \n \n \n \n \n \n \n \n \n {cultivation.unit}\n \n \n \n \n \n \n \n \n \n \n CHF\n \n \n \n \n {cultivation.type === 'ET' ?\n <>\n \n \n \n \n \n \n {feedPreservations}\n \n \n \n \n \n \n \n \n \n \n {storageRooms}\n \n \n \n \n \n : <>}\n
  • );\n\n return <>\n Bitte ergänzen Sie.\n
      \n {forms}\n
    \n
    \n
    \n
    \n \n
    \n
    \n ;\n }\n\n componentDidMount() {\n this.populateData();\n }\n\n private handleRelativeAmountChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n\n usages[index] = { ...usages[index], amount: ev.target.valueAsNumber, isAbs: false, };\n this.setState({ usages });\n }\n\n private handleAbsoluteAmountChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n\n usages[index] = { ...usages[index], amount: ev.target.valueAsNumber, isAbs: true, };\n this.setState({ usages });\n }\n\n private handlePriceChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n usages[index].price = Math.max(0, ev.target.valueAsNumber);\n this.setState({ usages });\n }\n\n private handleSelectChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n let val = ev.target.value === '' ? undefined : Number(ev.target.value);\n\n switch (ev.target.name.substr(0, 1)) {\n case 'f':\n usages[index].usageId = val;\n break;\n\n case 's':\n usages[index].storageId = val;\n break;\n\n default:\n return;\n }\n\n this.setState({ usages });\n }\n\n private static canContinue(state: IState) {\n return undefined === state.usages.find((usage, index) =>\n usage.amount <= 0 ||\n (!usage.usageId && state.cultivations[index].type === 'ET') ||\n (!usage.storageId && state.cultivations[index].type === 'ET'));\n }\n\n private onConfirmSelection() {\n const cultivations = this.state.cultivations;\n const usages = this.state.usages;\n\n cultivations.forEach((item, index) => {\n item.amount = Utils.roundDecimal(this.getRelAmount(index), 1);\n item.usagePrice = Utils.roundDecimal(usages[index].price, 2) || undefined;\n item.usageId = usages[index].usageId;\n item.storageId = usages[index].storageId;\n });\n\n this.setState({ cultivations }, () => this.props.onSelectionChanged(this.state.cultivations));\n }\n\n private getRelAmount(index: number) {\n const amount = this.state.usages[index];\n if (amount.isAbs) {\n return amount.amount / getAreaHa(this.props.totalArea) / amount.factor;\n }\n\n return amount.amount;\n }\n\n private getAbsAmount(index: number) {\n const amount = this.state.usages[index];\n if (amount.isAbs) {\n return amount.amount;\n }\n\n return amount.amount * getAreaHa(this.props.totalArea) * amount.factor;\n }\n\n private async populateData() {\n const feedPreservationPromise = HttpService.getPaged('/api/fieldmanager/feedpreservation');\n const storageRoomsPromise = HttpService.getPaged('/api/fieldmanager/storagerooms');\n\n this.setState({ feedPreservation: await feedPreservationPromise, storageRooms: await storageRoomsPromise, });\n }\n}\n","import React, { Component } from 'react';\nimport { Button, Col, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Label } from 'reactstrap';\nimport { LandWithPartialArea } from '../../models/Fieldmanager/land';\n\ninterface IProps {\n lands: LandWithPartialArea[];\n onSelectionChanged: (selected: LandWithPartialArea[]) => void;\n}\n\ninterface IState {\n lands: LandWithPartialArea[];\n}\n\nexport class SetPartialAreas extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { lands: props.lands, };\n }\n\n public static getDerivedStateFromProps(nextProps: IProps, prevState: IState) {\n return { lands: nextProps.lands, };\n }\n\n public render() {\n const forms = this.state.lands.map((land, index) =>
  • \n
    {land.name}
    \n \n \n \n \n \n \n a von {land.area} a\n \n \n \n \n \n
  • );\n const totalArea = this.state.lands.reduce((sum, land) => sum += land.partialArea || land.area, 0);\n const landSummary = Total {totalArea} a;\n\n return <>\n Bitte wählen Sie die Teilflächen für die ausgewählten Böden.\n
      \n {forms}\n
    \n {landSummary}\n
    \n
    \n
    \n \n
    \n
    \n ;\n }\n\n private handleChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name);\n const lands = this.state.lands;\n lands[index].partialArea = Math.max(0, Math.min(lands[index].area, ev.target.valueAsNumber));\n this.setState({ lands });\n }\n\n private removePartial(ev: React.MouseEvent, index: number) {\n ev.preventDefault();\n const lands = this.state.lands;\n lands[index].partialArea = undefined;\n this.setState({ lands });\n }\n\n private onConfirmSelection() {\n this.props.onSelectionChanged(this.state.lands);\n }\n}\n","import React, { Component } from 'react';\nimport { CultivationMasterData, CultivationWithUsage } from '../../models/Fieldmanager/cultivationMasterData';\nimport { LandWithPartialArea } from '../../models/Fieldmanager/land';\nimport { Staff } from '../../models/staff';\nimport { ISwipePane, SwipeContainer } from '../abstract/SwipeContainer';\nimport { ConfirmationProps, ConfirmCropDiaryNewEntry } from './ConfirmCropDiaryNewEntry';\nimport { SelectCultivation } from './SelectCultivations';\nimport { SelectDatesAndStaff } from './SelectDatesAndStaff';\nimport { SelectLands } from './SelectLands';\nimport { SetCultivationUsage } from './SetCultivationUsage';\nimport { SetPartialAreas } from './SetPartialAreas';\n\ninterface IProps { }\n\ninterface IState {\n paneIndex: number;\n\n start?: Date,\n end?: Date,\n staff?: Staff;\n lands: LandWithPartialArea[];\n totalArea: number;\n cultivations: CultivationWithUsage[];\n}\n\nfunction getConfirmationPageProps(state: IState): ConfirmationProps {\n return state;\n}\n\nexport class CropDiaryAddEntry extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { paneIndex: 0, lands: [], totalArea: 0, cultivations: [], };\n }\n\n public render() {\n const panes: ISwipePane[] = [\n {\n title: 'Auswahl Datum und Personal',\n body: ,\n },\n {\n title: 'Auswahl Boden',\n body: ,\n },\n {\n title: 'Teilflächen bestimen',\n body: ,\n },\n {\n title: 'Auswahl Arbeit / Positionen',\n body: ,\n },\n {\n title: 'Arbeit / Positionen ergänzen',\n body: ,\n },\n {\n title: 'Bestätigen',\n body: ,\n },\n ];\n\n return <>\n

    Tagebuch Pflanzenbau - Neu

    \n \n ;\n }\n\n private onStartEndSelected(start: Date, end: Date, staff: Staff) {\n this.setState({ start, end, staff, paneIndex: 1 });\n }\n\n private onLandsSelected(lands: LandWithPartialArea[]) {\n this.onLandsUpdated(lands, false);\n }\n\n private onLandsPartialAreaUpdated(lands: LandWithPartialArea[]) {\n this.onLandsUpdated(lands, true);\n }\n\n private onLandsUpdated(lands: LandWithPartialArea[], withPartial: boolean) {\n const totalArea = lands.reduce((sum, land) => sum += land.partialArea || land.area, 0);\n this.setState({ lands, totalArea, paneIndex: 2 + (withPartial ? 1 : 0) });\n }\n\n private onCultivationSelected(cultivations: CultivationMasterData[]) {\n this.onCultivationsUpdated(cultivations, false);\n }\n\n private onCultivationUsageUpdated(cultivations: CultivationWithUsage[]) {\n this.onCultivationsUpdated(cultivations, true);\n }\n\n private onCultivationsUpdated(cultivations: CultivationWithUsage[], withUsage: boolean) {\n this.setState({ cultivations, paneIndex: 4 + (withUsage ? 1 : 0) });\n }\n}\n","import { format } from 'date-fns/esm';\nimport React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Button, ListGroup, ListGroupItem } from 'reactstrap';\nimport { CropDiaryEntry } from '../../models/Fieldmanager/cropDiaryEntry';\nimport { CultivationMasterData } from '../../models/Fieldmanager/cultivationMasterData';\nimport { Land } from '../../models/Fieldmanager/land';\nimport HttpService from '../../services/HttpService';\nimport LocalizationService from '../../services/LocalizationService';\nimport Utils from '../../services/Utils';\nimport { Loading } from '../Loading';\n\nconst BatchSize = 10;\n\ninterface IProps {\n}\n\ninterface IState {\n loading: boolean;\n\n lands: Map;\n cultivations: Map;\n diaryEntries: CropDiaryEntry[];\n hasMore: boolean;\n}\n\nconst defaultLand: Land = { name: '< nicht gefunden >', id: 0, area: 0, crop: '', type: '' };\nconst defaultCultivation: CultivationMasterData = { name: '< nicht gefunden >', id: '', group: '', rootId: 0, type: '', typeName: '', unit: '' };\n\nexport class ViewRecentCropDiaryEntries extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = {\n loading: true,\n lands: new Map(),\n cultivations: new Map(),\n diaryEntries: [],\n hasMore: true,\n };\n }\n\n public render() {\n return <>\n
    \n
    \n

    Tagebuch Pflanzenbau

    \n
    \n
    \n « Zurück\n
    \n
    \n {ViewRecentCropDiaryEntries.renderEntries(this.state)}\n
    \n
    \n {this.state.loading ? :\n this.state.hasMore ?\n :\n Keine weiteren Einträge}\n
    \n
    \n Neue Einträge erfassen\n
    \n
    \n {this.state.loading ? : <>}\n ;\n }\n\n public componentDidMount() {\n this.populateInitialData();\n }\n\n private static renderEntries(state: IState) {\n return state.diaryEntries.map((entry) => \n {format(new Date(entry.start), 'P', { locale: LocalizationService.de })}, {Utils.safeResolveItemInMap(entry.landId, state.lands, defaultLand).name}\n
    \n \n {Utils.safeResolveItemInMap(entry.cultivationId, state.cultivations, defaultCultivation).type}{' '}\n {Utils.safeResolveItemInMap(entry.cultivationId, state.cultivations, defaultCultivation).name + ', '}\n {entry.amount} {entry.unit}\n \n
    \n
    );\n }\n\n private async populateInitialData() {\n const diaryPromise = HttpService.getPaged('/api/fieldmanager/cropdiary/recent', BatchSize)\n const landsPromise = HttpService.getPaged('/api/fieldmanager/land');\n const cultivationsPromise = HttpService.getPaged('api/fieldmanager/cultivationmasterdata');\n\n const lands = this.state.lands;\n const cultivations = this.state.cultivations;\n\n (await landsPromise).forEach((land) => lands.set(land.id, land));\n (await cultivationsPromise).forEach((item) => cultivations.set(item.id, item));\n\n const diaryEntries = await diaryPromise;\n\n this.setState({\n diaryEntries: diaryEntries,\n lands,\n cultivations,\n hasMore: diaryEntries.length >= BatchSize,\n loading: false,\n });\n }\n\n private async loadMore() {\n this.setState({ loading: true });\n const currentEntries = this.state.diaryEntries;\n const url = '/api/fieldmanager/cropdiary/recent?afterId=' + encodeURIComponent(currentEntries[currentEntries.length - 1].id);\n const newEntries = await HttpService.getPaged(url, BatchSize);\n\n currentEntries.push(...newEntries);\n\n this.setState({\n diaryEntries: currentEntries,\n hasMore: newEntries.length >= BatchSize,\n loading: false,\n });\n }\n}\n","import React, { Component } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { CardColumns } from 'reactstrap';\nimport { NavigationCard } from '../abstract/NavigationCard';\nimport { CropDiaryAddEntry } from './CropDiaryAddEntry';\nimport { ViewRecentCropDiaryEntries } from './ViewRecentCropDiaryEntries';\n\nexport class CropDiary extends Component {\n public render() {\n return <>\n \n \n \n \n

    Tagebuch Pflanzenbau

    \n \n \n \n \n
    \n
    \n ;\n }\n}\n","import React, { Component } from 'react';\nimport { Route, RouteChildrenProps, Switch } from 'react-router-dom';\nimport { CardColumns } from 'reactstrap';\nimport LicenseService, { ILicense } from '../../services/LicenseService';\nimport { NavigationCard } from '../abstract/NavigationCard';\nimport { Loading } from '../Loading';\nimport { CropDiary } from './CropDiary';\n\ninterface IProps extends RouteChildrenProps {\n}\n\ninterface IState {\n loading: boolean;\n license?: ILicense;\n}\n\nexport class Fieldmanager extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { loading: true };\n }\n\n public render() {\n if (this.state.loading) {\n return ;\n }\n\n if (!this.state.license?.hasFieldManager) {\n return
    Feldmanager ist nicht lizenziert.
    ;\n }\n\n return <>\n \n \n \n Willkommen im Feldmanager Modul!\n\n \n \n \n \n \n ;\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n this.setState({ license: await LicenseService.getLicense(), loading: false });\n }\n}\n","import React from 'react';\nimport { Badge } from 'reactstrap';\n\ninterface NewItemBadgeProps {\n introduced: Date; // when was this item introduced?\n maxVisibleDays?: number; // how many days should the \"new\" badge be shown? defaults to 90 days.\n children?: React.ReactChild | React.ReactChild[]; // the text / label to show; defaults to 'Neu'.\n}\n\nexport function NewItemBadge(props: NewItemBadgeProps) {\n const maxVisibleDays = props.maxVisibleDays || 90;\n const visibleUntil = props.introduced.valueOf() + (86400_000 * maxVisibleDays);\n\n if (Date.now() > visibleUntil) {\n return <>;\n }\n\n const inner = props.children || 'Neu';\n return {inner};\n}\n","import React, { Component } from 'react';\nimport { Badge, ListGroup } from 'reactstrap';\nimport { Icon, IconName } from '../icons/Icon';\nimport LicenseService, { ILicense } from '../services/LicenseService';\nimport { NavigationListGroupItem } from './abstract/NavigationListGroupItem';\nimport { Loading } from './Loading';\nimport { NewItemBadge } from './shared';\n\ninterface IProps {\n}\n\ninterface IState {\n loading: boolean;\n license?: ILicense;\n}\n\nexport class LicensedModules extends Component {\n static displayName = LicensedModules.name;\n\n constructor(props: IProps) {\n super(props);\n this.state = { loading: true };\n }\n\n public render() {\n return this.state.loading\n ? \n : LicensedModules.renderModules(this.state.license as ILicense);\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private static renderModules(license: ILicense) {\n return (\n { license.hasAccounting ?\n \n \n Buchhaltung\n {' '}Noch nicht online verfügbar\n : <>}\n { license.hasBilling ?\n \n \n Faktura\n {' '}\n : <>}\n { license.hasFieldManager ?\n \n \n Feldmanager\n {' '}\n : <>}\n { license.hasCattleManager ?\n \n \n Kuhtime\n {' '}Noch nicht online verfügbar\n : <>}\n );\n }\n\n private async populateData() {\n this.setState({ license: await LicenseService.getLicense(), loading: false });\n }\n}\n","import React, { Component } from 'react';\r\nimport { ListGroup } from 'reactstrap';\r\nimport { Icon, IconName } from '../icons/Icon';\r\nimport { NavigationListGroupItem } from './abstract/NavigationListGroupItem';\r\nimport { LicensedModules } from './LicensedModules';\r\n\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Farmsolution App

    \r\n\r\n

    \r\n Die Mobile Datenerfassung und Auswertungen via Smartphone oder Tablet bringt Ihre Daten auch in\r\n Ihre Hosentasche.\r\n

    \r\n\r\n

    Basisdaten

    \r\n \r\n \r\n \r\n Adressen\r\n \r\n \r\n\r\n

    Lizenzierte Module

    \r\n

    \r\n Sie haben zur Zeit Lizenzen für die folgenden Module:\r\n

    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n","export interface MandatorParams {\n mandatorId?: string;\n}\n\nexport function getMandatorId(params?: MandatorParams) {\n if (params?.mandatorId) {\n return Number(params.mandatorId);\n }\n\n return null;\n}\n","import React, { Component } from 'react';\nimport { RouteChildrenProps, RouteComponentProps } from 'react-router-dom';\nimport { Mandator } from '../../models/Invoicemanager/mandator';\nimport HttpService from '../../services/HttpService';\nimport { ListSelect, ListSelectItem } from '../abstract/ListSelect';\nimport { Loading } from '../Loading';\nimport { getMandatorId, MandatorParams } from './MandatorParams';\n\ninterface IState {\n loading: boolean;\n mandators?: Map;\n selected: Mandator | null;\n}\n\nexport class ChangeMandator extends Component, IState> {\n constructor(props: RouteChildrenProps) {\n super(props);\n\n this.state = { loading: true, selected: null };\n }\n\n public render() {\n return this.state.loading\n ? \n : this.renderSelector();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const mandatorsList = await HttpService.get('/api/invoicemanager/mandators/confidential/0');\n const mandators = new Map(mandatorsList?.map((mandator) => [mandator.id, mandator]));\n const curMandatorId = this.getCurrentMandatorId();\n const selected = (curMandatorId ? mandators.get(curMandatorId) : null) || null;\n\n this.setState({ mandators, selected, loading: false });\n }\n\n private renderSelector() {\n const selectors: ListSelectItem[] = [];\n this.state.mandators!.forEach((mandator) => selectors.push({\n key: mandator.id,\n value: mandator.name,\n }));\n\n return <>\n

    Mandant wählen

    \n \n ;\n }\n\n private onMandatorSelected(item: ListSelectItem) {\n const mandator = this.state.mandators!.get(item.key) || null;\n const pathSegment = mandator ? mandator.id + '/' : '';\n\n this.props.history.push('/invoicemanager/' + pathSegment);\n }\n\n private getCurrentMandatorId() {\n return getMandatorId(this.props.match?.params);\n }\n}\n\nexport function ChangeMandatorWithOptionalMandator(props: RouteComponentProps) {\n return \n}\n","import { format } from 'date-fns/esm';\nimport React, { Component } from 'react';\nimport { RouterProps, useHistory } from 'react-router-dom';\nimport { AddressMin } from '../../models/address';\nimport { ArticleWithUsage } from '../../models/Invoicemanager/article';\nimport { OrderType } from '../../models/Invoicemanager/orderType';\nimport { Staff } from '../../models/staff';\nimport HttpService from '../../services/HttpService';\nimport LocalizationService from '../../services/LocalizationService';\nimport Utils from '../../services/Utils';\n\ninterface IProps {\n mandatorId: number;\n date?: Date;\n staff?: Staff;\n description?: string;\n remarks?: string;\n orderType?: OrderType;\n customer?: AddressMin;\n articles: ArticleWithUsage[];\n}\n\ntype Props = RouterProps & IProps;\n\ninterface IState {\n saving: boolean;\n}\n\nclass ConfirmNewOrderWithHistory extends Component {\n constructor(props: Props) {\n super(props);\n\n this.state = { saving: false, };\n }\n\n public render() {\n const date = this.props.date ?\n <>{format(this.props.date!, 'PPP', { locale: LocalizationService.de })} : <>nicht gewählt;\n\n return
    \n
    \n
    Datum
    \n
    {date}
    \n
    \n
    \n
    Personal
    \n
    \n {this.props.staff?.displayName}\n
    \n
    \n
    \n
    Bezeichnung
    \n
    \n {this.props.description}\n
    \n
    \n
    \n
    Bemerkung
    \n
    \n {this.props.remarks}\n
    \n
    \n
    \n
    Typ
    \n
    \n {this.props.orderType?.name}\n
    \n
    \n
    \n
    Kunde
    \n
    \n {Utils.addressDisplayNameWithCity(this.props.customer)}\n
    \n
    \n
    \n
    Artikel / Dienstleistungen
    \n
    \n {ConfirmNewOrderWithHistory.renderArticlesSummary(this.props.articles)}\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    ;\n }\n\n private static canSave(state: IState, props: IProps) {\n return !state.saving && // When a write operation is already ongoing, do not allow another one.\n props.date && props.staff &&\n props.articles.length > 0 &&\n undefined === props.articles.find((item) => !item.amount || !item.price);\n }\n\n private static renderArticlesSummary(articles: ArticleWithUsage[]) {\n const cultivations = articles.map((article) =>\n
  • \n {article.name + ' '}\n \n (\n {article.amount} {article.unit}\n , Preis: {article.price} CHF\n {article.discount ? <>, {article.discount}% Rabatt : <>}\n )\n \n
  • );\n\n return
      \n {cultivations}\n
    ;\n }\n\n private async create() {\n const creationRequest = {\n date: this.props.date,\n orderTypeId: this.props.orderType!.id,\n addressId: this.props.customer!.id,\n staffId: this.props.staff!.id,\n description: this.props.description,\n remarks: this.props.remarks,\n articles: this.props.articles.map((article) => ({\n id: article.id,\n amount: article.amount,\n price: article.price,\n discount: article.discount,\n })),\n };\n\n this.setState({ saving: true });\n\n try {\n await HttpService.postJson(\n '/api/Invoicemanager/mandators/confidential/0/' + this.props.mandatorId + '/orders/new', creationRequest);\n this.props.history.push('../');\n } catch (error) {\n console.error('failed to write entries', error);\n } finally {\n this.setState({ saving: false });\n }\n }\n}\n\nexport function ConfirmNewOrder(props: IProps) {\n return ;\n}\n","import React, { Component } from 'react';\nimport { Article } from '../../models/Invoicemanager/article';\nimport HttpService from '../../services/HttpService';\nimport { ListSelectItem } from '../abstract/ListSelect';\nimport { MultiListSelect } from '../abstract/MultiListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n mandatorId: number;\n onSelectionChanged: (selected: Article[]) => void;\n}\n\ninterface IState {\n loading: boolean;\n\n articles?: Article[];\n selected: string[];\n}\n\nexport class SelectArticles extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { loading: true, selected: [], };\n }\n\n public render() {\n return this.state.loading\n ? \n : this.renderSelector();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const articles = await HttpService.getPaged
    ('/api/Invoicemanager/mandators/confidential/0/' +\n this.props.mandatorId + '/articles');\n this.setState({ articles, loading: false });\n }\n\n private renderSelector() {\n const selectors = this.state.articles!.map((article) => ({\n key: article.id,\n value: <>\n {article.name}, {article.unit}, {article.category}\n \n }))\n\n return <>\n Mehrfachauswahl ist möglich.\n \n
    \n
    \n
    \n \n
    \n
    \n ;\n }\n\n private onArticlesSelected(selection: ListSelectItem[]) {\n this.setState({ selected: selection.map((item) => item.key) });\n }\n\n private onConfirmSelection() {\n const selectedIds = new Set(this.state.selected);\n this.props.onSelectionChanged(this.state.articles!.filter((item) => selectedIds.has(item.id)));\n }\n}\n","import React, { Component } from 'react';\nimport { AddressMin } from '../../models/address';\nimport HttpService from '../../services/HttpService';\nimport Utils from '../../services/Utils';\nimport { ListSelect, ListSelectItem } from '../abstract/ListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n onSelectionChanged: (customer: AddressMin) => void;\n}\n\ninterface IState {\n loading: boolean;\n\n selectedAddressId?: string;\n customers?: AddressMin[];\n}\n\nexport class SelectCustomer extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { loading: true, };\n }\n\n public render() {\n if (this.state.loading) {\n return ;\n }\n\n return this.renderCustomerSelector();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const customers = await HttpService.getPaged('/api/addresses/buyers');\n\n this.setState({ customers, loading: false });\n }\n\n private renderCustomerSelector() {\n const selectors = this.state.customers!.map((customer) => ({\n key: customer.id,\n value: Utils.addressDisplayNameWithCity(customer),\n }))\n\n return ();\n }\n\n private onCustomerSelected(selection: ListSelectItem) {\n this.setState({ selectedAddressId: selection.key }, this.onDataUpdated.bind(this));\n }\n\n private onDataUpdated() {\n const { selectedAddressId } = this.state;\n\n if (selectedAddressId) {\n const customer = this.state.customers!.find((customer) => customer.id === selectedAddressId);\n\n this.props.onSelectionChanged(customer!);\n }\n }\n}\n","import React, { Component } from 'react';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { Staff } from '../../models/staff';\nimport HttpService from '../../services/HttpService';\nimport { ListSelect, ListSelectItem } from '../abstract/ListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n onSelectionChanged: (date: Date, staff: Staff) => void;\n}\n\ninterface IState {\n date: Date;\n selectedStaffId?: string;\n\n loading: boolean;\n allStaff?: Staff[];\n}\n\nexport class SelectDateAndStaff extends Component {\n constructor(props: IProps) {\n super(props);\n\n const now = new Date();\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);\n this.state = { date: today, loading: true, };\n }\n\n public render() {\n if (this.state.loading) {\n return ;\n }\n\n return
    \n
    \n
    Datum
    \n \n
    \n
    \n
    Person
    \n {this.renderStaffSelector()}\n
    \n
    ;\n }\n\n private renderStaffSelector() {\n const selectors = this.state.allStaff!.map((staff) => ({\n key: staff.id,\n value: staff.displayName,\n }))\n\n return ();\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private onDatesChanged(date: Date) {\n this.setState({ date }, this.onDataUpdated.bind(this));\n }\n\n private onStaffSelected(selection: ListSelectItem) {\n this.setState({ selectedStaffId: selection.key }, this.onDataUpdated.bind(this));\n }\n\n private onDataUpdated() {\n const { date, selectedStaffId } = this.state;\n\n if (date && selectedStaffId) {\n const staff = this.state.allStaff!.find((staff) => staff.id === selectedStaffId);\n this.props.onSelectionChanged(date, staff!);\n }\n }\n\n private async populateData() {\n const allStaff = await HttpService.getPaged('/api/staff');\n this.setState({ allStaff, loading: false });\n }\n}\n","import React, { ChangeEvent, Component, MouseEvent } from 'react';\nimport { Input } from 'reactstrap';\nimport { OrderType } from '../../models/Invoicemanager/orderType';\nimport HttpService from '../../services/HttpService';\nimport { ListSelect, ListSelectItem } from '../abstract/ListSelect';\nimport { Loading } from '../Loading';\n\ninterface IProps {\n onSelectionChanged: (description: string, remarks: string | undefined, orderType: OrderType) => void;\n}\n\ninterface IState {\n loading: boolean;\n\n description?: string;\n remarks?: string;\n selectedOrderTypeId?: number;\n orderTypes?: OrderType[];\n}\n\nexport class SelectDescriptionAndOrderType extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = { loading: true, };\n }\n\n public render() {\n if (this.state.loading) {\n return ;\n }\n\n return <>\n
    \n
    \n
    \n
    Bezeichnung
    \n \n
    \n
    \n
    Bemerkung
    \n \n
    \n
    \n
    \n
    Typ
    \n {this.renderOrderTypeSelector()}\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n ;\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const orderTypes = await HttpService.getPaged('/api/Invoicemanager/OrderTypes');\n\n this.setState({ orderTypes, loading: false });\n }\n\n private renderOrderTypeSelector() {\n const selectors = this.state.orderTypes!.map((orderType) => ({\n key: orderType.id,\n value: orderType.name,\n }));\n\n return ();\n }\n\n private handleDescriptionChange(evt: ChangeEvent) {\n this.setState({ description: evt.target.value });\n }\n\n private handleRemarksChange(evt: ChangeEvent) {\n this.setState({ remarks: evt.target.value });\n }\n\n private onOrderTypeSelected(selection: ListSelectItem) {\n this.setState({ selectedOrderTypeId: selection.key });\n }\n\n private onNext(evt: MouseEvent) {\n const { description, remarks, selectedOrderTypeId } = this.state;\n\n if (description && selectedOrderTypeId) {\n const orderType = this.state.orderTypes!.find((orderType) => orderType.id === selectedOrderTypeId);\n\n this.props.onSelectionChanged(description, remarks, orderType!);\n }\n }\n\n private canMoveNext() {\n return this.state.description && this.state.selectedOrderTypeId;\n }\n}\n","import React, { Component } from 'react';\nimport { Col, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Label } from 'reactstrap';\nimport { ArticleUsage, ArticleWithUsage } from '../../models/Invoicemanager/article';\n\ninterface IProps {\n articles: ArticleWithUsage[];\n onChanged: (articlesWithUsage: ArticleWithUsage[]) => void;\n}\n\ninterface IState {\n articles: ArticleWithUsage[];\n usages: ArticleUsage[];\n}\n\nexport class SetArticlesDetails extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = SetArticlesDetails.getDerivedStateFromProps(props) as IState;\n }\n\n public static getDerivedStateFromProps(nextProps: IProps, curState?: IState): IState | Partial {\n let result: Partial = { articles: nextProps.articles };\n let resetUsages = false;\n\n if (curState && curState.usages) {\n // TODO: Perhaps also consider verifying IDs of articles.\n // The selection might have changed, but the count might be the same.\n if (curState.usages.length !== nextProps.articles.length) {\n resetUsages = true;\n }\n } else {\n resetUsages = true;\n }\n\n if (resetUsages) {\n result.usages = nextProps.articles.map((article, index) => ({\n amount: article.amount ? article.amount : 0,\n price: article.price ? article.price : 0,\n discount: article.discount ? article.discount : 0,\n }));\n }\n\n return result;\n }\n\n public render() {\n const forms = this.state.articles.map(this.renderArticleForm.bind(this));\n\n return <>\n Bitte ergänzen Sie.\n
      \n {forms}\n
    \n
    \n
    \n
    \n \n
    \n
    \n ;\n }\n\n private renderArticleForm(article: ArticleWithUsage, index: number) {\n const usage = this.state.usages[index];\n\n return (
  • \n
    {article.name}
    \n \n \n \n \n \n \n {article.unit}\n \n \n \n \n \n \n \n \n \n \n CHF\n \n \n \n \n \n \n \n \n \n \n %\n \n \n \n \n
  • );\n }\n\n private handleAmountChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n\n usages[index].amount = Math.max(0, ev.target.valueAsNumber);\n this.setState({ usages });\n }\n\n private handlePriceChange(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n\n usages[index].price = Math.max(0, ev.target.valueAsNumber);\n this.setState({ usages });\n }\n\n private handleDiscountChanged(ev: React.ChangeEvent) {\n const index = Number(ev.target.name.substr(1));\n const usages = this.state.usages;\n\n usages[index].discount = Math.max(0, Math.min(100, ev.target.valueAsNumber));\n this.setState({ usages });\n }\n\n private static canContinue(state: IState) {\n return undefined === state.usages.find((usage) =>\n !usage.amount || usage.amount <= 0 ||\n !usage.price || usage.price <= 0 ||\n (usage.discount !== undefined && (usage.discount < 0 || usage.discount > 100)));\n }\n\n private onConfirmSelection() {\n const articles = this.state.articles;\n const usages = this.state.usages;\n\n articles.forEach((article, index) => {\n article.amount = usages[index].amount;\n article.price = usages[index].price;\n article.discount = usages[index].discount;\n });\n\n this.setState({ articles }, () => this.props.onChanged(this.state.articles));\n }\n}\n","import React, { Component } from 'react';\nimport { Link, RouteChildrenProps } from 'react-router-dom';\nimport { AddressMin } from '../../models/address';\nimport { Article, ArticleWithUsage } from '../../models/Invoicemanager/article';\nimport { OrderType } from '../../models/Invoicemanager/orderType';\nimport { Staff } from '../../models/staff';\nimport { ISwipePane, SwipeContainer } from '../abstract/SwipeContainer';\nimport { ConfirmNewOrder } from './ConfirmNewOrder';\nimport { getMandatorId, MandatorParams } from './MandatorParams';\nimport { SelectArticles } from './SelectArticles';\nimport { SelectCustomer } from './SelectCustomer';\nimport { SelectDateAndStaff } from './SelectDateAndStaff';\nimport { SelectDescriptionAndOrderType } from './SelectDescriptionAndOrderType';\nimport { SetArticlesDetails } from './SetArticlesDetails';\n\ninterface IState {\n paneIndex: number;\n\n date?: Date,\n staff?: Staff;\n description?: string;\n remarks?: string;\n orderType?: OrderType;\n customer?: AddressMin;\n articles: ArticleWithUsage[];\n}\n\nfunction getConfirmationPageProps(state: IState, props: RouteChildrenProps) {\n return { ...state, mandatorId: getMandatorId(props.match?.params)! };\n}\n\nexport class OrdersAdd extends Component, IState> {\n constructor(props: RouteChildrenProps) {\n super(props);\n\n this.state = { paneIndex: 0, articles: [] };\n }\n\n public render() {\n const ordersBase = '/invoicemanager/' + this.props.match?.params.mandatorId + '/orders';\n const panes: ISwipePane[] = [\n {\n title: 'Auswahl Datum und Personal',\n body: ,\n },\n {\n title: 'Bezeichnung und Typ',\n body: ,\n },\n {\n title: 'Auswahl Kunde',\n body: ,\n },\n {\n title: 'Auswahl Artikel / Dienstleistungen',\n body: ,\n },\n {\n title: 'Artikel / Dienstleistungen ergänzen',\n body: ,\n },\n {\n title: 'Bestätigen',\n body: ,\n },\n ];\n\n return <>\n
    \n
    \n

    Neuer Auftrag

    \n
    \n
    \n « Zurück\n
    \n
    \n \n ;\n }\n\n private onDateAndStaffSelected(date: Date, staff: Staff) {\n this.setState({ date, staff, paneIndex: 1 });\n }\n\n private onDescriptionAndOrderTypeSelected(description: string, remarks: string | undefined, orderType: OrderType) {\n this.setState({ description, remarks, orderType, paneIndex: 2 });\n }\n\n private onCustomerSelected(customer: AddressMin) {\n this.setState({ customer, paneIndex: 3 });\n }\n\n private onArticlesSelected(selected: Article[]) {\n this.setState({ articles: selected, paneIndex: 4 });\n }\n\n private onArticlesUsageUpdated(articles: ArticleWithUsage[]) {\n this.setState({ articles, paneIndex: 5 });\n }\n}\n","import { format } from 'date-fns/esm';\nimport React, { Component } from 'react';\nimport { RouteChildrenProps } from 'react-router';\nimport { Link } from 'react-router-dom';\nimport { Button, ListGroup, ListGroupItem } from 'reactstrap';\nimport { OrderWithDetails } from '../../models/Invoicemanager/order';\nimport HttpService from '../../services/HttpService';\nimport LocalizationService from '../../services/LocalizationService';\nimport Utils from '../../services/Utils';\nimport { Loading } from '../Loading';\nimport { MandatorParams } from './MandatorParams';\n\nconst BatchSize = 10;\n\ninterface IState {\n loading: boolean;\n\n orders: OrderWithDetails[];\n hasMore: boolean;\n}\n\nexport class ViewRecentOrders extends Component, IState> {\n constructor(props: RouteChildrenProps) {\n super(props);\n\n this.state = { loading: true, orders: [], hasMore: true, };\n }\n\n public render() {\n const ordersBase = '/invoicemanager/' + this.props.match?.params.mandatorId + '/orders';\n\n return <>\n
    \n
    \n

    Aufträge

    \n
    \n
    \n « Zurück\n
    \n
    \n {ViewRecentOrders.renderOrders(this.state)}\n
    \n
    \n {this.state.loading ? :\n this.state.hasMore ?\n :\n Keine weiteren Aufträge}\n
    \n
    \n Neuen Auftrag erfassen\n
    \n
    \n {this.state.loading ? : <>}\n ;\n }\n\n public componentDidMount() {\n this.populateInitialData();\n }\n\n private static renderOrders(state: Readonly): React.ReactNode {\n return state.orders.map((order) => \n {format(new Date(order.date), 'P', { locale: LocalizationService.de })},{' '}\n {Utils.addressDisplayNameWithCity(order)}\n
    \n \n {order.type}{' '}\n {order.description}{', '}{order.person}\n \n
    \n
    );\n }\n\n private async populateInitialData() {\n const mandatorId = Number(this.props.match?.params.mandatorId!);\n const orderPromise = HttpService.getPaged(\n `/api/invoicemanager/mandators/confidential/0/${mandatorId}/orders/recent`, BatchSize)\n\n const orders = await orderPromise;\n\n this.setState({\n orders: orders,\n hasMore: orders.length >= BatchSize,\n loading: false,\n });\n }\n\n private async loadMore() {\n this.setState({ loading: true });\n const currentOrders = this.state.orders;\n const mandatorId = Number(this.props.match?.params.mandatorId!);\n const url = `/api/invoicemanager/mandators/confidential/0/${mandatorId}/orders/recent?afterId=` +\n encodeURIComponent(currentOrders[currentOrders.length - 1].id);\n const newOrders = await HttpService.getPaged(url, BatchSize);\n\n currentOrders.push(...newOrders);\n\n this.setState({\n orders: currentOrders,\n hasMore: newOrders.length >= BatchSize,\n loading: false,\n });\n }\n}\n","import React, { Component } from 'react';\nimport { Route, RouteChildrenProps, Switch } from 'react-router-dom';\nimport { CardColumns } from 'reactstrap';\nimport { NavigationCard } from '../abstract/NavigationCard';\nimport { MandatorParams } from './MandatorParams';\nimport { OrdersAdd } from './OrdersAdd';\nimport { ViewRecentOrders } from './ViewRecentOrders';\n\nexport class Orders extends Component> {\n public render() {\n const mandatorPrefix = '/invoicemanager/' + this.props.match?.params.mandatorId;\n\n return (\n \n \n \n \n

    Aufträge

    \n \n \n \n \n \n
    \n
    \n );\n }\n}\n","import React, { Component, ReactNode } from 'react';\nimport { Route, RouteChildrenProps, RouteComponentProps, Switch } from 'react-router-dom';\nimport { CardColumns } from 'reactstrap';\nimport { Mandator } from '../../models/Invoicemanager/mandator';\nimport HttpService from '../../services/HttpService';\nimport LicenseService, { ILicense } from '../../services/LicenseService';\nimport { NavigationCard } from '../abstract/NavigationCard';\nimport { Loading } from '../Loading';\nimport { ChangeMandatorWithOptionalMandator } from './ChangeMandator';\nimport { getMandatorId, MandatorParams } from './MandatorParams';\nimport { Orders } from './Orders';\n\ninterface IState {\n loading: boolean;\n license?: ILicense;\n mandator: Mandator | null;\n}\n\nexport class Invoicemanager extends Component, IState> {\n constructor(props: RouteChildrenProps) {\n super(props);\n\n this.state = { loading: true, mandator: null };\n }\n\n public render() {\n if (this.state.loading) {\n return ;\n }\n\n if (!this.state.license?.hasBilling) {\n return
    Faktura ist nicht lizenziert.
    ;\n }\n\n const mandatorId = this.state.mandator?.id || null;\n const mandatorPathSegment = mandatorId ? mandatorId + '/' : '';\n\n return <>\n \n \n \n \n Willkommen im Faktura Modul!\n\n \n \n
    Wahl/Wechsel des Mandanten für Faktura.
    \n
    Aktueller Mandant: {this.formatCurrentMandator()}
    \n
    \n \n
    \n
    \n
    \n ;\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const mandatorId = getMandatorId(this.props.match?.params);\n // If we don't have a mandator selected through the URL yet, let's see if we can find at least 1-2 to decide if\n // we can auto-select one.\n const availableMandators = mandatorId === null ?\n await HttpService.getPaged('/api/invoicemanager/mandators/confidential/0', 2) :\n null;\n\n if (availableMandators !== null && availableMandators.length === 1) {\n // If a mandator has not yet been selected and there's only one to begin with, let's auto-select that one.\n this.props.history.push('/invoicemanager/' + availableMandators[0].id);\n return;\n }\n\n const pendingLicense = LicenseService.getLicense();\n const pendingMandator = mandatorId ? this.getMandator(mandatorId) : Promise.resolve(null);\n\n this.setState({ license: await pendingLicense, mandator: await pendingMandator, loading: false });\n }\n\n private formatCurrentMandator() {\n const mandator = this.state.mandator;\n\n if (null === mandator) {\n return '< keiner gewählt >';\n } else {\n return mandator.name;\n }\n }\n\n private async getMandator(id: number) {\n return (await HttpService.get('/api/invoicemanager/mandators/confidential/0/' + id)) || null;\n }\n}\n\nexport function InvoicemanagerWithOptionalMandator(props: RouteComponentProps): ReactNode {\n return \n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Container, Navbar, NavbarText } from 'reactstrap';\n\ninterface IProps { }\n\ninterface IState {\n version?: string;\n}\n\nexport class Footer extends Component {\n constructor(props: IProps) {\n super(props);\n\n this.state = {};\n }\n\n public render() {\n return
    \n \n \n © Agrosoft {new Date().getFullYear()}\n \n Impressum\n {' / v' + this.state.version}\n \n \n \n
    ;\n }\n\n public componentDidMount() {\n this.populateData();\n }\n\n private async populateData() {\n const data = { version: process.env.REACT_APP_VERSION || 'n/a' }\n\n this.setState({ version: data?.version });\n }\n}\n","export default __webpack_public_path__ + \"static/media/farmsolution.c73bbb42.svg\";","import Axios from 'axios';\n\nexport interface IUser {\n name: string;\n}\n\n// NOTE: The LoginService uses Axios directly for better control of request/response flows.\n\nclass LoginService {\n public async getUser() {\n const resp = await Axios.get('/auth/user');\n\n switch (resp.status) {\n case 200:\n return Promise.resolve(resp.data);\n\n case 401:\n return Promise.reject({ reason: 'not_authenticated' });\n\n default:\n return Promise.reject({ reason: 'unknown' });\n }\n }\n\n public async login(username: string, password: string) {\n const resp = await Axios.post('/auth/login', { username, password });\n\n switch (resp.status) {\n case 200:\n return Promise.resolve();\n\n case 401:\n return Promise.reject({ reason: 'invalid_credentials' });\n\n case 429:\n return Promise.reject({ reason: 'too_many_requests' });\n\n default:\n return Promise.reject({ reason: 'unknown' });\n }\n }\n\n public async logout() {\n await Axios.post('/auth/logout');\n }\n}\n\nexport default new LoginService();\n","import React, { Component, useContext } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { AuthContext, IAuthContext } from '../Auth';\r\nimport farmsolution from '../icons/farmsolution.svg';\r\nimport EventsService, { IEvent } from '../services/EventsService';\r\nimport { EventServerRequestsUpdate, IServerRequestsUpdate } from '../services/HttpService';\r\nimport LoginService from '../services/LoginService';\r\nimport { Loading } from './Loading';\r\nimport './NavMenu.css';\r\n\r\ninterface IState {\r\n collapsed: boolean;\r\n serverRequestUpdate?: IServerRequestsUpdate;\r\n}\r\n\r\nasync function doLogout(authContext: IAuthContext) {\r\n await LoginService.logout();\r\n authContext.setLoggedIn(false);\r\n}\r\n\r\n// TODO: Dedicated component.\r\nfunction Logout() {\r\n const authContext = useContext(AuthContext);\r\n\r\n return ()\r\n}\r\n\r\nexport class NavMenu extends Component<{}, IState> {\r\n static displayName = NavMenu.name;\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true\r\n };\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n render() {\r\n const pendingRequests = this.state.serverRequestUpdate && this.state.serverRequestUpdate.numPending > 0 ?\r\n : <>;\r\n\r\n return (\r\n
    \r\n \r\n \r\n Agrosoft Farmsolution\r\n {pendingRequests}\r\n \r\n \r\n
      \r\n \r\n Faktura\r\n \r\n \r\n Feldmanager\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n componentDidMount() {\r\n EventsService.registerCallback(EventServerRequestsUpdate, this.onServerRequestsUpdate.bind(this));\r\n }\r\n\r\n private onServerRequestsUpdate(event: IEvent) {\r\n this.setState({ serverRequestUpdate: event.args });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { Footer } from './Footer';\r\nimport { NavMenu } from './NavMenu';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n {this.props.children}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Route, Switch } from 'react-router';\r\nimport { Attributions } from './components/Attributions';\r\nimport { Addresses } from './components/Base/Addresses';\r\nimport { Fieldmanager } from './components/Fieldmanager';\r\nimport { Home } from './components/Home';\r\nimport { InvoicemanagerWithOptionalMandator } from './components/Invoicemanager';\r\nimport { Layout } from './components/Layout';\r\nimport './custom.css';\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import { ErrorMessage, Field, Form, Formik, FormikHelpers } from 'formik';\nimport React, { Component } from 'react';\nimport { AuthContext } from './Auth';\nimport './Login.css';\nimport LoginService from './services/LoginService';\n\ninterface ILoginData {\n username: string;\n password: string;\n}\n\nconst connectionStringsDisabled = true;\n\nexport default class Login extends Component {\n context!: React.ContextType;\n static contextType = AuthContext;\n\n async doSubmit(values: ILoginData, helpers: FormikHelpers) {\n try {\n await LoginService.login(values.username, values.password);\n this.context.setLoggedIn(true);\n } catch (ex) {\n let errorMessage: string;\n\n switch (ex.reason) {\n case 'invalid_credentials':\n errorMessage = 'Anmeldung fehlgeschlagen.';\n break;\n\n case 'too_many_requests':\n errorMessage = 'Zu viele Anmeldeversuche. Bitte versuchen Sie es später erneut.';\n break;\n\n case 'unknown':\n default:\n errorMessage = 'Unbekannter Fehler. Bitte versuchen Sie es erneut.';\n break;\n\n }\n helpers.setErrors({ username: errorMessage });\n }\n }\n\n parseConnectionString(connstr: string, setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void) {\n const parts = connstr.split(';');\n\n parts.forEach((part) => {\n const [key, value] = part.split('=');\n const lowerKey = key.toLocaleLowerCase();\n\n switch (lowerKey) {\n case 'user id':\n case 'uid':\n case 'user':\n setFieldValue('username', value);\n break;\n\n case 'password':\n setFieldValue('password', value);\n break;\n }\n });\n }\n\n render() {\n return (
    \n
    \n \n {({ dirty, isSubmitting, setFieldValue }) => (\n
    \n

    Anmelden Bitte

    \n\n
    \n \n \n \n \n \n
    \n\n { !connectionStringsDisabled ? <>\n

    oder

    \n
    \n \n {\n this.parseConnectionString(evt.target.value, setFieldValue);\n evt.target.value = '';\n }}\n placeholder='z.B. Server=db.farmsolution.ch;Database=MeineDatenbank;User Id=HansMuster;Password=MeinPasswort' />\n
    \n : <>}\n\n \n

    © 2020 - {new Date().getFullYear()} Agrosoft

    \n
    \n )}\n \n
    \n
    );\n }\n}","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport * as Auth from './Auth';\r\nimport { Loading } from './components/Loading';\r\nimport Login from './Login';\r\nimport LocalizationService from './services/LocalizationService';\r\nimport LoginService from './services/LoginService';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\n// BEGIN Polyfills for IE11 support.\r\nrequire('es6-promise').polyfill();\r\nrequire('es6-object-assign').polyfill();\r\n// END Polyfills for IE11 support.\r\n\r\nLocalizationService.setDefault();\r\n\r\nclass MainComponent extends Component<{}, { loading: boolean, loggedIn: boolean }> {\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = { loading: true, loggedIn: false };\r\n Auth.addEventListener('onUnauthenticated', () => this.setLoggedIn(false));\r\n }\r\n\r\n public render() {\r\n if (this.state.loading) {\r\n return
    \r\n
    \r\n
    ;\r\n }\r\n\r\n return (\r\n {this.state.loggedIn ? <> : }\r\n );\r\n }\r\n\r\n public componentDidMount() {\r\n LoginService.getUser().then(\r\n () => this.setState({ loading: false, loggedIn: true }),\r\n () => this.setState({ loading: false, loggedIn: false }));\r\n }\r\n\r\n private setLoggedIn(loggedIn: boolean) {\r\n this.setState({ loggedIn });\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n"],"sourceRoot":""}