User:Meeskond: VeebiGurmaanid

From ICO wiki

Meeskond: VeebiGurmaanid

Meeskond

  • Koit Kõrvel
  • Marko Kask
  • Melissa Eenmaa
  • Joosep Koort

Idee

XML fail

Retseptid koos nende valmistamisjuhenditega.

<?xml version="1.0" encoding="utf-8"?>
<retseptiraamat>
  <retseptid>
    <retsept retseptID="1" autorId="1" kategooria="kalatoidud" nimetus="kalasupp">
      <komponendid>
        <komponent komponentID="1" nimetus="vesi" komponentMootyhik="dl" kogus="200">Vesi</komponent>
        <komponent komponentID="2" nimetus="kala" komponentMootyhik="g" kogus="300">Kala</komponent>
        <komponent komponentID="3" nimetus="kartul" komponentMootyhik="g" kogus="100">Kartul</komponent>
        <komponent komponentID="4" nimetus="porgand" komponentMootyhik="g" kogus="100">Porgand</komponent>
        <komponent komponentID="5" nimetus="till" komponentMootyhik="g" kogus="10">Till</komponent>
        <komponent komponentID="6" nimetus="kaalikas" komponentMootyhik="g" kogus="50">Kaalikas</komponent>
      </komponendid>
      <valmistamisjuhendid>
        <valmistamisjuhend>1.Hakkida juurviljad</valmistamisjuhend>
        <valmistamisjuhend>2.Lisada kala</valmistamisjuhend>
        <valmistamisjuhend>3.Keeta 20 minutit</valmistamisjuhend>
      </valmistamisjuhendid>
    </retsept>
    <retsept retseptID="2" autorId="2" kategooria="linnulihatoidud" nimetus="kanapasta">
      <komponendid>
        <komponent komponentID="7" nimetus="kanafilee" komponentMootyhik="g" kogus="300">Kanafilee</komponent>
        <komponent komponentID="8" nimetus="makaronid" komponentMootyhik="g" kogus="300">Makaronid</komponent>
        <komponent komponentID="9" nimetus="sinihalitusjuust" komponentMootyhik="g" kogus="30">Sinihallitusjuust</komponent>
        <komponent komponentID="4" nimetus="porgand" komponentMootyhik="g" kogus="70">Porgand</komponent>
        <komponent komponentID="5" nimetus="till" komponentMootyhik="g" kogus="10">Till</komponent>
        <komponent komponentID="10" nimetus="sibul" komponentMootyhik="g" kogus="50">Sibul</komponent>
      </komponendid>
      <valmistamisjuhendid>
        <valmistamisjuhend>1.Praadida kanafilee</valmistamisjuhend>
        <valmistamisjuhend>2.Keeta makaronid</valmistamisjuhend>
        <valmistamisjuhend>3.Segada k�ik kokku</valmistamisjuhend>
      </valmistamisjuhendid>
    </retsept>
    <retsept retseptID="3" autorId="2" kategooria="taimetoidud" nimetus="lihata praekartulid">
      <komponendid>
        <komponent komponentID="3" nimetus="kartul" komponentMootyhik="g" kogus="100">Kartul</komponent>
        <komponent komponentID="5" nimetus="till" komponentMootyhik="g" kogus="10">Till</komponent>
        <komponent komponentID="10" nimetus="sibul" komponentMootyhik="g" kogus="50">Sibul</komponent>
        <komponent komponentID="11" nimetus="toidu�li" komponentMootyhik="g" kogus="5">Toidu�li</komponent>
        <komponent komponentID="12" nimetus="sool" komponentMootyhik="g" kogus="1">Sool</komponent>
      </komponendid>
      <valmistamisjuhendid>
        <valmistamisjuhend>1.Kuumuta pannil �li</valmistamisjuhend>
        <valmistamisjuhend>2.Lisa kartulid ja sibul,prae 15 minutit</valmistamisjuhend>
        <valmistamisjuhend>3.Maitsesta soolaga</valmistamisjuhend>
      </valmistamisjuhendid>
    </retsept>
   <retsept retseptID="4" autorId="2" kategooria="magustoidud" nimetus="hõrk kohuke">
      <komponendid>
        <komponent komponentID="1" nimetus="vesi" komponentMootyhik="dl" kogus="20">Vesi</komponent>
        <komponent komponentID="13" nimetus="kohupiim" komponentMootyhik="g" kogus="100">Kohupiim</komponent>
        <komponent komponentID="14" nimetus="suhkur" komponentMootyhik="g" kogus="50">Suhkur</komponent>
        <komponent komponentID="15" nimetus="šokolaad" komponentMootyhik="g" kogus="75">Šokolaad</komponent>
      </komponendid>
      <valmistamisjuhendid>
        <valmistamisjuhend>1.Maitsestada kohupiim</valmistamisjuhend>
        <valmistamisjuhend>2.Šokolaad tuleb panna sulama</valmistamisjuhend>
        <valmistamisjuhend>3.Kata kohupiim õrna šokolaadi kihiga.</valmistamisjuhend>
      </valmistamisjuhendid>
    </retsept>
   <retsept retseptID="5" autorId="1" kategooria="pirukad" nimetus="porgandipirukad">
      <komponendid>
        <komponent komponentID="4" nimetus="porgand" komponentMootyhik="g" kogus="100">Porgand</komponent>
        <komponent komponentID="14" nimetus="suhkur" komponentMootyhik="g" kogus="20">Suhkur</komponent>
        <komponent komponentID="10" nimetus="sibul" komponentMootyhik="g" kogus="50">Sibul</komponent>
        <komponent komponentID="11" nimetus="toidu�li" komponentMootyhik="g" kogus="30">Toidu�li</komponent>
        <komponent komponentID="12" nimetus="sool" komponentMootyhik="g" kogus="10">Sool</komponent>
        <komponent komponentID="16" nimetus="jahu" komponentMootyhik="g" kogus="100">Jahu</komponent>
      </komponendid>
      <valmistamisjuhendid>
        <valmistamisjuhend>1.Tee tainas valmis</valmistamisjuhend>
        <valmistamisjuhend>2.Pane taigna sisse tükeldatud porgandid</valmistamisjuhend>
        <valmistamisjuhend>3.Maitsesta soolaga</valmistamisjuhend>
        <valmistamisjuhend>4.Prae pirukad kuumas õlis.</valmistamisjuhend>
      </valmistamisjuhendid>
    </retsept>
   <retsept retseptID="6" autorId="1" kategooria="kastmed" nimetus="jahukaste kartulitele">
      <komponendid>
        <komponent komponentID="1" nimetus="vesi" komponentMootyhik="dl" kogus="100">Vesi</komponent>
        <komponent komponentID="16" nimetus="jahu" komponentMootyhik="g" kogus="10">Jahu</komponent>
        <komponent komponentID="10" nimetus="sibul" komponentMootyhik="g" kogus="50">Sibul</komponent>
        <komponent komponentID="12" nimetus="sool" komponentMootyhik="g" kogus="10">Sool</komponent>
      </komponendid>
      <valmistamisjuhendid>
        <valmistamisjuhend>1.Tükelda sibulad</valmistamisjuhend>
        <valmistamisjuhend>2.Sega jahu läbi veega</valmistamisjuhend>
        <valmistamisjuhend>3.Maitsesta soolaga</valmistamisjuhend>
        <valmistamisjuhend>4.Lisa sibulad jahukastmesse</valmistamisjuhend>
      </valmistamisjuhendid>
    </retsept>
  </retseptid>  
