Aeg
From ICO wiki
Meeskond "Aeg" | |
Õppeaine: | Võrgurakendused II: hajussüsteemide ehitamine |
Meeskonnaliige: | Maksim Gorb |
Juhendaja: | Mait Poska, Andres Käver |
Semester: | 2016 kevad kaugõpe |
Eesmärk
Projekti eesmärgiks on luua rakendus aja träkkimiseks prjektides. Rakendus võimaldab tavakasutajal sisestada kulunud aja iga projektis tehtud taski kohta, mida hiljem administraator saab kinnitada või tagasi lükata.
Tingimused
Rakendus
- Rakendus peab kasutama kõiki CRUD operatsioone
- Projektide, timereportide ning kasutajate haldamine peab toimuma kasutades Web API't ajax päringuid tehes
- Rakendus peab võimaldama luua kasutajaid
Kasutajad
Kasutaja
- ei saa kustutada Timereporti, kui see on juba kinnitatud.
- saab kustutada Timereporte, mis ei ole kinnitatud.
- saab lisada Timereporte ainult oma projektis
- näeb ainult oma Timereporte
Administraator
- saab vaadata kõiki Timereporte
- saab kusutada Timereporte, olenemata sellest kas see on kinnitatud või mitte
- saab lisada/eemaldada projekte
- saab lisada/eemaldada projektile tegevusi
- saab lisada/eemaldada projektile kasutajaid
Lähtekood
Praktikum 1. XML andmefail
XML
<?xml version="1.0" encoding="utf-8" ?> <TimeReports> <Timereport id="1" week="41" approved="false"> <User id="1"> <FirstName>Maksim</FirstName> <LastName>Gorb</LastName> <Departments> <Department id="1">Programmeerijad</Department> <Department id="2">Testija</Department> </Departments> <Roles> <Role id="1">Admin</Role> <Role id="2">Programmeerija</Role> <Role id="3">Testija</Role> </Roles> </User> <Logs> <Log id="1" date="21.03.2016"> <Activity id="1">Task #134</Activity> <Time unit="h">8</Time> </Log> <Log id="2" date="22.03.2016"> <Activity id="1">Task #134</Activity> <Time unit="h">8</Time> </Log> <Log id="3" date="23.03.2016"> <Activity id="1">Task #134</Activity> <Time unit="h">8</Time> </Log> <Log id="4" date="24.03.2016"> <Activity id="1">Task #134</Activity> <Time unit="h">8</Time> </Log> <Log id="5" date="25.03.2016"> <Activity id="1">Task #134</Activity> <Time unit="h">8</Time> </Log> </Logs> <Comment>Läks aega</Comment> </Timereport> <Timereport id="2" week="41" approved="true"> <User id="2"> <FirstName>Juhan</FirstName> <LastName>Labidas</LastName> <Departments> <Department id="2">Testija</Department> </Departments> <Roles> <Role id="3">Testija</Role> </Roles> </User> <Logs> <Log id="1" date="21.03.2016"> <Activity id="1">Task #454</Activity> <Time unit="h">8</Time> </Log> <Log id="2" date="22.03.2016"> <Activity id="1">Task #454</Activity> <Time unit="h">8</Time> </Log> <Log id="3" date="23.03.2016"> <Activity id="1">Task #454</Activity> <Time unit="h">8</Time> </Log> <Log id="4" date="24.03.2016"> <Activity id="1">Task #545</Activity> <Time unit="h">8</Time> </Log> <Log id="5" date="25.03.2016"> <Activity id="1">Task #214</Activity> <Time unit="h">8</Time> </Log> </Logs> <Comment></Comment> </Timereport> </TimeReports>
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="TimeReports"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Timereport"> <xs:complexType> <xs:sequence> <xs:element name="User"> <xs:complexType> <xs:sequence> <xs:element name="FirstName" type="xs:string" /> <xs:element name="LastName" type="xs:string" /> <xs:element name="Departments"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Department"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="id" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Roles"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Role"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="id" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:unsignedByte" use="required" /> </xs:complexType> </xs:element> <xs:element name="Logs"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Log"> <xs:complexType> <xs:sequence> <xs:element name="Activity"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="id" type="xs:unsignedByte" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Time"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:unsignedByte"> <xs:attribute name="unit" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:unsignedByte" use="required" /> <xs:attribute name="date" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Comment" type="xs:string" /> </xs:sequence> <xs:attribute name="id" type="xs:unsignedByte" use="required" /> <xs:attribute name="week" type="xs:unsignedByte" use="required" /> <xs:attribute name="approved" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
XSLT
Summary
<?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="xml" indent="yes"/> <xsl:template match="/"> <TimeReports> <xsl:for-each select="TimeReports/Timereport"> <Report> <Week> <xsl:value-of select='@week' /> </Week> <User> <xsl:value-of select="User/FirstName"/> <xsl:text> </xsl:text> <xsl:value-of select="User/LastName"/> </User> <TotalHours> <xsl:value-of select="sum(Logs/Log/Time)"/> </TotalHours> <Approved> <xsl:value-of select='@approved' /> </Approved> <Comment> <xsl:value-of select='Comment' /> </Comment> </Report> </xsl:for-each> </TimeReports> </xsl:template> </xsl:stylesheet>
Activities
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="2.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> <h2>Time Reports</h2> <xsl:for-each select="/TimeReports/Timereport"> <h3> <xsl:value-of select="User/FirstName"/> <xsl:text> </xsl:text> <xsl:value-of select="User/LastName"/> Week <xsl:value-of select="@week"/> </h3> <h4> <xsl:choose> <xsl:when test="@approved = 'true'"> <xsl:text>Approved</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>Not approved</xsl:text> </xsl:otherwise> </xsl:choose> </h4> <table border="1"> <tr> <th> <xsl:text>Date</xsl:text> </th> <th> <xsl:text>Activity</xsl:text> </th> <th> <xsl:text>Hours</xsl:text> </th> </tr> <xsl:for-each select="Logs/Log"> <tr> <td> <xsl:value-of select="@date"/> </td> <td> <xsl:value-of select="Activity"/> </td> <td style="text-align:left"> <xsl:value-of select="Time"/> </td> </tr> </xsl:for-each> </table> <xsl:if test="Comment != ''"> <h5> Comment: <xsl:value-of select="Comment"/> </h5> </xsl:if> <br/> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
Retsentsioonid
XML
Projektile VRJ https://wiki.itcollege.ee/index.php/Talk:VRJ#Retsentsioon_meeskonnalt_Aeg
Projektile Enneaegsed https://wiki.itcollege.ee/index.php/Talk:Enneaegsed#Retsentsioon_meeskonnalt_Aeg