commit
1963ca3051
82
package-lock.json
generated
82
package-lock.json
generated
@ -1502,6 +1502,88 @@
|
||||
"resolved": "https://registry.npmjs.org/@rooks/use-mutation-observer/-/use-mutation-observer-3.4.0.tgz",
|
||||
"integrity": "sha512-q10+v3WbvSt5fj55VMikTPaUZ9Yl+IYDsymodWr2+cKx0PD97VBeWYjk3xHJPqJgejBHwnrwiNkJKGFY5iW+WQ=="
|
||||
},
|
||||
"@sentry/browser": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.0.0.tgz",
|
||||
"integrity": "sha512-R4+MHb5FyVZCz3EVnaquvT1mwOM2MWP4gBqjYEADY5m0XWoHiJf0skFkWt8iEKJanzGbhl4PMb9gHuJj6YfVLw==",
|
||||
"requires": {
|
||||
"@sentry/core": "6.0.0",
|
||||
"@sentry/types": "6.0.0",
|
||||
"@sentry/utils": "6.0.0",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sentry/core": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.0.0.tgz",
|
||||
"integrity": "sha512-afAiOachs/WfGWc9LsJBFnJMhqQVENyzfSMnf7sLRvxPAw8n7IrXY0R09MKmG0SlAnTKN2pWoQFzFF+J3NuHBA==",
|
||||
"requires": {
|
||||
"@sentry/hub": "6.0.0",
|
||||
"@sentry/minimal": "6.0.0",
|
||||
"@sentry/types": "6.0.0",
|
||||
"@sentry/utils": "6.0.0",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sentry/hub": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.0.0.tgz",
|
||||
"integrity": "sha512-s8IsW6LvEH7ACnniQcxxb/9uEyjmoQ/TAoryTJN2qyPzzrHTw8NCyMuJvK+8ivUvRViz5AvtuOFf8AJlh9lzeA==",
|
||||
"requires": {
|
||||
"@sentry/types": "6.0.0",
|
||||
"@sentry/utils": "6.0.0",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sentry/minimal": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.0.0.tgz",
|
||||
"integrity": "sha512-daYdEzTr+ERMwViu6RpWHOfk0oZrSNqdx+7bejTqmFHqO4pt+9ZrMiw3vinL+MWQcKXwD95uXBz6O/ryrVdPtg==",
|
||||
"requires": {
|
||||
"@sentry/hub": "6.0.0",
|
||||
"@sentry/types": "6.0.0",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sentry/react": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.0.0.tgz",
|
||||
"integrity": "sha512-GYX110NSodd8wGUbnyxemndTijM+U7dI/WjFSPOyJdLB2hzzPjJ9kUqtuobT/JlGzbWE2278WysAuySne6bUGw==",
|
||||
"requires": {
|
||||
"@sentry/browser": "6.0.0",
|
||||
"@sentry/minimal": "6.0.0",
|
||||
"@sentry/types": "6.0.0",
|
||||
"@sentry/utils": "6.0.0",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sentry/tracing": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.0.0.tgz",
|
||||
"integrity": "sha512-7Qes5godGCuvcEBxynFuRT5iiFR5aOfBdvdPmWnx29XbZKQvhjvBsDtdoVSQUmv/nCLtpH6UWeLwddFvXh3A2w==",
|
||||
"requires": {
|
||||
"@sentry/hub": "6.0.0",
|
||||
"@sentry/minimal": "6.0.0",
|
||||
"@sentry/types": "6.0.0",
|
||||
"@sentry/utils": "6.0.0",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sentry/types": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.0.0.tgz",
|
||||
"integrity": "sha512-yueRSRGPCahuju/UMdtOt8LIIncbpwLINQd9Q8E4OXtoPpMHR6Oun8sMKCPd+Wq3piI5yRDzKkGCl+sH7mHVrA=="
|
||||
},
|
||||
"@sentry/utils": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.0.0.tgz",
|
||||
"integrity": "sha512-dMMWOT69bQ4CF1R33dOnXIOyiHRWsUAON3nFVljV1JNNTDA69YwaF9f5FIT0DKpO4qhgTlElsm8WgHI9prAVEQ==",
|
||||
"requires": {
|
||||
"@sentry/types": "6.0.0",
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"@sheerun/mutationobserver-shim": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz",
|
||||
|
@ -10,6 +10,8 @@
|
||||
"@fortawesome/free-solid-svg-icons": "^5.14.0",
|
||||
"@fortawesome/react-fontawesome": "^0.1.11",
|
||||
"@material-ui/core": "^4.11.0",
|
||||
"@sentry/react": "^6.0.0",
|
||||
"@sentry/tracing": "^6.0.0",
|
||||
"@testing-library/jest-dom": "^4.2.4",
|
||||
"@testing-library/react": "^9.5.0",
|
||||
"@testing-library/user-event": "^7.2.1",
|
||||
|
@ -125,7 +125,6 @@ class Home extends Component {
|
||||
</Grid>
|
||||
: null}
|
||||
</Grid>
|
||||
|
||||
<HintTutorialExists />
|
||||
<Snackbar
|
||||
open={this.state.snackbar}
|
||||
|
@ -16,15 +16,15 @@ import Link from '@material-ui/core/Link';
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import Tooltip from '@material-ui/core/Tooltip';
|
||||
|
||||
import { faUser, faAt, faMapMarkerAlt, faCloudSunRain, faBox } from "@fortawesome/free-solid-svg-icons";
|
||||
import { faUser, faAt, faMapMarkerAlt, faCloudSunRain, faBox, faUserTag } from "@fortawesome/free-solid-svg-icons";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
|
||||
|
||||
export class Account extends Component {
|
||||
|
||||
render(){
|
||||
const {user} = this.props;
|
||||
return(
|
||||
render() {
|
||||
const { user } = this.props;
|
||||
return (
|
||||
<div>
|
||||
<Breadcrumbs content={[{ link: '/user', title: 'Account' }]} />
|
||||
|
||||
@ -32,7 +32,7 @@ export class Account extends Component {
|
||||
<Alert>
|
||||
Alle Angaben stammen von <Link color='primary' rel="noreferrer" target="_blank" href={'https://opensensemap.org/'}>openSenseMap</Link> und können dort verwaltet werden.
|
||||
</Alert>
|
||||
<Paper style={{width: 'max-content', maxWidth: '100%'}}>
|
||||
<Paper style={{ width: 'max-content', maxWidth: '100%' }}>
|
||||
<List>
|
||||
<ListItem>
|
||||
<Tooltip title='Nutzername'>
|
||||
@ -40,7 +40,7 @@ export class Account extends Component {
|
||||
<FontAwesomeIcon icon={faUser} />
|
||||
</ListItemIcon>
|
||||
</Tooltip>
|
||||
<ListItemText primary={user.name} />
|
||||
<ListItemText primary={`Name: ${user.name}`} />
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Tooltip title='Email'>
|
||||
@ -48,30 +48,36 @@ export class Account extends Component {
|
||||
<FontAwesomeIcon icon={faAt} />
|
||||
</ListItemIcon>
|
||||
</Tooltip>
|
||||
<ListItemText primary={user.email} />
|
||||
<ListItemText primary={`Email: ${user.email}`} />
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<ListItemIcon>
|
||||
<FontAwesomeIcon icon={faUserTag} />
|
||||
</ListItemIcon>
|
||||
<ListItemText primary={`Userrolle: ${user.blocklyRole}`} />
|
||||
</ListItem>
|
||||
</List>
|
||||
</Paper>
|
||||
<Divider style={{marginBottom: '16px', marginTop: '16px'}}/>
|
||||
<div style={{marginBottom: '8px'}}>
|
||||
<Divider style={{ marginBottom: '16px', marginTop: '16px' }} />
|
||||
<div style={{ marginBottom: '8px' }}>
|
||||
{this.props.user.boxes.length < 1 ?
|
||||
<Typography>
|
||||
Du hast noch keine senseBox registriert. Besuche <Link color='primary' rel="noreferrer" target="_blank" href={'https://opensensemap.org/'}>openSenseMap</Link> um eine senseBox zu registrieren.
|
||||
</Typography>
|
||||
: <Typography style={{fontWeight: 'bold', fontSize: '1.1rem'}}>
|
||||
Du hast {this.props.user.boxes.length} {this.props.user.boxes.length === 1 ? 'senseBox' : 'senseBoxen'} registriert:
|
||||
: <Typography style={{ fontWeight: 'bold', fontSize: '1.1rem' }}>
|
||||
Du hast {this.props.user.boxes.length} {this.props.user.boxes.length === 1 ? 'senseBox' : 'senseBoxen'} registriert:
|
||||
</Typography>}
|
||||
</div>
|
||||
<Grid container spacing={2}>
|
||||
{this.props.user.boxes.map((box, i) => {
|
||||
var sensors = box.sensors.map(sensor => sensor.title );
|
||||
var sensors = box.sensors.map(sensor => sensor.title);
|
||||
return (
|
||||
<Grid item xs={12} sm={6} md={4} xl={3} key={i}>
|
||||
<Link rel="noreferrer" target="_blank" href={`https://opensensemap.org/explore/${box._id}`} color="primary" style={{ textDecoration: 'none', color: 'inherit' }}>
|
||||
<Paper>
|
||||
<List>
|
||||
<ListItem>
|
||||
<Typography style={{fontWeight: 'bold', fontSize: '1.6rem'}}>{box.name}</Typography>
|
||||
<Typography style={{ fontWeight: 'bold', fontSize: '1.6rem' }}>{box.name}</Typography>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<Tooltip title='Modell'>
|
||||
@ -80,7 +86,7 @@ export class Account extends Component {
|
||||
</ListItemIcon>
|
||||
</Tooltip>
|
||||
<div>
|
||||
<Typography style={{fontWeight: 'bold', marginRight: '4px'}}>Modell: </Typography>
|
||||
<Typography style={{ fontWeight: 'bold', marginRight: '4px' }}>Modell: </Typography>
|
||||
<Typography>{box.model}</Typography>
|
||||
</div>
|
||||
</ListItem>
|
||||
@ -91,7 +97,7 @@ export class Account extends Component {
|
||||
</ListItemIcon>
|
||||
</Tooltip>
|
||||
<div>
|
||||
<Typography style={{fontWeight: 'bold', marginRight: '4px'}}>Standort: </Typography>
|
||||
<Typography style={{ fontWeight: 'bold', marginRight: '4px' }}>Standort: </Typography>
|
||||
<Typography>{`${box.exposure} (lon: ${box.currentLocation.coordinates[0]}, lat: ${box.currentLocation.coordinates[1]})`}</Typography>
|
||||
</div>
|
||||
</ListItem>
|
||||
@ -102,7 +108,7 @@ export class Account extends Component {
|
||||
</ListItemIcon>
|
||||
</Tooltip>
|
||||
<div>
|
||||
<Typography style={{fontWeight: 'bold', marginRight: '4px'}}>Sensoren: </Typography>
|
||||
<Typography style={{ fontWeight: 'bold', marginRight: '4px' }}>Sensoren: </Typography>
|
||||
<Typography>{sensors.join(', ')}</Typography>
|
||||
</div>
|
||||
</ListItem>
|
||||
|
16
src/index.js
16
src/index.js
@ -3,6 +3,22 @@ import ReactDOM from 'react-dom';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import * as serviceWorker from './serviceWorker';
|
||||
import * as Sentry from "@sentry/react";
|
||||
import { Integrations } from "@sentry/tracing";
|
||||
|
||||
|
||||
Sentry.init({
|
||||
dsn: "https://ffe5d54461f64c46b4bed5d77c130d6f@o507523.ingest.sentry.io/5598758",
|
||||
autoSessionTracking: true,
|
||||
integrations: [
|
||||
new Integrations.BrowserTracing(),
|
||||
],
|
||||
|
||||
// We recommend adjusting this value in production, or using tracesSampler
|
||||
// for finer control
|
||||
tracesSampleRate: 1.0,
|
||||
});
|
||||
|
||||
|
||||
ReactDOM.render(
|
||||
<React.StrictMode>
|
||||
|
Loading…
x
Reference in New Issue
Block a user