</retseptiraamat>


XSD fail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="retseptiraamat">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="retseptid">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="retsept">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="komponendid">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="komponent">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:string">
                                  <xs:attribute name="komponentID" type="xs:unsignedByte" use="required" />
                                  <xs:attribute name="nimetus" type="xs:string" use="required" />
                                  <xs:attribute name="komponentMootyhik" type="xs:string" use="required" />
                                  <xs:attribute name="kogus" type="xs:unsignedShort" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="valmistamisjuhendid">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="valmistamisjuhend" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="retseptID" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="autorId" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="kategooria" type="xs:string" use="required" />
                  <xs:attribute name="nimetus" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


XSLT

XSLT => HTML: Kõikide retseptide kuvamine, koos komponentidega.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Toidud</title>
      </head>
      <body>
        <h2>Toidud</h2>
        <ul>
          <xsl:for-each select="retseptiraamat/retseptid/retsept" >
            <xsl:sort select="@nimetus" order="ascending"/>
            <table border="1">
              <tr>
                <td>Nimetus</td>
                <td>
                  <xsl:value-of select="@nimetus"/>
                </td>
              </tr>
              <tr>
                <td>retseptID</td>
                <td>
                  <xsl:value-of select="@retseptID"/>
                </td>
              </tr>
              <tr>
                <td>autorID</td>
                <td>
                  <xsl:value-of select="@autorId"/>
                </td>
              </tr>
              <tr>
                <td>kategooria</td>
                <td>
                  <xsl:value-of select="@kategooria"/>
                </td>
              </tr>
              <xsl:for-each select="komponendid">
                <tr>
                  <td>Komponendid</td>
                  <td>
                    <xsl:for-each select="komponent">
                    <li>
                        <xsl:value-of select="." />
                    </li>
                    </xsl:for-each>
                  </td>
                </tr>
              </xsl:for-each>
            </table>
            <xsl:if test="not(position()=last())">
              <br />
            </xsl:if>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT_Teine

