AssistDesq

From EIK wiki

Meeskond

Karen Grigorjan

Idee

Kasutajatugi süsteem "AssistDesq 2018".

Ülesanne on teostada veebirakendus, mis võimaldaks hallata kasutajatoele saadetud pöördumisi. Süsteemi funktsionaalsus oleks järgmine:

• Kasutaja saab sisestada pöördumise.
• Pöördumisel peab olema kirjeldus, sisestamise aeg, lahendamise tähtaeg. Sisestamise ajaks märgitakse pöördumise sisestamise aeg, teised kohustuslikud väljad täidab kasutaja.
• Kasutajale kuvatakse aktiivsed pöördumised koos kõigi väljadega nimekirjas sorteeritult kahanevalt lahendamise tähtaja järgi.
• Pöördumised, mille lahendamise tähtajani on jäänud vähem kui 1 tund või mis on juba ületanud lahendamise tähtaja, kuvatakse nimekirjas punasena.
• Kasutaja saab nimekirjas pöördumisi lahendatuks märkida, mis kaotab pöördumise nimekirjast.

Projekt

Analüüs

Analüüsi document asub siin

Source code

Asub siin

XML

Teema

Support Ticket XML

XML

<?xml version="1.0" encoding="UTF-8"?>
<tickets>
   <ticket id="1" category="3">
      <title><![CDATA[Title]]></title>
      <description><![CDATA[Description]]></description>
      <details>
         <priority id="H">High</priority>
         <user role="1" id="12323" email="top@kek.ee">chubakapra90</user>
         <date>2017-03-19</date>
      </details>
      <attachments>
         <attachment id="1">dsdsad</attachment>
      </attachments>
   </ticket>
   <ticket id="2" category="1">
      <title><![CDATA[Title2]]></title>
      <description><![CDATA[Description2]]></description>
      <details>
         <priority id="M">Medium</priority>
         <user role="2" id="3333" email="hehe@lol.ee">ivanka_trump</user>
         <date>2017-03-20</date>
      </details>
      <attachments>
         <attachment id="1">dsdsad</attachment>
      </attachments>
   </ticket>
</tickets>

XML schema (XSD)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
   <xs:element name="tickets">
      <xs:complexType>
         <xs:sequence>
            <xs:element maxOccurs="unbounded" name="ticket">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="title" type="xs:string" />
                     <xs:element name="description" type="xs:string" />
                     <xs:element name="details">
                        <xs:complexType>
                           <xs:sequence>
                              <xs:element name="priority" type="xs:string">
                                 <xs:attribute name="id" type="xs:string" use="required">
                                    <xs:restriction base="xs:string">
                                     <xs:pattern value="[HML]"/>
                                    </xs:restriction>
                                 </xs:attribute>
                              </xs:element>
                              <xs:element name="user" type="xs:string">
                                 <xs:attribute name="role" type="xs:integer" use="required">
                                     <xs:restriction base="xs:string">
                                      <xs:pattern value="[0-3]"/>
                                     </xs:restriction>
                                 </xs:attribute>
                                 <xs:attribute name="id" type="xs:integer" use="required" />
                                 <xs:attribute name="email" type="xs:string" use="required" />
                              </xs:element>
                              <xs:element name="date" type="xs:date" />
                           </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                     <xs:element name="attachment" type="xs:string">
                        <xs:attribute name="id" type="xs:integer" use="required" />
                     </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:integer" use="required" />
                  <xs:attribute name="category" type="xs:integer" use="required" />
               </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

XSLT 1

XSLT => HTML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0" exclude-result-prefixes="msxsl">
   <xsl:output method="html" indent="yes" />
   <xsl:template match="/">
      <html>
         <head>
            <style type="text/css">
table {
    width: 100%;
}

th {
    height: 50px;
    text-align: left;
}

tr:hover {
    background-color: #f5f5f5
}
th, td {
    border-bottom: 1px solid #ddd;
}
</style>
            <title>Tickets</title>
         </head>
         <body>
            <table>
               <caption>
                  <b>Current tickets</b>
               </caption>
               <tr>
                  <th>Date</th>
                  <th>ID</th>
                  <th>Subject</th>
                  <th>Description</th>
                  <th>Created by</th>
                  <th>Priority</th>
               </tr>
               <xsl:for-each select="/tickets/ticket">
                  <tr>
                     <td>
                        <xsl:value-of select="details/date" />
                     </td>
                     <td>
                        <xsl:value-of select="@id" />
                     </td>
                     <td>
                        <xsl:value-of select="title" />
                     </td>
                     <td>
                        <xsl:value-of select="description" />
                     </td>
                     <td>
                        <xsl:value-of select="details/user" />
                     </td>
                     <td>
                        <xsl:value-of select="details/priority" />
                     </td>
                  </tr>
               </xsl:for-each>
            </table>
            <p>
               Total number of current tickets:
               <xsl:value-of select="count(tickets/ticket)" />
            </p>
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

XSLT 2

XSLT => 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="/">      
      <tickets>
        <ticketstotal>
          <xsl:value-of select="count(tickets/ticket)"/>
        </ticketstotal>
         <xsl:for-each select="/tickets/ticket/">
          <xsl:sort select="/details/date" order="ascending"/>
          <ticket id ="{@id}" category ="{@category}" date="/details/date">
            <title>
            <xsl:value-of select="title"/>
            </title>
             <description>
             <xsl:value-of select="description"/>
             </description>
          </ticket>          
        </xsl:for-each>       
      </tickets>     
    </xsl:template>
</xsl:stylesheet>

Retsensioonid