Commit 261b12ea authored by Janadi's avatar Janadi

07/09

parent 79e249b9
Pipeline #1239 failed with stages
......@@ -117,7 +117,17 @@
<workItem from="1593847616271" duration="976000" />
<workItem from="1593848625328" duration="12035000" />
<workItem from="1593928712254" duration="9601000" />
<workItem from="1594008948316" duration="5937000" />
<workItem from="1594008948316" duration="7494000" />
<workItem from="1594053607122" duration="1375000" />
<workItem from="1594181184553" duration="817000" />
<workItem from="1594199299357" duration="514000" />
<workItem from="1594199915321" duration="4876000" />
<workItem from="1594226316948" duration="389000" />
<workItem from="1594226728351" duration="3955000" />
<workItem from="1594267198159" duration="3927000" />
<workItem from="1594275568703" duration="337000" />
<workItem from="1594275932806" duration="5212000" />
<workItem from="1594311910954" duration="481000" />
</task>
<servers />
</component>
......@@ -157,11 +167,11 @@
<screen x="1920" y="0" width="1920" height="1040" />
</state>
<state x="2383" y="166" key="SettingsEditor/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1592973231446" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog" timestamp="1594008966957">
<state x="477" y="241" key="com.intellij.ide.util.TipDialog" timestamp="1594312305275">
<screen x="0" y="0" width="1536" height="824" />
</state>
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1594008966957" />
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1593772875660" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1593928731113" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@0.0.1536.824" timestamp="1594275933162" />
<state x="2516" y="304" key="com.intellij.ide.util.TipDialog/0.0.1536.824/1920.0.1920.1040@1920.0.1920.1040" timestamp="1594275574495" />
<state x="477" y="241" key="com.intellij.ide.util.TipDialog/0.0.1536.824@0.0.1536.824" timestamp="1594312305275" />
</component>
</project>
\ No newline at end of file
......@@ -26,7 +26,9 @@ SECRET_KEY = '^^46u_fc$#)x5ji*s#l3p6igr9*6fwknxevip$ozw8#-m=*#f0'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['192.168.1.21', 'localhost', '127.0.0.1']
# Application definition
......
......@@ -21,7 +21,7 @@ urlpatterns = [
path('addActivity', views.add_Activity),
path('getActivityData/<int:activity_id>', views.DataBasedOnActivity),
path('getActivityNameById', views.getActivityNameById),
# Daily
path('getTotalMinutesPerDay', views.getTotalMinutesPerDay),
......@@ -30,12 +30,12 @@ urlpatterns = [
# Weekly
path('getTotalMinutesPerWeek', views.getTotalMinutesPerWeek),
path('getTotalMinutesPerDay', views.getTotalMinutesPerDay),
path('getTotalMinutesPerDayInWeek', views.getTotalMinutesPerDayInWeek),
path('highlightsPerWeek', views.highlightsPerWeek),
# Monthly
path('getTotalMinutesPerMonth', views.getTotalMinutesPerMonth),
path('getTotalMinutesPerWeek', views.getTotalMinutesPerWeek),
path('getTotalMinutesPerWeekInMonth', views.getTotalMinutesPerWeekInMonth),
path('highlightsPerMonth', views.highlightsPerMonth),
# Annually
......
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: 0b8abb4724aa590dd0f429683339b1e045a1594d
channel: stable
project_type: app
# fitnessapp
A new Flutter application.
## Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 28
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "lk.sliit.flutterapp.fitnessapp"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lk.sliit.flutterapp.fitnessapp">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lk.sliit.flutterapp.fitnessapp">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="fitnessapp"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
package lk.sliit.flutterapp.fitnessapp
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lk.sliit.flutterapp.fitnessapp">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70.967" height="70.967" viewBox="0 0 70.967 70.967">
<defs>
<clipPath id="clip-path">
<rect id="Rectangle_20" data-name="Rectangle 20" width="35.357" height="39.973" rx="17.678" fill="#74dab3"/>
</clipPath>
<clipPath id="clip-path-2">
<path id="Path_486" data-name="Path 486" d="M3246.161,2542.872l5.922-12.73a7.155,7.155,0,0,1-.37-3.642c.419-1.562.735-8.992,1.179-9.993s1.931-1.32,2.252-.073a30.408,30.408,0,0,1,.2,5.054s4.521-9.295,5.019-9.986a1.247,1.247,0,0,1,1.68-.448,1.6,1.6,0,0,1,.549,1.134s.884-1.851,2.214-1.265a1.663,1.663,0,0,1,.864,2.038,1.313,1.313,0,0,1,1.637-.4,1.261,1.261,0,0,1,.6,1.8c-.214.46-.87,2.175-.87,2.175a1.358,1.358,0,0,1,1.542-.292,1.121,1.121,0,0,1,.447,1.613c-.23.519-4.8,10.888-5.162,11.709s-1.184,3.49-3.937,4.45l-5.234,12.665a3.107,3.107,0,0,1-3.9,1.743,20.335,20.335,0,0,1-3.359-1.542A3.1,3.1,0,0,1,3246.161,2542.872Z" transform="translate(-3245.871 -2510.809)" fill="#f7c139"/>
</clipPath>
</defs>
<g id="Group_575" data-name="Group 575" transform="translate(-272.579 -467.022)">
<g id="Group_326" data-name="Group 326" transform="translate(272.579 467.022)">
<circle id="Ellipse_32" data-name="Ellipse 32" cx="35.483" cy="35.483" r="35.483" fill="#cffcdd"/>
</g>
<g id="Group_497" data-name="Group 497" transform="translate(288.401 476.717)">
<g id="Group_491" data-name="Group 491">
<rect id="Rectangle_18" data-name="Rectangle 18" width="41.219" height="46.601" rx="20.61" fill="#39b784"/>
</g>
<g id="Group_495" data-name="Group 495" transform="translate(2.931 3.314)">
<rect id="Rectangle_19" data-name="Rectangle 19" width="35.357" height="39.973" rx="17.678" fill="#74dab3"/>
<g id="Group_494" data-name="Group 494" clip-path="url(#clip-path)">
<g id="Group_492" data-name="Group 492" transform="translate(-1.209 -0.919)">
<path id="Path_481" data-name="Path 481" d="M3294.485,2393.18l-17.518,45.185h4.768l16.678-45.031Z" transform="translate(-3276.968 -2393.18)" fill="#cffcdd"/>
</g>
<g id="Group_493" data-name="Group 493" transform="translate(8.357 -0.919)">
<path id="Path_482" data-name="Path 482" d="M3367.609,2393.18l-17.518,45.185h4.768l16.677-45.031Z" transform="translate(-3350.092 -2393.18)" fill="#cffcdd"/>
</g>
</g>
</g>
<g id="Group_496" data-name="Group 496" transform="translate(32.348 19.135)">
<circle id="Ellipse_72" data-name="Ellipse 72" cx="2.006" cy="2.006" r="2.006" fill="#137368"/>
</g>
</g>
<g id="Group_502" data-name="Group 502" transform="translate(285.176 490.642)">
<g id="Group_498" data-name="Group 498">
<path id="Path_483" data-name="Path 483" d="M3240.025,2503.1s3.408-.67,6.34-6.483,3.678-16.2,9.575-15.233,6.34,7.122,7.405,11.977,5.076,16.975,2.213,17.777-4.487-2.871-6.937-1.675-5.728,10.787-8.483,6.417S3235.916,2506.112,3240.025,2503.1Z" transform="translate(-3239.145 -2481.318)" fill="#fff"/>
</g>
<g id="Group_501" data-name="Group 501" transform="translate(0.88 3.858)">
<path id="Path_484" data-name="Path 484" d="M3246.161,2542.872l5.922-12.73a7.155,7.155,0,0,1-.37-3.642c.419-1.562.735-8.992,1.179-9.993s1.931-1.32,2.252-.073a30.408,30.408,0,0,1,.2,5.054s4.521-9.295,5.019-9.986a1.247,1.247,0,0,1,1.68-.448,1.6,1.6,0,0,1,.549,1.134s.884-1.851,2.214-1.265a1.663,1.663,0,0,1,.864,2.038,1.313,1.313,0,0,1,1.637-.4,1.261,1.261,0,0,1,.6,1.8c-.214.46-.87,2.175-.87,2.175a1.358,1.358,0,0,1,1.542-.292,1.121,1.121,0,0,1,.447,1.613c-.23.519-4.8,10.888-5.162,11.709s-1.184,3.49-3.937,4.45l-5.234,12.665a3.107,3.107,0,0,1-3.9,1.743,20.335,20.335,0,0,1-3.359-1.542A3.1,3.1,0,0,1,3246.161,2542.872Z" transform="translate(-3245.871 -2510.809)" fill="#f7c139"/>
<g id="Group_500" data-name="Group 500" clip-path="url(#clip-path-2)">
<g id="Group_499" data-name="Group 499" transform="translate(4.304 4.426)">
<path id="Path_485" data-name="Path 485" d="M3278.775,2578.746s2.726-1.547,7.61-16.683c0,0,2.5.611,4.549-3.736s6.166-13.683,6.166-13.683l2.6.842s-7.639,19.268-7.956,19.461-7.761,13.837-7.761,13.837l-2.91,2.431Z" transform="translate(-3278.775 -2544.644)" fill="#e09f0e"/>
</g>
</g>
</g>
</g>
<g id="Group_504" data-name="Group 504" transform="translate(293.471 484.106)">
<path id="Path_488" data-name="Path 488" d="M3304.539,2431.528a3.7,3.7,0,0,1-1.857,2.435.3.3,0,0,0,0,.5,3.823,3.823,0,0,1,1.973,2.516c.066.223.3.227.367,0a5,5,0,0,1,1.665-2.72.3.3,0,0,0-.017-.483,3.575,3.575,0,0,1-1.762-2.263C3304.836,2431.292,3304.6,2431.3,3304.539,2431.528Z" transform="translate(-3302.55 -2431.353)" fill="#fff"/>
</g>
<g id="Group_505" data-name="Group 505" transform="translate(315.021 507.271)">
<path id="Path_489" data-name="Path 489" d="M3469.728,2608.652a4.533,4.533,0,0,1-2.277,2.985.371.371,0,0,0,0,.61,4.692,4.692,0,0,1,2.417,3.084c.081.274.369.278.449,0a6.125,6.125,0,0,1,2.041-3.334.372.372,0,0,0-.021-.592,4.383,4.383,0,0,1-2.159-2.774C3470.092,2608.363,3469.8,2608.375,3469.728,2608.652Z" transform="translate(-3467.29 -2608.437)" fill="#fff"/>
</g>
<g id="Group_506" data-name="Group 506" transform="translate(311.006 491.842)">
<path id="Path_490" data-name="Path 490" d="M3439.038,2490.7a4.533,4.533,0,0,1-2.277,2.984.371.371,0,0,0,0,.61,4.69,4.69,0,0,1,2.417,3.084c.081.273.369.278.45,0a6.129,6.129,0,0,1,2.041-3.334.372.372,0,0,0-.021-.593,4.38,4.38,0,0,1-2.159-2.774C3439.4,2490.412,3439.11,2490.423,3439.038,2490.7Z" transform="translate(-3436.601 -2490.486)" fill="#fff"/>
</g>
</g>
</svg>
This diff is collapsed.
<svg id="Bold" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m15.997 3.985h2.191v-3.816c-.378-.052-1.678-.169-3.192-.169-3.159 0-5.323 1.987-5.323 5.639v3.361h-3.486v4.266h3.486v10.734h4.274v-10.733h3.345l.531-4.266h-3.877v-2.939c.001-1.233.333-2.077 2.051-2.077z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<g>
<polygon points="448,224 448,160 416,160 416,224 352,224 352,256 416,256 416,320 448,320 448,256 512,256 512,224 "/>
</g>
</g>
<g>
<g>
<path d="M160,224v64h90.528c-13.216,37.248-48.8,64-90.528,64c-52.928,0-96-43.072-96-96c0-52.928,43.072-96,96-96
c22.944,0,45.024,8.224,62.176,23.168l42.048-48.256C235.424,109.824,198.432,96,160,96C71.776,96,0,167.776,0,256
s71.776,160,160,160s160-71.776,160-160v-32H160z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70.967" height="70.967" viewBox="0 0 70.967 70.967">
<defs>
<clipPath id="clip-path">
<path id="Path_417" data-name="Path 417" d="M1769.035,2474.9h18.22a9.282,9.282,0,0,1,4.083-2.429c2.067-.362,10.983-4.057,12.4-4.083s2.61,1.55,1.318,2.61a39.416,39.416,0,0,1-5.84,3s13.412.233,14.5.439a1.617,1.617,0,0,1,1.447,1.731,2.081,2.081,0,0,1-1.033,1.266s2.662.026,2.7,1.912a2.159,2.159,0,0,1-1.925,2.132,1.7,1.7,0,0,1,1.369,1.705,1.637,1.637,0,0,1-1.783,1.693c-.659,0-3.035.167-3.035.167s1.3.479,1.187,1.655a1.456,1.456,0,0,1-1.654,1.408c-.737.013-15.44.31-16.6.336s-4.755.517-7.391-2.2l-17.767.774a4.032,4.032,0,0,1-4.184-3.631,26.357,26.357,0,0,1-.025-4.8A4.026,4.026,0,0,1,1769.035,2474.9Z" transform="translate(-1764.924 -2468.387)" fill="#2baf76"/>
</clipPath>
<clipPath id="clip-path-2">
<path id="Path_421" data-name="Path 421" d="M1797.684,2500.227l.173-8.283a9.286,9.286,0,0,1-2.429-4.083c-.362-2.067-4.057-10.982-4.083-12.4s1.55-2.61,2.61-1.318a39.393,39.393,0,0,1,3,5.84s.233-4.12.439-5.206a1.618,1.618,0,0,1,1.731-1.447,2.083,2.083,0,0,1,1.266,1.033s.026-2.661,1.912-2.7a2.158,2.158,0,0,1,2.132,1.925,1.7,1.7,0,0,1,1.706-1.369,1.636,1.636,0,0,1,1.692,1.783c0,.329-.014,1.52-.014,1.52s.479-1.3,1.655-1.187a1.455,1.455,0,0,1,1.408,1.654c.013.737.491,7.663.517,8.826s.517,4.755-2.2,7.391l.449,7.851a4.387,4.387,0,0,1-4.042,4.62,26.451,26.451,0,0,1-3.86.015A4.372,4.372,0,0,1,1797.684,2500.227Z" transform="translate(-1791.345 -2471.659)" fill="#f7c139"/>
</clipPath>
<clipPath id="clip-path-3">
<path id="Path_424" data-name="Path 424" d="M2060.926,2390.82h-5.21v-6.614a1.2,1.2,0,0,1,1.2-1.2h2.807a1.2,1.2,0,0,1,1.2,1.2Z" transform="translate(-2055.716 -2383.005)" fill="#137368"/>
</clipPath>
</defs>
<g id="Group_573" data-name="Group 573" transform="translate(-33.291 -467)">
<g id="Group_324" data-name="Group 324" transform="translate(33.291 467)">
<circle id="Ellipse_30" data-name="Ellipse 30" cx="35.483" cy="35.483" r="35.483" fill="#cffcdd"/>
</g>
<g id="Group_367" data-name="Group 367" transform="translate(45.138 516.328)" opacity="0.3">
<ellipse id="Ellipse_39" data-name="Ellipse 39" cx="24.761" cy="6.413" rx="24.761" ry="6.413" fill="#1baf88"/>
</g>
<g id="Group_368" data-name="Group 368" transform="translate(54.078 518.643)" opacity="0.3">
<ellipse id="Ellipse_40" data-name="Ellipse 40" cx="15.821" cy="4.097" rx="15.821" ry="4.097" fill="#1baf88"/>
</g>
<g id="Group_371" data-name="Group 371" transform="translate(41.051 488.951)">
<path id="Path_415" data-name="Path 415" d="M1769.035,2474.9h18.22a9.282,9.282,0,0,1,4.083-2.429c2.067-.362,10.983-4.057,12.4-4.083s2.61,1.55,1.318,2.61a39.416,39.416,0,0,1-5.84,3s13.412.233,14.5.439a1.617,1.617,0,0,1,1.447,1.731,2.081,2.081,0,0,1-1.033,1.266s2.662.026,2.7,1.912a2.159,2.159,0,0,1-1.925,2.132,1.7,1.7,0,0,1,1.369,1.705,1.637,1.637,0,0,1-1.783,1.693c-.659,0-3.035.167-3.035.167s1.3.479,1.187,1.655a1.456,1.456,0,0,1-1.654,1.408c-.737.013-15.44.31-16.6.336s-4.755.517-7.391-2.2l-17.767.774a4.032,4.032,0,0,1-4.184-3.631,26.357,26.357,0,0,1-.025-4.8A4.026,4.026,0,0,1,1769.035,2474.9Z" transform="translate(-1764.924 -2468.387)" fill="#2baf76"/>
<g id="Group_370" data-name="Group 370" clip-path="url(#clip-path)">
<g id="Group_369" data-name="Group 369" transform="translate(-2.947 14.596)">
<path id="Path_416" data-name="Path 416" d="M1744.041,2580.145s3.313,2.36,23.8-.178c0,0,.649,3.274,6.885,3.307s19.476-.234,19.476-.234l.431,3.518s-26.853,1.558-27.254,1.291-20.53-1.558-20.53-1.558l-4.453-2.093Z" transform="translate(-1742.393 -2579.967)" fill="#18935b"/>
</g>
</g>
</g>
<g id="Group_372" data-name="Group 372" transform="translate(59.901 494.729)">
<path id="Path_418" data-name="Path 418" d="M1912.052,2513.717a2.677,2.677,0,0,1,3.518-.8c2.227,1.136.312,3.385.312,3.385s2.85-1.448,4.52,1.136-3.406,2.9-3.406,2.9a2.064,2.064,0,0,1,.556,2.668c-.957,1.447-2.917-.156-2.917-.156a1.738,1.738,0,0,1-2.427,1.692c-2.338-.757-2.783-2.494-1.982-3.807a2.256,2.256,0,0,1-.98-2.984c.846-2.071,2.271-1.559,2.271-1.559A4.375,4.375,0,0,1,1912.052,2513.717Z" transform="translate(-1909.023 -2512.558)" fill="#fff"/>
</g>
<g id="Group_375" data-name="Group 375" transform="translate(44.507 489.379)">
<path id="Path_419" data-name="Path 419" d="M1797.684,2500.227l.173-8.283a9.286,9.286,0,0,1-2.429-4.083c-.362-2.067-4.057-10.982-4.083-12.4s1.55-2.61,2.61-1.318a39.393,39.393,0,0,1,3,5.84s.233-4.12.439-5.206a1.618,1.618,0,0,1,1.731-1.447,2.083,2.083,0,0,1,1.266,1.033s.026-2.661,1.912-2.7a2.158,2.158,0,0,1,2.132,1.925,1.7,1.7,0,0,1,1.706-1.369,1.636,1.636,0,0,1,1.692,1.783c0,.329-.014,1.52-.014,1.52s.479-1.3,1.655-1.187a1.455,1.455,0,0,1,1.408,1.654c.013.737.491,7.663.517,8.826s.517,4.755-2.2,7.391l.449,7.851a4.387,4.387,0,0,1-4.042,4.62,26.451,26.451,0,0,1-3.86.015A4.372,4.372,0,0,1,1797.684,2500.227Z" transform="translate(-1791.345 -2471.659)" fill="#f7c139"/>
<g id="Group_374" data-name="Group 374" clip-path="url(#clip-path-2)">
<g id="Group_373" data-name="Group 373" transform="translate(12.701 1.565)">
<path id="Path_420" data-name="Path 420" d="M1894.314,2484.116s.389,6.156.462,9.357-.373,7-2.421,8.263c0,0,1.158,7.006.535,9.322s-4.453,4.854-4.453,4.854l4.943-.267,1.692-3.3-.757-9.129,2.271-3.251.178-10.271-.925-6.073Z" transform="translate(-1888.436 -2483.627)" fill="#e09f0e"/>
</g>
</g>
</g>
<g id="Group_376" data-name="Group 376" transform="translate(60.236 498.604)">
<circle id="Ellipse_41" data-name="Ellipse 41" cx="1.425" cy="1.425" r="1.425" fill="#fff"/>
</g>
<g id="Group_377" data-name="Group 377" transform="translate(69.899 503.075)">
<circle id="Ellipse_42" data-name="Ellipse 42" cx="1.425" cy="1.425" r="1.425" fill="#fff"/>
</g>
<g id="Group_378" data-name="Group 378" transform="translate(61.823 496.154)">
<circle id="Ellipse_43" data-name="Ellipse 43" cx="0.863" cy="0.863" r="0.863" fill="#fff"/>
</g>
<g id="Group_379" data-name="Group 379" transform="translate(68.707 495.664)">
<circle id="Ellipse_44" data-name="Ellipse 44" cx="0.863" cy="0.863" r="0.863" fill="#fff"/>
</g>
<g id="Group_389" data-name="Group 389" transform="translate(74.237 477.781)">
<g id="Group_387" data-name="Group 387">
<g id="Group_383" data-name="Group 383" transform="translate(4.854)">
<path id="Path_422" data-name="Path 422" d="M2060.926,2390.82h-5.21v-6.614a1.2,1.2,0,0,1,1.2-1.2h2.807a1.2,1.2,0,0,1,1.2,1.2Z" transform="translate(-2055.716 -2383.005)" fill="#137368"/>
<g id="Group_382" data-name="Group 382" clip-path="url(#clip-path-3)">
<g id="Group_381" data-name="Group 381" transform="translate(-0.835 -1.533)">
<path id="Path_423" data-name="Path 423" d="M2054.983,2371.6s1.1,8.1-5.65,7.526v2.671h8.522v-10.509Z" transform="translate(-2049.333 -2371.287)" fill="#075146"/>
</g>
</g>
</g>
<g id="Group_385" data-name="Group 385" transform="translate(0 7.682)" opacity="0.58">
<g id="Group_384" data-name="Group 384">
<path id="Path_425" data-name="Path 425" d="M2023.878,2442.063s.757,16.144-3.117,14.852-1.826,2.182.8,2.271,1.87,3.518,5.032,2.939,2-1.069,3.7-2.628-.445-1.469-.779-2.939-1.225-14.829-1.225-14.829Z" transform="translate(-2018.613 -2441.729)" fill="#f9e491"/>
</g>
</g>
<g id="Group_386" data-name="Group 386" transform="translate(4.019 7.248)">
<rect id="Rectangle_17" data-name="Rectangle 17" width="6.88" height="1.536" rx="0.768" fill="#137368"/>
</g>
</g>
</g>
<g id="Group_391" data-name="Group 391" transform="translate(71.617 495.722)" opacity="0.58">
<g id="Group_390" data-name="Group 390">
<path id="Path_426" data-name="Path 426" d="M2004.449,2522.74s-4.828-3.833-5.745-2.171S2002.512,2521.8,2004.449,2522.74Z" transform="translate(-1998.587 -2520.151)" fill="#f9e491"/>
</g>
</g>
<g id="Group_393" data-name="Group 393" transform="translate(87.312 497.363)" opacity="0.58">
<g id="Group_392" data-name="Group 392">
<path id="Path_427" data-name="Path 427" d="M2118.564,2536.594s2.6-4.277,4.743-3.875S2119.32,2535.551,2118.564,2536.594Z" transform="translate(-2118.564 -2532.692)" fill="#f9e491"/>
</g>
</g>
<g id="Group_394" data-name="Group 394" transform="translate(79.784 488.024)">
<path id="Path_428" data-name="Path 428" d="M2061.034,2470.6c.191-2.3.274-2.737.331-4.979s.128-4.694.255-4.275a27.393,27.393,0,0,1,.114,3.338c.014,1.047-.038,6.686-.4,6.787S2061.012,2470.871,2061.034,2470.6Z" transform="translate(-2061.019 -2461.303)" fill="#fff"/>
</g>
<g id="Group_395" data-name="Group 395" transform="translate(83.349 489.074)">
<path id="Path_429" data-name="Path 429" d="M2088.285,2469.507s-.178,11.4.668,11.756.223-.757,0-2.761-.684-9.174-.684-9.174" transform="translate(-2088.269 -2469.329)" fill="#fff"/>
</g>
<g id="Group_396" data-name="Group 396" transform="translate(80.887 494.574)">
<path id="Path_430" data-name="Path 430" d="M2070.329,2511.372s-.512,6.323-.824,7.08.757.668.824-1.313S2070.329,2511.372,2070.329,2511.372Z" transform="translate(-2069.448 -2511.372)" fill="#fff"/>
</g>
<g id="Group_397" data-name="Group 397" transform="translate(81.594 487.805)">
<path id="Path_431" data-name="Path 431" d="M2074.958,2459.627s-.228,5.767,0,4.965A35.633,35.633,0,0,0,2074.958,2459.627Z" transform="translate(-2074.857 -2459.627)" fill="#fff"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="11.006" height="11.006" viewBox="0 0 11.006 11.006">
<path id="Icon" d="M10.006,7,7.722,4.716l-6.29,6.29L0,9.574l6.29-6.29L4.006,1a1,1,0,0,1,1-1h5a1,1,0,0,1,1,1V6A1,1,0,0,1,10.006,7Z" fill="#0d8e53"/>
</svg>
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22.5" height="17.5" viewBox="0 0 22.5 17.5">
<defs>
<clipPath id="clip-path">
<path id="_Icon_Color" data-name="🎨 Icon Color" d="M1.25,17.5a1.25,1.25,0,1,1,0-2.5h20a1.25,1.25,0,1,1,0,2.5Zm0-7.5a1.25,1.25,0,1,1,0-2.5h20a1.25,1.25,0,0,1,0,2.5Zm0-7.5a1.25,1.25,0,0,1,0-2.5h20a1.25,1.25,0,0,1,0,2.5Z" transform="translate(0.75 0.25)" fill="#0d8e53"/>
</clipPath>
</defs>
<g id="_22_Icons_Filled_Star" data-name="22) Icons/Filled/Star" transform="translate(-0.75 -0.25)">
<path id="_Icon_Color-2" data-name="🎨 Icon Color" d="M1.09,17.5a1.261,1.261,0,0,1,0-2.5H18.531a1.261,1.261,0,0,1,0,2.5ZM.841,10C.376,10,0,9.44,0,8.75S.376,7.5.841,7.5H14.286c.464,0,.841.56.841,1.25S14.75,10,14.286,10Zm.41-7.5a1.25,1.25,0,0,1,0-2.5h20a1.25,1.25,0,0,1,0,2.5Z" transform="translate(0.75 0.25)" fill="#0d8e53"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="3" height="14" viewBox="0 0 3 14">
<path id="more" d="M0,12.5A1.5,1.5,0,1,1,1.5,14,1.5,1.5,0,0,1,0,12.5Zm0-6A1.5,1.5,0,1,1,1.5,8,1.5,1.5,0,0,1,0,6.5Zm0-5A1.5,1.5,0,1,1,1.5,3,1.5,1.5,0,0,1,0,1.5Z" fill="#acb1c0"/>
</svg>
This diff is collapsed.
<svg xmlns="http://www.w3.org/2000/svg" width="21.454" height="19.762" viewBox="0 0 21.454 19.762">
<path id="Icon" d="M10.866,19.659a.828.828,0,0,1-.35-1.151L13.121,14,9.058,10.807,7.287,15.086a.879.879,0,0,1-.732.53l-5.574.565c-.031,0-.064.006-.094.006A.873.873,0,0,1,0,15.429a.858.858,0,0,1,.79-.931l5.039-.511L7.856,9.1a.813.813,0,0,1,.19-.28L11.655,5.3,9.3,3.494,6.456,6.285A.917.917,0,0,1,5.2,6.3a.819.819,0,0,1-.018-1.2l3.4-3.342a.923.923,0,0,1,1.192-.071L17.1,7.29l2.841-2.67a.919.919,0,0,1,1.256.008.819.819,0,0,1-.01,1.2l-3.4,3.2a.919.919,0,0,1-1.178.058L13.046,6.361,9.989,9.346l4.828,3.787a.821.821,0,0,1,.215,1.063l-2.96,5.128a.9.9,0,0,1-.779.438A.92.92,0,0,1,10.866,19.659Zm2.7-17.587a2.172,2.172,0,0,1,4.339,0,2.172,2.172,0,0,1-4.339,0Z" fill="#ff8c00"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="17.5" height="17.5" viewBox="0 0 17.5 17.5">
<defs>
<clipPath id="clip-path">
<path id="Mask" d="M16.334,17.5a1.159,1.159,0,0,1-.825-.341l-2.451-2.451a8.163,8.163,0,1,1,1.65-1.65l2.451,2.451a1.166,1.166,0,0,1-.824,1.991ZM8.167,2.334A5.833,5.833,0,1,0,14,8.167,5.84,5.84,0,0,0,8.167,2.334Z" transform="translate(0.25 0.25)" fill="#0d8e53"/>
</clipPath>
</defs>
<g id="_22_Icons_Filled_Star_Copy" data-name="22) Icons/Filled/Star Copy" transform="translate(-0.25 -0.25)">
<path id="Mask-2" data-name="Mask" d="M16.334,17.5a1.159,1.159,0,0,1-.825-.341l-2.451-2.451a8.163,8.163,0,1,1,1.65-1.65l2.451,2.451a1.166,1.166,0,0,1-.824,1.991ZM8.167,2.334A5.833,5.833,0,1,0,14,8.167,5.84,5.84,0,0,0,8.167,2.334Z" transform="translate(0.25 0.25)" fill="#0d8e53"/>
</g>
</svg>
This diff is collapsed.
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<g>
<path d="M512,97.248c-19.04,8.352-39.328,13.888-60.48,16.576c21.76-12.992,38.368-33.408,46.176-58.016
c-20.288,12.096-42.688,20.64-66.56,25.408C411.872,60.704,384.416,48,354.464,48c-58.112,0-104.896,47.168-104.896,104.992
c0,8.32,0.704,16.32,2.432,23.936c-87.264-4.256-164.48-46.08-216.352-109.792c-9.056,15.712-14.368,33.696-14.368,53.056
c0,36.352,18.72,68.576,46.624,87.232c-16.864-0.32-33.408-5.216-47.424-12.928c0,0.32,0,0.736,0,1.152
c0,51.008,36.384,93.376,84.096,103.136c-8.544,2.336-17.856,3.456-27.52,3.456c-6.72,0-13.504-0.384-19.872-1.792
c13.6,41.568,52.192,72.128,98.08,73.12c-35.712,27.936-81.056,44.768-130.144,44.768c-8.608,0-16.864-0.384-25.12-1.44
C46.496,446.88,101.6,464,161.024,464c193.152,0,298.752-160,298.752-298.688c0-4.64-0.16-9.12-0.384-13.568
C480.224,136.96,497.728,118.496,512,97.248z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
This diff is collapsed.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32.516" height="30.686" viewBox="0 0 32.516 30.686">
<defs>
<clipPath id="clip-path">
<ellipse id="Ellipse_56" data-name="Ellipse 56" cx="11.838" cy="11.838" rx="11.838" ry="11.838" fill="#fff"/>
</clipPath>
</defs>
<g id="Group_576" data-name="Group 576" transform="translate(-315.349 -613.418)">
<g id="Group_571" data-name="Group 571" transform="translate(315.349 613.418)" opacity="0.34">
<g id="Group_442" data-name="Group 442">
<g id="Group_429" data-name="Group 429" transform="translate(4.572 3.28)">
<ellipse id="Ellipse_55" data-name="Ellipse 55" cx="11.838" cy="11.838" rx="11.838" ry="11.838" fill="#fff"/>
<g id="Group_428" data-name="Group 428" clip-path="url(#clip-path)">
<g id="Group_427" data-name="Group 427" transform="translate(-2.266 2.701)" opacity="0.44">
<path id="Path_445" data-name="Path 445" d="M3587.085,2044.493s9.041,3.891,15.162.562,7.936-12.023,7.936-12.023l4.173,9.447-5.57,11.53s-8.814,3.757-9.525,4.1-13.423-5.3-13.423-5.3Z" transform="translate(-3585.837 -2033.032)" fill="#fff"/>
</g>
</g>
</g>
<g id="Group_430" data-name="Group 430" transform="translate(4.959)">
<path id="Path_446" data-name="Path 446" d="M3604.344,2007.273a15,15,0,0,0-1.66-2.549c-.623-.595-2.131.975-2.689.24s.966-1.982,2.636-2.912,2.8-.918,2.324.194-1.453.962-.871,2.007,1.382,2.153,1.382,2.153S3605.381,2007.088,3604.344,2007.273Z" transform="translate(-3599.878 -2001.379)" fill="#fff"/>
</g>
<g id="Group_431" data-name="Group 431" transform="translate(13.8 0.327)">
<path id="Path_447" data-name="Path 447" d="M3648.3,2006.538a9.562,9.562,0,0,0-.078-1.94c-.147-.53-1.487-.161-1.553-.747s1.177-.772,2.4-.736,1.834.41,1.211.866-1.111.053-1.133.816.054,1.632.054,1.632S3648.933,2006.775,3648.3,2006.538Z" transform="translate(-3646.671 -2003.11)" fill="#fff"/>
</g>
<g id="Group_432" data-name="Group 432" transform="translate(20.867 0.071)">
<path id="Path_448" data-name="Path 448" d="M3684.473,2006.348a12.952,12.952,0,0,0,1.063-2.4c.137-.73-1.708-1.082-1.438-1.831s1.888-.234,3.346.536,1.979,1.59.953,1.771-1.379-.6-1.861.315-.906,2.012-.906,2.012S3685.094,2007.011,3684.473,2006.348Z" transform="translate(-3684.07 -2001.753)" fill="#fff"/>
</g>
<g id="Group_433" data-name="Group 433" transform="translate(25.254 5.899)">
<path id="Path_449" data-name="Path 449" d="M3707.287,2035.514a9.622,9.622,0,0,0,1.6-1.114c.37-.411-.667-1.348-.206-1.72s1.29.581,1.919,1.635.643,1.776-.08,1.495-.646-.914-1.3-.52-1.354.928-1.354.928S3707.426,2036.176,3707.287,2035.514Z" transform="translate(-3707.287 -2032.598)" fill="#fff"/>
</g>
<g id="Group_434" data-name="Group 434" transform="translate(27.715 11.775)">
<path id="Path_450" data-name="Path 450" d="M3720.453,2065.752a13.092,13.092,0,0,0,2.653.016c.732-.168.313-2.02,1.117-2.073s.979,1.655.854,3.318-.675,2.477-1.257,1.6,0-1.52-1.043-1.6-2.231-.028-2.231-.028S3720.089,2066.6,3720.453,2065.752Z" transform="translate(-3720.313 -2063.695)" fill="#fff"/>
</g>
<g id="Group_435" data-name="Group 435" transform="translate(26.267 19.683)">
<path id="Path_451" data-name="Path 451" d="M3712.944,2106.051a9.617,9.617,0,0,0,1.83.669c.548.066.718-1.319,1.286-1.156s.267,1.387-.232,2.505-1.08,1.545-1.265.793.375-1.052-.325-1.364-1.535-.572-1.535-.572S3712.484,2106.544,3712.944,2106.051Z" transform="translate(-3712.651 -2105.551)" fill="#fff"/>
</g>
<g id="Group_436" data-name="Group 436" transform="translate(21.975 24.343)">
<path id="Path_452" data-name="Path 452" d="M3690.885,2130.209a13.044,13.044,0,0,0,1.516,2.167c.558.5,1.824-.91,2.33-.286s-.782,1.751-2.206,2.608-2.4.879-2.025-.1,1.235-.879.7-1.77-1.263-1.831-1.263-1.831S3689.989,2130.4,3690.885,2130.209Z" transform="translate(-3689.935 -2130.209)" fill="#fff"/>
</g>
<g id="Group_437" data-name="Group 437" transform="translate(15.135 26.165)">
<path id="Path_453" data-name="Path 453" d="M3655.755,2139.925a8.9,8.9,0,0,0,.1,1.8c.145.49,1.385.127,1.455.67s-1.082.735-2.216.721-1.71-.353-1.139-.786,1.032-.067,1.04-.776-.076-1.516-.076-1.516S3655.167,2139.714,3655.755,2139.925Z" transform="translate(-3653.734 -2139.854)" fill="#fff"/>
</g>
<g id="Group_438" data-name="Group 438" transform="translate(6.49 25.066)">
<path id="Path_454" data-name="Path 454" d="M3612.979,2134.557a14.377,14.377,0,0,0-1.225,2.645c-.167.809,1.877,1.234,1.563,2.061s-2.1.225-3.707-.658-2.169-1.8-1.025-1.986,1.521.69,2.073-.315,1.044-2.218,1.044-2.218S3612.3,2133.809,3612.979,2134.557Z" transform="translate(-3607.983 -2134.037)" fill="#fff"/>
</g>
<g id="Group_439" data-name="Group 439" transform="translate(3.554 21.162)">
<path id="Path_455" data-name="Path 455" d="M3596.267,2114.086a9.733,9.733,0,0,0-1.62,1.128c-.373.416.676,1.362.21,1.739s-1.305-.586-1.942-1.65-.652-1.795.079-1.511.654.923,1.319.524,1.368-.94,1.368-.94S3596.126,2113.417,3596.267,2114.086Z" transform="translate(-3592.441 -2113.376)" fill="#fff"/>
</g>
<g id="Group_440" data-name="Group 440" transform="translate(0 13.848)">
<path id="Path_456" data-name="Path 456" d="M3578.424,2077.874a13.417,13.417,0,0,0-2.72.048c-.747.19-.272,2.079-1.095,2.152s-1.044-1.673-.957-3.381.632-2.556,1.25-1.669.04,1.558,1.108,1.613,2.288-.026,2.288-.026S3578.776,2077,3578.424,2077.874Z" transform="translate(-3573.634 -2074.667)" fill="#fff"/>
</g>
<g id="Group_441" data-name="Group 441" transform="translate(2.306 6.342)">
<path id="Path_457" data-name="Path 457" d="M3590.618,2039.406a13.414,13.414,0,0,0-2.552-.943c-.765-.094-1.008,1.838-1.8,1.608s-.366-1.938.336-3.5,1.516-2.152,1.771-1.1-.529,1.467.447,1.906,2.142.807,2.142.807S3591.264,2038.719,3590.618,2039.406Z" transform="translate(-3585.837 -2034.943)" fill="#fff"/>
</g>
</g>
</g>
<g id="Group_572" data-name="Group 572" transform="translate(321.837 619.08)" opacity="0.34">
<g id="Group_445" data-name="Group 445" transform="translate(0 8.219)" opacity="0.5">
<ellipse id="Ellipse_57" data-name="Ellipse 57" cx="2.013" cy="2.013" rx="2.013" ry="2.013" fill="#fff"/>
</g>
<g id="Group_446" data-name="Group 446" transform="translate(10.12 14.077)" opacity="0.5">
<ellipse id="Ellipse_58" data-name="Ellipse 58" cx="2.013" cy="2.013" rx="2.013" ry="2.013" fill="#fff"/>
</g>
<g id="Group_447" data-name="Group 447" transform="translate(9.772)" opacity="0.5">
<ellipse id="Ellipse_59" data-name="Ellipse 59" cx="1.192" cy="1.192" rx="1.192" ry="1.192" fill="#fff"/>
</g>
<g id="Group_448" data-name="Group 448" transform="translate(5.38 14.987)" opacity="0.5">
<ellipse id="Ellipse_60" data-name="Ellipse 60" cx="1.192" cy="1.192" rx="1.192" ry="1.192" fill="#fff"/>
</g>
<g id="Group_449" data-name="Group 449" transform="translate(15.842 9.766)" opacity="0.5">
<ellipse id="Ellipse_61" data-name="Ellipse 61" cx="2.013" cy="2.013" rx="2.013" ry="2.013" fill="#fff"/>
</g>
<g id="Group_450" data-name="Group 450" transform="translate(7.897 5.624)" opacity="0.5">
<ellipse id="Ellipse_62" data-name="Ellipse 62" cx="3.306" cy="3.306" rx="3.306" ry="3.306" fill="#fff"/>
</g>
<g id="Group_451" data-name="Group 451" transform="translate(2.199 0.721)" opacity="0.5">
<ellipse id="Ellipse_63" data-name="Ellipse 63" cx="3.148" cy="3.148" rx="3.148" ry="3.148" fill="#fff"/>
</g>
<g id="Group_452" data-name="Group 452" transform="translate(15.089 3.617)" opacity="0.5">
<ellipse id="Ellipse_64" data-name="Ellipse 64" cx="1.5" cy="1.5" rx="1.5" ry="1.5" fill="#fff"/>
</g>
</g>
</g>
</svg>
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
</dict>
</plist>
#include "Generated.xcconfig"
#include "Generated.xcconfig"
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>fitnessapp</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
#import "GeneratedPluginRegistrant.h"
\ No newline at end of file
import 'package:flutter/material.dart';
class Background extends StatelessWidget {
final Widget child;
const Background({
Key key,
@required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Container(
width: double.infinity,
height: size.height,
child: Stack(
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,
child: Image.asset(
"assets/images/login_bottom.png",
width: size.width * 0.4,
),
),
child,
],
),
);
}
}
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/Login/components/background.dart';
import 'package:fitnessapp/Screens/Signup/signup_screen.dart';
import 'package:fitnessapp/components/already_have_an_account_acheck.dart';
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';
class Body extends StatelessWidget {
const Body({
Key key,
}) : super(key: key);
@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();
},
),
);
},
),
],
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/Login/components/body.dart';
class LoginScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Body(),
);
}
}
import 'package:flutter/material.dart';
class Background extends StatelessWidget {
final Widget child;
const Background({
Key key,
@required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Container(
height: size.height,
width: double.infinity,
// Here i can use size.width but use double.infinity because both work as a same
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Positioned(
top: 0,
left: 0,
child: Image.asset(
"assets/images/signup_top.png",
width: size.width * 0.35,
),
),
Positioned(
bottom: 0,
left: 0,
child: Image.asset(
"assets/images/main_bottom.png",
width: size.width * 0.25,
),
),
child,
],
),
);
}
}
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/Login/login_screen.dart';
import 'package:fitnessapp/Screens/Signup/components/background.dart';
import 'package:fitnessapp/Screens/Signup/components/or_divider.dart';
import 'package:fitnessapp/Screens/Signup/components/social_icon.dart';
import 'package:fitnessapp/components/already_have_an_account_acheck.dart';
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';
class Body extends StatelessWidget {
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Background(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"SIGNUP",
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(height: size.height * 0.03),
SvgPicture.asset(
"assets/icons/signup.svg",
height: size.height * 0.35,
),
RoundedInputField(
hintText: "Your Email",
onChanged: (value) {},
),
RoundedPasswordField(
onChanged: (value) {},
),
RoundedButton(
text: "SIGNUP",
press: () {},
),
SizedBox(height: size.height * 0.03),
AlreadyHaveAnAccountCheck(
login: false,
press: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return LoginScreen();
},
),
);
},
),
OrDivider(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SocalIcon(
iconSrc: "assets/icons/facebook.svg",
press: () {},
),
SocalIcon(
iconSrc: "assets/icons/twitter.svg",
press: () {},
),
SocalIcon(
iconSrc: "assets/icons/google-plus.svg",
press: () {},
),
],
)
],
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:fitnessapp/constants.dart';
class OrDivider extends StatelessWidget {
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Container(
margin: EdgeInsets.symmetric(vertical: size.height * 0.02),
width: size.width * 0.8,
child: Row(
children: <Widget>[
buildDivider(),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Text(
"OR",
style: TextStyle(
color: kPrimaryColor,
fontWeight: FontWeight.w600,
),
),
),
buildDivider(),
],
),
);
}
Expanded buildDivider() {
return Expanded(
child: Divider(
color: Color(0xFFD9D9D9),
height: 1.5,
),
);
}
}
import 'package:flutter/material.dart';
import 'package:fitnessapp/constants.dart';
//import 'package:flutter_svg/flutter_svg.dart';
class SocalIcon extends StatelessWidget {
final String iconSrc;
final Function press;
const SocalIcon({
Key key,
this.iconSrc,
this.press,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: press,
child: Container(
margin: EdgeInsets.symmetric(horizontal: 10),
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
border: Border.all(
width: 2,
color: kPrimaryLightColor,
),
shape: BoxShape.circle,
),
// child: SvgPicture.asset(
// iconSrc,
// height: 20,
// width: 20,
// ),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:fitnessapp/Screens/Signup/components/body.dart';
class SignUpScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Body(),
);
}
}
import 'package:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/widgets/annual_chart.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
class AnnualDetailsScreen extends StatelessWidget {
@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),
),
],
),
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),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
),
);
}
RichText buildInfoTextWithPercentage({String title, String percentage}) {
return RichText(
text: TextSpan(
children: [
TextSpan(
text: "$percentage% \n",
style: TextStyle(
fontSize: 20,
color: kPrimaryColor,
),
),
TextSpan(
text: title,
style: TextStyle(
color: kTextMediumColor,
height: 1.5,
),
),
],
),
);
}
Row buildCaseNumber(BuildContext context) {
return Row(
children: <Widget>[
Text(
"547 ",
style: Theme.of(context)
.textTheme
.headline2
.copyWith(color: kPrimaryColor, height: 1.2),
),
Text(
"5.9% ",
style: TextStyle(color: kPrimaryColor),
),
SvgPicture.asset("assets/icons/increase.svg")
],
);
}
Row buildDateTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"2020 ",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row buildTotalTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"TOTAL",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 15,
),
),
],
);
}
Row buildAmountTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"20 hr 15 min",
style: TextStyle(
color: kTextMediumColor,
fontWeight: FontWeight.w600,
fontSize: 20,
),
),
],
);
}
Row highlightsTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Highlights",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row highlightsContent() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Tom has a lower walking Average \nthan Last Year.",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 18,
),
),
],
);
}
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:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/widgets/daily_chart.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'dart:convert';
class DailyDetailsScreen extends StatefulWidget {
@override
_DailyDetailsScreenState createState() => _DailyDetailsScreenState();
}
class _DailyDetailsScreenState extends State<DailyDetailsScreen> {
String finalDate = '';
static dynamic timePeriod = [] ;
static dynamic highlights =[] ;
static dynamic activity = [];
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) {
dynamic data = jsonDecode(responseBody);
setState((){
timePeriod= data[0]['minutes per day'];
timePeriod= timePeriod/60;
});
});
}
getHighlightsPerDay() async{
SearchService.getHighlightsPerDay().then((responseBody) {
dynamic data = jsonDecode(responseBody);
setState((){
highlights= data[0]['Highlights'];
});
});
}
getCurrentDate(){
var months= ["Jan","Feb","Mar","Apr", "May","Jun","July","Aug","Sep","Oct","Nov","Dec"];
var date = new DateTime.now().toString();
var dateParse = DateTime.parse(date);
var month = months[dateParse.month-1];
var formattedDate = "${dateParse.day} $month ${dateParse.year}";
setState(() {
finalDate = formattedDate.toString() ;
});
}
@override
Widget build(BuildContext context) {
getCurrentDate();
getTotalMinutes();
getHighlightsPerDay();
getActivityNameById();
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),
),
],
),
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),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
),
);
}
Row buildDateTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"$finalDate",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row buildTotalTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"TOTAL",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 15,
),
),
],
);
}
Row buildAmountTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"$timePeriod hrs",
style: TextStyle(
color: kTextMediumColor,
fontWeight: FontWeight.w600,
fontSize: 20,
),
),
],
);
}
Row highlightsTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Highlights",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row highlightsContent() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Tom’s $activity $highlights",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 18,
),
),
],
);
}
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:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/widgets/monthly_chart.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'dart:convert';
class MonthlyDetailsScreen extends StatefulWidget {
@override
_MonthlyDetailsScreenState createState() => _MonthlyDetailsScreenState();
}
class _MonthlyDetailsScreenState extends State<MonthlyDetailsScreen> {
String monthAndYear,month = '';
static dynamic value = [] ;
getCurrentMonth(){
var months= ["January","February","March","April", "May","June","July","August","September","October","November","December"];
var date = new DateTime.now().toString();
var dateParse = DateTime.parse(date);
var month = months[dateParse.month-1];
var formattedDate = "$month ${dateParse.year}";
var monthNumber= dateParse.month.toString();
setState(() {
monthAndYear = formattedDate.toString() ;
});
getTotalMinutesPerMonth(monthNumber);
}
getTotalMinutesPerMonth(month) async{
SearchService.getTotalMinutesPerMonth(month).then((responseBody) {
dynamic data = jsonDecode(responseBody);
setState((){
value= data[0]['minutes per month'];
// hrs= (double.parse(value) /~ 60).toString();
// mins = (double.parse(value) % 60).toString();
});
});
}
@override
Widget build(BuildContext context) {
getCurrentMonth();
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),
),
],
),
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),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
),
);
}
Row buildDateTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"$monthAndYear",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row buildTotalTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"TOTAL",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 15,
),
),
],
);
}
Row buildAmountTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"$value mins",
style: TextStyle(
color: kTextMediumColor,
fontWeight: FontWeight.w600,
fontSize: 20,
),
),
],
);
}
Row highlightsTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Highlights",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row highlightsContent() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Tom has a lower walking Average \nthan Last Month.",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 18,
),
),
],
);
}
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';
class SearchService {
static String ip = 'http://192.168.1.21:8000';
static String username = 'Janadi';
static String password = 'janadi2.';
static String basicAuth = 'Basic ' + base64Encode(utf8.encode('$username:$password'));
//Daily
static Future<String> getActivityNameById() async {
String url = '$ip/getActivityNameById';
var body = jsonEncode({
"id":1,
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
static Future<String> getTotalMinutesPerDay() async {
String url = '$ip/getTotalMinutesPerDay';
var body = jsonEncode({
"activity":2,
"dog":1,
"date":"2020-07-01"
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
static Future<String> getHighlightsPerDay() async {
String url = '$ip/highlightsPerDay';
var body = jsonEncode({
"activity":2,
"dog":1,
"date":"2020-07-01"
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
//Weekly
static Future<String> getTotalMinutesPerWeek() async {
String url = '$ip/getTotalMinutesPerWeek';
var body = jsonEncode({
"activity":2,
"dog":1,
"date":"2020-07-01"
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
static Future<String> getTotalMinutesPerDayInWeek(week) async {
String url = '$ip/getTotalMinutesPerDayInWeek';
var body = jsonEncode({
"activity":2,
"dog":1,
"week":week
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
static Future<String> getHighlightsPerWeek() async {
String url = '$ip/highlightsPerWeek';
var body = jsonEncode({
"activity":2,
"dog":1,
"date":"2020-07-01"
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
//Monthly
static Future<String> getTotalMinutesPerMonth(month) async {
String url = '$ip/getTotalMinutesPerMonth';
var body = jsonEncode({
"activity":2,
"dog":1,
"month":month
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
static Future<String> getTotalMinutesPerWeekInMonth(month) async {
String url = '$ip/getTotalMinutesPerWeekInMonth';
var body = jsonEncode({
"activity":2,
"dog":1,
"month":month
});
http.Response response = await http.post(url,
headers: {"Content-Type": "application/json",'authorization': basicAuth},
body: body
).then((http.Response response) {
return response;
});
return response.body;
}
}
\ No newline at end of file
import 'package:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/widgets/weekly_chart.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'dart:convert';
class WeeklyDetailsScreen extends StatefulWidget {
@override
_WeeklyDetailsScreenState createState() => _WeeklyDetailsScreenState();
}
class _WeeklyDetailsScreenState extends State<WeeklyDetailsScreen> {
DateTime startDate ,endDate;
String finalStartDate,finalEndDate ;
static dynamic activity = [];
static dynamic value = [] ;
static dynamic highlights =[] ;
getCurrentDate(){
var months= ["Jan","Feb","Mar","Apr", "May","Jun","July","Aug","Sep","Oct","Nov","Dec"];
final date = new DateTime.now();
final startOfYear = new DateTime(date.year, 1, 1, 0, 0);
final firstMonday = startOfYear.weekday;
final daysInFirstWeek = 8 - firstMonday;
final diff = date.difference(startOfYear);
var weeks = ((diff.inDays - daysInFirstWeek) / 7).ceil();
int week = weeks;
startDate = DateTime.parse((startOfYear.add(Duration(days: 7*week))).toString());
var startMonth = months[startDate.month-1];
endDate = DateTime.parse((startOfYear.add(Duration(days: 7*week+7))).toString());
var endMonth = months[startDate.month-1];
setState(() {
finalStartDate = "${startDate.day} $startMonth ${startDate.year}" ;
finalEndDate = "${endDate.day} $endMonth ${endDate.year}" ;
});
}
getActivityNameById() async{
SearchService.getActivityNameById().then((responseBody) {
print(responseBody);
dynamic data = jsonDecode(responseBody);
setState((){
activity= data[0]['activity'];
print(activity);
});
});
}
getTotalMinutesPerWeek() async{
SearchService.getTotalMinutesPerWeek().then((responseBody) {
dynamic data = jsonDecode(responseBody);
setState((){
value= data[0]['minutes per week'];
// hrs= (double.parse(value) /~ 60).toString();
// mins = (double.parse(value) % 60).toString();
});
});
}
getHighlightsPerWeek() async{
SearchService.getHighlightsPerWeek().then((responseBody) {
dynamic data = jsonDecode(responseBody);
setState((){
highlights= data[0]['Highlights'];
});
});
}
@override
Widget build(BuildContext context) {
getCurrentDate();
getTotalMinutesPerWeek();
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),
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildDateTitle(),
SizedBox(height: 10),
buildTotalTitle(),
SizedBox(height: 10),
buildAmountTitle(),
SizedBox(height: 40),
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),
),
],
),
child: Column(
children: <Widget>[
highlightsTitle(),
SizedBox(height: 20),
highlightsContent(),
],
),
),
],
),
),
),
);
}
Row buildDateTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"$finalStartDate - $finalEndDate",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row buildTotalTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"TOTAL",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 15,
),
),
],
);
}
Row buildAmountTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"$value mins",
style: TextStyle(
color: kTextMediumColor,
fontWeight: FontWeight.w600,
fontSize: 20,
),
),
],
);
}
Row highlightsTitle() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Highlights",
style: TextStyle(
color: kTextColor,
fontWeight: FontWeight.w600,
fontSize: 25,
),
),
],
);
}
Row highlightsContent() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Tom has a $highlights",
style: TextStyle(
color: kTextLightColor,
fontWeight: FontWeight.w600,
fontSize: 18,
),
),
],
);
}
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:fitnessapp/constants.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
class AnnualChart extends StatelessWidget {
@override
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 1.7,
child: BarChart(
BarChartData(
barGroups: getBarGroups(),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(
leftTitles: SideTitles(
showTitles: false,
),
bottomTitles: SideTitles(
showTitles: true,
getTitles: getMonths,
textStyle: TextStyle(
color: kTextLightColor,
fontSize: 10,
fontWeight: FontWeight.bold,
),
),
),
),
),
);
}
}
getBarGroups() {
List<double> barChartDatas = [6, 10, 8, 7, 10, 15, 9, 12, 11,10,9,4];
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,
)
],
),
),
);
return barChartGroups;
}
String getMonths(double value) {
switch (value.toInt()) {
case 0:
return 'JAN';
case 1:
return 'FEB';
case 2:
return 'MAR';
case 3:
return 'APR';
case 4:
return 'MAY';
case 5:
return 'JUN';
case 6:
return 'JUL';
case 7:
return 'AUG';
case 8:
return 'SEP';
case 9:
return 'OCT';
case 10:
return 'NOV';
case 11:
return 'DEC';
default:
return '';
}
}
import 'package:fitnessapp/constants.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.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(
BarChartData(
barGroups: getBarGroups(),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(
leftTitles: SideTitles(
showTitles: false,
),
bottomTitles: SideTitles(
// showTitles: true,
// getTitles: getDay,
textStyle: TextStyle(
color: Color(0xFF7589A2),
fontSize: 10,
fontWeight: FontWeight.w200,
),
),
),
),
),
);
}
}
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<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,
)
],
),
),
);
return barChartGroups;
}
String getDay(double value) {
switch (value.toInt()) {
case 0:
return '00:00';
case 1:
return '01:00';
case 2:
return '02:00';
case 3:
return '03:00';
case 4:
return '04:00';
case 5:
return '05:00';
case 6:
return '06:00';
case 7:
return '07:00';
case 8:
return '08:00';
case 9:
return '09:00';
case 10:
return '10:00';
case 11:
return '11:00';
case 12:
return '12:00';
case 13:
return '13:00';
case 14:
return '14:00';
case 15:
return '15:00';
case 16:
return '16:00';
case 17:
return '17:00';
case 18:
return '18:00';
case 19:
return '19:00';
case 20:
return '20:00';
case 21:
return '21:00';
case 22:
return '22:00';
case 23:
return '23:00';
default:
return '';
}
}
import 'package:fitnessapp/constants.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/widgets/line_chart.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class InfoCard extends StatelessWidget {
final String title;
final int effectedNum;
final Color iconColor;
final Function press;
const InfoCard({
Key key,
this.title,
this.effectedNum,
this.iconColor,
this.press,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
return GestureDetector(
onTap: press,
child: Container(
width: constraints.maxWidth / 2 - 10,
// Here constraints.maxWidth provide us the available width for the widget
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
// wrapped within an expanded widget to allow for small density device
Expanded(
child: Container(
alignment: Alignment.center,
height: 30,
width: 30,
decoration: BoxDecoration(
color: iconColor.withOpacity(0.12),
shape: BoxShape.circle,
),
child: SvgPicture.asset(
"assets/icons/running.svg",
height: 12,
width: 12,
color: iconColor,
),
),
),
SizedBox(width: 5),
Text(
title,
maxLines: 1,
overflow: TextOverflow.ellipsis,
)
],
),
),
Padding(
padding: const EdgeInsets.only(bottom: 10),
child: Row(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: RichText(
text: TextSpan(
style: TextStyle(color: kTextColor),
children: [
TextSpan(
text: "$effectedNum \n",
style:
Theme.of(context).textTheme.headline6.copyWith(
fontWeight: FontWeight.bold,
),
),
TextSpan(
text: "People",
style: TextStyle(
fontSize: 12,
height: 2,
),
),
],
),
),
),
Expanded(
child: LineReportChart(),
),
],
),
)
],
),
),
),
);
},
);
}
}
import 'package:fitnessapp/constants.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
class LineReportChart extends StatelessWidget {
@override
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 2.2,
child: LineChart(
LineChartData(
gridData: FlGridData(show: false),
borderData: FlBorderData(show: false),
titlesData: FlTitlesData(show: false),
lineBarsData: [
LineChartBarData(
spots: getSports(),
isCurved: true,
dotData: FlDotData(show: false),
belowBarData: BarAreaData(show: false),
colors: [kPrimaryColor],
barWidth: 4,
),
],
),
),
);
}
List<FlSpot> getSports() {
return [
FlSpot(0, .5),
FlSpot(1, 1.5),
FlSpot(2, .5),
FlSpot(3, .7),
FlSpot(4, .2),
FlSpot(5, 2),
FlSpot(6, 1.5),
FlSpot(7, 1.7),
FlSpot(8, 1),
FlSpot(9, 2.8),
FlSpot(10, 2.5),
FlSpot(11, 2.65),
];
}
}
import 'package:fitnessapp/constants.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart';
import 'package:fitnessapp/Screens/WalkingPatternRecognition/service.dart';
import 'dart:convert';
class MonthlyChart extends StatefulWidget {
@override
_MonthlyChartState createState() => _MonthlyChartState();
}
class _MonthlyChartState extends State<MonthlyChart> {
static dynamic data=[];
getCurrentMonth(){
final month = Jiffy().month;
getTotalMinutesPerWeekInMonth(month);
}
getTotalMinutesPerWeekInMonth(weeknumber) async{
var week =["Week1","Week2","Week3","Week4","Week5"];
SearchService.getTotalMinutesPerDayInWeek(weeknumber).then((responseBody) {
dynamic jsondata = jsonDecode(responseBody);
});
}
@override
Widget build(BuildContext context) {
getCurrentMonth();
return AspectRatio(
aspectRatio: 1.7,
child: BarChart(
BarChartData(
barGroups: getBarGroups(),
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,
),
),
),
),
),
);
}
}
getBarGroups() {
List<double> barChartDatas = [6, 10, 8, 7];
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 == 2 ? kPrimaryColor : kTextLightColor,
width: 15,
)
],
),
),
);
return barChartGroups;
}
String getWeeks(double value) {
switch (value.toInt()) {
case 0:
return 'Week 1';
case 1:
return 'Week 2';
case 2:
return 'Week 3';
case 3:
return 'Week 4';
default:
return '';
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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