XSLT => HTML: Retseptide kuvamine, mille autoriks on autorid=2

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">

    <html>
      <body>
        <h1>Minu Retseptid</h1>
        <ul>
          <xsl:for-each select="retseptiraamat/retseptid/retsept" >

            <xsl:sort select="@nimetus" order="ascending"/>
            <xsl:if test = "@autorId ='2'">
            <li>
              <xsl:value-of select="@nimetus"/>
            </li>
            <ul>
              <xsl:for-each select="valmistamisjuhendid/valmistamisjuhend">
                <li>
                  <xsl:value-of select="."/>
                </li>
              </xsl:for-each>
            </ul>
            </xsl:if>
          </xsl:for-each>
        </ul>
      </body>
    </html>

  </xsl:template>
</xsl:stylesheet>

XSLT_kolmas_xml

XSLT => XML: Retsepti komponentide kuvamine retsepti ID järgi.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="retseptid">
<xsl:for-each select="retseptiraamat/retseptid/retsept">
<xsl:element name="retsept">
<xsl:attribute name="retseptID">
<xsl:value-of select="@retseptID"/>
</xsl:attribute>
<xsl:copy-of select="komponendid"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

Tulemuseks on selline asi:

<retseptid>
   <retsept retseptID="1">
      <komponendid>
        <komponent komponentID="1"
                    nimetus="vesi"
                    komponentMootyhik="dl"
                    kogus="200">Vesi</komponent>
        <komponent komponentID="2"
                    nimetus="kala"
                    komponentMootyhik="g"
                    kogus="300">Kala</komponent>
        <komponent komponentID="3"
                    nimetus="kartul"
                    komponentMootyhik="g"
                    kogus="100">Kartul</komponent>
        <komponent komponentID="4"
                    nimetus="porgand"
                    komponentMootyhik="g"
                    kogus="100">Porgand</komponent>
        <komponent komponentID="5" nimetus="till" komponentMootyhik="g" kogus="10">Till</komponent>
        <komponent komponentID="6"
                    nimetus="kaalikas"
                    komponentMootyhik="g"
                    kogus="50">Kaalikas</komponent>
      </komponendid>
   </retsept>
   <retsept retseptID="2">
      <komponendid>
        <komponent komponentID="7"
                    nimetus="kanafilee"
                    komponentMootyhik="g"
                    kogus="300">Kanafilee</komponent>
        <komponent komponentID="8"
                    nimetus="makaronid"
                    komponentMootyhik="g"
                    kogus="300">Makaronid</komponent>
        <komponent komponentID="9"
                    nimetus="sinihalitusjuust"
                    komponentMootyhik="g"
                    kogus="30">Sinihallitusjuust</komponent>
        <komponent komponentID="4"
                    nimetus="porgand"
                    komponentMootyhik="g"
                    kogus="70">Porgand</komponent>
        <komponent komponentID="5" nimetus="till" komponentMootyhik="g" kogus="10">Till</komponent>
        <komponent komponentID="10"
                    nimetus="sibul"
                    komponentMootyhik="g"
                    kogus="50">Sibul</komponent>
      </komponendid>
   </retsept>
   <retsept retseptID="3">
      <komponendid>
        <komponent komponentID="3"
                    nimetus="kartul"
                    komponentMootyhik="g"
                    kogus="100">Kartul</komponent>
        <komponent komponentID="5" nimetus="till" komponentMootyhik="g" kogus="10">Till</komponent>
        <komponent komponentID="10"
                    nimetus="sibul"
                    komponentMootyhik="g"
                    kogus="50">Sibul</komponent>
        <komponent komponentID="11"
                    nimetus="toidu�li"
                    komponentMootyhik="g"
                    kogus="5">Toidu�li</komponent>
        <komponent komponentID="12" nimetus="sool" komponentMootyhik="g" kogus="1">Sool</komponent>
      </komponendid>
   </retsept>
   <retsept retseptID="4">
      <komponendid>
        <komponent komponentID="1"
                    nimetus="vesi"
                    komponentMootyhik="dl"
                    kogus="20">Vesi</komponent>
        <komponent komponentID="13"
                    nimetus="kohupiim"
                    komponentMootyhik="g"
                    kogus="100">Kohupiim</komponent>
        <komponent komponentID="14"
                    nimetus="suhkur"
                    komponentMootyhik="g"
                    kogus="50">Suhkur</komponent>
        <komponent komponentID="15"
                    nimetus="šokolaad"
                    komponentMootyhik="g"
                    kogus="75">Šokolaad</komponent>
      </komponendid>
   </retsept>
   <retsept retseptID="5">
      <komponendid>
        <komponent komponentID="4"
                    nimetus="porgand"
                    komponentMootyhik="g"
                    kogus="100">Porgand</komponent>
        <komponent komponentID="14"
                    nimetus="suhkur"
                    komponentMootyhik="g"
                    kogus="20">Suhkur</komponent>
        <komponent komponentID="10"
                    nimetus="sibul"
                    komponentMootyhik="g"
                    kogus="50">Sibul</komponent>
        <komponent komponentID="11"
                    nimetus="toidu�li"
                    komponentMootyhik="g"
                    kogus="30">Toidu�li</komponent>
        <komponent komponentID="12"
                    nimetus="sool"
                    komponentMootyhik="g"
                    kogus="10">Sool</komponent>
        <komponent komponentID="16"
                    nimetus="jahu"
                    komponentMootyhik="g"
                    kogus="100">Jahu</komponent>
      </komponendid>
   </retsept>
   <retsept retseptID="6">
      <komponendid>
        <komponent komponentID="1"
                    nimetus="vesi"
                    komponentMootyhik="dl"
                    kogus="100">Vesi</komponent>
        <komponent komponentID="16"
                    nimetus="jahu"
                    komponentMootyhik="g"
                    kogus="10">Jahu</komponent>
        <komponent komponentID="10"
                    nimetus="sibul"
                    komponentMootyhik="g"
                    kogus="50">Sibul</komponent>
        <komponent komponentID="12"
                    nimetus="sool"
                    komponentMootyhik="g"
                    kogus="10">Sool</komponent>
      </komponendid>
   </retsept>
</retseptid>

Veebiteenuse analüüs

Rakenduse üldkirjeldus

VeebiGurmaanide idee on teha sarnane toidu retseptiraamat veebis, nagu on näiteks Toidutare ja Nami-Nami, aga lihtsama ja mugavama kasutajaliidesega. Rakendus peaks võimaldama retsepte lisada, vaadata, muuta, hinnata, valmistamisjuhendit kuvada, kommenteerida ja lemmikuks lisada. Retseptide lisamiseks, hindamiseks, kommenteerimiseks, muutmiseks ja kustutamiseks on vaja inimesel teha kasutajakonto meie keskkonda. Küll aga saab ilma kasutajat tegemata retsepte vaadata. Idee on selles, et kasutaja logib sisse, peale sisselogimist on võimalik lisada uus toiduretsept. Toiduretsepti lisades saab kindlasti panna toidukomponendite loetelu koos mõõtühikutega. Samuti saab kasutaja lisada ka valmistamisjuhendi. Ehk siis loetelu või etapid, mida teha selleks, et vastav toit valmiks. Kasutaja võiks saada lisada ka toidust pildi. Kui retsept on lisatud, siis saavad teised kasutajad seda hinnata 5 palli süsteemis. Kindlasti on vaja suurt rõhku panna ka veebirakenduse disainile, sest kes sooviks ikka retsepte vaadata kohast, mis on kole ja ajast maas disainiga.

Problemaatika

Võimalikud probleemid võivad olla: ajapuudus ja loogikavead.

Must have

kasutajate loomine, muutmine, kustutamine.

  • retseptide sisestamine, muutmine.
  • retseptide kuvamine.
  • retseptide hindamine
  • retseptide otsing


Nice to have

  • retseptide kommenteerimine
  • lemmikuks lisamine
  • täiendatud otsingusüsteem (koostisosade järgi nt)
  • pildi lisamise võimalus retseptile
  • korralik disain, mis pakub kasutajale silmailu