From cd908228eca20b4d903ad1848a60d2f47b9d9c3f Mon Sep 17 00:00:00 2001 From: VitorInserra Date: Wed, 9 Mar 2022 19:16:33 -0500 Subject: [PATCH 01/10] Name to pid edit --- backend/checkin/views.py | 13 +++++++++++++ src/Screens/CheckIn.js | 41 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/backend/checkin/views.py b/backend/checkin/views.py index d6bd02d1..fe5c5c2e 100644 --- a/backend/checkin/views.py +++ b/backend/checkin/views.py @@ -11,6 +11,7 @@ from datetime import datetime, date, timedelta from functools import reduce from django.views.decorators.csrf import ensure_csrf_cookie +from django.views.decorators.csrf import csrf_exempt from django.forms.models import model_to_dict import json @@ -685,6 +686,7 @@ def checkin_data(request): data = serializers.serialize('json', dataset) return JsonResponse(data, safe=False) +@csrf_exempt def pid_to_name(request): data = json.loads(request.body) result = Checkin.objects.filter(PID=data['pid']).values("name").first() @@ -694,6 +696,17 @@ def pid_to_name(request): returnData = {"name": None} return JsonResponse(data=returnData) +@csrf_exempt +def name_to_pid(request): + data = json.loads(request.body) + name = data['name'] + result = Checkin.objects.filter(name__iexact=name.lower()).values("PID").first() + if (result): + returnData = {"pid": result["PID"]} + else: + returnData = {"pid": None} + return JsonResponse(data=returnData) + def checked_in(request): data = json.loads(request.body) result = Checkin.objects.filter(PID=data['pid'], checkedIn=True) diff --git a/src/Screens/CheckIn.js b/src/Screens/CheckIn.js index e335d6cf..58ecba9d 100644 --- a/src/Screens/CheckIn.js +++ b/src/Screens/CheckIn.js @@ -200,7 +200,7 @@ export default class CheckIn extends React.Component { } handleKeyPress = (e) => { - if (!(e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA")) { + if (!(e.target.nodeName === "INPUT" || e.target.nodeName === "TEXTAREA")) { const pidArray = this.state.keypresses.slice(1, 9); pidArray.push(String.fromCharCode(e.keyCode)); if (pidArray.every(x => !isNaN(parseInt(x)))) { @@ -216,9 +216,9 @@ export default class CheckIn extends React.Component { }); } } else { - if (!(String.fromCharCode(e.keyCode) === '\b')) { + if ((!(String.fromCharCode(e.keyCode) === '\b') && (!(String.fromCharCode(e.keyCode) === '\x10')) && (!(String.fromCharCode(e.keyCode) === '\r'))) && (!(String.fromCharCode(e.keyCode) === '\t')) && (!(String.fromCharCode(e.keyCode) === '\x14'))) { this.state.keysPidBox.push(String.fromCharCode(e.keyCode)) - } else { + } else if (String.fromCharCode(e.keyCode) === '\b'){ this.state.keysPidBox.pop() } @@ -232,11 +232,46 @@ export default class CheckIn extends React.Component { this.setState({ keypresses: pidArray }); + } + } else if (this.state.keysPidBox.some(x => isNaN(parseInt(x)))){ + const nameArray = this.state.keysPidBox; + console.log(nameArray); + if (String.fromCharCode(e.keyCode) === '\r' || String.fromCharCode(e.keyCode) === '\t') { + const newName = nameArray.join(""); + console.log(newName); + console.log(e.target); + this.checkForHistoryName(newName); } } } } + checkForHistoryName = (name) => { + + axios({ + method: "POST", + url: "/name-to-pid/", + headers: { 'X-CSRFToken': csrfToken }, + data: { + name: name + } + }).then((response => { + if (response.data.pid) { + if (this.state.pid.trim() === "") { + this.setState({ + pid: response.data.pid, + }); + } + this.reasonRef.current.focus(); + } else { + this.pidRef.current.focus() + this.setState({ + firstTime: true + }); + } + })); + } + pidChange = (event) => { this.setState({ pid: event.target.value From 6559020b9fac164f5384628b2c98a34e3cbeda63 Mon Sep 17 00:00:00 2001 From: VitorInserra Date: Fri, 11 Mar 2022 20:39:39 -0500 Subject: [PATCH 02/10] Fix 404 --- backend/backend/urls.py | 4 ++-- backend/checkin/views.py | 2 -- src/Screens/Home.js | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/backend/urls.py b/backend/backend/urls.py index 159e552a..19ec7962 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -41,6 +41,6 @@ path('visitor-chart9/', views.visitor_chart9, name="visitor-chart9"), path('visitor-chart10/', views.visitor_chart10, name="visitor-chart10"), path('pid-to-name/', views.pid_to_name, name="pid-to-name"), + path('name-to-pid/', views.name_to_pid, name="name-to-pid"), path('checked-in/', views.checked_in, name="checked-in") -] - +] \ No newline at end of file diff --git a/backend/checkin/views.py b/backend/checkin/views.py index fe5c5c2e..d82eb046 100644 --- a/backend/checkin/views.py +++ b/backend/checkin/views.py @@ -686,7 +686,6 @@ def checkin_data(request): data = serializers.serialize('json', dataset) return JsonResponse(data, safe=False) -@csrf_exempt def pid_to_name(request): data = json.loads(request.body) result = Checkin.objects.filter(PID=data['pid']).values("name").first() @@ -696,7 +695,6 @@ def pid_to_name(request): returnData = {"name": None} return JsonResponse(data=returnData) -@csrf_exempt def name_to_pid(request): data = json.loads(request.body) name = data['name'] diff --git a/src/Screens/Home.js b/src/Screens/Home.js index 594736ea..a4f6cedc 100644 --- a/src/Screens/Home.js +++ b/src/Screens/Home.js @@ -29,7 +29,7 @@ const Home = () => { } const handleKeyPress = (e) => { - if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") + if (e.target.nodeName === "INPUT" || e.target.nodeName === "TEXTAREA") return; if (e.target.isContentEditable) return; From 0496968bfc4e3ed680ac3dc2f509d180ab303d45 Mon Sep 17 00:00:00 2001 From: VitorInserra Date: Mon, 21 Mar 2022 17:17:14 -0400 Subject: [PATCH 03/10] dynamic sourcing --- backend/checkin/views.py | 2 ++ src/Screens/CheckIn.js | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/backend/checkin/views.py b/backend/checkin/views.py index d82eb046..fe5c5c2e 100644 --- a/backend/checkin/views.py +++ b/backend/checkin/views.py @@ -686,6 +686,7 @@ def checkin_data(request): data = serializers.serialize('json', dataset) return JsonResponse(data, safe=False) +@csrf_exempt def pid_to_name(request): data = json.loads(request.body) result = Checkin.objects.filter(PID=data['pid']).values("name").first() @@ -695,6 +696,7 @@ def pid_to_name(request): returnData = {"name": None} return JsonResponse(data=returnData) +@csrf_exempt def name_to_pid(request): data = json.loads(request.body) name = data['name'] diff --git a/src/Screens/CheckIn.js b/src/Screens/CheckIn.js index 58ecba9d..5ae94610 100644 --- a/src/Screens/CheckIn.js +++ b/src/Screens/CheckIn.js @@ -221,6 +221,7 @@ export default class CheckIn extends React.Component { } else if (String.fromCharCode(e.keyCode) === '\b'){ this.state.keysPidBox.pop() } + console.log(this.keysPidBox) if (this.state.keysPidBox.length === 9){ const pidArray = this.state.keysPidBox.slice(0, 9); @@ -238,8 +239,6 @@ export default class CheckIn extends React.Component { console.log(nameArray); if (String.fromCharCode(e.keyCode) === '\r' || String.fromCharCode(e.keyCode) === '\t') { const newName = nameArray.join(""); - console.log(newName); - console.log(e.target); this.checkForHistoryName(newName); } } @@ -268,7 +267,8 @@ export default class CheckIn extends React.Component { this.setState({ firstTime: true }); - } + } + console.log(this.state.firstTime) })); } @@ -282,7 +282,7 @@ export default class CheckIn extends React.Component { this.setState({ name: event.target.value }); - } + } componentDidMount() { document.addEventListener('keydown', this.handleKeyPress); @@ -304,6 +304,15 @@ export default class CheckIn extends React.Component { value, onChange: this.onChange }; + let firstTimeBox; + if (this.state.firstTime === true) { + console.log('got') + firstTimeBox =
+ + +
+ } + return (
-
- - -
+ + {firstTimeBox} +