Commit 439cd006 authored by HMKS Herath's avatar HMKS Herath

fix merge conflicts

parents 9ae75d55 d4b61b88
Pipeline #1578 failed with stages
......@@ -7,6 +7,7 @@
<option value="N802" />
<option value="N812" />
<option value="N806" />
<option value="N803" />
</list>
</option>
</inspection_tool>
......
......@@ -33,7 +33,7 @@
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="last_opened_file_path" value="$USER_HOME$/anaconda3/Lib/site-packages/pymongo/mongo_client.py" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.detected.package.tslint" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
......@@ -147,11 +147,11 @@
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="2610" y="268" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599456440610" />
<state x="2606" y="216" key="FileChooserDialogImpl" timestamp="1599212559698">
<state x="2606" y="216" key="FileChooserDialogImpl" timestamp="1600070372859">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="549" y="171" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1597313444704" />
<state x="2606" y="216" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1599212559698" />
<state x="2606" y="216" key="FileChooserDialogImpl/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1600070372859" />
<state x="2000" y="0" key="FileDocumentManager.FileCacheConflict" timestamp="1599458251559">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
......@@ -201,6 +201,10 @@
</state>
<state x="-162" y="98" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1597320661738" />
<state x="2383" y="166" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1597053750811" />
<state x="2601" y="261" width="540" height="524" key="StructurePopup" timestamp="1600149249330">
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="2601" y="261" width="540" height="524" key="StructurePopup/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1600149249330" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog" timestamp="1595569410321">
<screen x="0" y="0" width="1536" height="824" />
</state>
......
AccXmin,AccYmin,AccZmin,AccXmax,AccYmax,AccZmax,AccXmean,AccYmean,AccZmean,GyrXmin,GyrYmin,GyrZmin,GyrXmax,GyrYmax,GyrZmax,GyrXmean,GyrYmean,GyrZmean,StartTime,EndTime
-0.02,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0006451612903225806,0.0,0.0,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.009354838709677422,-0.009354838709677422,-0.009354838709677422,2020-09-16 17:53:09.668788,2020-09-16 17:54:09.686843
-0.02,0.0,0.0,1.98,0.0,0.0,0.3926666666666669,0.0,0.0,-0.01,-0.01,-0.01,0.0,0.0,0.0,-0.0006666666666666666,-0.0006666666666666666,-0.0006666666666666666,2020-09-16 18:18:32.209880,2020-09-16 18:19:30.213294
timestamp,accelerometer_X,accelerometer_Y,accelerometer_Z,gyroscope_X,gyroscope_Y,gyroscope_Z
2020-09-07 17:08:11.199332,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-07 17:08:13.201241,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-07 17:08:15.236116,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-07 17:08:17.222541,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:41.953180,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:43.892551,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:45.905631,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:47.906413,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:49.894551,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:51.896948,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:53.895052,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:55.896255,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:57.895174,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:26:59.894743,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:01.892516,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:03.905684,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:06.089525,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:07.915467,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:09.947959,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:11.895715,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
2020-09-20 23:27:13.902559,-0.00,-0.00,-0.00,-0.01,-0.01,-0.01
timestamp,accelerometer_X,accelerometer_Y,accelerometer_Z,gyroscope_X,gyroscope_Y,gyroscope_Z
2020-09-16 18:19:34.220893,0.05,0.00,0.00,0.00,0.00,0.00
2020-09-16 18:19:36.217454,0.05,0.00,0.00,0.00,0.00,0.00
2020-09-16 18:19:38.206760,0.05,0.00,0.00,0.00,0.00,0.00
2020-09-16 18:19:40.202189,0.02,0.00,0.00,0.00,0.00,0.00
2020-09-16 18:19:42.205321,0.02,0.00,0.00,0.00,0.00,0.00
......@@ -28,7 +28,7 @@ SECRET_KEY = '^^46u_fc$#)x5ji*s#l3p6igr9*6fwknxevip$ozw8#-m=*#f0'
DEBUG = True
ALLOWED_HOSTS = ['192.168.1.19', 'localhost', '127.0.0.1']
ALLOWED_HOSTS = ['192.168.1.2', 'localhost', '127.0.0.1']
CORS_ORIGIN_ALLOW_ALL = False
......@@ -151,7 +151,6 @@ USE_I18N = True
USE_L10N = True
# USE_TZ = True
USE_TZ = False
......
from apscheduler.schedulers.background import BackgroundScheduler
from django.apps import AppConfig
def Hello():
print("Hellooo")
class MobileappConfig(AppConfig):
name = 'mobileapp'
def ready(self):
print("Starting Up Code...")
print("Starting the Server....")
# Generated by Django 3.0.5 on 2020-09-14 15:09
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('mobileapp', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='MotionActivity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(default=django.utils.timezone.now)),
('startTime', models.DateTimeField(null=True)),
('endTime', models.DateTimeField(null=True)),
('dog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mobileapp.Dog')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]
# Generated by Django 3.0.5 on 2020-09-16 00:03
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('mobileapp', '0002_motionactivity'),
]
operations = [
migrations.DeleteModel(
name='MotionActivity',
),
]
# Generated by Django 3.0.5 on 2020-09-16 00:05
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('mobileapp', '0003_delete_motionactivity'),
]
operations = [
migrations.CreateModel(
name='MotionActivity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(default=django.utils.timezone.now)),
('time', models.DateTimeField()),
('activity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mobileapp.Activity')),
('dog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mobileapp.Dog')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]
# Generated by Django 3.0.5 on 2020-09-16 12:30
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('mobileapp', '0004_motionactivity'),
]
operations = [
migrations.CreateModel(
name='DogStatus',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(default=django.utils.timezone.now)),
('time', models.DateTimeField()),
('activity', models.IntegerField(null=True)),
('dog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mobileapp.Dog')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]
# Generated by Django 3.0.5 on 2020-09-16 12:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mobileapp', '0005_dogstatus'),
]
operations = [
migrations.RemoveField(
model_name='dogstatus',
name='time',
),
migrations.AddField(
model_name='dogstatus',
name='status',
field=models.CharField(max_length=25, null=True),
),
]
# Generated by Django 3.0.5 on 2020-09-16 16:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mobileapp', '0006_auto_20200916_1232'),
]
operations = [
migrations.AlterField(
model_name='motionactivity',
name='activity',
field=models.IntegerField(null=True),
),
]
# Generated by Django 3.0.5 on 2020-09-16 16:53
from django.db import migrations, models
import djongo.models.fields
class Migration(migrations.Migration):
dependencies = [
('mobileapp', '0007_auto_20200916_1642'),
]
operations = [
migrations.CreateModel(
name='Breed',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=30, null=True)),
('slug', models.CharField(max_length=20, null=True)),
('restingMinutes', djongo.models.fields.JSONField(blank=True, default=list, null=True)),
('activityPerDay', models.IntegerField(null=True)),
('walkPerWeek', models.IntegerField(null=True)),
],
),
]
......@@ -43,5 +43,35 @@ class MotionActivityPerDay(models.Model):
"{} - {} - {} - {}".format(self.dog, self.date, self.activity, self.timePeriod)
class MotionActivity(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
dog = models.ForeignKey(Dog, on_delete=models.CASCADE)
date = models.DateField(default=django.utils.timezone.now)
time = models.DateTimeField()
activity = models.IntegerField(null=True)
def __str__(self):
"{} - {} - {} - {} - {}".format(self.dog, self.date, self.activity, self.date, self.time)
class DogStatus(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
dog = models.ForeignKey(Dog, on_delete=models.CASCADE)
date = models.DateField(default=django.utils.timezone.now)
activity = models.IntegerField(null=True)
status = models.CharField(null=True, max_length=25)
def __str__(self):
"{} - {} - {} - {} ".format(self.dog, self.date, self.activity, self.date)
class Breed(models.Model):
name = models.CharField(null=True, max_length=30)
slug = models.CharField(null=True, max_length=20)
restingMinutes = models.JSONField(default=list, blank=True, null=True)
activityPerDay = models.IntegerField(null=True)
walkPerWeek = models.IntegerField(null=True)
def __str__(self):
"{} - {} - {} - {} ".format(self.name, self.slug, self.restingMinutes, self.restingMinutes, self.activityPerDay,
self.walkPerWeek)
from rest_framework import serializers
from rest_framework.validators import UniqueTogetherValidator
from django.contrib.auth.models import User
from .models import Dog, MotionActivityPerDay,Activity
from .models import Dog, MotionActivityPerDay, Activity, MotionActivity, DogStatus, Breed
class UserSerializer(serializers.ModelSerializer):
......@@ -47,5 +47,26 @@ class MotionActivityPerDaySerializer(serializers.ModelSerializer):
fields = ('user', 'dog', 'date', 'activity', 'timePeriod', 'week', 'month', 'year')
class MotionActivitySerializer(serializers.ModelSerializer):
class Meta:
model = MotionActivity
fields = ('user_id', 'dog_id', 'date', 'time', 'activity')
class DogStatusSerializer(serializers.ModelSerializer):
class Meta:
model = DogStatus
fields = ('user_id', 'dog_id', 'date', 'activity', 'status')
class BreedSerializer(serializers.ModelSerializer):
class Meta:
model = Breed
fields = ('name', 'slug', 'restingMinutes', 'activityPerDay', 'walkPerWeek')
......@@ -45,4 +45,6 @@ urlpatterns = [
# getting the readings
path('readings', views.readings),
path('trainingReadings', views.trainingReadings)
]
alabaster==0.7.12
amqp==1.4.9
anaconda-client==1.7.2
anaconda-navigator==1.9.12
anaconda-project==0.8.3
ansicon==1.89.0
anyjson==0.3.3
appdirs==1.4.4
APScheduler==3.6.3
argh==0.26.2
arrow==0.16.0
asgiref==3.2.10
asn1crypto==1.3.0
astroid @ file:///C:/ci/astroid_1592487315634/work
astropy==4.0.1.post1
atomicwrites==1.4.0
attrs==19.3.0
Automat==20.2.0
autopep8 @ file:///tmp/build/80754af9/autopep8_1592412889138/work
Babel==2.8.0
backcall==0.2.0
backports.functools-lru-cache==1.6.1
backports.shutil-get-terminal-size==1.0.0
backports.tempfile==1.0
backports.weakref==1.0.post1
bcrypt==3.1.7
beautifulsoup4==4.9.1
billiard==3.3.0.23
bitarray @ file:///C:/ci/bitarray_1594751093906/work
bkcharts==0.2
bleach==3.1.5
blessed==1.17.10
bokeh @ file:///C:/ci/bokeh_1593178781838/work
boto==2.49.0
Bottleneck==1.3.2
brotlipy==0.7.0
certifi==2020.6.20
cffi==1.14.0
chardet==3.0.4
click==7.1.2
cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1594141588948/work
clyent==1.2.2
colorama==0.4.3
comtypes==1.1.7
conda==4.8.3
conda-build==3.18.11
conda-package-handling==1.7.0
conda-verify==3.4.2
constantly==15.1.0
contextlib2==0.6.0.post1
cryptography==2.9.2
cycler==0.10.0
Cython @ file:///C:/ci/cython_1594829190914/work
cytoolz==0.10.1
dask @ file:///tmp/build/80754af9/dask-core_1594156306305/work
decorator==4.4.2
defusedxml==0.6.0
diff-match-patch @ file:///tmp/build/80754af9/diff-match-patch_1594828741838/work
distlib==0.3.1
distributed @ file:///C:/ci/distributed_1594742844291/work
Django==3.0.5
django-allauth==0.42.0
django-background-tasks==1.2.5
django-celery-beat==2.0.0
django-celery-results==1.2.1
django-compat==1.0.15
django-cors-headers==3.4.0
django-mailer==2.0.1
django-picklefield==3.0.1
django-rest-auth==0.9.5
django-timezone-field==4.0
djangorestframework==3.11.0
djongo==1.3.3
dnspython==1.16.0
docutils==0.16
entrypoints==0.3
et-xmlfile==1.0.1
fastcache==1.1.0
filelock==3.0.12
flake8==3.8.3
Flask==1.1.2
fsspec==0.7.4
future==0.18.2
gevent @ file:///C:/ci/gevent_1593005471151/work
glob2==0.7
gmpy2==2.0.8
greenlet==0.4.16
h5py==2.10.0
HeapDict==1.0.1
html5lib @ file:///tmp/build/80754af9/html5lib_1593446221756/work
hyperlink==20.0.1
idna @ file:///tmp/build/80754af9/idna_1593446292537/work
imageio @ file:///tmp/build/80754af9/imageio_1594161405741/work
imagesize==1.2.0
importlib-metadata @ file:///C:/ci/importlib-metadata_1593446511143/work
incremental==17.5.0
intervaltree @ file:///tmp/build/80754af9/intervaltree_1594361675072/work
ipykernel @ file:///C:/ci/ipykernel_1594745408489/work/dist/ipykernel-5.3.2-py3-none-any.whl
ipython @ file:///C:/ci/ipython_1593447482397/work
ipython-genutils==0.2.0
ipywidgets==7.5.1
isort==4.3.21
itsdangerous==1.1.0
jdcal==1.4.1
jedi @ file:///C:/ci/jedi_1592833825077/work
Jinja2==2.11.2
jinxed==1.0.1
joblib @ file:///tmp/build/80754af9/joblib_1594236160679/work
json5==0.9.5
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client @ file:///tmp/build/80754af9/jupyter_client_1594826976318/work
jupyter-console==6.1.0
jupyter-core==4.6.3
jupyterlab==2.1.5
jupyterlab-server @ file:///tmp/build/80754af9/jupyterlab_server_1594164409481/work
keyring @ file:///C:/ci/keyring_1593109799227/work
kiwisolver==1.2.0
kombu==3.0.37
lazy-object-proxy==1.4.3
libarchive-c==2.9
llvmlite==0.33.0+1.g022ab0f
locket==0.2.0
lockfile==0.12.2
lxml @ file:///C:/ci/lxml_1594822774489/work
MarkupSafe==1.1.1
matplotlib @ file:///C:/ci/matplotlib-base_1592837548929/work
mccabe==0.6.1
menuinst==1.4.16
mistune==0.8.4
mkl-fft==1.1.0
mkl-random==1.1.1
mkl-service==2.3.0
mock==4.0.2
more-itertools==8.4.0
mpmath==1.1.0
msgpack==1.0.0
multipledispatch==0.6.0
navigator-updater==0.2.1
nbconvert==5.6.1
nbformat==5.0.7
networkx @ file:///tmp/build/80754af9/networkx_1594377231366/work
nltk @ file:///tmp/build/80754af9/nltk_1592496090529/work
nose==1.3.7
notebook==6.0.3
numba==0.50.1
numexpr==2.7.1
numpy==1.18.5
numpydoc @ file:///tmp/build/80754af9/numpydoc_1594166760263/work
oauthlib==3.1.0
olefile==0.46
openpyxl @ file:///tmp/build/80754af9/openpyxl_1594167385094/work
packaging==20.4
pandas @ file:///C:/ci/pandas_1592833613419/work
pandocfilters==1.4.2
paramiko==2.7.1
parso==0.7.0
partd==1.1.0
path==13.1.0
pathlib2==2.3.5
pathtools==0.1.2
patsy==0.5.1
pep8==1.7.1
pexpect==4.8.0
pickleshare==0.7.5
Pillow @ file:///C:/ci/pillow_1594298230227/work
pkginfo==1.5.0.1
pluggy==0.13.1
ply==3.11
prometheus-client==0.8.0
prompt-toolkit==3.0.5
psutil==5.7.0
py @ file:///tmp/build/80754af9/py_1593446248552/work
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.6.0
pycosat==0.6.3
pycparser @ file:///tmp/build/80754af9/pycparser_1594388511720/work
pycurl==7.43.0.5
pydocstyle @ file:///tmp/build/80754af9/pydocstyle_1592848020240/work
pyflakes==2.2.0
Pygments==2.6.1
PyHamcrest==2.0.2
pylint @ file:///C:/ci/pylint_1592482039483/work
pymongo==3.11.0
PyNaCl @ file:///C:/ci/pynacl_1595000047588/work
pyodbc===4.0.0-unsupported
pyOpenSSL @ file:///tmp/build/80754af9/pyopenssl_1594392929924/work
pyparsing==2.4.7
pyreadline==2.1
pyrsistent==0.16.0
PySocks==1.7.1
pytest==5.4.3
python-crontab==2.5.1
python-dateutil==2.8.1
python-jsonrpc-server @ file:///tmp/build/80754af9/python-jsonrpc-server_1594397536060/work
python-language-server @ file:///C:/ci/python-language-server_1594162130238/work
python3-openid==3.2.0
pytz==2020.1
PyWavelets==1.1.1
pywin32==227
pywin32-ctypes==0.2.0
pywinpty==0.5.7
PyYAML==5.3.1
pyzmq==19.0.1
QDarkStyle==2.8.1
QtAwesome==0.7.2
qtconsole @ file:///tmp/build/80754af9/qtconsole_1592848611704/work
QtPy==1.9.0
redis==3.5.3
regex @ file:///C:/ci/regex_1593419644658/work
requests @ file:///tmp/build/80754af9/requests_1592841827918/work
requests-oauthlib==1.3.0
rope==0.17.0
Rtree==0.9.4
ruamel-yaml==0.15.87
schedule==0.6.0
scikit-image==0.16.2
scikit-learn @ file:///C:/ci/scikit-learn_1592853510272/work
scipy @ file:///C:/ci/scipy_1592916963468/work
seaborn==0.10.1
Send2Trash==1.5.0
service-identity==18.1.0
simplegeneric==0.8.1
singledispatch==3.4.0.3
sip==4.19.13
six==1.15.0
snowballstemmer==2.0.0
sortedcollections==1.2.1
sortedcontainers==2.2.2
soupsieve==2.0.1
Sphinx @ file:///tmp/build/80754af9/sphinx_1594223420021/work
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==1.0.3
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.4
sphinxcontrib-websupport @ file:///tmp/build/80754af9/sphinxcontrib-websupport_1593446360927/work
spyder @ file:///C:/ci/spyder_1594830825244/work
spyder-kernels @ file:///C:/ci/spyder-kernels_1594751670175/work
SQLAlchemy @ file:///C:/ci/sqlalchemy_1593445271541/work
sqlparse==0.2.4
statsmodels==0.11.1
sympy @ file:///C:/ci/sympy_1594234545115/work
tables==3.6.1
tblib==1.6.0
terminado==0.8.3
testpath==0.4.4
threadpoolctl @ file:///tmp/tmp9twdgx9k/threadpoolctl-2.1.0-py3-none-any.whl
toml @ file:///tmp/build/80754af9/toml_1592853716807/work
toolz==0.10.0
tornado==6.0.4
tqdm @ file:///tmp/build/80754af9/tqdm_1593446365756/work
traitlets==4.3.3
typing-extensions @ file:///tmp/build/80754af9/typing_extensions_1592847887441/work
tzlocal @ file:///C:/ci/tzlocal_1597417685537/work
ujson==1.35
unicodecsv==0.14.1
urllib3==1.25.9
vine==1.3.0
virtualenv==20.0.31
watchdog @ file:///C:/ci/watchdog_1593447437088/work
wcwidth @ file:///tmp/build/80754af9/wcwidth_1593447189090/work
webencodings==0.5.1
Werkzeug==1.0.1
widgetsnbextension==3.5.1
win-inet-pton==1.1.0
win-unicode-console==0.5
wincertstore==0.2
wrapt==1.11.2
xlrd==1.2.0
XlsxWriter==1.2.9
xlwings==0.19.5
xlwt==1.3.0
xmltodict==0.12.0
yapf @ file:///tmp/build/80754af9/yapf_1593528177422/work
zict==2.0.0
zipp==3.1.0
zope.event==4.4
zope.interface==4.7.1
import 'package:flutter/material.dart';
class Background extends StatelessWidget {
class Background extends StatefulWidget {
final Widget child;
const Background({
Key key,
@required this.child,
}) : super(key: key);
@override
_BackgroundState createState() => _BackgroundState();
}
class _BackgroundState extends State<Background> {
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
......@@ -17,22 +22,22 @@ class Background extends StatelessWidget {
alignment: Alignment.center,
children: <Widget>[
Positioned(
top: 0,
left: 0,
child: Image.asset(
"assets/images/main_top.png",
width: size.width * 0.35,
),
),
Positioned(
bottom: 0,
right: 0,
top: 50,
left: 25,
child: Image.asset(
"assets/images/login_bottom.png",
width: size.width * 0.4,
"assets/images/pawprint.png",
width: size.width * 0.25,
),
),
child,
// Positioned(
// bottom: 0,
// right: 0,
// // child: Image.asset(
// // "assets/images/login_bottom.png",
// // width: size.width * 0.4,
// // ),
// ),
widget.child,
],
),
);
......
import 'dart:convert';
import 'dart:developer';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/Login/components/background.dart';
import 'package:fitnessapp/Screens/Signup/signup_screen.dart';
......@@ -6,57 +10,99 @@ import 'package:fitnessapp/components/rounded_button.dart';
import 'package:fitnessapp/components/rounded_input_field.dart';
import 'package:fitnessapp/components/rounded_password_field.dart';
import 'package:flutter_svg/svg.dart';
import 'package:http/http.dart';
import '../../../loading.dart';
class Body extends StatelessWidget {
class Body extends StatefulWidget {
const Body({
Key key,
}) : super(key: key);
@override
_BodyState createState() => _BodyState();
}
class _BodyState extends State<Body> {
bool loading = false;
String token = '';
String username = '';
String password = '';
login() async {
SearchService.login(username, password).then((responseBody) {
dynamic data = jsonDecode(responseBody);
print(data);
setState(() {
token = data['token'];
if (token.length > 0) {
loading = false;
}
});
});
}
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Background(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"LOGIN",
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(height: size.height * 0.03),
SvgPicture.asset(
"assets/icons/login.svg",
height: size.height * 0.35,
),
SizedBox(height: size.height * 0.03),
RoundedInputField(
hintText: "Your Email",
onChanged: (value) {},
),
RoundedPasswordField(
onChanged: (value) {},
),
RoundedButton(
text: "LOGIN",
press: () {},
),
SizedBox(height: size.height * 0.03),
AlreadyHaveAnAccountCheck(
press: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return SignUpScreen();
return loading
? Loading()
: Background(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// Text(
// "LOGIN",
// style: TextStyle(fontWeight: FontWeight.bold),
// ),
SizedBox(height: size.height * 0.1),
// SvgPicture.asset(
// "assets/icons/login.svg",
// height: size.height * 0.35,
// ),
SizedBox(height: 200),
RoundedInputField(
hintText: "Your Username",
onChanged: (value) {
setState(() {
username = value;
});
},
),
RoundedPasswordField(
onChanged: (value) {
setState(() {
password = value;
});
},
),
RoundedButton(
text: "LOGIN",
press: () {
setState(() {
loading = true;
});
this.login();
},
),
SizedBox(height: size.height * 0.03),
AlreadyHaveAnAccountCheck(
press: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return SignUpScreen();
},
),
);
},
),
);
},
],
),
),
],
),
),
);
);
}
}
import 'package:fitnessapp/Screens/WalkingPatternRecognition/home.dart';
import 'package:fitnessapp/constants.dart';
import 'package:flutter/material.dart';
class MainNavigation extends StatefulWidget {
Function open;
MainNavigation(this.open);
@override
_MainNavigationState createState() => _MainNavigationState();
}
class _MainNavigationState extends State<MainNavigation>
with TickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
}
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
),
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(
top: MediaQuery.of(context).padding.top,
),
),
Padding(
padding: const EdgeInsets.only(
top: 20,
),
child: SizedBox(
height: 60,
width: 300,
child: TabBar(
indicatorColor: kPrimaryColor,
isScrollable: true,
labelColor: Colors.grey,
controller: _tabController,
labelPadding: EdgeInsets.symmetric(horizontal: 50.0),
tabs: <Widget>[
Tab(
child: Text("Walking"),
),
Tab(
child: Text("Running"),
)
],
),
),
),
SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height - 80,
child: TabBarView(
controller: _tabController,
children: <Widget>[Home(activityId: 1), Home(activityId: 2)],
),
)
],
),
),
);
}
}
import 'dart:io';
import 'package:fitnessapp/constants.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/annual_details_screen.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/monthly_details_screen.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/weekly_details_screen.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/daily_details_screen.dart';
class Navigation extends StatefulWidget {
Function open;
Navigation(this.open);
@override
_NavigationState createState() => _NavigationState();
}
class _NavigationState extends State<Navigation> with TickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 4, vsync: this);
}
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
),
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(
top: 15,
),
child: SizedBox(
height: 60,
width: 300,
child: TabBar(
indicatorColor: kPrimaryColor,
isScrollable: true,
labelColor: Colors.grey,
controller: _tabController,
tabs: <Widget>[
Tab(
child: Text("Daily"),
),
Tab(
child: Text("Weekly"),
),
Tab(
child: Text("Monthly"),
),
Tab(
child: Text("Anually"),
),
],
),
),
),
SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height - 80,
child: TabBarView(
controller: _tabController,
children: <Widget>[
DailyDetailsScreen(),
WeeklyDetailsScreen(),
MonthlyDetailsScreen(),
AnnualDetailsScreen(),
],
),
)
],
),
),
);
}
}
......@@ -4,6 +4,7 @@ import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:fitnessapp/loading.dart';
class AnnualDetailsScreen extends StatefulWidget {
@override
......@@ -11,6 +12,7 @@ class AnnualDetailsScreen extends StatefulWidget {
}
class _AnnualDetailsScreenState extends State<AnnualDetailsScreen> {
bool loading = true;
String year;
static dynamic value, highlights, activity = [];
int hrs, mins;
......@@ -68,6 +70,7 @@ class _AnnualDetailsScreenState extends State<AnnualDetailsScreen> {
dynamic data = jsonDecode(responseBody);
setState(() {
highlights = data[0]['Highlights'];
loading = false;
});
});
}
......@@ -80,68 +83,70 @@ class _AnnualDetailsScreenState extends State<AnnualDetailsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: buildDetailsAppBar(context),
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
return loading
? Loading()
: Scaffold(
resizeToAvoidBottomPadding: false,
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
AnnualChart(),
SizedBox(height: 15),
],
),
),
SizedBox(height: 20),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
Container(
padding:
EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
AnnualChart(),
SizedBox(height: 15),
],
),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
],
),
),
),
);
),
);
}
Row buildDateTitle() {
......@@ -198,7 +203,7 @@ class _AnnualDetailsScreenState extends State<AnnualDetailsScreen> {
fontSize: 20,
),
)
else if (mins > 1)
else if (mins >= 1)
Text(
"$hrs hrs $mins mins",
style: TextStyle(
......
import 'package:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/widgets/daily_chart.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'package:fitnessapp/loading.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'dart:convert';
......@@ -11,8 +12,9 @@ class DailyDetailsScreen extends StatefulWidget {
}
class _DailyDetailsScreenState extends State<DailyDetailsScreen> {
bool loading = true;
String finalDate = '';
static dynamic timePeriod = [];
static dynamic value = [];
static dynamic highlights = [];
static dynamic activity = [];
int hrs, mins;
......@@ -34,46 +36,53 @@ class _DailyDetailsScreenState extends State<DailyDetailsScreen> {
];
var date = new DateTime.now().toString();
var dateParse = DateTime.parse(date);
var month = months[dateParse.month - 1];
var formattedDate = "${dateParse.day} $month ${dateParse.year}";
String datee = "${dateParse.year}-0${dateParse.month}-${dateParse.day}";
setState(() {
finalDate = formattedDate.toString();
});
getTotalMinutes();
getHighlightsPerDay();
getActivityNameById();
getTotalMinutes(datee);
// getHighlightsPerDay(datee);
}
getActivityNameById() async {
SearchService.getActivityNameById().then((responseBody) {
print(responseBody);
dynamic data = jsonDecode(responseBody);
setState(() {
activity = data[0]['activity'];
print(activity);
});
});
}
getTotalMinutes() async {
SearchService.getTotalMinutesPerDay().then((responseBody) {
getTotalMinutes(day) async {
SearchService.getTotalMinutesPerDay(day).then((responseBody) {
dynamic data = jsonDecode(responseBody);
setState(() {
timePeriod = data[0]['minutes per day'];
timePeriod = timePeriod / 60;
value = data[0]['minutes per day'];
if (value != 0) {
value = value.toInt();
hrs = value ~/ 60;
mins = value % 60;
} else {
hrs = 0;
mins = 0;
}
});
});
}
getHighlightsPerDay() async {
SearchService.getHighlightsPerDay().then((responseBody) {
getHighlightsPerDay(datee) async {
print(datee);
SearchService.getHighlightsPerDay(datee).then((responseBody) {
dynamic data = jsonDecode(responseBody);
setState(() {
highlights = data[0]['Highlights'];
loading = false;
});
});
}
......@@ -86,68 +95,70 @@ class _DailyDetailsScreenState extends State<DailyDetailsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: buildDetailsAppBar(context),
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
return loading
? Loading()
: Scaffold(
resizeToAvoidBottomPadding: false,
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
DailyChart(),
SizedBox(height: 15),
],
),
),
SizedBox(height: 20),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
Container(
padding:
EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
DailyChart(),
SizedBox(height: 15),
],
),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
],
),
),
),
);
),
);
}
Row buildDateTitle() {
......@@ -204,7 +215,7 @@ class _DailyDetailsScreenState extends State<DailyDetailsScreen> {
fontSize: 20,
),
)
else if (mins > 1)
else if (mins >= 1)
Text(
"$hrs hrs $mins mins",
style: TextStyle(
......@@ -248,26 +259,4 @@ class _DailyDetailsScreenState extends State<DailyDetailsScreen> {
],
);
}
AppBar buildDetailsAppBar(BuildContext context) {
return AppBar(
backgroundColor: kBackgroundColor,
elevation: 0,
leading: IconButton(
icon: Icon(
Icons.arrow_back_ios,
color: kPrimaryColor,
),
onPressed: () {
Navigator.pop(context);
},
),
actions: <Widget>[
IconButton(
icon: SvgPicture.asset("assets/icons/search.svg"),
onPressed: () {},
),
],
);
}
}
import 'package:flutter/material.dart';
import 'Navigation.dart';
import 'package:fitnessapp/globals.dart' as globals;
class Home extends StatefulWidget {
Home({Key key, this.activityId}) : super(key: key);
final int activityId;
@override
_HomeState createState() => _HomeState(activityId);
}
class _HomeState extends State<Home> {
int activityId = 1;
_HomeState(this.activityId);
double left = 0;
double direction;
double MAX_LEFT = 0;
@override
void initState() {
super.initState();
setState(() {
globals.activityId = activityId;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(
builder: (context) {
MAX_LEFT = MediaQuery.of(context).size.width * 1.0 - 80;
return _buildBody();
},
),
);
}
Widget _buildBody() {
return GestureDetector(
onHorizontalDragUpdate: (update) {
left = left + update.delta.dx;
direction = update.delta.direction;
if (left <= 0) {
left = 0;
}
if (left > MAX_LEFT) {
left = MAX_LEFT;
}
setState(() {});
},
onHorizontalDragEnd: (end) {},
child: Container(
color: Color(0xFF0D8E53),
child: Stack(
children: <Widget>[
Positioned(
left: left,
top: left * 0.2,
bottom: left * 0.2 / 2,
child: Navigation(open),
),
],
),
),
);
}
void open() {
if (left == MAX_LEFT) {
direction = 1;
} else {
direction = 0;
}
}
}
import 'package:flutter/material.dart';
import 'MainNavigation.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
double left = 0;
double direction;
double MAX_LEFT = 0;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(
builder: (context) {
MAX_LEFT = MediaQuery.of(context).size.width * 1.0 - 80;
return _buildBody();
},
),
);
}
Widget _buildBody() {
return GestureDetector(
onHorizontalDragUpdate: (update) {
left = left + update.delta.dx;
direction = update.delta.direction;
if (left <= 0) {
left = 0;
}
if (left > MAX_LEFT) {
left = MAX_LEFT;
}
setState(() {});
},
onHorizontalDragEnd: (end) {},
child: Container(
color: Color(0xFF0D8E53),
child: Stack(
children: <Widget>[
Positioned(
left: left,
top: left * 0.2,
bottom: left * 0.2 / 2,
child: MainNavigation(open),
),
],
),
),
);
}
void open() {
if (left == MAX_LEFT) {
direction = 1;
} else {
direction = 0;
}
}
}
......@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'dart:convert';
import 'package:fitnessapp/loading.dart';
class MonthlyDetailsScreen extends StatefulWidget {
@override
......@@ -11,6 +12,7 @@ class MonthlyDetailsScreen extends StatefulWidget {
}
class _MonthlyDetailsScreenState extends State<MonthlyDetailsScreen> {
bool loading = true;
String monthAndYear, month = '';
int hrs, mins;
static dynamic value, activity, highlights = [];
......@@ -70,6 +72,7 @@ class _MonthlyDetailsScreenState extends State<MonthlyDetailsScreen> {
dynamic data = jsonDecode(responseBody);
setState(() {
highlights = data[0]['Highlights'];
loading = false;
});
});
}
......@@ -82,68 +85,70 @@ class _MonthlyDetailsScreenState extends State<MonthlyDetailsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: buildDetailsAppBar(context),
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
return loading
? Loading()
: Scaffold(
resizeToAvoidBottomPadding: false,
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
MonthlyChart(),
SizedBox(height: 15),
],
),
),
SizedBox(height: 20),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
Container(
padding:
EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
MonthlyChart(),
SizedBox(height: 15),
],
),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
],
),
),
),
);
),
);
}
Row buildDateTitle() {
......@@ -200,7 +205,7 @@ class _MonthlyDetailsScreenState extends State<MonthlyDetailsScreen> {
fontSize: 20,
),
)
else if (mins > 1)
else if (mins >= 1)
Text(
"$hrs hrs $mins mins",
style: TextStyle(
......@@ -245,25 +250,25 @@ class _MonthlyDetailsScreenState extends State<MonthlyDetailsScreen> {
);
}
AppBar buildDetailsAppBar(BuildContext context) {
return AppBar(
backgroundColor: kBackgroundColor,
elevation: 0,
leading: IconButton(
icon: Icon(
Icons.arrow_back_ios,
color: kPrimaryColor,
),
onPressed: () {
Navigator.pop(context);
},
),
actions: <Widget>[
IconButton(
icon: SvgPicture.asset("assets/icons/search.svg"),
onPressed: () {},
),
],
);
}
// AppBar buildDetailsAppBar(BuildContext context) {
// return AppBar(
// backgroundColor: kBackgroundColor,
// elevation: 0,
// leading: IconButton(
// icon: Icon(
// Icons.arrow_back_ios,
// color: kPrimaryColor,
// ),
// onPressed: () {
// Navigator.pop(context);
// },
// ),
// actions: <Widget>[
// IconButton(
// icon: SvgPicture.asset("assets/icons/search.svg"),
// onPressed: () {},
// ),
// ],
// );
// }
}
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:fitnessapp/globals.dart' as globals;
class SearchService {
static String ip = 'http://localhost:8080';
static String ip = 'http://192.168.1.2:8000';
static String username = 'Janadi';
static String password = 'janadi2.';
static String basicAuth =
'Basic ' + base64Encode(utf8.encode('$username:$password'));
//Login
static Future<String> login(username, password) async {
String url = '$ip/auth/';
var body = jsonEncode({"username": username, "password": password});
http.Response response = await http
.post(url,
headers: {
"Content-Type": "application/json",
},
body: body)
.then((http.Response response) {
return response;
});
return response.body;
}
//Daily
static Future<String> getActivityNameById() async {
String url = '$ip/getActivityNameById';
var body = jsonEncode({
"id": 1,
"id": globals.activityId,
});
http.Response response = await http
.post(url,
......@@ -28,9 +45,10 @@ class SearchService {
return response.body;
}
static Future<String> getTotalMinutesPerDay() async {
static Future<String> getTotalMinutesPerDay(day) async {
String url = '$ip/getTotalMinutesPerDay';
var body = jsonEncode({"activity": 2, "dog": 1, "date": "2020-07-01"});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "date": day});
http.Response response = await http
.post(url,
headers: {
......@@ -44,9 +62,10 @@ class SearchService {
return response.body;
}
static Future<String> getHighlightsPerDay() async {
static Future<String> getHighlightsPerDay(date) async {
String url = '$ip/highlightsPerDay';
var body = jsonEncode({"activity": 2, "dog": 1, "date": "2020-07-01"});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "date": date});
http.Response response = await http
.post(url,
headers: {
......@@ -64,7 +83,8 @@ class SearchService {
static Future<String> getTotalMinutesPerWeek(formattedDate) async {
String url = '$ip/getTotalMinutesPerWeek';
var body = jsonEncode({"activity": 2, "dog": 1, "date": formattedDate});
var body = jsonEncode(
{"activity": globals.activityId, "dog": 1, "date": formattedDate});
http.Response response = await http
.post(url,
headers: {
......@@ -80,7 +100,8 @@ class SearchService {
static Future<String> getTotalMinutesPerDayInWeek(date) async {
String url = '$ip/getTotalMinutesPerDayInWeek';
var body = jsonEncode({"activity": 2, "dog": 1, "date": date});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "date": date});
http.Response response = await http
.post(url,
headers: {
......@@ -97,7 +118,8 @@ class SearchService {
static Future<String> getHighlightsPerWeek(date) async {
String url = '$ip/highlightsPerWeek';
var body = jsonEncode({"activity": 2, "dog": 1, "date": date});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "date": date});
http.Response response = await http
.post(url,
headers: {
......@@ -115,8 +137,12 @@ class SearchService {
static Future<String> getWeeklyDetailsInMonth(year, month) async {
String url = '$ip/getWeeklyDetailsInMonth';
var body =
jsonEncode({"activity": 2, "dog": 1, "year": year, "month": month});
var body = jsonEncode({
"activity": globals.activityId,
"dog": 1,
"year": year,
"month": month
});
http.Response response = await http
.post(url,
headers: {
......@@ -133,7 +159,8 @@ class SearchService {
static Future<String> getTotalMinutesPerMonth(month) async {
String url = '$ip/getTotalMinutesPerMonth';
var body = jsonEncode({"activity": 2, "dog": 1, "month": month});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "month": month});
http.Response response = await http
.post(url,
headers: {
......@@ -150,7 +177,8 @@ class SearchService {
static Future<String> getHighlightsPerMonth(month) async {
String url = '$ip/highlightsPerMonth';
var body = jsonEncode({"activity": 2, "dog": 1, "month": month});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "month": month});
http.Response response = await http
.post(url,
headers: {
......@@ -168,7 +196,8 @@ class SearchService {
static Future<String> getTotalMinutesPerYear(year) async {
String url = '$ip/getTotalMinutesPerYear';
var body = jsonEncode({"activity": 2, "dog": 1, "year": year});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "year": year});
http.Response response = await http
.post(url,
headers: {
......@@ -186,7 +215,7 @@ class SearchService {
static Future<String> getMonthlyDetailsInYear(year) async {
String url = '$ip/getMonthlyDetailsInYear';
var body = jsonEncode({
"activity": 2,
"activity": globals.activityId,
"dog": 1,
"year": year,
});
......@@ -206,7 +235,8 @@ class SearchService {
static Future<String> getHighlightsPerYear(year) async {
String url = '$ip/highlightsPerYear';
var body = jsonEncode({"activity": 2, "dog": 1, "year": year});
var body =
jsonEncode({"activity": globals.activityId, "dog": 1, "year": year});
http.Response response = await http
.post(url,
headers: {
......
......@@ -6,6 +6,7 @@ import 'package:flutter_svg/svg.dart';
import 'dart:convert';
import 'package:jiffy/jiffy.dart';
import 'package:intl/intl.dart';
import 'package:fitnessapp/loading.dart';
class WeeklyDetailsScreen extends StatefulWidget {
@override
......@@ -13,6 +14,7 @@ class WeeklyDetailsScreen extends StatefulWidget {
}
class _WeeklyDetailsScreenState extends State<WeeklyDetailsScreen> {
bool loading = true;
DateTime startDate, endDate;
String finalStartDate, finalEndDate;
static dynamic activity = [];
......@@ -100,6 +102,7 @@ class _WeeklyDetailsScreenState extends State<WeeklyDetailsScreen> {
dynamic data = jsonDecode(responseBody);
setState(() {
highlights = data[0]['Highlights'];
loading = false;
});
});
}
......@@ -112,68 +115,71 @@ class _WeeklyDetailsScreenState extends State<WeeklyDetailsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: buildDetailsAppBar(context),
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
return loading
? Loading()
: Scaffold(
resizeToAvoidBottomPadding: false,
// appBar: buildDetailsAppBar(context),
body: Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 50),
WeeklyChart(),
SizedBox(height: 15),
],
),
),
SizedBox(height: 20),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
Container(
padding:
EdgeInsets.symmetric(horizontal: 20, vertical: 25),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 53,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 50),
WeeklyChart(),
SizedBox(height: 15),
],
),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
offset: Offset(0, 21),
blurRadius: 54,
color: Colors.black.withOpacity(0.05),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
],
),
),
),
);
),
);
}
Row buildDateTitle() {
......@@ -230,7 +236,7 @@ class _WeeklyDetailsScreenState extends State<WeeklyDetailsScreen> {
fontSize: 20,
),
)
else if (mins > 1)
else if (mins >= 1)
Text(
"$hrs hrs $mins mins",
style: TextStyle(
......
......@@ -3,6 +3,7 @@ import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'dart:convert';
import 'package:fitnessapp/loading.dart';
class AnnualChart extends StatefulWidget {
@override
......@@ -10,82 +11,97 @@ class AnnualChart extends StatefulWidget {
}
class _AnnualChartState extends State<AnnualChart> {
static dynamic data=[];
bool loading = true;
static dynamic data = [];
List<int> timePeriodArray = new List(12);
getCurrentYear(){
var date = new DateTime.now().toString();
var dateParse = DateTime.parse(date);
print("heree");
getMonthlyDetailsInYear(dateParse.year);
getCurrentYear() {
var date = new DateTime.now().toString();
var dateParse = DateTime.parse(date);
getMonthlyDetailsInYear(dateParse.year);
}
getMonthlyDetailsInYear(currentYear) async{
print("dateParse.year");
var year =["JAN","FEB","MARCH","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
getMonthlyDetailsInYear(currentYear) async {
var year = [
"JAN",
"FEB",
"MARCH",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"
];
SearchService.getMonthlyDetailsInYear(currentYear).then((responseBody) {
dynamic jsondata = jsonDecode(responseBody);
print(jsondata);
setState((){
data = jsondata[0]['data'];
for(var i=0 ; i< data.length; i++){
int time = data[i]['timePeriod'];
String date =data[i]['date'];
dynamic jsondata = jsonDecode(responseBody);
print(jsondata);
setState(() {
data = jsondata[0]['data'];
for (var i = 0; i < data.length; i++) {
int time = data[i]['timePeriod'];
String date = data[i]['date'];
DateTime myDatetime = DateTime.parse(date);
var month = year[myDatetime.month-1];
if(data[i]['timePeriod']== null){
time=0;
var month = year[myDatetime.month - 1];
if (data[i]['timePeriod'] == null) {
time = 0;
}
switch (month) {
case 'JAN':
timePeriodArray[0]=time;
timePeriodArray[0] = time;
break;
case 'FEB':
timePeriodArray[1]=time;
timePeriodArray[1] = time;
break;
case 'MAR':
timePeriodArray[2]= time;
timePeriodArray[2] = time;
break;
case 'APR':
timePeriodArray[3]=time ;
timePeriodArray[3] = time;
break;
case 'MAY':
timePeriodArray[4]=time;
timePeriodArray[4] = time;
break;
case 'JUN':
timePeriodArray[5]=time;
timePeriodArray[5] = time;
break;
case 'JUL':
timePeriodArray[6]=time;
timePeriodArray[6] = time;
break;
case 'AUG':
timePeriodArray[7]=time;
timePeriodArray[7] = time;
break;
case 'SEP':
timePeriodArray[8]=time;
timePeriodArray[8] = time;
break;
case 'OCT':
timePeriodArray[9]=time;
timePeriodArray[9] = time;
break;
case 'NOV':
timePeriodArray[10]=time;
timePeriodArray[10] = time;
break;
case 'DEC':
timePeriodArray[11]=time;
timePeriodArray[11] = time;
break;
}
}
}
}
loading = false;
});
});
}
@override
Widget build(BuildContext context) {
void initState() {
super.initState();
getCurrentYear();
}
@override
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 1.7,
child: BarChart(
......@@ -113,32 +129,31 @@ class _AnnualChartState extends State<AnnualChart> {
}
getBarGroups(List<int> list) {
for (var i=0 ; i< list.length; i++){
if(list[i]== null){
list[i]= 0;
for (var i = 0; i < list.length; i++) {
if (list[i] == null) {
list[i] = 0;
}
}
// List<double> barChartDatas = list.map((s) => s.toDouble()).toList();
// List<double> barChartDatas = list.map((s) => s.toDouble()).toList();
List<double> barChartDatas = [6, 10, 8, 7, 10, 15, 9, 12, 11,10,9,4];
List<double> barChartDatas = [6, 10, 8, 7, 10, 15, 9, 12, 10, 0, 0, 0];
List<BarChartGroupData> barChartGroups = [];
barChartDatas.asMap().forEach(
(i, value) => barChartGroups.add(
BarChartGroupData(
x: i,
barRods: [
BarChartRodData(
y: value,
//This is not the proper way, this is just for demo
color: i == 6 ? kPrimaryColor : kTextLightColor,
width: 15,
)
],
),
),
);
BarChartGroupData(
x: i,
barRods: [
BarChartRodData(
y: value,
//This is not the proper way, this is just for demo
color: kPrimaryColor,
width: 15,
)
],
),
),
);
return barChartGroups;
}
......
import 'package:fitnessapp/constants.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:fitnessapp/loading.dart';
class DailyChart extends StatefulWidget {
@override
_DailyChartState createState() => _DailyChartState();
}
class _DailyChartState extends State<DailyChart> {
@override
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 1.7,
child: BarChart(
......@@ -46,23 +38,48 @@ class _DailyChartState extends State<DailyChart> {
}
getBarGroups() {
List<double> barChartDatas = [1,2 , 3, 3 , 4, 5, 4,5.5,1,2,3,0.5,5,3.5,4,3,3,2,1,0.5,2,2,2,5];
List<double> barChartDatas = [
1,
2,
3,
3,
4,
5,
4,
5.5,
1,
2,
3,
0.5,
5,
3.5,
4,
3,
3,
2,
1,
0.5,
2,
2,
2,
5
];
List<BarChartGroupData> barChartGroups = [];
barChartDatas.asMap().forEach(
(i, value) => barChartGroups.add(
BarChartGroupData(
x: i,
barRods: [
BarChartRodData(
y: value,
//This is not the proper way, this is just for demo
color: i == 4 ? kPrimaryColor : kTextLightColor,
width: 5,
)
],
),
),
);
BarChartGroupData(
x: i,
barRods: [
BarChartRodData(
y: value,
//This is not the proper way, this is just for demo
color: i == 4 ? kTextLightColor : kPrimaryColor,
width: 5,
)
],
),
),
);
return barChartGroups;
}
......
......@@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'dart:convert';
import 'package:fitnessapp/loading.dart';
class MonthlyChart extends StatefulWidget {
@override
......@@ -11,6 +12,7 @@ class MonthlyChart extends StatefulWidget {
}
class _MonthlyChartState extends State<MonthlyChart> {
bool loading = true;
double time;
static dynamic data = [];
List<dynamic> weekNumbers = [];
......@@ -33,6 +35,7 @@ class _MonthlyChartState extends State<MonthlyChart> {
timePeriods[3] = data[3].toDouble();
timePeriods[4] = data[4].toDouble();
});
loading = false;
});
}
......@@ -46,26 +49,28 @@ class _MonthlyChartState extends State<MonthlyChart> {
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 1.7,
child: BarChart(
BarChartData(
barGroups: getBarGroups(timePeriods),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(
leftTitles: SideTitles(
showTitles: false,
),
bottomTitles: SideTitles(
showTitles: true,
getTitles: getWeeks,
textStyle: TextStyle(
color: kTextLightColor,
fontSize: 15,
fontWeight: FontWeight.bold,
child: loading
? Loading()
: BarChart(
BarChartData(
barGroups: getBarGroups(timePeriods),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(
leftTitles: SideTitles(
showTitles: false,
),
bottomTitles: SideTitles(
showTitles: true,
getTitles: getWeeks,
textStyle: TextStyle(
color: kTextLightColor,
fontSize: 15,
fontWeight: FontWeight.bold,
),
),
),
),
),
),
),
),
);
}
}
......@@ -80,7 +85,7 @@ getBarGroups(List<double> barChartData) {
BarChartRodData(
y: value,
//This is not the proper way, this is just for demo
color: i == 2 ? kPrimaryColor : kTextLightColor,
color: kPrimaryColor,
width: 15,
)
],
......
......@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'package:intl/intl.dart';
import 'dart:convert';
import 'package:fitnessapp/loading.dart';
class WeeklyChart extends StatefulWidget {
@override
......@@ -11,6 +12,7 @@ class WeeklyChart extends StatefulWidget {
}
class _WeeklyChartState extends State<WeeklyChart> {
bool loading = true;
static dynamic data = [];
List<int> timePeriodArray = new List(7);
DateTime startDate, endDate;
......@@ -60,6 +62,7 @@ class _WeeklyChartState extends State<WeeklyChart> {
break;
}
}
loading = false;
});
});
}
......@@ -74,26 +77,28 @@ class _WeeklyChartState extends State<WeeklyChart> {
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 1.7,
child: BarChart(
BarChartData(
barGroups: getBarGroups(timePeriodArray),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(
leftTitles: SideTitles(
showTitles: false,
),
bottomTitles: SideTitles(
showTitles: true,
getTitles: getWeek,
textStyle: TextStyle(
color: kTextLightColor,
fontSize: 12,
fontWeight: FontWeight.bold,
child: loading
? Loading()
: BarChart(
BarChartData(
barGroups: getBarGroups(timePeriodArray),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(
leftTitles: SideTitles(
showTitles: false,
),
bottomTitles: SideTitles(
showTitles: true,
getTitles: getWeek,
textStyle: TextStyle(
color: kTextLightColor,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
),
),
),
),
),
),
);
}
}
......@@ -116,7 +121,7 @@ getBarGroups(List<int> list) {
BarChartRodData(
y: value,
//This is not the proper way, this is just for demo
color: i == 4 ? kPrimaryColor : kTextLightColor,
color: i == 4 ? kTextLightColor : kPrimaryColor,
width: 16,
)
],
......
import 'package:flutter/material.dart';
//const kPrimaryColor = Color(0xFF6F35A5);
const kPrimaryLightColor = Color(0xFFF1E6FF);
const kPrimaryGreenColor = Color(0xFF55BD8B);
const kPrimaryLightColor = Color(0xF8FFEC);
const kTextColor = Color(0xFF1E2432);
const kTextMediumColor = Color(0xFF53627C);
const kTextLightColor = Color(0xFFACB1C0);
const kPrimaryColor = Color(0xFF0D8E53);
// const kPrimaryColor = Color(0xFF0D8E53);
const kPrimaryColor = Color(0xFF388E3C);
const kBackgroundColor = Color(0xFFFCFCFC);
const kInactiveChartColor = Color(0xFFEAECEF);
\ No newline at end of file
const kInactiveChartColor = Color(0xFFEAECEF);
const kPrimaryGreenColor = Color(0xFF55BD8B);
\ No newline at end of file
library my_prj.globals;
int activityId;
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:fitnessapp/constants.dart';
class Loading extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: kBackgroundColor,
child: Center(
child: SpinKitChasingDots(
color: kPrimaryColor,
size: 50.0,
),
),
);
}
}
import 'package:fitnessapp/Screens/DogBreedRecognition/test.dart';
import 'package:flutter/material.dart';
import 'package:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/monthly_details_screen.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/home_page.dart';
import 'Screens/DogBreedRecognition/dog_breed_identification_screen.dart';
import 'Screens/DogBreedRecognition/dog_details_screen.dart';
import 'Screens/DogBreedRecognition/test2.dart';
import 'package:fitnessapp/constants.dart';
void main() => runApp(MyApp());
......@@ -13,13 +11,13 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Doggy App',
title: 'Dog Behavioural Monitoring System',
theme: ThemeData(
primaryColor: kPrimaryColor,
scaffoldBackgroundColor: Colors.white,
),
debugShowCheckedModeBanner: false,
//home: DogDetails(),
//home: HomePage(),
//home: MonthlyDetailsScreen(),
//initialRoute: '/',
home: Test2(),
......
......@@ -7,7 +7,7 @@ packages:
name: animations
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
version: "1.1.1"
archive:
dependency: transitive
description:
......@@ -126,7 +126,7 @@ packages:
name: equatable
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.5"
version: "1.2.0"
fake_async:
dependency: transitive
description:
......@@ -195,13 +195,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.9"
flutter_spinkit:
dependency: "direct main"
description:
name: flutter_spinkit
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.2+1"
flutter_svg:
dependency: "direct main"
description:
name: flutter_svg
url: "https://pub.dartlang.org"
source: hosted
version: "0.18.1"
version: "0.18.0"
flutter_test:
dependency: "direct dev"
description: flutter
......@@ -281,7 +288,7 @@ packages:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.2"
version: "0.12.1"
http_parser:
dependency: transitive
description:
......@@ -295,14 +302,14 @@ packages:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.14"
version: "2.1.17"
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.7+7"
version: "0.6.7+10"
image_picker_for_web:
dependency: transitive
description:
......@@ -316,7 +323,7 @@ packages:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "1.1.1"
intl:
dependency: "direct main"
description:
......@@ -379,7 +386,7 @@ packages:
name: path_drawing
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.1+1"
version: "0.4.1"
path_parsing:
dependency: transitive
description:
......
......@@ -35,6 +35,7 @@ dependencies:
http: ^0.12.1
jiffy: ^3.0.1
quiver: ^2.1.3
flutter_spinkit: ^4.1.2
dev_dependencies:
flutter_test:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment