Meeskond: CoverMe

From ICO wiki
Jump to navigationJump to search

Meeskond: CoverMe

  • Karit Kilgi
  • Sten Kaasik
  • Ragne Auling
  • Silja Kralik

Idee

XML fail

XML

<?xml version="1.0" encoding="utf-8" ?>
<employees>
  <employee id="10012" available="false">
    <personalCode>768-22-XXXX</personalCode>
    <image>https://yt3.ggpht.com/-V92UP8yaNyQ/AAAAAAAAAAI/AAAAAAAAAAA/zOYDMx8Qk3c/s900-c-k-no-mo-rj-c0xffffff/photo.jpg</image>
    <name>
      <firstName>Lucia</firstName>
      <middleName>J.</middleName>
      <lastName>Gaskill</lastName>
    </name>
    <!-- Sugu: 0 - määramata, 1 - naine, 2 - mees -->
    <gender>1</gender>
    <birthDate>1959-04-05</birthDate>
    <phone>904-366-8831</phone>
    <email>LuciaJGaskill@jourrapide.com</email>
    <!-- Status: 0 - tööl, 1 - puhkusel jne. -->
    <contract id="1" startDate="2002-02-05" endDate="2008-03-15" status="0">
      <company>Cadbury</company>
      <department>Service</department>
      <occupation>Cashier</occupation>
      <!-- töökoormus tundides nädal kohta-->
      <workload>40</workload>
      <extraWork id="1" startDate="2003-03-20" endDate="2003-04-20">
        <company>Mr Fables</company>
        <task>Cleaner</task>
        <totalHours>80</totalHours>
      </extraWork>
    </contract>
    <contract id="2" startDate="2008-03-16" status="0">
      <company>Cadbury</company>
      <department>Service</department>
      <occupation>Manager</occupation>
      <workload>40</workload>
    </contract>
  </employee>
  
  <employee id="10013" available="false">
    <personalCode>769-48-XXXX</personalCode>
    <image></image>
    <name>
      <firstName>Martha</firstName>
      <lastName>Cornwell</lastName>
    </name>
    <!-- Sugu: 0 - määramata, 1 - naine, 2 - mees -->
    <gender>1</gender>
    <birthDate>1998-07-05</birthDate>
    <phone>123-456-7785</phone>
    <email>MarthaCornwall@jourrapide.com</email>
    <!-- Status: 0 - tööl, 1 - puhkusel jne. -->
    <contract id="5" startDate="2001-03-21" status="0">
      <company>Cadbury</company>
      <department>Service</department>
      <occupation>Servant</occupation>
      <workload>40</workload>
    </contract>
  </employee>
  <employee id="10234" available="true">
    <personalCode>019-05-XXXX</personalCode>
    <image>http://weknowyourdreams.com/images/dog/dog-08.jpg</image>
    <name>
      <firstName>James</firstName>
      <lastName>Gibson</lastName>
    </name>
    <gender>2</gender>
    <birthDate>1957-08-02</birthDate>
    <phone>781-896-5862</phone>
    <email>JamesGibson@armyspy.com</email>
    <contract id="3" startDate="2016-12-27" status="1">
      <company>Brilliant Home Designs</company>
      <department>Accounting</department>
      <occupation>Accountant</occupation>
      <workload>40</workload>
    </contract>
  </employee>
  <employee id="11454" available="true">
    <personalCode>623-11-XXXX</personalCode>
    <image>https://www.mein-schoener-garten.de/sites/default/files/styles/inline_l/public/eichhoernchen-winter-2617791-blp-fotolia.jpg?itok=2UsYbm24</image>
    <name>
      <firstName>Elizabeth</firstName>
      <middleName>L.</middleName>
      <lastName>May</lastName>
    </name>
    <gender>1</gender>
    <birthDate>1997-01-12</birthDate>
    <phone>530-730-0818</phone>
    <email>ElizabethLMay@dayrep.com</email>
    <contract id="4" startDate="2015-05-23" status="1">
      <company>Corinthian Designs</company>
      <department>Helpdesk</department>
      <occupation>Information and record clerk</occupation>
      <workload>20</workload>
      <extraWork id="1" startDate="2016-03-20" endDate="2016-03-22">
        <company>Mr Fables</company>
        <task>Data processor</task>
        <totalHours>10</totalHours>
      </extraWork>
    </contract>
  </employee>
  <employee id="11455" available="true">
    <personalCode>624-54-XXXX</personalCode>
    <image>http://www.miksike.ee/docs/referaadid2005/kiirgliblikas_evelin.jpg</image>
    <name>
      <firstName>Judy</firstName>
      <middleName>A.</middleName>
      <lastName>April</lastName>
    </name>
    <gender>1</gender>
    <birthDate>1970-02-22</birthDate>
    <phone>530-730-0818</phone>
    <email>JudyAApril@dayrep.com</email>
    <contract id="9" startDate="2010-07-23" status="0">
      <company>Corinthian Designs</company>
      <department>Helpdesk</department>
      <occupation>Secretary</occupation>
      <workload>40</workload>
      <extraWork id="1" startDate="2016-03-20" endDate="2016-03-22">
        <company>Mr Fables</company>
        <task>Data processor</task>
        <totalHours>16</totalHours>
      </extraWork>
    </contract>
  </employee>
  <employee id="11456" available="true">
    <personalCode>1157-02-XXXX</personalCode>
    <image>https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS7I-9NIN5ys4TUSF61BYALQ_O_01w_XNNzQw5_mfueta0IQbvAqA</image>
    <name>
      <firstName>Tom</firstName>
      <lastName>Johnson</lastName>
    </name>
    <gender>0</gender>
    <birthDate>1972-02-02</birthDate>
    <phone>124-548-998</phone>
    <email>TomJohnson@dayrep.com</email>
    <contract id="14" startDate="1995-11-23" status="0">
      <company>Corinthian Designs</company>
      <department>Analysis</department>
      <occupation>Analyst</occupation>
      <workload>40</workload>
      <extraWork id="1" startDate="2016-03-20" endDate="2016-03-25">
        <company>Mr Fables</company>
        <task>Data processor</task>
        <totalHours>30</totalHours>
      </extraWork>
    </contract>
  </employee>
