Toidutracker

From ICO wiki

Meeskond

  • Triin Oja
  • Julia Kraam
  • Alari Talvar

Veebiteenuse analüüs

Toidutracker on veebirakendus, mille abil kasutaja saab hõlpsasti pidada toidupäevikut ja jälgida ning analüüsida nii oma igapäevast toitumist. Kasutaja saab vaadata ka eelneva perioodi toitumist ja igapäevaselt tarbitud kaloreid nii individuaalsete päevade kui ka näiteks nädalalõikes keskmise päeva kalorite koguse läbi. Toidutrackerisse saab kasutaja sisestada ka enda soovitud päevase kalorimaksimumi, mida kuvatakse individuaalsete toidukordade sisestamise ajal kogukalorsuse arvutamisel meeldetuletusena. Ideaalis tahaks lisada rakendusse ka kalkulaatori, mis arvutab kasutaja pikkuse, hetke kaalu ja füüsilise aktiivsuse järgi igapäevaselt kulutatud kalorid, ning soovitab siis olenevalt sellest ja kiirusest, millega kasutaja alla võtta tahab, päevast kalorilimiiti.

Toidutrackeril on olemas andmebaas, kuhu on sisse kantud mitmed kõige tihedamalt kasutatavad toiduained, ja ka loodetavasti erinevate eesti tootjate tooted. Toiduaineid saavad kasutajad ka iseandmebaasi lisada, kuid kasutajate lisatud toiduainetel on igaks juhuks juures eraldi märge, kuna rakenduse haldajad ei saa vastudada, et kasutajate sisaldatud info toiduainete kohta on 100% õige.

Toidutrackeri toidupäevik on jaotatud päevade kaupa ning toidukorrad paneb kasutaja kokku andmebaasis olevatest toiduainetest. Igal toiduainel on andmebaasis kirjas ka kalorsus ja toitainete sisaldus,ning selle ja kasutaja poolt sisestatud koguse põhjal arvutatakse individuaalsete portsude toiteväärtus. Jooksvalt arvutatakse kokku ka terve käesoleva päeva kalorite tarbimine.

XML

<?xml version="1.0" encoding="utf-8" ?>
<toidutracker>
 <toidukord toidukordID="1" submitted="2015-03-24">
  <toit toitID="1" submitter="kasutaja1" toitnimi="Imelik salat" tootja="kasutaja1">
  <koostisosad>
     <toiduaine nimi="tomat" kategooria="köögivili">
        <kogus yhik="g">100</kogus>
        <toiteväärtus>
          <kalorsus yhik="kcal">18</kalorsus>
          <rasvad yhik="g">0,2</rasvad>
          <valgud yhik="g">0,9</valgud>
          <süsivesikud yhik="g">3,9</süsivesikud>
        </toiteväärtus>
      </toiduaine>
      
      <toiduaine nimi="sibul" kategooria="köögivili">
        <kogus yhik="g">50</kogus>
        <toiteväärtus>
          <kalorsus yhik="kcal">21</kalorsus>
          <rasvad yhik="g">0,1</rasvad>
          <valgud yhik="g">0,5</valgud>
          <süsivesikud yhik="g">5,1</süsivesikud>
        </toiteväärtus>
      </toiduaine>
      
      <toiduaine nimi="õun" kategooria="puuvili">
        <kogus yhik="g">100</kogus>
        <toiteväärtus>
          <kalorsus yhik="kcal">52</kalorsus>
          <rasvad yhik="g">0,2</rasvad>
          <valgud yhik="g">0,3</valgud>
          <süsivesikud yhik="g">13,8</süsivesikud>
        </toiteväärtus>
      </toiduaine>
      
      <toiduaine nimi="cheddar juust" kategooria="piimatoode">
        <kogus yhik="g">50</kogus>
        <toiteväärtus>
          <kalorsus yhik="kcal">202</kalorsus>
          <rasvad yhik="g">16,6</rasvad>
          <valgud yhik="g">12,5</valgud>
          <süsivesikud yhik="g">0,6</süsivesikud>
        </toiteväärtus>
      </toiduaine>
    </koostisosad>
    
     <toiteväärtuskokku>
      <kaloridkokku yhik="kcal">293</kaloridkokku>
      <rasvadkokku yhik="g">17,1</rasvadkokku>
      <valgudkokku yhik="g">14,2</valgudkokku>
      <süsivesikudkokku yhik="g">23,4</süsivesikudkokku>
    </toiteväärtuskokku>
</toit>

<toit toitID="2" submitter="kasutaja2" toitnimi="Kana rinnafilee" tootja="Tallegg"> 
  <koostisosad>
  <toiduaine nimi="Kana rinnafilee" kategooria="Liha">
    <kogus yhik="g">100</kogus>
    <toiteväärtus>
      <kalorsus yhik="kcal">165</kalorsus>
      <rasvad yhik="g">3,6</rasvad>
      <valgud yhik="g">31</valgud>
      <süsivesikud yhik="g">0</süsivesikud>
    </toiteväärtus>
  </toiduaine>
  </koostisosad>

  <toiteväärtuskokku>
    <kaloridkokku yhik="kcal">165</kaloridkokku>
    <rasvadkokku yhik="g">3,6</rasvadkokku>
    <valgudkokku yhik="g">31</valgudkokku>
    <süsivesikudkokku yhik="g">0</süsivesikudkokku>
  </toiteväärtuskokku>
</toit>
    </toidukord>
</toidutracker>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="toidutracker">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="toidukord">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="toit">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="koostisosad">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="toiduaine">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="kogus">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:positiveInteger">
                                        <xs:attribute name="yhik" type="xs:string" use="required" />
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="toiteväärtus">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="kalorsus">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="xs:nonNegativeInteger">
                                              <xs:attribute name="yhik" type="xs:string" use="required" />
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="rasvad">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="xs:decimal">
                                              <xs:attribute name="yhik" type="xs:string" use="required" />
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="valgud">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="xs:decimal">
                                              <xs:attribute name="yhik" type="xs:string" use="required" />
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="süsivesikud">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="xs:decimal">
                                              <xs:attribute name="yhik" type="xs:string" use="required" />
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="nimi" type="xs:string" use="required" />
                              <xs:attribute name="kategooria" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="toiteväärtuskokku">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="kaloridkokku">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:nonNegativeInteger">
                                  <xs:attribute name="yhik" type="xs:string" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="rasvadkokku">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:decimal">
                                  <xs:attribute name="yhik" type="xs:string" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="valgudkokku">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:decimal">
                                  <xs:attribute name="yhik" type="xs:string" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="süsivesikudkokku">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:decimal">
                                  <xs:attribute name="yhik" type="xs:string" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="toitID" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="submitter" type="xs:string" use="required" />
                  <xs:attribute name="toitnimi" type="xs:string" use="required" />
                  <xs:attribute name="tootja" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="toidukordID" type="xs:unsignedInt" use="required" />
            <xs:attribute name="submitted" type="xs:date" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT