Ulgurmutid
Tiimi liikmed
- Kristi Paakspuu
- Madis Peep
- Mardo Pahk
Idee
Idee on luua automatiseeritud external javascripti failide loomise keskkond mille sisu saab hallata antud keskkonnas ning saada ka mingisugust statistikat (pageviews).
XML
XML
<?xml version="1.0" encoding="utf-8" ?> <Tags> <Tag ID="1" Hash="ef829858697fad3a25da0692aaaeca0b"> <Timestamps> <Timestamp>1363536429597</Timestamp> <Timestamp>1363536436040</Timestamp> <Timestamp>1363536463034</Timestamp> <Timestamp>1363536470586</Timestamp> </Timestamps> <Stats> <Pageviews> <Total>4</Total> <Today>4</Today> <Last_hour>2</Last_hour> </Pageviews> </Stats> <Description URL="mikumaa.ee"> Mingi mikumaa site. </Description> <Script type="javascript/text"> alert('Hello'); </Script> </Tag> <Tag ID="2" Hash="3714b76ba5767f5a4c490a29db299136"> <Timestamps> <Timestamp>1363539079235</Timestamp> <Timestamp>1363539089011</Timestamp> <Timestamp>1363539098178</Timestamp> <Timestamp>1363539106934</Timestamp> <Timestamp>1363539126730</Timestamp> <Timestamp>1363539137630</Timestamp> <Timestamp>1363539146094</Timestamp> </Timestamps> <Stats> <Pageviews> <Total>7</Total> <Today>4</Today> <Last_hour>1</Last_hour> </Pageviews> </Stats> <Description URL="makaronid.ee"> Leht makaronidest. </Description> <Script type="javascript/text"> alert('Hello V66ld!'); </Script> </Tag> <Tag ID="3" Hash="eff7d5dba32b4da32d9a67a519434d3f"> <Timestamps> <Timestamp>1363539345886</Timestamp> <Timestamp>1363539354250</Timestamp> <Timestamp>1363539361690</Timestamp> <Timestamp>1363539370959</Timestamp> <Timestamp>1363539379614</Timestamp> <Timestamp>1363539386845</Timestamp> <Timestamp>1363539395532</Timestamp> </Timestamps> <Stats> <Pageviews> <Total>7</Total> <Today>7</Today> <Last_hour>7</Last_hour> </Pageviews> </Stats> <Description URL="bad.com"> Bad.com - the baddest site on the web. </Description> <Script type="javascript/text"> alert('Oh harro!'); </Script> </Tag> </Tags>
XML Schema
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Tags"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Tag"> <xs:complexType> <xs:sequence> <xs:element name="Timestamps"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Timestamp" type="xs:unsignedLong" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Stats"> <xs:complexType> <xs:sequence> <xs:element name="Pageviews"> <xs:complexType> <xs:sequence> <xs:element name="Total" type="xs:unsignedByte" /> <xs:element name="Today" type="xs:unsignedByte" /> <xs:element name="Last_hour" type="xs:unsignedByte" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Description"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="URL" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Script"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="type" 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="Hash" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
XSLT 1
<?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> Kõigide scriptide hashid (nende järgi tuntakse ära mis linki päriti). <ul> <xsl:for-each select="Tags/Tag"> <li> <xsl:value-of select="@Hash"/> </li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet>
XSLT 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> Scriptid millele lingid hakkavad viitama <ul> <xsl:for-each select="Tags/Tag"> <li><xsl:value-of select="Script"/></li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet>
XSLT 3
<?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> Kõik timestampid. Kui nüüd kombineerida need hashiga, siis saame teada mis kellaajal mingit scripti on laetud ning kui palju (sisuliselt mingi scripti pageview-de arv). <ol> <xsl:for-each select="Tags/Tag"> Järgmised timestampid: <xsl:for-each select="Timestamps/Timestamp"> <li> <xsl:value-of select="."/> </li> </xsl:for-each> <br/><br/> </xsl:for-each> </ol> </body> </html> </xsl:template> </xsl:stylesheet>
API dokumentatsioon
Alert
- GetAllAlerts(string id, string pass) Tagastab kasutaja kõik Alertid.
- GetAlertById(string id, string pass, int alertId) Tagastab Alerti selle Id järgi.
- Post(string id, string pass, int scriptId, string email, int pageV) Loob uue Alert-i skriptile.
- Put(string id, string pass, int alertId, int scriptId, string email, int pageV) Uuendab Alert-i andmeid.
- Delete(string id, string pass, int alertId) Kustutab Alert-i.
Hit
- GetScript(string hash) Tagastab skripti sisu selle hash-i järgi. Hash käitub Id-na ja on turvalisem, kui tavaline Id.
Script
- Get(string id, string pass) Tagastab kõik kasutaja skriptid.
- GetAllSitesPageview(string id, string pass) Tagastab kõik kasutaja leheküljed ja lehekülastatavusearvud.
- GetSitePageviewsById(string id, string pass, int scriptId) Tagastab skripti lehekülastatavuse selle skripti Id järgi.
- GetScriptById(string id, string pass, int scriptId) Tagastab skripti selle Id järgi.
- Post(string id, string pass, [FromBody]Script temp) Loob uue skripti kasutajale.
- Put(string id, string pass, int scriptId, [FromBody]Script temp) Uuendab skripti, mille Id on antud.
- Delete(string id, string pass, int scriptId) Kustutab skripti selle skripti Id järgi.
Url
- GetScriptUrlById(string id, string pass, int scriptId) Tagastab skripti (valitud skripti Id järgi) URL-i.
- GetScriptUrlList(string id, string pass) Tagastav kasutaja kõikide skriptide URL-id.
User
- Get(string id,string pass) Teeb kasutaja parooli hash-i kujule. Kasutatakse MD5Hash-i.
- Post(string id, string pass, string email, string first, string last) Loob uue kasutaja.
Retsensioon
- Klientrakendus baasil Meeskond "asdasdasd". Siin:
Klientrakenduse välimusega on kõvasti vaeva nähtud, isegi nupud rakenduse alla panekuks ja sulgemiseks on muudetud teistsuguseks. Kasutaja loomisel ei kontrollita kas emaili aadress on tegelikult korralik või ei ole. Valid tekstiga kirjad tekivad kõrvale niipea kui midagi sisse kirjutada. Kasutaja loodud ning sisse logitud on kohe teada, millise rolliga sa sisse oled logitud ja samas on näha su enda kasutaja nime üleval, mis on väga hea. Kategooriad ja alamkategooriad on juba tuttavast Rss lugeri põhimõttel selection listidega lahendatud. Info relvade kohta ilmub koguaeg kenasti ühte aknasse ja sealt saab kogu info kätte. Välja logimisel tuleb huvitav messagebox ette, kus hoiatatakse, et kui ma välja login siis ma küpsist ei saa. Vahva. ViewModel kataloogist võib leida hunnik klassi faile, mis viitavad ServiceApp references poole. Xaml kaustast võib leida kõik vaated mida kasutatakse. Vaadetega on korralikult vaeva nähtud. Vaadete klasside poolepealt võib leida unit of work-i. Üldine rakenude mulje on väga positiivne ning kood on kenasti loetavalt struktureeritud ning arusaadav.
Projekt ise
- Asub Siin: http://enos.itcollege.ee/~mpeep/lahtekood/