</employees>

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="employees">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="employee">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="personalCode" type="xs:string" nillable="false"/>
              <xs:element name="image" type="xs:string"/>
              <xs:element name="name">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="firstName" type="xs:string" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="middleName" type="xs:string" />
                    <xs:element name="lastName" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="gender" type="xs:unsignedByte" nillable="false"/>
              <xs:element name="birthDate" type="xs:date" />
              <xs:element name="phone" type="xs:string" />
              <xs:element name="email" type="xs:string" />
              <xs:element minOccurs="0" maxOccurs="unbounded" name="contract">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="company" type="xs:string" />
                    <xs:element name="department" type="xs:string" />
                    <xs:element name="occupation" type="xs:string" />
                    <xs:element name="workload" type="xs:unsignedByte" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="extraWork">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="company" type="xs:string" />
                          <xs:element name="task" type="xs:string" />
                          <xs:element name="totalHours" type="xs:unsignedByte" />
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                        <xs:attribute name="startDate" type="xs:date" use="required" />
                        <xs:attribute name="endDate" type="xs:date" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="startDate" type="xs:date" use="required" />
                  <xs:attribute name="endDate" type="xs:date" use="optional" />
                  <xs:attribute name="status" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedInt" use="required" />
            <xs:attribute name="available" type="xs:boolean" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT 1 (html)

<?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>Employees</title>
          <style>
          </style>
        </head>
        <body>
          <h1>Employees</h1>
            <table border ="1">
                <tr>
                  <th>ID</th> 
                  <th>First name</th>
                  <th>Last name</th>
                  <th>Company</th>
                  <th>Present occupation</th>
                  <th>Available for extra work</th>
                  <th>Image</th>
                </tr>
              <xsl:for-each select ="/employees/employee"> 
                <tr>
                  <td><xsl:value-of select="@id"/></td>
                  <td><xsl:value-of select="name/firstName"/></td>
                  <td><xsl:value-of select="name/lastName"/></td>
                  
                  <td>
                    <xsl:if test="contract/@endDate = 0"></xsl:if>
                      <xsl:value-of select="contract/company"/></td>

                  <td>
                    <xsl:value-of select="contract/occupation"/>
                  </td>

                  <td>
                    <xsl:choose>
                      <xsl:when test="@available = 'true' ">
                        Yes
                      </xsl:when>
                      <xsl:otherwise>
                        No
                      </xsl:otherwise>
                    </xsl:choose>
                  </td>
                  <td>
                    <xsl:choose>
                      <xsl:when test="not(normalize-space(image)='')">
                        <img width="150" height="95" src="{image}"/>
                      </xsl:when>
                      <xsl:otherwise>
                        Image not available
                      </xsl:otherwise>
                    </xsl:choose>
                  </td>
               </tr>
              </xsl:for-each>
              </table>
          </body>
      </html>
      </xsl:template>
</xsl:stylesheet>

XSLT 2 (xml)

<?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="/">
      <xsl:element name="contracts">
        <xsl:for-each select="//employee">
          <xsl:sort select="contract/@id"/>
          <xsl:for-each select="contract">
            <xsl:element name="contract">

              <xsl:attribute name="id">
                <xsl:value-of select="@id"/>
              </xsl:attribute>
              <xsl:attribute name="startDate">
                <xsl:value-of select="@startDate"/>
              </xsl:attribute>
              <xsl:attribute name="endDate">
                <xsl:value-of select="@endDate"/>
              </xsl:attribute>
              <xsl:attribute name="status">
                <xsl:value-of select="@status"/>
              </xsl:attribute>
              <xsl:element name="employee">
                <xsl:attribute name="id">
                  <xsl:value-of select="../@id"/>
                </xsl:attribute>
                <xsl:attribute name="available">
                  <xsl:value-of select="../@available"/>
                </xsl:attribute>
                <xsl:copy-of select="../name"/>
                <xsl:copy-of select="../personalCode"/>
              </xsl:element>

              <xsl:copy-of select="*"></xsl:copy-of>

            </xsl:element>
          </xsl:for-each>
        </xsl:for-each>
      </xsl:element>
    </xsl:template>
</xsl:stylesheet>

Retsensioonid

XML failide retsensioon meeskonnale PC KartKicker: Talk:Team_PC_KartKicker

Veebiteenuse analüüs

Rakenduse eesmärk on võimaldada tööandjatel leida ettevõttesse/asutusse asenduseks sobivaid inimesi lühikese etteteatamisajaga. Näiteks kui kaupluse kassapidaja peaks jääma haigeks või õpetaja jääb lapsega hoolduslehele. Tööhuvilistel on võimalik andmebaasi lisada oma võimalikud töötamise ajad, oskused ning tasusoov. Tööandjad saavad teha andmebaasist päringut samadel alustel. Rakendus on sarnane GoWorkaBit (https://goworkabit.com) rakendusele, kuid meie juhul on andmebaasist päringute tegijateks tööandjad ja andmete sisestajateks töötajad ise.

Must have

  • Sisselogimine
  • Sisseloginud kasutaja saab lisada enda kohta vabasid aegasid 1 nädal ette
  • Profiilis määratakse oskused (rippmenüü) ja soovitud tasu 1 h kohta
  • Kasutaja saab otsida töötajaid vastavalt enda poolt sisestatud ajale vabadele aegadele, oskustele ning töötasule
  • Kui leitakse sobivad töötajad, saadetakse neile teade.
  • Kõikidel väljavalitutel on võimalik pakkumisega nõustuda, kuid vaid kiireim vastanu saab lepingu
  • Kasutaja saab oma profiili ja vabasid aegasid muuta ning kustutada
  • Teenuse kasutajate ja kasutusstatistika üle arve pidamine kasutajate lõikes
  • Teenuse poole pöördumiste arvu piiramine ja piirangute haldamine

Nice to have

  • Tööandjast kasutaja saab vaadata, millistel aegadel on kõige rohkem töötajaid kättesaadavad
  • Kasutajad saavad vaadata erinevat statistikat, näiteks millised on töötasusoovid erinevate oskustega isikutel või millist tasu erinevate tööde eest üldiselt pakutakse
  • Ekstreemselt äge kasutusmugavus, kaasahaarav kasutajaliides
  • Töötajatel, kes ei jõudnud tööd vastu võtta, on võimalus jääda varutööliste järjekorda