diff --git a/.github/workflows/typst.yml b/.github/workflows/typst.yml new file mode 100644 index 0000000..415f375 --- /dev/null +++ b/.github/workflows/typst.yml @@ -0,0 +1,29 @@ +name: Build Typst document +on: [push, workflow_dispatch] +permissions: + contents: write +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Typst + uses: lvignoli/typst-action@main + with: + source_file: | + main.typ + - name: Upload PDF file + uses: actions/upload-artifact@v3 + with: + name: PDF + path: "*.pdf" + - name: Get current date + id: date + run: echo "DATE=$(date +%Y-%m-%d-%H:%M)" >> $GITHUB_ENV + - name: Release + uses: softprops/action-gh-release@v1 + if: github.ref_type == 'tag' + with: + name: "${{ github.ref_name }} — ${{ env.DATE }}" + files: main.pdf diff --git a/abstract.typ b/abstract.typ index f2c578c..896713a 100644 --- a/abstract.typ +++ b/abstract.typ @@ -4,24 +4,26 @@ level: 1, outlined: false, numbering: none, - "Anotācija" + "Anotācija", ) - #indent-par([ -Sociālā lomu spēle "Mafija" ir plaši pazīstama. Tā ir pieejama vairākos -paveidos un formātos, kā arī piedāvā neierobežotu konfigurāciju un lomu skaitu. -Spēlētāju ērtībai tiek nodrošināts tīmekļa vietnes formāts, kas ietver -norādījumus, informējot lietotāju par pieejamajām iespējām, un skaidrojumus, -aprakstot spēles elementus un saskarni, ar mērķi atvieglot tās lietošanu. -Tirgus izpēte apliecina, ka ir pieejami vairāki, nepilnvērtīgi risinājumi. -Programmatūras prasību specifikācija apraksta sistēmas pamatprasības un -papildus funkcionalitāti, tostarp lomu klāsta papildināšanu, spēles -konfigurāciju izveidi, kā arī priviliģētu lietotāju (maksas lietotāju) izveidošanu, -pielietojot abonementa paveida maksājumu sistēmu. + Sociālā lomu spēle "Mafija" ir plaši pazīstama. Tā ir pieejama vairākos + paveidos un formātos, kā arī piedāvā neierobežotu konfigurāciju un lomu skaitu. + Spēlētāju ērtībai tiek nodrošināts tīmekļa vietnes formāts, kas ietver + norādījumus, informējot lietotāju par pieejamajām iespējām, un skaidrojumus, + aprakstot spēles elementus un saskarni, ar mērķi atvieglot tās lietošanu. + Tirgus izpēte apliecina, ka ir pieejami vairāki, nepilnvērtīgi risinājumi. + Programmatūras prasību specifikācija apraksta sistēmas pamatprasības un + papildus funkcionalitāti, tostarp lomu klāsta papildināšanu, spēles + konfigurāciju izveidi, kā arī priviliģētu lietotāju (maksas lietotāju) izveidošanu, + pielietojot abonementa paveida maksājumu sistēmu. ]) -#par(first-line-indent: 0cm, [*Atslēgvārdi:*]) +#par( + first-line-indent: 0cm, + [*Atslēgvārdi:*], +) Mafijas spēle, sistēmas prasības, specifikācijas dokuments, programmatūras uzlabošana, lomu spēle, vienkāršota spēlēšana, organizatoriski risinājumi, @@ -29,35 +31,36 @@ programmatūras prasību specifikācija, lietotāju veidots saturs, abonements, maksas lietotājs, maksājumu apstrādātāja lietojumprogrammas saskarni (API). #text( - hyphenate: auto, - lang: "en", - [ - -#pagebreak() -#heading( - level: 1, - outlined: false, - numbering: none, - "Abstract" -) - -#indent-par([ -The social role-playing game "Mafia" is widely known. It is available in -various versions and formats, offering an unlimited number of configurations -and roles. For the convenience of players, the game is made as a web -application that includes instructions, informing the user about available -ptions, and explanations describing the game's elements and interface, to improve user experience. Market research confirms that several mediocre solutions are -available. The software requirements specification describes the system's basic -requirements with additional functionality, including expanding the range of -roles, creating game configurations, and a privileged user (premium user) using -a subscription-based payment system. -]) - - -#par(first-line-indent: 0cm, [*Keywords:*]) - -Mafia game, system requirements, specification document, software improvement, -role-playing, simplified gameplay, organizational solutions, software -requirements specification, user-generated content, subscription, premium user, -payment processor application program interface (API). -]) \ No newline at end of file + hyphenate: auto, + lang: "en", + [ + #pagebreak() + #heading( + level: 1, + outlined: false, + numbering: none, + "Abstract", + ) + #indent-par([ + The social role-playing game "Mafia" is widely known. It is available in + various versions and formats, offering an unlimited number of configurations + and roles. For the convenience of players, the game is made as a web + application that includes instructions, informing the user about available + options, and explanations describing the game's elements and interface, to + improve user experience. + Market research confirms that several mediocre solutions are + available. The software requirements specification describes the system's basic + requirements with additional functionality, including expanding the range of + roles, creating game configurations, and a privileged user (premium user) using + a subscription-based payment system. + ]) + #par( + first-line-indent: 0cm, + [*Keywords:*], + ) + Mafia game, system requirements, specification document, software improvement, + role-playing, simplified gameplay, organizational solutions, software + requirements specification, user-generated content, subscription, premium user, + payment processor application program interface (API). + ], +) diff --git a/layout.typ b/layout.typ index 97ec9fd..1e83796 100644 --- a/layout.typ +++ b/layout.typ @@ -2,10 +2,11 @@ #import "@preview/big-todo:0.2.0": * #import "@preview/tablex:0.0.6": tablex - #let indent = 1cm -#let indent-par(body) = par(h(indent) + body) - +#let indent-par( + body, +) = par(h(indent) + body) + #let project( university: "", faculty: "", @@ -13,27 +14,27 @@ authors: (), advisor: "", date: "", - body + body, ) = { set document(author: authors) - + set page( - margin: (left: 30mm, right: 20mm, top: 20mm, bottom: 20mm), + margin: ( + left: 30mm, + right: 20mm, + top: 20mm, + bottom: 20mm, + ), number-align: center, - paper: "a4" + paper: "a4", ) set text( //font: "New Computer Modern", - font: "CMU", - size: 12pt, - hyphenate: auto, - lang: "lv", - region: "LV" + font: "CMU", size: 12pt, hyphenate: auto, lang: "lv", region: "LV", ) show raw: set text(font: "New Computer Modern Mono") - - show math.equation: set text(weight: 400) + show math.equation: set text(weight: 400) // Formatting for regular text set par( @@ -45,19 +46,23 @@ show heading: set block(spacing: 1.5em) set terms(separator: [ -- ]) - // Headings set heading(numbering: "1.1.") show heading: it => { if it.level == 1 { // pagebreak(weak: true) - text(14pt, align(center, upper(it))) + text( + 14pt, + align( + center, + upper(it), + ), + ) } else { it } } - /* Title page config start */ align( center, @@ -67,78 +72,111 @@ [ #university\ #faculty - ] - ) - )) + ], + ), + ), + ) v(1fr) align( - center, - text(20pt, weight: "bold", title) + center, + text( + 20pt, + weight: "bold", + title, + ), ) v(1fr) - + // Author information - align(right, [ + align( + right, + [ #if authors.len() > 1 { - text(weight: "bold", "Darba autori:") - } else { - text(weight: "bold", "Darba autors:") - }\ + text( + weight: "bold", + "Darba autori:", + ) + } else { + text( + weight: "bold", + "Darba autors:", + ) + }\ #authors.join("\n") #v(2em) - + #if advisor != "" { - text(weight: "bold", "Darba vadītājs:\n") + text( + weight: "bold", + "Darba vadītājs:\n", + ) advisor } - ]) - + ], + ) + v(0.5fr) - - align(center, - upper(text(date)) + + align( + center, + upper( + text(date), + ), ) /* Title page config end */ - // WARNING: removove before sending // todo_outline - /* --- Figure/Table conf start --- */ show heading: i-figured.reset-counters show figure: i-figured.show-figure.with(numbering: "1.1.") - + show figure.where(kind: "i-figured-table"): set block(breakable: true) show figure.where(kind: "i-figured-table"): set figure.caption(position: top) - show figure: set par(justify: false) // disable justify for figures (tables) - + show figure.caption: it => { if it.kind == "i-figured-table" { - align(end, emph(it.counter.display(it.numbering) + " tabula ") + text(weight: "bold", it.body)) + align( + end, + emph(it.counter.display(it.numbering) + " tabula ") + text( + weight: "bold", + it.body, + ), + ) } else if it.kind == "i-figured-image" { - align(start, emph(it.counter.display(it.numbering) + " att. ") + text(weight: "bold", it.body)) + align( + start, + emph(it.counter.display(it.numbering) + " att. ") + text( + weight: "bold", + it.body, + ), + ) } else { it } } - - set ref(supplement: it => {}) // disable default reference suppliments + + set ref(supplement: it => { }) // disable default reference suppliments /* --- Figure/Table conf end --- */ - set list(marker: ([•], [--], [\*], [·])) + set list(marker: ( + [•], + [--], + [\*], + [·], + )) set enum(numbering: "1aiA)") // TODO: make the same style as LaTeX: 1. | (a) | i. | A. - // Abstract include "abstract.typ" - + /* ToC config start */ // Uppercase 1st level headings in ToC show outline.entry.where(level: 1): it => { @@ -146,11 +184,21 @@ } pagebreak() - outline(depth: 3, indent: 1cm, title: text(size: 14pt, "SATURS")) + outline( + depth: 3, + indent: 1cm, + title: text( + size: 14pt, + "SATURS", + ), + ) /* ToC config end */ // Start page numering - set page(numbering: "1", number-align: center) + set page( + numbering: "1", + number-align: center, + ) // Main bdy. body diff --git a/main.pdf b/main.pdf deleted file mode 100644 index d21133b..0000000 Binary files a/main.pdf and /dev/null differ diff --git a/main.typ b/main.typ index 9e7f37f..dd3a400 100644 --- a/main.typ +++ b/main.typ @@ -6,7 +6,7 @@ #show: project.with( university: "Latvijas Universitāte", - faculty:"Datorikas fakultāte", + faculty: "Datorikas fakultāte", title: [Tiešsaistes spēles sistēma "Mafija"\ Praktiskais darbs programminžinierijā], authors: ( "Alens Aleksandrs Čerņa, ac22065", @@ -16,7 +16,7 @@ "Jorens Štekeļs, js21283", ), advisor: "prof. Dr. sc. comp. Laila Niedrīte", - date: "Rīga 2023", + date: "Rīga 2024", ) @@ -25,40 +25,43 @@ #pagebreak(weak: true) = Apzīmējumu saraksts -#par(first-line-indent: 0cm, [ -/ API: lietojumprogrammu saskarne (angl. Application Program Interface); -/ Abonements: uz noteiktu laiku par maksu piešķirtās papildus lietotāja iespējas; -/ BCNF: Boisa-Kodda normālforma (angl. Boyce–Codd normal form) izmanto datu bāzu normalizācijā; -/ CSRF: Starpvietņu pieprasījuma viltošana (angl. Cross-Site Request Forgery) -- uzbrukuma veids, kurā ļaunprātīgi pieprasījumi tiek izsūtīti no lietotāja pārlūka, izmantojot lietotāja autentifikācijas datus; -/ DPD: datu plūsmas diagramma; -/ Dialogs: lietotāja saskarnes elements, kas parāda ziņojumu un piedāvā lietotājam vienu vai vairākas iespējas, kuras izvēlēties; -/ Docker/Konteineris: ir platforma, kas izmanto operētājsistēmas līmeņa virtualizāciju, lai piegādātu programmatūru; -/ ER modelis: entitāšu saišu modelis (angl. Entity-Relationship model); -/ GDPR: vispārīgā datu aizsardzības regula (angl. General Data Protection Regulation) -- Eiropas Savienības regula, kas nosaka kā jāapstrādā un jāaizsargā personu dati; -/ HTTP: hiperteksta pārsūtīšanas protokols (angl. Hypertext Transfer Protocol) -- protokols datu pārsūtīšanai tīmeklī, galvenokārt izmantojot tīmekļa lapas; -/ IP adrese: Interneta protokola adrese (angl. Internet Protocol address) -- unikāls numurs, kas tiek piešķirts katrai ierīcei, kas ir savienota ar datoru tīklu, kas izmanto IP komunikāciju; -/ Istaba (spēles istaba): lietotāju kopa, kas ir saistīti vienas spēles ietvaros, i.e., spēles instance; -/ Izvairīšanās simboli: izvairīšanās simboli (angl. escape symbols vai escape characters) ir īpaši simboli, kas ļauj iekļaut teksta virknēs simbolus, kuri parasti ir rezervēti citām funkcijām; -/ Karodziņš: Būla mainīgais, i.e., mainīgais, kas var būt patiess vai nepatiess; -/ Klienta identifikators: maksājumu apstrādātāja uzglabāts identifikators, kas ir saistīts ar sistēmas lietotāju; -/ Komandu injekcija: drošības uzbrukuma veids, kurā uzbrucējs var izpildīt ļaunprātīgas komandas sistēmā, izmantojot drošības nepilnības; -/ Loma (spēles loma): spēlēs loma, kam piemīt noteiktas darbības un mērķis; -/ Maksas siena: maksājums par lietotāju pieeju daļai no sistēmas piedāvātās funkcionalitātes; -/ PNG: portatīvā tīkla grafika (angl. Portable Network Graphics) ir rastra grafikas failu formāts, kas atbalsta datu saspiešanu bez zudumiem; -/ PPA: programmatūras projektējuma apraksts; -/ PPS: programmatūras prasību specifikācija; -/ PostgreSQL: ir atvērtā koda objektu-relationālās datu bāzes pārvaldības sistēma, kas atbalsta plašu strukturētas vaicājumu valodas funkcionalitāti; -/ SQL injekcija: drošības apdraudējums, kas rodas, kad uzbrucējs var ievietot vai "injicēt" SQL komandas datu bāzes vaicājumā, tādējādi mainot tā darbību vai izgūstot konfidenciālu informāciju; -/ SQL: strukturēta vaicājumu valoda (angl. val. Structured Query Language) ir standartizēta programmēšanas valoda, kas ir plaši izmantojama datu bāzu pārvaldībai; -/ Sanitizēšana: Datu vai ievades apstrāde, lai noņemtu vai neitralizētu potenciāli kaitīgus vai nevēlamus elementus; -/ Sistēmas loma: sistēmas lietotāju grupa ar noteiktām privilēģijām; -/ Skripts: Automatizēta instrukciju virkne, kas izpilda noteiktas darbības programmēšanas vai sistēmas vidē; -/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā; -/ Sāls pievienošana: Drošības metode, kurā pirms paroles jaucējfunkcijas izmantošanas tai tiek pievienots nejaušs simbolu virknes fragments, lai padarītu paroles atšifrēšanu sarežģītāku; -/ UTC: saskaņotais pasaules laiks (angl. Coordinated Universal Time) -- starptautisks, ļoti precīzs un stabils laika noteikšanas standarts; -/ UTF8: Vienota teksta formāta kodējums 8-bitu garumā (angl. Unicode Transformation Format -- 8 bit) -- populārs teksta kodējums, kas atbalsta visu pasaules valodu rakstzīmes; -/ XSS: Starpvietņu skriptēšana (angl. Cross-Site Scripting) -- drošības uzbrukuma veids, kurā uzbrucēji ievieto ļaunprātīgus skriptus tīmekļa lapā, kas tiek izpildīti citu lietotāju pārlūkos. -]) +#par( + first-line-indent: 0cm, + [ + / API: lietojumprogrammu saskarne (angl. Application Program Interface); + / Abonements: uz noteiktu laiku par maksu piešķirtās papildus lietotāja iespējas; + / BCNF: Boisa-Kodda normālforma (angl. Boyce–Codd normal form) izmanto datu bāzu normalizācijā; + / CSRF: Starpvietņu pieprasījuma viltošana (angl. Cross-Site Request Forgery) -- uzbrukuma veids, kurā ļaunprātīgi pieprasījumi tiek izsūtīti no lietotāja pārlūka, izmantojot lietotāja autentifikācijas datus; + / DPD: datu plūsmas diagramma; + / Dialogs: lietotāja saskarnes elements, kas parāda ziņojumu un piedāvā lietotājam vienu vai vairākas iespējas, kuras izvēlēties; + / Docker/Konteineris: ir platforma, kas izmanto operētājsistēmas līmeņa virtualizāciju, lai piegādātu programmatūru; + / ER modelis: entitāšu saišu modelis (angl. Entity-Relationship model); + / GDPR: vispārīgā datu aizsardzības regula (angl. General Data Protection Regulation) -- Eiropas Savienības regula, kas nosaka kā jāapstrādā un jāaizsargā personu dati; + / HTTP: hiperteksta pārsūtīšanas protokols (angl. Hypertext Transfer Protocol) -- protokols datu pārsūtīšanai tīmeklī, galvenokārt izmantojot tīmekļa lapas; + / IP adrese: Interneta protokola adrese (angl. Internet Protocol address) -- unikāls numurs, kas tiek piešķirts katrai ierīcei, kas ir savienota ar datoru tīklu, kas izmanto IP komunikāciju; + / Istaba (spēles istaba): lietotāju kopa, kas ir saistīti vienas spēles ietvaros, i.e., spēles instance; + / Izvairīšanās simboli: izvairīšanās simboli (angl. escape symbols vai escape characters) ir īpaši simboli, kas ļauj iekļaut teksta virknēs simbolus, kuri parasti ir rezervēti citām funkcijām; + / Karodziņš: Būla mainīgais, i.e., mainīgais, kas var būt patiess vai nepatiess; + / Klienta identifikators: maksājumu apstrādātāja uzglabāts identifikators, kas ir saistīts ar sistēmas lietotāju; + / Komandu injekcija: drošības uzbrukuma veids, kurā uzbrucējs var izpildīt ļaunprātīgas komandas sistēmā, izmantojot drošības nepilnības; + / Loma (spēles loma): spēlēs loma, kam piemīt noteiktas darbības un mērķis; + / Maksas siena: maksājums par lietotāju pieeju daļai no sistēmas piedāvātās funkcionalitātes; + / PNG: portatīvā tīkla grafika (angl. Portable Network Graphics) ir rastra grafikas failu formāts, kas atbalsta datu saspiešanu bez zudumiem; + / PPA: programmatūras projektējuma apraksts; + / PPS: programmatūras prasību specifikācija; + / PostgreSQL: ir atvērtā koda objektu-relationālās datu bāzes pārvaldības sistēma, kas atbalsta plašu strukturētas vaicājumu valodas funkcionalitāti; + / SQL injekcija: drošības apdraudējums, kas rodas, kad uzbrucējs var ievietot vai "injicēt" SQL komandas datu bāzes vaicājumā, tādējādi mainot tā darbību vai izgūstot konfidenciālu informāciju; + / SQL: strukturēta vaicājumu valoda (angl. val. Structured Query Language) ir standartizēta programmēšanas valoda, kas ir plaši izmantojama datu bāzu pārvaldībai; + / Sanitizēšana: Datu vai ievades apstrāde, lai noņemtu vai neitralizētu potenciāli kaitīgus vai nevēlamus elementus; + / Sistēmas loma: sistēmas lietotāju grupa ar noteiktām privilēģijām; + / Skripts: Automatizēta instrukciju virkne, kas izpilda noteiktas darbības programmēšanas vai sistēmas vidē; + / Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā; + / Sāls pievienošana: Drošības metode, kurā pirms paroles jaucējfunkcijas izmantošanas tai tiek pievienots nejaušs simbolu virknes fragments, lai padarītu paroles atšifrēšanu sarežģītāku; + / UTC: saskaņotais pasaules laiks (angl. Coordinated Universal Time) -- starptautisks, ļoti precīzs un stabils laika noteikšanas standarts; + / UTF8: Vienota teksta formāta kodējums 8-bitu garumā (angl. Unicode Transformation Format -- 8 bit) -- populārs teksta kodējums, kas atbalsta visu pasaules valodu rakstzīmes; + / XSS: Starpvietņu skriptēšana (angl. Cross-Site Scripting) -- drošības uzbrukuma veids, kurā uzbrucēji ievieto ļaunprātīgus skriptus tīmekļa lapā, kas tiek izpildīti citu lietotāju pārlūkos. + ], +) #pagebreak(weak: true) = Ievads @@ -66,12 +69,12 @@ == Nolūks #indent-par([ -Šī dokumenta mērķis ir raksturot tiešsaistes sistēmas "Mafija" programmatūras prasības. Sistēma ir paredzēta individuāliem lietotājiem, kuru interesēs ir iesaistīties savstarpējā sociālā aktivitātē lomu spēles formātā. + Šī dokumenta mērķis ir raksturot tiešsaistes sistēmas "Mafija" programmatūras prasības. Sistēma ir paredzēta individuāliem lietotājiem, kuru interesēs ir iesaistīties savstarpējā sociālā aktivitātē lomu spēles formātā. ]) == Darbības sfēra #indent-par([ -Sistēma "Mafija" ir atvasināta no plaši pazīstamas sociālas lomu spēles, kas balstīta uz dedukciju. Spēlē piedalās indivīdi -- spēlētāji. Tiem piešķirtas lomas, kas pieder kādai lomu grupai. Lomu grupa "Ciems" cenšas izdibināt kuri ir lomu grupas "Mafija" locekļi. Mafijas mērķis ir radīt haosu ciema iedzīvotāju vidū un pakāpeniski izslēgt ciema iedzīvotājus no spēles, izmantojot stratēģisku manipulāciju un iedalītās lomas darbības. Spēlētāji, kuri nav ietverti ne "Ciems", ne "Mafija" lomu grupā cenšas sasniegt tiem iedalītās lomas mērķi. Tikai "Mafijas" locekļiem ir informācija par to, kuri no spēlētāju loka pieder "Mafija" lomu grupai. Katram spēlētājam jāizmanto individuāla ierīce, kas var pieslēgties tīmeklim, lai pieteiktos sistēmā, pievienotos konkrētai spēlei un tajā piedalītos. + Sistēma "Mafija" ir atvasināta no plaši pazīstamas sociālas lomu spēles, kas balstīta uz dedukciju. Spēlē piedalās indivīdi -- spēlētāji. Tiem piešķirtas lomas, kas pieder kādai lomu grupai. Lomu grupa "Ciems" cenšas izdibināt kuri ir lomu grupas "Mafija" locekļi. Mafijas mērķis ir radīt haosu ciema iedzīvotāju vidū un pakāpeniski izslēgt ciema iedzīvotājus no spēles, izmantojot stratēģisku manipulāciju un iedalītās lomas darbības. Spēlētāji, kuri nav ietverti ne "Ciems", ne "Mafija" lomu grupā cenšas sasniegt tiem iedalītās lomas mērķi. Tikai "Mafijas" locekļiem ir informācija par to, kuri no spēlētāju loka pieder "Mafija" lomu grupai. Katram spēlētājam jāizmanto individuāla ierīce, kas var pieslēgties tīmeklim, lai pieteiktos sistēmā, pievienotos konkrētai spēlei un tajā piedalītos. ]) Katra spēlētāja ierīcē spēles sesijas laikā tiek parādīta informācija par iedalīto lomu un ar to saistītajām, pieejamajām darbībām. Informāciju nav paredzēts vai atļauts rādīt citiem spēlētājiem. Sistēmas vizuālā saskarne ietver informāciju par spēles aktuālo stāvokli, precīzāk, fāzi (diena, nakts vai balsošana), spēles ilgumu, palikušo spēlētāju skaitu un citiem spēli raksturojošiem faktoriem. @@ -87,13 +90,13 @@ Katram spēlētājam tiek nodrošināta sinhronizēta informācija par spēles s == Saistība ar citiem dokumentiem #indent-par([ -PPS ir izstrādāta, ievērojot LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis" un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma aprakstīšanai" standarta prasības. + PPS ir izstrādāta, ievērojot LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis" un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma aprakstīšanai" standarta prasības. ]) == Pārskats #indent-par([ -Dokumenta ievads satur tā nolūku, izstrādājamās programmatūras skaidrojumu, vispārīgu programmatūras mērķi un funkciju klāstu, saistību ar citiem dokumentiem, kuru prasības tika izmantotas dokumenta izstrādāšanas gaitā, kā arī pārskatu par dokumenta daļu saturu ar dokumenta struktūras skaidrojumu. + Dokumenta ievads satur tā nolūku, izstrādājamās programmatūras skaidrojumu, vispārīgu programmatūras mērķi un funkciju klāstu, saistību ar citiem dokumentiem, kuru prasības tika izmantotas dokumenta izstrādāšanas gaitā, kā arī pārskatu par dokumenta daļu saturu ar dokumenta struktūras skaidrojumu. ]) Pirmajā nodaļa tiek aprakstīti faktori, kas var ietekmēt produktu un tā prasības. Nodaļā tiek pamatota programmatūras izstrādes motivācija un nolūks, aprakstītas produkta vieta citu sistēmu perspektīvā, galvenās augsta līmeņa darījumprasības, sistēmas lietotāju grupu lomas un mērķi, kā arī tiek uzskaitīti faktori, kas var ierobežot vai ietekmēt programmatūras prasību specifikāciju. @@ -109,19 +112,19 @@ Trešajā nodaļā tiek aprakstīta daļa no projektējuma. Nodaļa satur datu b == Esošā stāvokļa apraksts #indent-par([ -Tirgū pastāv vairākas sistēmas un citi programmatūras formāti, piemēram, lietotnes, kas piedāvā dažādas lomu spēļu variācijas, to skaitā, "Warewolf online", "Town of Salem", "Mafia.gg", "BeyondMafia", "Mafia: The Game" un daudzi citi. Esošiem risinājumiem ir vairākas problēmas: maksas piekļuve, pārmērīgs iespēju skaits, kas ir pieejamas tikai par maksu, spēle ir pieejama tikai uz mobilā viedtālruņa. "Mafija" īstenos svarīgākās no esošo spēļu iespējām un pievienos jaunas iespējas, kas papildinās un uzlabos lietotāju pieredzi, kā arī samazinās maksas funkciju īpatsvaru. + Tirgū pastāv vairākas sistēmas un citi programmatūras formāti, piemēram, lietotnes, kas piedāvā dažādas lomu spēļu variācijas, to skaitā, "Warewolf online", "Town of Salem", "Mafia.gg", "BeyondMafia", "Mafia: The Game" un daudzi citi. Esošiem risinājumiem ir vairākas problēmas: maksas piekļuve, pārmērīgs iespēju skaits, kas ir pieejamas tikai par maksu, spēle ir pieejama tikai uz mobilā viedtālruņa. "Mafija" īstenos svarīgākās no esošo spēļu iespējām un pievienos jaunas iespējas, kas papildinās un uzlabos lietotāju pieredzi, kā arī samazinās maksas funkciju īpatsvaru. ]) == Pasūtītājs #indent-par([ -Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota un projektēta ar iespēju realizēt pēc studentu grupas iniciatīvas programminženierijas kursa ietvaros. + Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota un projektēta ar iespēju realizēt pēc studentu grupas iniciatīvas programminženierijas kursa ietvaros. ]) == Produkta perspektīva #indent-par([ -Sistēmā tiek integrēti vai izmantoti citu uzņēmumu un izstrādātāju piedāvāti pakalpojumi. Produkta realizācijā ir paredzēts izmantot maksājumu apstrātāja un e-pasta pakalpojumu sniedzēja pakalpojumus, kamēr tie atbilst sistēmas pieprasītajai funkcionalitātei un piedāvā optimālākos, kā arī drošākos un efektīvākos risinājumus tirgū. + Sistēmā tiek integrēti vai izmantoti citu uzņēmumu un izstrādātāju piedāvāti pakalpojumi. Produkta realizācijā ir paredzēts izmantot maksājumu apstrātāja un e-pasta pakalpojumu sniedzēja pakalpojumus, kamēr tie atbilst sistēmas pieprasītajai funkcionalitātei un piedāvā optimālākos, kā arī drošākos un efektīvākos risinājumus tirgū. ]) Maksājumu apstrādātājs realizēs lietotāju maksas pakalpojumu iegādi konkrētu papildus funkciju iegūšanai uz noteiktu laiku. Informācija par abonementiem tiek glabāta galvenokārt ārpus sistēmas. Tiks izmantota pakalpojumu sniedzēja nodrošināta maksājumu apstrāde ārpus "Mafija" sistēmas, sistēmā glabājot minimālu informāciju par maksājumu, tas ir, klienta identifikatoru, ko sagatavo maksājumu pakalpojuma sniedzējs. E-pasta apstiprināšanas un paroles atjaunošanas e-pastu izsūtīšanai tiks izmantots e-pasta pakalpojumu sniedzējs. @@ -129,27 +132,27 @@ Maksājumu apstrādātājs realizēs lietotāju maksas pakalpojumu iegādi konkr == Darījumprasības #indent-par([ -Sistēmā tiks realizētas sekojošās darījumprasības: -+ Lietotāju reģistrācija, autentifikācija; -+ Lietotāju un to kontu pārvalde; -+ Lietotāju kontu apstiprināšana, izmantojot e-pastu; -+ Lietotāju profilu personalizācija un kontu rediģēšana; -+ Lietotāju stāvokļa virtuālajās telpās uzturēšana un izmaiņa; -+ Spēles automātiska vadība; -+ Lietotāju informēšana, izmantojot paziņojumu sistēmu; -+ Sinhronizēta spēles stāvokļa atjaunināšana; -+ Spēles uzstādījumu un lomu veidošana, rediģēšana un dzēšana; -+ Atvērtās un privātās virtuālās spēles istabas; -+ Kopēja un ierobežota (spēles lomu grupu atkarīga) tērzēšana; -+ Privilēģiju izmaiņa, izmantojot bezpersonisku maksājumu sistēmu; -// Isn't it similar wo the 2nd? -+ Lietotāju administrēšana administratoru lietotāju grupai. + Sistēmā tiks realizētas sekojošās darījumprasības: + + Lietotāju reģistrācija, autentifikācija; + + Lietotāju un to kontu pārvalde; + + Lietotāju kontu apstiprināšana, izmantojot e-pastu; + + Lietotāju profilu personalizācija un kontu rediģēšana; + + Lietotāju stāvokļa virtuālajās telpās uzturēšana un izmaiņa; + + Spēles automātiska vadība; + + Lietotāju informēšana, izmantojot paziņojumu sistēmu; + + Sinhronizēta spēles stāvokļa atjaunināšana; + + Spēles uzstādījumu un lomu veidošana, rediģēšana un dzēšana; + + Atvērtās un privātās virtuālās spēles istabas; + + Kopēja un ierobežota (spēles lomu grupu atkarīga) tērzēšana; + + Privilēģiju izmaiņa, izmantojot bezpersonisku maksājumu sistēmu; + // Isn't it similar wo the 2nd? + + Lietotāju administrēšana administratoru lietotāju grupai. ]) == Sistēmas lietotāji #indent-par([ -Neautentificēts lietotājs (viesis), i.e., viesis ir jebkurš lietotājs, kas nav pieteicies vai reģistrējies sistēmā. Šiem lietotājiem ir pieejamas funkcijas, lai reģistrētos vai pieteiktos sistēmā; + Neautentificēts lietotājs (viesis), i.e., viesis ir jebkurš lietotājs, kas nav pieteicies vai reģistrējies sistēmā. Šiem lietotājiem ir pieejamas funkcijas, lai reģistrētos vai pieteiktos sistēmā; ]) Kad lietotājs ir pieteicies un ir autentificēts, tam ir pieejamas reģistrēta lietotāja grupas tiesības, precīzāk, darbības, kas saistītas ar spēli, profilu un konta pārvaldi. Tā būs vislielākā grupa pēc lietotāju skaita. Maksas lietotājiem, precīzāk, reģistrētiem lietotājiem, kuriem piesaistīts aktīvs abonements, tiek piešķirtas papildus tiesības -- izveidot jaunas virtuālās istabas, izveidot jaunu lomu, izvēlēties spēles uzstādījumus sevis veidotās istabās un citas. Maksas lietotāja grupa ir atvasināta no reģistrēta lietotāja grupas. @@ -160,7 +163,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ #figure( caption: "0. līmeņa DPD", - image("img/dpd0/0tāLīmeņaDPD.svg") + image("img/dpd0/0tāLīmeņaDPD.svg"), ) == Vispārējie ierobežojumi @@ -181,7 +184,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ - Ierīce uztur stabilu interneta savienojumu ar joslas platumu vismaz 2 megabiti sekundē un latentumu līdz 1000ms; - Lietotāja izvēlētā pārlūkprogramma atbilst un spēj pilnvērtīgi izpildīt sistēmas prasības; // Added a note: Payment processor should offer similar functionality as required by the specification -- Maksājumus apstrādās pasūtītāja izvēlēts pakalpojumu sniedzējs, nodrošinot tīmekļa vietnes saskarni maksājuma veikšanai un tā apstrādi ārpus "Mafija" sistēmas. Pasūtītāja izvēlētam maksājumu apstrādātājam ir jārealizē no tā sagaidāmā funkcionalitāte. +- Maksājumus apstrādās pasūtītāja izvēlēts pakalpojumu sniedzējs, nodrošinot tīmekļa vietnes saskarni maksājuma veikšanai un tā apstrādi ārpus "Mafija" sistēmas. Pasūtītāja izvēlētam maksājumu apstrādātājam ir jārealizē no tā sagaidāmā funkcionalitāte. #pagebreak(weak: true) = Programmatūras prasību specifikācija @@ -189,7 +192,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ == Konceptuālais datu bāzes apraksts #indent-par([ -Konceptuālajā modelī redzamās entitātes no konceptuālā ER modeļa (@fig:conceptual-model attēls): + Konceptuālajā modelī redzamās entitātes no konceptuālā ER modeļa (@fig:conceptual-model attēls): ]) - Lietotājs -- reģistrēts lietotājs, kas pieder noteiktai grupai; - Attēls -- datnes metadati un tās adrese, kas ir saistīta ar lietotāju vai spēles lomu; @@ -204,7 +207,7 @@ Konceptuālajā modelī redzamās entitātes no konceptuālā ER modeļa (@fig:c #figure( caption: "Datu bāzes konceptuālais ER modelis", placement: auto, - image("img/erd/KonceptualaisERModelis.svg") + image("img/erd/KonceptualaisERModelis.svg"), ) @@ -213,7 +216,7 @@ Konceptuālajā modelī redzamās entitātes no konceptuālā ER modeļa (@fig:c === Funkciju sadalījums moduļos #indent-par([ -Funkciju sadalījums moduļos ir aprakstīts tabulā (@tbl:function-modules tab.). Katrs maksas lietotājs un administrators ir uzskatāms par reģistrētu lietotāju. Administratora privilēģijas ir atvasinātas no maksas lietotāja privilēģijas. Sistēmas lietotājs nav ierobežots. + Funkciju sadalījums moduļos ir aprakstīts tabulā (@tbl:function-modules tab.). Katrs maksas lietotājs un administrators ir uzskatāms par reģistrētu lietotāju. Administratora privilēģijas ir atvasinātas no maksas lietotāja privilēģijas. Sistēmas lietotājs nav ierobežots. ]) Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie lietotāja grupas tikai tad, ja, funkcijas rezultāts atšķiras no rezultāta, kuru atgrieztu reģistrētam lietotājam. Tiek pieņemts, ka lietotāja autentifikācija ir izpildīta, izmantojot funkcijas, kur apstrāde ir neatkarīga no lietotāju grupas. @@ -222,13 +225,13 @@ Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie #figure( caption: "1. līmeņa DPD (1)", - image("img/dpd1/1LīmeņaDPDN1.svg") + image("img/dpd1/1LīmeņaDPDN1.svg"), ) #figure( caption: "1. līmeņa DPD (2)", - image("img/dpd1/1LīmeņaDPDN2.svg") + image("img/dpd1/1LīmeņaDPDN2.svg"), ) #pagebreak(weak: true) @@ -240,7 +243,7 @@ Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie /* --- header --- */ [*Modulis*], [*Funkcija*], [*Identifikators*], [*Lietotāja grupa*], /* -------------- */ - + rowspanx(7)[Reģistrācijas un pieteikšanās modulis], [Lietotāja reģistrācija], [#link()[AMF01]], [Nereģistrēts lietotājs], [Apstiprinājuma ziņas atkārtotās izsūtīšanas pieteikums], [#link()[AMF02]], [Reģistrēts lietotājs], @@ -249,26 +252,26 @@ Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie [Lietotāja atteikšanās], [#link()[AMF05]], [Reģistrēts lietotājs], [Lietotāja pieteikšanās], [#link()[AMF06]], [Reģistrēts lietotājs], [Lietotāja konta apstiprināšana], [#link()[AMF07]], [Reģistrēts lietotājs], - + rowspanx(5)[Lietotāju kontu modulis], [Lietotāju profilu pārskats], [#link()[LKMF01]], [Reģistrēts lietotājs], [Lietotāja konta detaļas], [#link()[LKMF02]], [Reģistrēts lietotājs, Administrators], [Lietotāja konta bloķēšana], [#link()[LKMF03]], [Administrators], [Lietotāja konta rediģēšana], [#link()[LKMF04]], [Reģistrēts lietotājs, Administrators], [Lietotāja konta dzēšana], [#link()[LKMF05]], [Reģistrēts lietotājs, Administrators], - + rowspanx(4)[Maksas abonementu modulis], [Abonementa pieteikums], [#link()[MAMF01]], [Reģistrēts lietotājs], [Abonementu pārskats], [#link()[MAMF02]], [Reģistrēts lietotājs, Administrators], [Abonementa atcelšana], [#link()[MAMF03]], [Maksas lietotājs], [Abonementa plānu pārskats], [#link()[MAMF04]], [Nereģistrēts lietotājs, Reģistrēts lietotājs], - + /*rowspanx(4)[Cenu modulis], [Cenas pievienošana], [#link()[CMF01]], [Administrators], [Cenas rediģēšana], [#link()[CMF02]], [Administrators], [Cenu pārskats], [#link()[CMF03]], [Administrators], [Cenas dzēšana], [#link()[CMF04]], [Administrators],*/ - + rowspanx(9)[Spēles istabu modulis], [Spēles istabu pārskats], [#link()[SIMF01]], [Reģistrēts lietotājs], [Pieslēgšanās spēles istabai], [#link()[SIMF02]], [Reģistrēts lietotājs], @@ -285,13 +288,13 @@ Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie [Sarakstes dzēšana], [#link()[TMF02]], [Reģistrēts lietotājs, Administrators], [Sarakstu pārskats], [#link()[TMF03]], [Reģistrēts lietotājs, Administrators], [Sarakstes rediģēšana], [#link()[TMF04]], [Reģistrēts lietotājs], - + rowspanx(4)[Spēles gaitas modulis], [Spēles darbības veikšana], [#link()[SGMF01]], [Reģistrēts lietotājs], [Spēles notikumu izveidošana], [#link()[SGMF02]], [Sistēma], [Spēles notikumu pārskats], [#link()[SGMF03]], [Sistēma, Administrators, Reģistrēts lietotājs], [Spēles stāvokļa detaļas], [#link()[SGMF04]], [Sistēma, Administrators, Reģistrēts lietotājs], - + rowspanx(6)[Spēles lomu uzstādījumu modulis], [Lomas detaļas], [#link()[SLMF01]], [Reģistrēts lietotājs], [Lomu pārskats], [#link()[SLMF02]], [Reģistrēts lietotājs], @@ -299,42 +302,42 @@ Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie [Jaunas lomas izveidošana], [#link()[SLMF04]], [Maksas lietotājs, Administrators], [Lomas rediģēšana], [#link()[SLMF05]], [Maksas lietotājs, Administrators], [Lomas dzēšana], [#link()[SLMF06]], [Maksas lietotājs, Administrators], - + rowspanx(5)[Spēles uzstādījumu modulis], [Spēles uzstādījumu pārskats], [#link()[SUMF01]], [Reģistrēts lietotājs], [Spēles uzstādījuma lomu pārskats], [#link()[SUMF02]], [Reģistrēts lietotājs], [Jauna spēles uzstādījuma izveidošana], [#link()[SUMF03]], [Maksas lietotājs, Administrators], [Spēles uzstādījuma rediģēšana], [#link()[SUMF04]], [Maksas lietotājs, Administrators], [Spēles uzstādījuma dzēšana], [#link()[SUMF05]], [Maksas lietotājs, Administrators], - ) + ), ) === Kopīgās funkcijas ievades / izvades datu prasības #indent-par([ -Apakšnodaļa ietver informāciju par funkciju parametriem, tai skaitā, nosaukumu, identifikatoru, aprakstu, parametra prasībām. Parametri ir aprakstīti atsevišķās tabulās (skat. -#link()[IIDP01], -#link()[IIDP02], -#link()[IIDP03], -#link()[IIDP04], -#link()[IIDP05], -#link()[IIDP06], -#link()[IIDP07], -#link()[IIDP08], -#link()[IIDP09], -#link()[IIDP10], -#link()[IIDP11], -#link()[IIDP12], -#link()[IIDP13], -#link()[IIDP14], -#link()[IIDP15], -#link()[IIDP16], -#link()[IIDP17], -#link()[IIDP18], -#link()[IIDP19], -#link()[IIDP20], -#link()[IIDP21], -#link()[IIDP22]). + Apakšnodaļa ietver informāciju par funkciju parametriem, tai skaitā, nosaukumu, identifikatoru, aprakstu, parametra prasībām. Parametri ir aprakstīti atsevišķās tabulās (skat. + #link()[IIDP01], + #link()[IIDP02], + #link()[IIDP03], + #link()[IIDP04], + #link()[IIDP05], + #link()[IIDP06], + #link()[IIDP07], + #link()[IIDP08], + #link()[IIDP09], + #link()[IIDP10], + #link()[IIDP11], + #link()[IIDP12], + #link()[IIDP13], + #link()[IIDP14], + #link()[IIDP15], + #link()[IIDP16], + #link()[IIDP17], + #link()[IIDP18], + #link()[IIDP19], + #link()[IIDP20], + #link()[IIDP21], + #link()[IIDP22]). ]) #parameter-table( @@ -570,20 +573,20 @@ Apakšnodaļa ietver informāciju par funkciju parametriem, tai skaitā, nosauku === Kopīgās procedūras #indent-par([ -Apakšnodaļa ietver funkcijās izmantojamās procedūras, kas tiek izmantotas vairākās funkcijās, kas ietver nosaukumu, aprakstu, ievadi, apstrādi un izvadi. -Procedūras ir aprakstītas atsevišķās tabulās (skat. -#link()[KPR01], -#link()[KPR02], -#link()[KPR03], -#link()[KPR04], -#link()[KPR05], -#link()[KPR06], -#link()[KPR07], -#link()[KPR08], -#link()[KPR09], -#link()[KPR10], -#link()[KPR11], -#link()[KPR12]). + Apakšnodaļa ietver funkcijās izmantojamās procedūras, kas tiek izmantotas vairākās funkcijās, kas ietver nosaukumu, aprakstu, ievadi, apstrādi un izvadi. + Procedūras ir aprakstītas atsevišķās tabulās (skat. + #link()[KPR01], + #link()[KPR02], + #link()[KPR03], + #link()[KPR04], + #link()[KPR05], + #link()[KPR06], + #link()[KPR07], + #link()[KPR08], + #link()[KPR09], + #link()[KPR10], + #link()[KPR11], + #link()[KPR12]). ]) #procedure-table( @@ -595,7 +598,7 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + Rezultātu skaits -- vesels nenegatīvs skaitlis. - + Neobligātie parametri: + Ierakstu skaits lappusē -- vesels pozitīvs skaitlis. ], @@ -667,7 +670,7 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. Obligātie parametri: + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + Filtra atribūta nosaukums -- datubāzes identifikators. - + Neobligātie parametri: + Identifikators -- atbilst #link()[IIDP10]. ], @@ -688,7 +691,7 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. "KPR05", "Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus meklēšanas nosacījumus.", [ - + Obligātie parametri: + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + Meklēšanas atribūtu nosaukumu saraksts, kas sastāv no simbolu virknēm, kas atbilst #link()[IIDP12]\; @@ -709,7 +712,7 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. "KPR06", "Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus meklēšanas nosacījumus.", [ - + Obligātie parametri: + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + Kārtošanas atribūta nosaukums, kas atbilst #link()[IIDP12]\; @@ -732,7 +735,7 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. [ Obligātie parametri: + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]. - + Neobligātie parametri: + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". @@ -761,7 +764,7 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. "Pārbauda, vai lietotājam ir aktīvs maksas abonements.", [ Obligātie parametri: - + + Lietotāja identifikators -- atbilst #link()[IIDP10]\. ], [ @@ -769,8 +772,8 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. + Ja identifikators atbilst nulles vērtībai, izvada "nepatiess". + Pieprasa abonementu sarakstu no maksājumu apstrādātāja. + Ja pieprasījums neizdevās, izvada "nepatiess". - + meklē pēdējo abonementu pēc izveidošanas laika. - + Ja atbildē nav abonementu, izvada "nepatiess". + + meklē pēdējo abonementu pēc izveidošanas laika. + + Ja atbildē nav abonementu, izvada "nepatiess". + Ja pēdējais abonements ir aktīvs, izvada "patiess". ], [ @@ -810,18 +813,18 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. ], [ + Meklē lietotāju, izmantojot lietotāja identifikatoru. - + Ja neadrot, izvada kodu, kas atbilst neveiksmei. + + Ja neadrot, izvada kodu, kas atbilst neveiksmei. + Ģenerē e-pasta apstiprinājuma marķieri, kas atbilst #link()[IIDP17]. + Meklē lietotājus ar šo e-pasta apstiprinājuma marķieri; + Ja lietotājs tika atrasts, atkārto e-pasta apstiprinājuma ģenerēšanu un lietotāju meklēšanu līdz marķieris ir unikāls. + Aprēķina derīguma termiņu, pieskaitot tagadējam laikam noteiktu laiku. + Lietotāja ierakstam pievieno apstiprinājuma stāvokļa informāciju, marķieri un derīguma termiņu. - + Ieraksta lietotāja e-pasta apstiprināšanas informāciju. - + Ja tā netiek apstiprināta, izvada kodu, kas atbilst neveiksmei. + + Ieraksta lietotāja e-pasta apstiprināšanas informāciju. + + Ja tā netiek apstiprināta, izvada kodu, kas atbilst neveiksmei. + Izveido saiti apstiprinājumam, iekļaujot e-pasta apstiprinājuma marķieri; + Sagatavo e-pasta ziņas saturu no šablona, ievietojot tajā apstiprinājuma saiti; + Pieprasa e-pasta aizsūtīšanu. - + Ja tā netiek apstiprināta, izvada kodu, kas atbilst neveiksmei. + + Ja tā netiek apstiprināta, izvada kodu, kas atbilst neveiksmei. ], [ + E-pasta apstiprinājuma pieteikuma stāvoklis -- skaitlisks kods. @@ -839,13 +842,13 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. [ // https://stripe.com/docs/api/customers/create + Meklē lietotāju, izmantojot lietotāja identifikatoru. - + Ja neatrod, izvada kodu, kas atbilst neveiksmei. + + Ja neatrod, izvada kodu, kas atbilst neveiksmei. + Sagatavo datus pieprasījumam, kas iekļauj lietotāja vārdu, uzvārdu un e-pastu. Pārveido to maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājuma apstrādātāja API. + Ģenerē lietotāja maksājumu apstrādātāja identifikatoru, sazinoties ar maksājumu apstrādātāju. ], [ + Lietotāja maksājuma apstrādātāja identifikators -- atbilst #link()[IIDP22]. - ] + ], ) #procedure-table( @@ -863,40 +866,40 @@ Procedūras ir aprakstītas atsevišķās tabulās (skat. + Pārbauda, vai datne nepārsniedz noteikto datnes lielumu; + Ja pārsniedz, atgriež kļūdu par pārsniegto datnes lielumu: "Attēls nedrīkst pārsniegt: \[noteiktais faila izmēra maksimums\]". + Ja iesniegtā attēla paplašinājums ir pieļaujams, bet nav PNG, tad datne tiek konvertēta šajā paplašinājumā. - - // Invokation + + // Invokation //+ Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12]. // + Ja validācija ir neveiksmīga, parāda X. vai Z. paziņojumu, atkarībā no validācijas rezultāta. ], [ Validācijas rezultāts veiksmes vai kļūdas kods, balstoties uz kuru lietotājam tiks parādīta attiecīga kļūda. - + Validācijas rezultāts -- kļūdas paziņojums -- noteiktās kļūdas skaitlisks kods vai 1, ja validācija ir veiksmīga. - ] + + Validācijas rezultāts -- kļūdas paziņojums -- noteiktās kļūdas skaitlisks kods vai 1, ja validācija ir veiksmīga. + ], ) === Reģistrācijas un pieteikšanās modulis #indent-par([ - -/* -TEMPLATE -Apakšnodaļa ietver [MODULE_NAME] moduļa funkcijas. Moduļa funkcionalitāte ir izmantota [KAM?]. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. [FIGURE_REFERENCE]). -*/ -Apakšnodaļa ietver reģistrācijas un pieteikšanās moduļa funkcijas. Moduļa funkcionalitāte ir izmantota lietotāju reģistrācijai, pieteikšanās un citām darbībām, kas saistās ar lietotāja autentifikāciju un to kontu. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-auth). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[AMF01], -#link()[AMF02], -#link()[AMF03], -#link()[AMF04], -#link()[AMF05], -#link()[AMF06], -#link()[AMF07]). + /* + TEMPLATE + Apakšnodaļa ietver [MODULE_NAME] moduļa funkcijas. Moduļa funkcionalitāte ir izmantota [KAM?]. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. [FIGURE_REFERENCE]). + */ + + Apakšnodaļa ietver reģistrācijas un pieteikšanās moduļa funkcijas. Moduļa funkcionalitāte ir izmantota lietotāju reģistrācijai, pieteikšanās un citām darbībām, kas saistās ar lietotāja autentifikāciju un to kontu. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-auth). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[AMF01], + #link()[AMF02], + #link()[AMF03], + #link()[AMF04], + #link()[AMF05], + #link()[AMF06], + #link()[AMF07]). ]) #figure( caption: "Reģistrācijas un pieteikšanās moduļa 2. līmeņa DPD", - image("img/dpd2/ReģistrācijasPieteikšanāsModulis.svg") + image("img/dpd2/ReģistrācijasPieteikšanāsModulis.svg"), ) #pagebreak(weak: true) @@ -909,7 +912,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. [ // Why remove 'veidlapa' Ievades dati tiek saņemti no nereģistrētiem lietotājiem. - + Obligātie parametri: + Vārds, uzvārds -- atbilst #link()[IIDP04]\; + Segvārds -- atbilst #link()[IIDP07]\; @@ -917,7 +920,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Parole -- atbilst #link()[IIDP06]\; + Paroles apstiprinājums -- simbolu virkne, kas atbilst #link()[IIDP06]\; + Dzimšanas datums -- atbilst #link()[IIDP01]. - + Neobligātie parametri: + Profila attēls -- atbilst #link()[IIDP08], noklusētā vērtība -- noklusētā attēla adrese; + Biogrāfiskā informācija -- atbilst #link()[IIDP09], noklusētā vērtība -- "". @@ -938,9 +941,9 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja neatbilst, parāda 6. paziņojumu. Beidz apstrādi. // Trasnformation - + Sanitizē biogrāfisko informāciju, izmantojot #link()[KPR09]\. + + Sanitizē biogrāfisko informāciju, izmantojot #link()[KPR09]\. - // Image + // Image + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + Ja validācija ir neveiksmīga, parāda 8. paziņojumu ar attiecīgu validācijas kļūdu. @@ -961,7 +964,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. // Add e-mail information to the DB and send an email + Piesaka konta apstiprinājumu, izmantojot #link()[KRP10] procedūru. + Ja procedūra nav veiksmīga, parāda 12. paziņojumu. - + ], [ Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts un uz kuru lapu lietotājs tiks pāradresēts. Lietotāja tiek parādīts 11. paziņojums. @@ -988,15 +991,15 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir izsūtīt e-pasta apstiprinājumu atkārtoti lietotājam, kas jau veica reģistrāciju vai reģistrācijas laikā, vai pēc e-pasta izmaiņas lietotāja kontā.", [ Ievaddati tiek iegūti no darbības -- klikšķis uz attiecīgo apstiprinājuma pieteikuma pogu reģistrācijas laikā vai lietotāja konta rediģēšanas lapā. Ievades dati tiek iegūti no konteksta. - + Obligātie parametri: - + Lietotāja identifikators -- atbilst #link()[IIDP10]. + + Lietotāja identifikators -- atbilst #link()[IIDP10]. ], [ + Meklē lietotāju datubāzē pēc ievades datu identifikatora parametra; + Ja tāds lietotājs neeksistē, parāda 1. paziņojumu. Beidz apstrādi. + Ja lietotāja e-pasts ir apstiprināts, parāda 4. paziņojumu. - + // Add e-mail information to the DB and send an email + Piesaka konta apstiprinājumu, izmantojot #link()[KRP10] procedūru. + Ja procedūra nav veiksmīga, parāda 1. paziņojumu. @@ -1019,7 +1022,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir ļaut lietotājam atjaunot aizmirstu vai nedrošu paroli, nodrošinot drošu paroles maiņas procesu, kas ietver unikāla marķiera izveidi, tā nosūtīšanu lietotāja e-pastā un tā verifikāciju.", [ Ievaddati tiek iegūti no veidlapas. - + Obligātie parametri: + E-pasta adrese -- atbilst #link()[IIDP05]. ], @@ -1072,7 +1075,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ieraksta marķiera derīguma termiņu pamaina uz tagadējo laiku; + Atjaunoto lietotāja ierakstu ieraksta datubāzē. + Ja ierakstīšana neizdevās, parāda 3. paziņojumu. - ], + ], [ Izvades datu mērķis ir lietotāja informēšana par paroles atjaunošanas stāvokli. Lietotāja saskarnē parādās 6. paziņojums. + Paroles atjaunošanas stāvoklis -- skaitlisks kods. @@ -1093,7 +1096,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir pārtraukt lietotāja pārlūkprogrammas sasaisti ar noteiktu lietotāju kontu.", [ Ievades dati tiek saņemti no lietotāja -- klikšķis uz atteikšanās pogu. - + Obligātie parametri: + Lietotāja sesijas marķieris -- atbilst #link()[IIDP17]\. ], @@ -1116,7 +1119,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Autentificēt lietotāju, lai sistēma to uztver kā lietotāju ar konkrēto sistēmas lomu un atļauj turpmākās sistēmas lomas darbības sistēmā.", [ Ievades dati tiek saņemti no pieteikšanās veidlapas. - + Obligātie parametri: + E-pasta adrese vai segvārds -- atbilst #link()[IIDP05]\; + Ja tā neatbilst, tad tai jāatbilst sekojošām prasībām: atbilst #link()[IIDP10]. @@ -1157,7 +1160,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir apstiprināt lietotāja konta e-pasta adresi, i.e., apstiprināt to, ka lietotājam pieder norādītā e-pasta adrese.", [ Ievaddati tiek iegūti no apstiprinājuma vietrādes parametriem, ar kuras lietotājs piekļūst funkcijai. - + Obligātie parametri: + E-pasta apstiprinājuma marķieris -- atbilst #link()[IIDP17]. ], @@ -1183,25 +1186,25 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + E-pasts jau ir apstiprināts!; + E-pasts ir veiksmīgi apstiprināts! + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! - + ], ) === Lietotāju kontu modulis #indent-par([ -Apakšnodaļa ietver lietotāju konta moduļa funkcijas. Moduļa funkcionalitāte ir izmantota lietotāju kontu pārskatam un darbībām ar lietotāju kontiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-user). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[LKMF01], -#link()[LKMF02], -#link()[LKMF03], -#link()[LKMF04], -#link()[LKMF05]). + Apakšnodaļa ietver lietotāju konta moduļa funkcijas. Moduļa funkcionalitāte ir izmantota lietotāju kontu pārskatam un darbībām ar lietotāju kontiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-user). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[LKMF01], + #link()[LKMF02], + #link()[LKMF03], + #link()[LKMF04], + #link()[LKMF05]). ]) #figure( caption: "Lietotāju kontu moduļa 2. līmeņa DPD", - image("img/dpd2/LietotājuKontuModulis.svg") + image("img/dpd2/LietotājuKontuModulis.svg"), ) #pagebreak(weak: true) @@ -1211,7 +1214,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir lietotājiem sniegt citu lietotāju profilu publisku informāciju. Funkcijas ietvaros var tikt veikta neobligāta meklēšana pēc noteiktiem lietotāja profilu atribūtiem.", [ Ievades datus iegūst no lietotāja neobligāti uzstādītiem filtriem, kārtošanas izvēles un lappuses numura un meklēšanas uzvednes. Parametri atbilst attiecīgām saitēm un ievades laukam lietotāja saskarnē un izvēlnēm pārskata lapās. Parametru vērtības tiek iegūtas no vietrādes parametriem. - + Neobligātie parametri: + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". @@ -1229,7 +1232,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades datu mērķis ir parādīt rezultāta pārskatu lietotāja saskarnē. Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. - + Pārskata ierakstu saraksts, kas sastāv no vārdnīcām: + + Pārskata ierakstu saraksts, kas sastāv no vārdnīcām: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Segvārds -- atbilst #link()[IIDP07]; + Lietotāja konta izveidošanas laiks -- atbilst #link()[IIDP02]\; @@ -1251,7 +1254,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir reģistrētiem lietotājiem saņemt informāciju par kontu -- gan publisko, gan privāto (atkarībā no lietotāja lomas un konta piederības). Administratoriem visa informācija ir iegūstama par jebkuru lietotāju.", [ Ievades datus iegūst no vietrāža parametriem, caur kuru tiek piekļūts funkcijai. Alternatīvi, dati (lietotāja identifikators) tiek iegūti no konteksta. - + Neobligātie parametri: + Apskatāmo konta datu lietotāja identifikators -- atbilst #link()[IIDP10], noklusētā vērtība -- no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. ], @@ -1275,20 +1278,20 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades datu mērķis ir lietotāja konta datu parādīšana. Lietotāja saskarnē tiek prezentēti konta dati, kas atbilst lietotājam paredzamai datu kopai. - + Pamata vārdnīcas saturs: - + Vārds un uzvārds -- atbilst #link()[IIDP04]\; - + Segvārds -- atbilst #link()[IIDP07]\; - + Biogrāfiskā informācija -- atbilst #link()[IIDP09]\; - + Dzimšanas datums -- atbilst #link()[IIDP01]\; - + Konta izveidošanas laiks -- atbilst #link()[IIDP02]\; - + Lietotāja profila attēls -- atbilst #link()[IIDP08]. + + Vārds un uzvārds -- atbilst #link()[IIDP04]\; + + Segvārds -- atbilst #link()[IIDP07]\; + + Biogrāfiskā informācija -- atbilst #link()[IIDP09]\; + + Dzimšanas datums -- atbilst #link()[IIDP01]\; + + Konta izveidošanas laiks -- atbilst #link()[IIDP02]\; + + Lietotāja profila attēls -- atbilst #link()[IIDP08]. Papildus vārdnīcas dati, ja pieprasītājs lietotājs ir administrators vai konts pieder lietotājam: - + E-pasta adrese -- atbilst #link()[IIDP05]\; - + E-pasta apstiprinājuma stāvoklis -- karodziņš. + + E-pasta adrese -- atbilst #link()[IIDP05]\; + + E-pasta apstiprinājuma stāvoklis -- karodziņš. Papildus vārdnīcas dati, ja pieprasītājs lietotājs ir administrators: - + Konta stāvoklis -- atbilst #link()[IIDP10]\; - + Vai lietotājs ir administrators -- karodziņš. + + Konta stāvoklis -- atbilst #link()[IIDP10]\; + + Vai lietotājs ir administrators -- karodziņš. ], [ + Darbība nav autorizēta! @@ -1303,7 +1306,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir bloķēt lietotāja kontu, ja notikuši drošības pārkāpumi vai cita veida noteikumu pārkāpumi.", [ Ievades datus iegūst no veicamās darbības -- klikšķis uz lietotāja bloķēšanas pogu. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]. ], @@ -1334,20 +1337,20 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir rediģēt lietotāju konta datus, kas ir rediģējami. Administratoriem rediģēt dažus laukus, kuru rediģēšana nav pieejama lietotājiem, kas nav administratori.", [ Ievades dati tiek saņemti no reģistrēto un autentificēto lietotāju pieejamās veidlapas. - + Obligātie parametri: + Pilns vārds -- atbilst #link()[IIDP04]\; + Segvārds -- atbilst #link()[IIDP07]\; + E-pasta adrese -- atbilst #link()[IIDP05]\; + Biogrāfiskā informācija -- atbilst #link()[IIDP09]\; - + Dzimšanas datums -- atbilst #link()[IIDP01]\;. - + + Dzimšanas datums -- atbilst #link()[IIDP01]\;. + Administratoram specifiskie obligātie parametri: + Konta izveidošanas laiks -- datums, atbilst #link()[IIDP02]\. + E-pasta apstiprinājums -- karodziņš; + Konta stāvokļa kods -- atbilst #link()[IIDP10]\. // + Vai ir administrators -- karodziņš. - + Neobligātie parametri: + Konta datu lietotāja identifikators -- atbilst #link()[IIDP10], noklusētā vērtība -- no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. + Vecā parole -- atbilst #link()[IIDP06], noklusētā vērtība -- "". @@ -1374,21 +1377,21 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja nesakrīt, tad parāda 3. paziņojumu. Beidz apstrādi. + Pievieno atjaunoto atribūtu vērtības sarakstam. - // Sanitizācija / Transformācija - // Biogrāfiskā informācija - + Sanitizē biogrāfisko informāciju, izmantojot #link()[KPR09]\. - - // Paroles apstrāde + // Sanitizācija / Transformācija + // Biogrāfiskā informācija + + Sanitizē biogrāfisko informāciju, izmantojot #link()[KPR09]\. + + // Paroles apstrāde + Ja jaunā parole tika iesniegta, pārbauda, vai parole atbilst noteiktām drošības prasībām. + Ja tā tiem neatbilst, tad parāda 6. paziņojumu ar attiecīgām neizpildītajām prasībām. Beidz apstrādi. + Ģenerē "sāls" simbolu virkni ar noteiktu algoritmu, to pievieno parolei. + Šifrē paroli ar jaucējfunkciju. - + // Image + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + Ja validācija ir neveiksmīga, parāda 8. paziņojumu ar attiecīgu validācijas kļūdu. + Citādi saglabā vecā attēla datni, ja tāda ir. - + // Uniqueness check + Ja tika iesniegts atšķirīgs segvārds, mēģina meklēt datubāzē lietotājus ar ievadīto segvārdu. + Ja tāds (/-i) pastāv, tad parāda 10. paziņojumu ar attiecīgo aizņemto lauku. Beidz apstrādi. Beidz apstrādi. @@ -1407,11 +1410,11 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja neatbilst, parāda 8. paziņojumu. Beidz apstrādi. + Pievieno atjaunoto atribūtu vērtības sarakstam. /*+ Ja administratora karodziņš ir "patiess". - + No datubāzes noskaidro, vai lietotājs ir administrators. - + Ja lietotājs nav administrators, piešķir lietotājam administratora tiesības. - + Ja administratora karodziņš ir "nepatiess". - + No datubāzes noskaidro, vai lietotājs ir administrators. - + Ja lietotājs ir administrators, noņem lietotājam administratora tiesības.*/ + + No datubāzes noskaidro, vai lietotājs ir administrators. + + Ja lietotājs nav administrators, piešķir lietotājam administratora tiesības. + + Ja administratora karodziņš ir "nepatiess". + + No datubāzes noskaidro, vai lietotājs ir administrators. + + Ja lietotājs ir administrators, noņem lietotājam administratora tiesības.*/ // Save + Lietotāja konta sagatavotie dati -- lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. @@ -1438,7 +1441,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Izveidošanas laiks nedrīkst būt nākotnē! + Lietotāja stāvokļa kods nav korekts! + Konta rediģēšana ir veiksmīga! - + Tāds konta stāvoklis neeksistē! + + Tāds konta stāvoklis neeksistē! + Nekorekts datums! Datuma formāts: [nepieciešamais datuma formāts]. ], ) @@ -1449,7 +1452,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir dzēst lietotāju kontus, lai to konta informācija būtu neatgriezeniski izdzēsta.", [ Ievades dati tiek saņemti no reģistrēto lietotāju pieejamās darbības. Alternatīvi, dati tiek iegūti no konteksta (autentificēta lietotāja identifikators). - + Neobligātie parametri: + Konta datu lietotāja identifikators -- atbilst #link()[IIDP10]. Noklusētā vērtība -- no konkrēta lietotāja (kas piekļūst funkciju) iegūtais identifikators. ], @@ -1463,7 +1466,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja izdzēšana nav veiksmīga, parāda 3. paziņojumu. Beidz apstrādi. + Ja izdzēšana ir veiksmīga, parāda 4. paziņojumu. Beidz apstrādi. + Izdzēš lietotāja konta attēla datni. - + ], [ Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts. @@ -1480,17 +1483,17 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. === Maksas abonementu modulis #indent-par([ -Apakšnodaļa ietver maksas abonementa moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām ar lietotāju maksas abonementiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-premium-user). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[MAMF01], -#link()[MAMF02], -#link()[MAMF03], -#link()[MAMF04]). + Apakšnodaļa ietver maksas abonementa moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām ar lietotāju maksas abonementiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-premium-user). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[MAMF01], + #link()[MAMF02], + #link()[MAMF03], + #link()[MAMF04]). ]) #figure( caption: "Maksas abonementu moduļa 2. līmeņa DPD", - image("img/dpd2/MaksasAbonementaModulis.svg") + image("img/dpd2/MaksasAbonementaModulis.svg"), ) #function-table( @@ -1499,7 +1502,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir izveidot maksājuma pieteikumu maksas abonementam, izveidojot maksas abonementa ierakstu datubāzē maksājuma apstiprināšanas gadījumā.", [ Ievades dati tiek iegūti no lietotāja maksājuma pieteikuma veidlapas, apmaksājot abonementu. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Maksājuma plāna identifikators -- atbilst #link()[IIDP22]. @@ -1510,20 +1513,20 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ /*+ Pārbauda, vai datubāzē neeksistē aktīvs abonements, kas ir saistīts ar lietotāja identifikatora, kas veido maksājuma pieteikumu. - + Ja eksistē, parāda 9. paziņojumu.*/ + + Ja eksistē, parāda 9. paziņojumu.*/ /*+ Pārbauda, vai visi obligātie lauki ir iesniegti. - + Ja tie nav, iegūst sarakstu ar neaizpildītajiem laukiem, parāda 1. paziņojumu. Beidz apstrādi. - + Pārbauda, vai visi obligātie lauki satur tikai pieļaujamos simbolus. - + Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 2. paziņojumu ar attiecīgajiem laukiem un izmantotiem aizliegtiem simboliem. Beidz apstrādi. - + Pārbauda, vai veidlapas visi obligātie lauki nepārsniedz noteikto garumu. - + Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 3. paziņojumu ar attiecīgi laukiem un garumiem. Beidz apstrādi. - + Pārbauda, vai kartes numura pirmie 4 cipari atbilst vienai no bankām, ko apstrādā maksājumu apstrādātājs. - + Ja neatbilst, parāda 4. paziņojumu. Beidz apstrādi. - + Pārbauda, vai kartes derīguma termiņš ir pēc tekošā mēneša. - + Ja tas ir pirms, parāda 5. paziņojumu. Beidz apstrādi. - + Datubāzē meklē aktuālo šodienas cenu par abonementu, izmantojot tagadējo laiku. - + Ja cena netika atrasta, iegūst noklusējuma cenu.*/ - + + Ja tie nav, iegūst sarakstu ar neaizpildītajiem laukiem, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai visi obligātie lauki satur tikai pieļaujamos simbolus. + + Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 2. paziņojumu ar attiecīgajiem laukiem un izmantotiem aizliegtiem simboliem. Beidz apstrādi. + + Pārbauda, vai veidlapas visi obligātie lauki nepārsniedz noteikto garumu. + + Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 3. paziņojumu ar attiecīgi laukiem un garumiem. Beidz apstrādi. + + Pārbauda, vai kartes numura pirmie 4 cipari atbilst vienai no bankām, ko apstrādā maksājumu apstrādātājs. + + Ja neatbilst, parāda 4. paziņojumu. Beidz apstrādi. + + Pārbauda, vai kartes derīguma termiņš ir pēc tekošā mēneša. + + Ja tas ir pirms, parāda 5. paziņojumu. Beidz apstrādi. + + Datubāzē meklē aktuālo šodienas cenu par abonementu, izmantojot tagadējo laiku. + + Ja cena netika atrasta, iegūst noklusējuma cenu.*/ + // https://stripe.com/docs/api/subscriptions/create + Pārbauda, vai pieprasītais abonementa plāns eksistē, pieprasot abonementa plāna informāciju no maksas apstrādātāja. + Ja neeksistē, parāda 5. paziņojumu. Beidz apstrādi. @@ -1536,10 +1539,10 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Pieprasa abonementa izveidošanu, sazinoties ar maksājumu apstrādātāju. + Ja atbildē izveidošana netiek apstiprināta, parāda 2. paziņojumu. Beidz apstrādi. /*+ Ja abonementa izveidošana ir apstiprināta, izveido ierakstu ar abonementa datiem datubāzē: - + Sākuma laiks -- tagadējais laiks, atbilst #link()[IIDP02]\; - + Maksājumu periods -- noteikts maksājuma periods; - + Maksas abonementa stāvoklis -- stāvoklis, kas atbilst stāvoklim "atbilst". - + Maksājuma apstrādātāja atbildē saņemto klienta identifikators.*/ + + Sākuma laiks -- tagadējais laiks, atbilst #link()[IIDP02]\; + + Maksājumu periods -- noteikts maksājuma periods; + + Maksas abonementa stāvoklis -- stāvoklis, kas atbilst stāvoklim "atbilst". + + Maksājuma apstrādātāja atbildē saņemto klienta identifikators.*/ ], [ Izvades datu mērķis ir informēt, vai lietotājs tiks pāradresēts. Lietotāja saskarnē parāda 3. paziņojumu. @@ -1547,10 +1550,10 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ /*+ Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - + Kartes numurs nav korekts! - + Kartes derīguma termiņš ir beidzies!*/ + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Kartes numurs nav korekts! + + Kartes derīguma termiņš ir beidzies!*/ + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + Abonementa apmaksa nav veiksmīga! Mēģiniet vēlreiz vai sazinieties ar tehniskās palīdzības speciālistu! + Abonēšana ir veiksmīga! @@ -1565,17 +1568,17 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir lietotājiem rādīt informāciju par maskas esošiem un bijušiem maksas abonementiem. Šī pārskata dati tiek kārtoti un filtrēti neobligātā kārtā.", [ Ievades dati tiek saņemti no vietrāža parametriem. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]. - + Neobligātie parametri: + Lappuses numurs -- pozitīvs skaitlis. + Kārtošanas vārdnīcu saraksts -- atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. ], [ - // https://stripe.com/docs/api/subscriptions/list + // https://stripe.com/docs/api/subscriptions/list // + Sāk gatavot datubāzes pieprasījumu no maksas abonementu tabulas. + Autorizē administratora darbību. + Ja darbība nav autorizēta un pieprasītais lietotāja identifikators nesakrīt ar lietotāja identifikatoru, parāda 4. paziņojumu. Beidz apstrādi. @@ -1613,8 +1616,8 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Valūta -- uzskatījums, atbilst ISO 4217 valūtas kodam; + Apraksts -- simbolu virkne. /* + Papildus vārdnīcu dati administratoriem: - + Maksājumu apstrādātāja klienta identifikators -- vesels pozitīvs skaitlis;*/ - + + Maksājumu apstrādātāja klienta identifikators -- vesels pozitīvs skaitlis;*/ + + Lappušu skaits -- pozitīvs skaitlis. + Tekošā lappuse -- pozitīvs skaitlis, kas ir mazāks vai vienāds par lapu skaitu. ], @@ -1632,7 +1635,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir atcelt lietotājam, kam ir aktīvs maksas abonementi. Maksājuma apstrādātāja abonements tiks atcelts, kā rezultātā no lietotāja vairs nebūs iekasēti maksājumi. Abonementa stāvoklis sistēmā būs apzīmēts kā atcelts.", [ Ievades dati tiek iegūti no darbības abonementu pārskatā. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]. //+ Maksājuma apstrādātāja klienta identifikators -- atbilst #link()[IIDP10]. @@ -1643,10 +1646,10 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ /*+ Datubāzē meklē maksas abonementa ierakstu, pēc maksas apstrādātāja klienta identifikatora. - + Ja tāds neeksistē, parāda 1. paziņojumu. Beidz apstrādi. - + Ja lietotāja idendifikators neatbilst ieraksta identifikatoram, parāda 2. paziņojumu. Beidz apstrādi. - */ - + + Ja tāds neeksistē, parāda 1. paziņojumu. Beidz apstrādi. + + Ja lietotāja idendifikators neatbilst ieraksta identifikatoram, parāda 2. paziņojumu. Beidz apstrādi. + */ + + Iegūst maksas apstrādātāja klienta identifikatoru no datubāzes. + Ja tā vērtība atbilst nulles vērtībai, parāda 3. paziņojumu. Beidz apstrādi. + Sagatavo datus pieprasījumam, kas iekļauj lietotāja ārējā maksas pakalpojuma identifikatoru, maksājuma plāna identifikatoru un atcelšanas iemeslu. Pārveido tos maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājumu apstrādātāja API. @@ -1654,10 +1657,10 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja atbildē atcelšana netiek apstiprināta, parāda 1. paziņojumu. Beidz apstrādi. + Datubāzē meklē lietotāja ierakstu. + Izdzēš klienta identifikatoru no lietotāja ieraksta. - + /*+ Izmantojot maksājumu apstrādātāja klienta identifikatoru, pieprasa abonementa atcelšanu, izmantojot maksājuma apstrādātāja API. - + Ja maksājuma apstrādāja atbilde norāda, ka atcelšana neizdevusies. Parāda 1. paziņojumu. Beidz apstrādi. - + Ja maksājuma apstrādātāja atbilde norāda, ka abonementa atcelšana ir veiksmīga, attiecīgā datubāzes ieraksta stāvokli nomaina uz stāvokli, kas apzīmē atceltu abonementu. */ + + Ja maksājuma apstrādāja atbilde norāda, ka atcelšana neizdevusies. Parāda 1. paziņojumu. Beidz apstrādi. + + Ja maksājuma apstrādātāja atbilde norāda, ka abonementa atcelšana ir veiksmīga, attiecīgā datubāzes ieraksta stāvokli nomaina uz stāvokli, kas apzīmē atceltu abonementu. */ ], [ Izvades datu mērķis ir noteikt, vai abonementa atcelšana bija veiksmīga. Lietotāja saskarnē parāda 2. paziņojumu. @@ -1681,7 +1684,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ierobežojums -- vesels pozitīvs skaitlis, no 1 līdz 100, noklusētā vērtība -- 10; ], [ - // https://stripe.com/docs/api/plans/list + // https://stripe.com/docs/api/plans/list + Sagatavo datus pieprasījumam. Pārveido tos maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājumu apstrādātāja API. + Pieprasa abonementa plānu sarakstu, sazinoties ar maksājumu apstrādātāju. + Ja pieprasījums neizdodas, parāda 1. paziņojumu. Beidz apstrādi. @@ -1725,17 +1728,17 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. === Tērzēšanas modulis #indent-par([ -Apakšnodaļa ietver tērzēšanas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota iekšspēles tērzēšanas nodrošināšanai. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-chat). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[TMF01], -#link()[TMF02], -#link()[TMF03], -#link()[TMF04]). + Apakšnodaļa ietver tērzēšanas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota iekšspēles tērzēšanas nodrošināšanai. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-chat). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[TMF01], + #link()[TMF02], + #link()[TMF03], + #link()[TMF04]). ]) #figure( caption: "Tēržēšanas moduļa 2. līmeņa DPD", - image("img/dpd2/TerzēšanasModulis.svg") + image("img/dpd2/TerzēšanasModulis.svg"), ) #function-table( @@ -1751,9 +1754,9 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Istabas identifikators -- atbilst #link()[IIDP10]\; + Sarakstes teksts -- atbilst #link()[IIDP16]\; + Vai sarakste ir mafijas tērzētavā -- karodziņš. - + Neobligātie parametri: - + Atbildes saņēmēja sarakstes identifikators - atbilst atbilst #link()[IIDP10]\; + + Atbildes saņēmēja sarakstes identifikators - atbilst atbilst #link()[IIDP10]\; ], [ + Pārbauda, vai sarakstes teksts nav tukša simbolu virkne. @@ -1773,7 +1776,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades mērķis ir norādīt izveidotās ziņas stāvokli. - + Ziņas sūtīšanas stāvoklis -- skaitlisks kods. + + Ziņas sūtīšanas stāvoklis -- skaitlisks kods. ], [ + Sarakste ir tukša! @@ -1819,7 +1822,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcija nepieciešama, lai uzskaitītu un parādītu visas uzrakstītās sarakstes visās tērzētavās (mafijas un parastās). Tā kā pieprasīto sarakstu skaits var atšķirties saskarnēs -- tas tiek noteikts ar papildus parametru.", [ Ievade tiek saņemta no spēles istabas konteksta. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Istabas identifikators -- atbilst #link()[IIDP10]\; @@ -1855,7 +1858,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. Izvades datu mērķis ir parādīt sarakstes noteiktā intervālā. Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. Sarakstes parādās noteiktās grupas (mafijas un parastā) tērzētavā. - + + Saraksts ar vārdnīcām: + Sūtītāja segvārds -- atbilst #link()[IIDP10]\; + Sūtītāja identifikators -- atbilst #link()[IIDP10]\; @@ -1881,7 +1884,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Ievades dati tiek iegūti no lietotāja darbības -- klikšķis uz pogas "Rediģēt" un ievadītās rediģējamās sarakstes ievades laukā ievadītā satura. - + Obligātie parametri: + Rediģējamās ziņas identifikators -- atbilst #link()[IIDP10]\; + Sarakstes rediģētais teksts -- atbilst #link()[IIDP16]\; @@ -1921,22 +1924,22 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. === Spēles istabu modulis #indent-par([ -Apakšnodaļa ietver spēles istabas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar spēles virtuālo istabu. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-room). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[SIMF01], -#link()[SIMF02], -#link()[SIMF03], -#link()[SIMF04], -#link()[SIMF05], -#link()[SIMF06], -#link()[SIMF07], -#link()[SIMF08], -#link()[SIMF09]). + Apakšnodaļa ietver spēles istabas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar spēles virtuālo istabu. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-room). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[SIMF01], + #link()[SIMF02], + #link()[SIMF03], + #link()[SIMF04], + #link()[SIMF05], + #link()[SIMF06], + #link()[SIMF07], + #link()[SIMF08], + #link()[SIMF09]). ]) #figure( caption: "Spēles istabu moduļa 2. līmeņa DPD", - image("img/dpd2/SpēlesIstabasModulis.svg") + image("img/dpd2/SpēlesIstabasModulis.svg"), ) #function-table( @@ -1945,7 +1948,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir ļaut reģistrētiem lietotājiem apskatīt pieejamās spēles istabas.", [ Ievades datus iegūst no lietotāja neobligāti uzstādītiem filtriem lietotāja saskarnē, kārtošanas izvēles un lappuses numura un meklēšanas uzvednes. Parametri atbilst attiecīgām saitēm un ievades laukam lietotāja saskarnē un izvēlnēm pārskata lapās. Parametru vērtības tiek iegūtas no vietrādes parametriem. - + Neobligātie parametri: + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". @@ -1975,7 +1978,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. [ Izvades mērķis ir saskarnē tiek izvietots pārskatāms saraksts ar visām lietotājam pieejamajām spēles istabām un to raksturojošajiem parametriem, pielietojot filtrus un kārtošanu, ja tas tika pieprasīts. Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. - + + Saraksts ar vārdnīcām: + Nosaukums -- atbilst #link()[IIDP21]\; + Spēles uzstādījuma nosaukums -- atbilst #link()[IIDP21]\; @@ -1997,16 +2000,16 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. [ Ievades datus iegūst no veidlapas lietotāja saskarnē. Istabas piekļuves kods tiek iegūts no attiecīgā ieraksta sarakstā un no paroles dialoga lodziņa. - + Obligātie parametri: + Istabas identifikators -- atbilst #link()[IIDP07]\; - + Lietotāja identifikators -- atbilst #link()[IIDP10]\. - + + Lietotāja identifikators -- atbilst #link()[IIDP10]\. + Neobligātie parametri: + Istabas piekļuves kods -- atbilst #link()[IIDP06], noklusētā vērtība -- ""\. - + // ASK: Should we encrypt this password (code*). Decision: This field will not be encrypted - + ], [ + Pārbauda, vai visi obligātie lauki ir iesniegti. @@ -2034,7 +2037,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + Istaba netika atrasta! + Istaba ir aizsargāta ar paroli! Lūdzu, ievadiet paroli! - + Nepieciešamie pieslēgšanās dati netika iesniegti. + + Nepieciešamie pieslēgšanās dati netika iesniegti. + Pievienošanās istabai ir veiksmīga! + Spēles istaba nav aktīva. Nav iespējas tai pievienoties! ], @@ -2046,7 +2049,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir ļaut reģistrētiem lietotājiem atslēgties no pašreizējās spēles istabas.", [ Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un vietrādes parametriem (spēles istabas identifikators) - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]. + Spēles istabas identifikators -- atbilst #link()[IIDP10]. @@ -2059,7 +2062,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja nav, parāda 5. paziņojumu. Beidz apstrādi. + Datubāzē meklē spēles istabas ierakstu, izmantojot spēles istabas identifikatoru. + Ja nav, parāda 3. paziņojumu. Beidz apstrādi. - + Meklē spēlētāja ierakstu, izmantojot spēlētāja identifikatoru. + + Meklē spēlētāja ierakstu, izmantojot spēlētāja identifikatoru. + Ja to neatrod, parāda 2. paziņojumu. Beidz apstrādi. + Spēlētāja stāvoklis tiek nomainīts uz "atslēdzies". Izmaiņas ieraksta datubāzē. + Ja ierakstīšana neizdodas, parāda 3. paziņojumu. Beidz apstrādi. @@ -2075,7 +2078,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Sistēmas iekšēja kļūda. Mēģiniet vēlreiz! + Atslēgšanās no istabas ir veiksmīga! + Jūs neesat šajā istabā! - + Nepieciešamie pieslēgšanās dati netika iesniegti. + + Nepieciešamie pieslēgšanās dati netika iesniegti. ], ) @@ -2088,10 +2091,10 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. Dati tiek iegūti no veidlapas lietotāja saskarnē. Lietotāja identifikators tiek iegūts no konteksta. Obligātie parametri: - + Spēles istabas nosaukums -- atbilst #link()[IIDP21]\; - + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]\; - Neobligātie parametri: - + Istabas piekļuves kods -- atbilst #link()[IIDP06], noklusētā vērtība -- ""\. + + Spēles istabas nosaukums -- atbilst #link()[IIDP21]\; + + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]\; + Neobligātie parametri: + + Istabas piekļuves kods -- atbilst #link()[IIDP06], noklusētā vērtība -- ""\. ], [ + Pārbauda, vai visi obligātie lauki ir iesniegti. @@ -2101,7 +2104,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Datubāzē meklē spēles uzstādījumu. + Ja tas netika atrasts, parāda 3. paziņojumu. Beidz apstrādi. + Sāk gatavot spēles istabas ierakstu. - + Ja piekļuves kods tika iesniegts, pārbauda, vai tas atbilst prasībām. + + Ja piekļuves kods tika iesniegts, pārbauda, vai tas atbilst prasībām. + Ja neatbilst, parāda 5. paziņojumu. Beidz apstrādi. + Citādi pievieno piekļuves kodu spēles istabas ierakstam. + Ja istabas nosaukums neatbilst prasībām. Parāda 6. paziņojumu. Beidz apstrādi. @@ -2125,7 +2128,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + Piekļuves kods neatbilst prasībām: [prasības]. + Nosaukums neatbilst prasībām: [prasības]. - + ], ) @@ -2135,7 +2138,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir istabas izveidotājam iesākt spēles procesu istabā, kuru ir izveidojis.", [ Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (istabas identifikators). - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Istabas identifikators -- atbilst #link()[IIDP10]\; @@ -2158,17 +2161,17 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Saglabā izmaiņas datubāzē. + Ja ierakstīšana neizdodas. Parāda 4. paziņojumu. Beidz apstrādi. ], - [ + [ Izvades mērķis ir noteikt spēles sākšanas stāvokli. Veiksmīgas spēles sākšanas gadījumā, lietotājs tiek pāradresēts attiecīgās istabas spēles gaitas lapā. Spēles saskarnē parādās sākuma informācija par spēli. + Spēles sākšanas stāvoklis -- skaitlisks kods. - + ], [ + Darbība nav izdevusies! Jūs neesat šīs istabas izveidotājs. + Uzsākt spēli nav iespējams, nepietiek dalībnieku. + Sistēmas iekšēja kļūda. Mēģiniet vēlreiz! + Spēle jau ir sākusies vai beidzās! - + ], ) @@ -2178,25 +2181,25 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Administrators var izslēgt spēlētāju no spēles istabas.", [ Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (istabas identifikators un spēlētāja identifikators). - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Istabas identifikators -- atbilst #link()[IIDP10]\; + Izslēdzamā spēlētāja identifikators -- atbilst #link()[IIDP10]\; ], [ - + Autorizē administratora darbību. + + Autorizē administratora darbību. + Ja tā nav autorizēta, parāda 4. paziņojumu. Beidz apstrādi. + Datubāzē meklē spēlētāja ierakstu. + Ja netiek atrasts, parāda 3. paziņojumu. Beidz apstrādi. + Datubāzē meklē spēles istabas ierakstu. + Ja netiek atrasta, parāda 2. paziņojumu. Beidz apstrādi. - + Pamaina spēlētāja stāvokli uz stāvokli, kas atbilst izslēgta spēlētāja stāvoklim. + + Pamaina spēlētāja stāvokli uz stāvokli, kas atbilst izslēgta spēlētāja stāvoklim. // + Spēlētāja ierakstu izdzēš. - // + Ja izdzēšana neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + // + Ja izdzēšana neizdodas, parāda 2. paziņojumu. Beidz apstrādi. ], [ - Izvades mērķis ir noteikt izslēgšanas stāvokli, kas attiecīgi izraisa spēles saraksta atjaunošanu lietotāja saskarnē. Parāda 1. paziņojumu. + Izvades mērķis ir noteikt izslēgšanas stāvokli, kas attiecīgi izraisa spēles saraksta atjaunošanu lietotāja saskarnē. Parāda 1. paziņojumu. + Spēlētāja izslēgšanas stāvoklis -- skaitlisks kods. ], [ @@ -2220,7 +2223,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja nav atrasta, parādā 1. paziņojumu. Beidz apstrādi. + Iegūst spēlētāju sarakstu no datubāzes, kas ir saistīti ar spēles istabu. + Ja neviens spēlētājs netika atrasts, parāda 3. paziņojumu. Beidz apstrādi. - + Katram spēlētājam iegūst attiecīgā lietotāja ierakstu. + + Katram spēlētājam iegūst attiecīgā lietotāja ierakstu. + Ja kādam spēlētājam nevar atrakst lietotāju, parāda 2. paziņojumu. Beidz apstrādi. + Izveido spēlētāju vārdnīcu sarakstu: + lietotāja segvārds; @@ -2229,7 +2232,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades mērķis ir parādīt informāciju lietotāju par konkrētās istabas spēlētājiem. Lietotāja saskarnē tiek parādīts saraksts ar istabas spēlētājiem. - + + Vārdnīcu saraksts: + Lietotāja segvārds -- atbilst #link()[IIDP07]\; + Spēlētāja stāvoklis -- simbolu virkne. @@ -2249,7 +2252,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcija ļauj lietotājiem iegūt pārskatu par savām iepriekšējām spēlēm.", [ Ievades dati tiek iegūti no konteksta (lietotāja identifikators) un neobligāto vietrādes meklēšanas parametra. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; @@ -2292,32 +2295,32 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "SIMF09", "Funkcijas mērķis ir atcelt spēli. Atcelt spēli var maksas lietotājs, ja viņš ir spēles izveidotājs, vai administrators, neatkarīgi no spēles statusa.", [ - Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (spēles identifikators). - + Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (spēles identifikators). + Obligātie parametri: + Lietotāja identifikators –- atbilst #link()[IIDP10]\; + Spēles identifikators –- atbilst #link()[IIDP10]. ], [ - + Pārbauda, vai visi obligātie lauki ir iesniegti. - + Ja nav, parāda 4. paziņojumu. Beidz apstrādi. - + Pārbauda lietotāja lomu un tiesības atcelt spēli. - + Ja lietotājs nav administrators un nav spēles izveidotājs, tad parāda 3. paziņojumu. Beidz apstrādi. + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 4. paziņojumu. Beidz apstrādi. + + Pārbauda lietotāja lomu un tiesības atcelt spēli. + + Ja lietotājs nav administrators un nav spēles izveidotājs, tad parāda 3. paziņojumu. Beidz apstrādi. + Datubāzē meklē spēles ierakstu. - + Ja spēli neatrod, parāda 2. paziņojumu. Beidz apstrādi. - + Maina spēles stāvokli uz atceltu. - + Maina visu ar spēli saistīto spēlētāju "aktīvs" lauku uz "nepatiess". - + Saglabā izmaiņas datubāzē. - + Ja neizdodas saglabāt izmaiņas, parāda 1. paziņojumu. Beidz apstrādi. + + Ja spēli neatrod, parāda 2. paziņojumu. Beidz apstrādi. + + Maina spēles stāvokli uz atceltu. + + Maina visu ar spēli saistīto spēlētāju "aktīvs" lauku uz "nepatiess". + + Saglabā izmaiņas datubāzē. + + Ja neizdodas saglabāt izmaiņas, parāda 1. paziņojumu. Beidz apstrādi. ], [ - Izvades mērķis ir informēt lietotāju par veiksmīgu spēles atcelšanu vai kļūdu procesā. + Izvades mērķis ir informēt lietotāju par veiksmīgu spēles atcelšanu vai kļūdu procesā. + Spēles atcelšanas stāvoklis –- karodziņš. ], [ - + Spēles statusa maiņa neizdevās, mēģiniet vēlreiz. - + Spēle ar šādu identifikatoru netika atrasta. - + Jums nav tiesību atcelt šo spēli. + + Spēles statusa maiņa neizdevās, mēģiniet vēlreiz. + + Spēle ar šādu identifikatoru netika atrasta. + + Jums nav tiesību atcelt šo spēli. + Nepieciešamie dati nav pilnībā iesniegti. ], ) @@ -2326,17 +2329,17 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. === Spēles gaitas modulis #indent-par([ -Apakšnodaļa ietver spēles gaitas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota spēles procesa realizēšanai. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-progress). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[SGMF01], -#link()[SGMF02], -#link()[SGMF03], -#link()[SGMF04]). + Apakšnodaļa ietver spēles gaitas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota spēles procesa realizēšanai. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-progress). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[SGMF01], + #link()[SGMF02], + #link()[SGMF03], + #link()[SGMF04]). ]) #figure( caption: "Spēles gaitas moduļa 2. līmeņa DPD", - image("img/dpd2/SpēlesGaitasModulis.svg") + image("img/dpd2/SpēlesGaitasModulis.svg"), ) #function-table( @@ -2345,7 +2348,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir veikt spēles darbību lietotājiem, kas atrodas spēles istabā, saglabājot darbību kā notikuma ierakstu.", [ Ievade tiek iegūta no darbības spēles laikā. Lietotājs uzspiež uz darbības pogu, kas ir saistīta ar konkrētu darbības ierakstu datubāzē. - + Obligātie parametri: + Veicēja lietotāja identifikators -- atbilst #link()[IIDP10]. + Darbības identifikators -- atbilst #link()[IIDP10]. @@ -2364,7 +2367,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + Ja nav, parāda 2. paziņojumu. Beidz apstrādi. // Pārbauda darbības un lomas eksistenci, darbības saistību ar spēlētāja lomu - + Iegūst lomas identifikatoru no atrastā ieraksta. Meklē lomu, izmantojot identifikatoru. + + Iegūst lomas identifikatoru no atrastā ieraksta. Meklē lomu, izmantojot identifikatoru. + Ja loma netiek atrasta, parāda 2. paziņojumu. Beidz apstrādi. + Meklē lomas darbību attiecīgā tabulā, izmantojot darbības identifikatoru. + Ja darbība netiek atrasta parāda 2. paziņojumu. Beidz apstrādi. @@ -2410,50 +2413,50 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. + Ja spēles istaba netiek atrasta parāda 1. paziņojumu. Beidz apstrādi. + Ja spēles istabas stāvoklis neatbilst aktīvam stāvoklim, parāda 2. paziņojumu. - // Vai pastāv aktīvs taimeris + // Vai pastāv aktīvs taimeris + Iegūst no datubāzes notikumus ar taimera veidu. + Ja tāds notikums ir un taimeris ir aktīvs (nav pagājis laika periods), tad parāda. Beidz apstrādi. - // // Nav validācijas, jo tā ir sistēma + // // Nav validācijas, jo tā ir sistēma // // Sāk fāzes fāzes pāreju: + Katram turpmāk izveidotam notikumam, izveido nosaukumu, darinot to no attiecīgās veidnes. Izveidošanas laiku norāda kā tagadējo laiku. Pārējos atribūtus norāda atkarībā no notikuma specifikas. - + // Iegūst spēles fāzi un spēlētāju stāvokļus un notikumus. //+ No datubāzes iegūst vēlāko nakts maiņas notikumu datubāzē. - // + Ja netika atrasts neviens nakts maiņas notikums, tad pieņem, ka ir 0-tā nakts (neviena nakts vel nav notikusi). + // + Ja netika atrasts neviens nakts maiņas notikums, tad pieņem, ka ir 0-tā nakts (neviena nakts vel nav notikusi). + No datubāzes iegūst spēlētāju stāvokļus. // Nosaka pēdējo fāzes maiņu + No datubāzes iegūst pēdējo spēles fāzes maiņas notikumu. - + + Ja pēdējā fāzes maiņa ir no dienas vai balsošanas uz nakts, veic sekojošas darbības: + Izslēdz no spēles neaktīvus spēlētājus, kam bija jāizvēlas darbība. - + Aizliedz darbības. + + Aizliedz darbības. + Apstrādā darbības, veicot izmaiņas spēles un spēlētāju stāvoklī un izveidojot dažādu veidu notikumus, iekļaujot tajā attiecīgās saistības ar darbībām, lietotājiem, ja attiecināms. - + Pārbauda spēles beigu nosacījumus un ja tie ir apmierināti, izveido spēles beigu notikumu, izmaina istabas stāvokli un beidz apstrādi. + + Pārbauda spēles beigu nosacījumus un ja tie ir apmierināti, izveido spēles beigu notikumu, izmaina istabas stāvokli un beidz apstrādi. + Izveido notikumu fāzes maiņai uz nakti, ja ir pirmā diena vai uz balsošanu, ja nav pirmā diena. + Citādi, ja pēdējā fāzes maiņa ir no dienas uz balsošanu vai pāreja no pirmās dienas uz nakti, veic sekojošas darbības: + Iegūst balsošanas darbības no dzīviem spēlētājiem. + Izslēdz izbalsoto spēlētāju, pamainot spēlētāja stāvokli (atbilstošs atribūts). - + Pārbauda spēles beigu nosacījumus un ja tie ir apmierināti, izveido spēles beigu notikumu, izmaina istabas stāvokli un beidz apstrādi. + + Pārbauda spēles beigu nosacījumus un ja tie ir apmierināti, izveido spēles beigu notikumu, izmaina istabas stāvokli un beidz apstrādi. + Izveido nakts darbību atļaujošus notikumus. + Izveido notikumu fāzes maiņai uz nakti. + Citādi, veic sekojošas darbības: - + Izveido balsošanas atļaujošu notikumu. + + Izveido balsošanas atļaujošu notikumu. + Izveido notikumu fāzes maiņai uz balsošanu. + Izveido taimera notikumu nākamai fāzei uz noteiktu laiku periodu. + Izmaina spēles istabas stāvokli uz stāvokli, kas atbilst pabeigtai spēlei un norāda beigšanas laiku uz tagadējo laiku. + Ieraksta datubāze sagatavotos notikumus un izmaiņas spēlētāju stāvokļos un spēles istabas izmaiņas. + Ja ierakstīšana neizdodas parāda 3. paziņojumu. // ASK: Some of the actions / functions are crucial for functioning. Should robustness be specified within the functions, e.g., reschedule the action if it fails in event creation. ], - ], - [ - Izvades mērķis ir noteikt notikumu izveidošanas rezultāta stāvokli. + ], + [ + Izvades mērķis ir noteikt notikumu izveidošanas rezultāta stāvokli. + Notikumu izveidošanas stāvoklis -- skaitlisks kods. ], [ + Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! - + Spēle nav procesā! + + Spēle nav procesā! + Notikumu izveidošana neizdevās! ], ) @@ -2461,14 +2464,15 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. #function-table( "Spēles notikumu pārskats", "SGMF03", - "Funkcijas mērķis ir iegūt informāciju par spēles notikumiem.", [ + "Funkcijas mērķis ir iegūt informāciju par spēles notikumiem.", + [ Ievades dati tiek iegūti no attiecīgās lietotāja darbības vai vietrāža un konteksta. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]; + Spēles istabas identifikators -- atbilst #link()[IIDP10]. + Paslēptā informācija -- karodziņš. - + Neobligātie parametri: + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. ], @@ -2490,8 +2494,8 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Citādi taimera laiks ir 0. ], [ - Izvades mērķis ir par notikumiem nepieciešamās informācijas apkopošana vārdnīcu sarakstā atkarībā no paslēptās informācijas ievades karodziņa. - + Izvades mērķis ir par notikumiem nepieciešamās informācijas apkopošana vārdnīcu sarakstā atkarībā no paslēptās informācijas ievades karodziņa. + Ja netiek parādīta paslēptā informācija, saraksts sastāvēs no vārdnīcām: + Notikuma nosaukums -- atbilst #link()[IIDP21]\; + Izveidošanas laiks -- atbilst #link()[IIDP21]\; @@ -2503,7 +2507,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Spēlētāja identifikators -- atbilst #link()[IIDP10]\; + Lomas identifikators -- atbilst #link()[IIDP10]\; + Darbības identifikators -- atbilst #link()[IIDP10]\. - + ], [ + Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! @@ -2521,7 +2525,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. [ Ievades dati tiek iegūti no attiecīgās lietotāja darbības vai vietrāža un konteksta. Paslēptā informācija nosaka, vai izvade saturēs lomu datus par spēlētājiem. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Spēles istabas identifikators -- atbilst #link()[IIDP10]. @@ -2556,7 +2560,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades mērķis nepieciešamās spēles stāvokļa informācijas parādīšana lietotāja saskarnē. - + + Spēles istabas stāvoklis -- atbilst #link()[IIDP03]\; + Spēles sākšanas laiks -- atbilst #link()[IIDP02]\; + Mafijas sakaru redzamība -- karodziņš; @@ -2568,7 +2572,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Dzīvības stāvoklis -- karodziņš; + Lietotāja profila attēls -- atbilst #link()[IIDP08]\; Ja paslēptā informācija tiek izvadīta, tad spēlētāju vārdnīca saturēs arī: - + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Lomas identifikators -- atbilst #link()[IIDP10]\; ], [ + Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! @@ -2582,19 +2586,19 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. === Spēles lomu uzstādījumu modulis #indent-par([ -Apakšnodaļa ietver spēles lomu uzstādījumu moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar lomām. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-role). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[SLMF01], -#link()[SLMF02], -#link()[SLMF03], -#link()[SLMF04], -#link()[SLMF05], -#link()[SLMF06]). + Apakšnodaļa ietver spēles lomu uzstādījumu moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar lomām. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-role). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[SLMF01], + #link()[SLMF02], + #link()[SLMF03], + #link()[SLMF04], + #link()[SLMF05], + #link()[SLMF06]). ]) #figure( - caption: "Spēles lomu uzstādījumu moduļa 2. līmeņa DPD", - image("img/dpd2/SpēlesLomuModulis.svg") + caption: "Spēles lomu uzstādījumu moduļa 2. līmeņa DPD", + image("img/dpd2/SpēlesLomuModulis.svg"), ) #function-table( @@ -2602,8 +2606,8 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "SLMF01", "Funkcijas mērķis ir izvadīt pieprasītās lomas detaļas, kas neietver lomas darbības (tam ir domāta atsevišķa funkcija).", [ - Ievades dati tiek iegūti no vietrāža vai lietotāja darbības. - + Ievades dati tiek iegūti no vietrāža vai lietotāja darbības. + Obligātie parametri: + Spēles lomas identifikators -- atbilst #link()[IIDP10]. ], @@ -2638,7 +2642,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir izvadīt sarakstu ar visām pieejamajām lomām, to nosaukumiem.", [ Ievades datus iegūst no veicamās darbības un neobligāto vietrādes meklēšanas parametra. - + Neobligātie parametri: + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". @@ -2656,13 +2660,13 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades datu mērķis ir spēles lomu saraksta datu izvadīšana. Lietotāja saskarnē parādās saraksts ar lomām. - + + Vārdnīcu saraksts: + Lomas nosaukums -- atbilst #link()[IIDP21]\; // + Maksimāls spēlējošo skaits -- vesels pozitīvs skaitlis; + Lomas apraksts -- atbilst #link()[IIDP09]\; + Vai ir pamata -- karodziņš; - // + Vai var tikt mafijas noslepkavots -- karodziņš; + // + Vai var tikt mafijas noslepkavots -- karodziņš; + Lomas attēla adrese -- atbilst #link()[IIDP08]\; + Piederība mafijas grupai -- karodziņš. ], @@ -2678,8 +2682,8 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "SLMF03", "Funkcijas mērķis ir izvadīt visas darbības, kuras var izpildīt attiecīgā loma.", [ - Ievades dati tiek iegūti no vietrāža vai lietotāja darbības. - + Ievades dati tiek iegūti no vietrāža vai lietotāja darbības. + Obligātie parametri: + Spēles lomas identifikators -- atbilst #link()[IIDP10]. ], @@ -2691,7 +2695,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades datu mērķis ir spēles lomas darbības datu izvadīšana. Lietotāja saskarnē parādās informācija par konkrētās lomas darbībām. - + + Vārdnīca: + Darbības apraksts -- atbilst #link()[IIDP09]\; + Lomas nosaukums -- atbilst #link()[IIDP21]\; @@ -2710,14 +2714,14 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir izveidot spēles lomu.", [ Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Nosaukums -- atbilst #link()[IIDP21]\; + Apraksts -- atbilst #link()[IIDP09]\; + Lomas darbību identifikatoru saraksts -- saraksts no identifikatoriem, kas atbilst #link()[IIDP10]\; + Vai pieder mafijas grupai -- karodziņš; - + Neobligātie parametri: + Vai ir pamata -- karodziņš, noklusētā vērtība -- nepatiess. + Attēls -- atbilst #link()[IIDP08], noklusētā vērtība -- noklusētā attēla datnes adrese. @@ -2743,7 +2747,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + Ja validācija ir neveiksmīga, parāda 11. paziņojumu ar attiecīgu validācijas kļūdu. + Citādi saglabā vecā attēla datni, ja tāda ir. - + + Jaunas spēles lomas dati -- nosaukums, apraksts un karodziņi -- tiek ierakstīti datubāzē. + Ja kāda ierakstīšana nenotiek, parāda 5. paziņojumu. Beidz apstrādi. ], @@ -2760,7 +2764,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Skaitlim jābūt nenegatīvam! Mēģiniet vēlreiz! + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + Darbība nav autorizēta: Jūs nevarat veidot pamata lomas! - + Viena vai vairākas darbības, ko Jūs izvēlējāties, neeksistē! + + Viena vai vairākas darbības, ko Jūs izvēlējāties, neeksistē! + Darbība nav autorizēta: Jūs nevarat veidot lomas! + Šo attēlu nedrīkst izmantot: [validācijas kļūda\]! ], @@ -2780,7 +2784,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Apraksts -- atbilst #link()[IIDP09]\; + Lomas darbību identifikatoru saraksts -- saraksts no identifikatoriem, kas atbilst #link()[IIDP10]\; + Vai pieder mafijas grupai -- karodziņš. - + Neobligātie parametri: + Vai ir pamata -- karodziņš; + Attēls -- atbilst #link()[IIDP08], noklusētā vērtība -- noklusētā attēla datnes adrese. @@ -2806,8 +2810,8 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. // Image + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + Ja validācija ir neveiksmīga, parāda 12. paziņojumu ar attiecīgu validācijas kļūdu. - + Citādi saglabā vecā attēla datni, ja tāda ir. - + + Citādi saglabā vecā attēla datni, ja tāda ir. + + Iepriekš izmainītos laukus pievieno izmainīto lauku sarakstam un atjauno darbību saistības ar lomu. Spēles uzstādījumu sagatavotie dati -- lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. + Ja ierakstīšana nenotiek, parādīt 5. paziņojumu. Beidz apstrādi. + Izdzēš vecā attēla datni. @@ -2838,7 +2842,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir neatgriezeniski dzēst spēles lomu.", [ Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās darbības lomu sarakstā vai lomu rediģēšanas lapā. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Spēles lomas identifikators -- atbilst #link()[IIDP10]. @@ -2873,18 +2877,18 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. === Spēles uzstādījumu modulis #indent-par([ -Apakšnodaļa ietver spēles uzstādījumu moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar spēles uzstādījumiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-setup). -Funkcijas ir aprakstītas atsevišķās tabulās (skat. -#link()[SUMF01], -#link()[SUMF02], -#link()[SUMF03], -#link()[SUMF04], -#link()[SUMF05]). + Apakšnodaļa ietver spēles uzstādījumu moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar spēles uzstādījumiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-setup). + Funkcijas ir aprakstītas atsevišķās tabulās (skat. + #link()[SUMF01], + #link()[SUMF02], + #link()[SUMF03], + #link()[SUMF04], + #link()[SUMF05]). ]) #figure( caption: "Spēles uzstādījumu moduļa 2. līmeņa DPD", - image("img/dpd2/SpēlesUzstādījumuModulis.svg") + image("img/dpd2/SpēlesUzstādījumuModulis.svg"), ) #function-table( @@ -2893,7 +2897,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir sniegt pārskatu par spēles uzstādījumiem.", [ Ievades dati tiek iegūti no vietrāža. - + Neobligātie parametri: + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". @@ -2909,11 +2913,11 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + Pie rezultāta vārdnīcai aktīvuma karodziņu -- meklē spēles istabas tekošās spēles stāvoklī un ja atrod vismaz vienu tādu istabu, tad spēles uzstādījums ir aktīvs. + Aprēķina maksimālo spēlētāju skaitu, meklējot datubāzē ar spēles uzstādījumu saistītās spēles lomas un saskaitot kopā to skaitus katram uzstādījumam. + Ja kāda no lomām netiek atrasta, izņem spēles uzstādījumu no saraksta. - + ], [ Izvades datu mērķis ir spēles virtuālās istabas uzstādījumu datu izvadīšana. Lietotāja saskarnē parādās saraksts ar informāciju par spēles uzstādījumiem. - + + Vārdnīcu saraksts: + Nosaukums -- atbilst #link()[IIDP21]\. + Apraksts -- atbilst #link()[IIDP09]\; @@ -2934,7 +2938,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir sniegt pārskatu ar daļēju informāciju par spēles uzstādījumu lomām.", [ Ievades dati tiek iegūti no vietrāža. - + Obligātie parametri: + Spēles uzstādījumu identifikators -- atbilst #link()[IIDP10]. ], @@ -2948,7 +2952,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades datu mērķis ir spēles virtuālās istabas uzstādījumu datu izvadīšana. Lietotāja saskarnē parādās saraksts ar konkrēta spēles uzstādījuma lomu informācija. - + + Vārdnīca: + Lomas identifikators -- atbilst #link()[IIDP10]\; + Lomas nosaukums -- atbilst #link()[IIDP21]\; @@ -2967,18 +2971,18 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir izveidot spēles uzstādījumu, turpmākai izmantošanai spēlē.", [ Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Nosaukums -- atbilst #link()[IIDP21]\; + Apraksts -- atbilst #link()[IIDP09]. + Lomu datu vārdnīcu saraksts -- saraksts ar vārdnīcām; - + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Lomas identifikators -- atbilst #link()[IIDP10]\; + Skaits - vesels pozitīvs skaitlis. Neobligātie parametri: + Vai ir pamata -- karodziņš. - + ], [ + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. @@ -3026,25 +3030,25 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir rediģēt spēles uzstādījumu.", [ Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]. Noklusētā vērtība -- no konteksta spēles uzstādījumu, kas tiek rediģēts, iegūtais identifikators. + Apraksts -- atbilst #link()[IIDP09]\; + Nosaukums -- atbilst #link()[IIDP21]\; + Lomu datu vārdnīcu saraksts -- saraksts ar vārdnīcām; - + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Lomas identifikators -- atbilst #link()[IIDP10]\; + Skaits - vesels pozitīvs skaitlis. - + Administratoram specifiskie ievaddati: + Vai ir pamata -- karodziņš, noklusētā vērtība -- nepatiess. + Izveidošanas laiks -- datums formatēts kā simbolu virkne, noklusētā vērtība -- tagadējais laiks. - + ], [ + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + Ja darbība netiek autorizēta, parādīt 11. paziņojumu. Beidz apstrādi. - + Datubāzē meklē spēles uzstādījumu. + + Datubāzē meklē spēles uzstādījumu. + Ja tas netiek atrasts. Parāda 11. paziņojumu. Beidz apstrādi. + Ja ar spēles uzstādījumu saistīts lietotāja identifikators nesakrīt ar lietotāja identifikatoru, veic administratora darbības autorizāciju. + Ja darbība nav autorizēta. Parāda 6. paziņojumu. @@ -3090,7 +3094,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + Spēles uzstādījums ir veiksmīgi rediģēts! + Tāds spēles uzstādījums netika atrasts! - + Darbība nav autorizēta: Jūs nevarat rediģēt spēles uzstādījumus! + + Darbība nav autorizēta: Jūs nevarat rediģēt spēles uzstādījumus! + Viena vai vairākas no Jūsu izvēlētām lomām neeksistē! ], ) @@ -3101,7 +3105,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. "Funkcijas mērķis ir neatgriezeniski dzēst spēles virtuālās istabas uzstādījumus.", [ Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās darbības spēles uzstādījumu sarakstā vai spēles uzstādījumu lapā. - + Obligātie parametri: + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]. @@ -3120,7 +3124,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ], [ Izvades datu mērķis ir noteikt spēles uzstādījumu dzēšanas stāvokli. Lietotāja saskarnē parāda 4. paziņojumu. Lietotājs tiek pāradresēts spēles uzstādījumu pārskata lapā, ja nepieciešams. - + + Spēles uzstādījumu dzēšanas stāvoklis -- skaitlisks kods. ], [ @@ -3140,7 +3144,7 @@ Funkcijas ir aprakstītas atsevišķās tabulās (skat. ==== Statiskā veiktspēja #indent-par([ -Uz statisko veiktspēju ir sekojošas prasības: + Uz statisko veiktspēju ir sekojošas prasības: ]) - Normāla sistēmas darbība vismaz 500 lietotājiem paralēli. @@ -3149,7 +3153,7 @@ Uz statisko veiktspēju ir sekojošas prasības: ==== Dinamiskā veiktspēja #indent-par([ -Uz dinamisko veiktspēju ir sekojošas prasības: + Uz dinamisko veiktspēju ir sekojošas prasības: ]) // CHANGE ! @@ -3160,7 +3164,7 @@ Uz dinamisko veiktspēju ir sekojošas prasības: ==== Izmantojamība #indent-par([ -Uz sistēmas izmantojamību ir sekojošas prasības: + Uz sistēmas izmantojamību ir sekojošas prasības: ]) - 90% jaunu lietotāju jāspēj lietot visas tiem pieejamās funkcijas bez palīdzības. @@ -3175,13 +3179,13 @@ Uz sistēmas izmantojamību ir sekojošas prasības: ==== Mērogojamība #indent-par([ -Sistēmai jābūt paredzētai gan vertikālai, gan horizontālai mērogošanai. Inkrementālai slodzes izmaiņai ir pielietojama vertikāla mērogošana. Savukārt, kardinālai slodzes izmaiņai ir pielietojama horizontālā mērogošana. Horizontālās mērogošanas vienkāršošanai funkcionalitāte tiks sadalījuma pakalpojumu komponentēs. + Sistēmai jābūt paredzētai gan vertikālai, gan horizontālai mērogošanai. Inkrementālai slodzes izmaiņai ir pielietojama vertikāla mērogošana. Savukārt, kardinālai slodzes izmaiņai ir pielietojama horizontālā mērogošana. Horizontālās mērogošanas vienkāršošanai funkcionalitāte tiks sadalījuma pakalpojumu komponentēs. ]) ==== Drošība #indent-par([ -Sistēmas drošības atribūti ir kategorizēti sarakstā: + Sistēmas drošības atribūti ir kategorizēti sarakstā: ]) - Autentifikācija: @@ -3223,11 +3227,11 @@ Sistēmas drošības atribūti ir kategorizēti sarakstā: - Darbību žurnāls nesatur ierobežotas piekļuves informāciju. - Darbību žurnāla rezerves kopēšana atsevišķi no pamata rezerves kopijām. - + ==== Uzturamība #indent-par([ -Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekojošās prasības: + Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekojošās prasības: ]) // - Ciklomātiskā sarežģītība nepārsniedz 10. @@ -3240,10 +3244,10 @@ Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekoj ==== Pārnesamība #indent-par([ -Sistēmas programmatūrā ir jārealizē migrācijas skripti, kas nodrošina -strukturētu datu glabāšanu pārnešanas laikā, datu dublēšanu un ģenerē -kontrolsummas datu integritātei. Pēc sistēmas migrācijas ir jābūt realizētiem -datu pārbaudes skriptiem, datu integritātes pārbaudei. + Sistēmas programmatūrā ir jārealizē migrācijas skripti, kas nodrošina + strukturētu datu glabāšanu pārnešanas laikā, datu dublēšanu un ģenerē + kontrolsummas datu integritātei. Pēc sistēmas migrācijas ir jābūt realizētiem + datu pārbaudes skriptiem, datu integritātes pārbaudei. ]) === Projekta ierobežojumi @@ -3251,9 +3255,9 @@ datu pārbaudes skriptiem, datu integritātes pārbaudei. ==== Intelektuālā īpašuma tiesības #indent-par([ -Projektā jāievēro autortiesību un preču zīmju likumi. Lai izvairītos no -juridiskām problēmām, ir jāsaņem atbilstošas atļaujas un licences par spēļu -aktīviem (assets). + Projektā jāievēro autortiesību un preču zīmju likumi. Lai izvairītos no + juridiskām problēmām, ir jāsaņem atbilstošas atļaujas un licences par spēļu + aktīviem (assets). ]) /* @@ -3300,18 +3304,18 @@ bieži sastopamām tīmekļa ievainojamībām. Datu aizsardzībai jāizmanto ===== Atbalstītās ierīces #indent-par([ -Sistēmai jābūt saderīgai ar dažādām ierīcēm, tostarp galddatoriem, -klēpjdatoriem, viedtālruņiem un planšetdatoriem. Lai nodrošinātu -netraucētu spēlēšanu, jānosaka minimālās aparatūras prasības. + Sistēmai jābūt saderīgai ar dažādām ierīcēm, tostarp galddatoriem, + klēpjdatoriem, viedtālruņiem un planšetdatoriem. Lai nodrošinātu + netraucētu spēlēšanu, jānosaka minimālās aparatūras prasības. ]) ===== Serveris un mitināšana #indent-par([ -Uz servera, kurā tiek mitināta sistēma, jābūt pieejamam Docker -programmatūras atbalstam, lai standartizētu programmatūras izvietošanu -ražošanas vidē un ražošanas vides simulēšanai un atvieglotai -tehnoloģiju versiju sinhronizācijai ar izstrādes vidi. + Uz servera, kurā tiek mitināta sistēma, jābūt pieejamam Docker + programmatūras atbalstam, lai standartizētu programmatūras izvietošanu + ražošanas vidē un ražošanas vides simulēšanai un atvieglotai + tehnoloģiju versiju sinhronizācijai ar izstrādes vidi. ]) === Ārējās saskarnes prasības @@ -3319,7 +3323,7 @@ tehnoloģiju versiju sinhronizācijai ar izstrādes vidi. ==== Lietotāja saskarne #indent-par([ -Sistēmas "Mafija" vietne piedāvā atbalstu plašam spektram ekrāna formātu un izmēriem, nodrošinot elastīgu un reaktīvu dizainu, kas pielāgojas lietotāja ierīces un ekrāna izmēram. Tas ietver, bet nav ierobežots ar sekojošiem prasītajiem ekrāna formātiem un attiecībām: + Sistēmas "Mafija" vietne piedāvā atbalstu plašam spektram ekrāna formātu un izmēriem, nodrošinot elastīgu un reaktīvu dizainu, kas pielāgojas lietotāja ierīces un ekrāna izmēram. Tas ietver, bet nav ierobežots ar sekojošiem prasītajiem ekrāna formātiem un attiecībām: ]) - Atbalstāmās ekrāna attiecības (platums:augstums): 16:9; 4:3; 1:1; 3:2; 21:9; @@ -3337,7 +3341,7 @@ Sistēmas "Mafija" vietne piedāvā atbalstu plašam spektram ekrāna formātu u - Ļoti lielie datoru ekrāni (lielāki par 1920 pikseļiem): Piemēram, 4K ekrāni un daudzi datoru monitori. #indent-par([ -Grafiskā izkārtojuma pielāgošanai paredzēts izmantot sekojošos ekrāna izmēra precizējumu punktus: + Grafiskā izkārtojuma pielāgošanai paredzēts izmantot sekojošos ekrāna izmēra precizējumu punktus: ]) - 360px -- maziem mobilajiem ekrāniem. @@ -3347,9 +3351,9 @@ Grafiskā izkārtojuma pielāgošanai paredzēts izmantot sekojošos ekrāna izm - 1920px -- ļoti lieliem un augstas izšķirtspējas datoru ekrāniem. #indent-par([ -Lietotāja saskarne piedāvā pielāgotu izkārtojumu un saturu, kas pilnībā atbilst konkrētam ekrāna formātam un izmēram. -Teksta izvietojums ir optimizēts atbilstoši ekrāna izmēram, izmantojot precīzi pielāgojamu fonta izmēru un stilu, lai nodrošinātu ērtu lasīšanu. -Lietotne var iekļaut teksta formatējuma klāstā, bet nav ierobežota ar aprakstītiem teksta elementu noformējumiem (skat. @tbl:font-size tab.). + Lietotāja saskarne piedāvā pielāgotu izkārtojumu un saturu, kas pilnībā atbilst konkrētam ekrāna formātam un izmēram. + Teksta izvietojums ir optimizēts atbilstoši ekrāna izmēram, izmantojot precīzi pielāgojamu fonta izmēru un stilu, lai nodrošinātu ērtu lasīšanu. + Lietotne var iekļaut teksta formatējuma klāstā, bet nav ierobežota ar aprakstītiem teksta elementu noformējumiem (skat. @tbl:font-size tab.). ]) #pagebreak(weak: true) @@ -3358,30 +3362,114 @@ Lietotne var iekļaut teksta formatējuma klāstā, bet nav ierobežota ar aprak kind: table, tablex( columns: 5, - - [*Teksta elementa klase*], [*Izmērs*], [*Svars*], [*Stils*], [*Cits*], - [H1:\ Galvenais virsraksts], "vismaz 64pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu, lai izceltu no citiem virsrakstiem.", - [H2:\ Apakšvirsraksti], "vismaz 24pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu, lai izceltu no pamata teksta.", - [H3:\ Sekundārie virsraksti], "36pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu.", - [H4:\ Apakšvirsraksti], "18pt", "Medium (vidējs treknraksts)", "Regulārs", "Izcelt ar atšķirīgu krāsu.", - "H5", "16pt", "Regulārs (parasts)", "Regulārs", "", - "H6", "14pt", "Regulārs (parasts)", "Regulārs", "", - "Pamatteksts", "12pt", "Regulārs (parasts)", "Regulārs", "", - "Saturteksts", "14pt", "Regulārs (parasts)", "Regulārs", "Var izmantot slīprakstu, lai akcentētu citātus vai īpaši teksta fragmentus.", - "Citāti un īpaši akcentēti teksti", "16pt", "Regulārs (parasts)", "Italics (slīpraksts)", "Lai iezīmētu citātus vai īpaši akcentētu tekstus var izmantot slīprakstu.", - "Sarunas un komentāri", "18pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu, lai nošķirtu saturiskās daļas", - "Standarta saites", "12pt", "Regulārs (parasts)", "Regulārs", "Izmantot krāsas un pasvītrojumu, lai izceltu saites.", - "Apmeklētās un neapmeklētās saites", "12pt", "Regulārs (parasts)", "Regulārs", "Izmantot krāsas un pasvītrojumu, lai atšķirtu apmeklētās un neapmeklētās saites.", - "Numurētās un nenumurētās saraksta vienības", "16pt", "Regulārs (parasts)", "Regulārs", "Izmantot atzīmes (bullets) vai numurēšanas stilu.", - "Atzīmes (bullets)", "12pt", "Regulārs (parasts)", "Regulārs", "", - "Tabulu teksts un tabulu virsraksti", "14pt", "Regulārs (parasts)", "Regulārs", "", - "Ievades lauki", "16pt", "Regulārs (parasts)", "Regulārs", "", - "Izvēles rūtiņas un radio pogas", "12pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu.", - "Ievades lauku kļūdu ziņojumi", "10pt", "Regulārs (parasts)", "Regulārs", "", - "Galvenās navigācijas saites", "18pt", "Bold (treknraksts)", "Regulārs", "", - "Sānu paneļa navigācijas saites", "10pt", "Regulārs (parasts)", "Regulārs", "", - ) + [*Teksta elementa klase*], + [*Izmērs*], + [*Svars*], + [*Stils*], + [*Cits*], + + [H1:\ Galvenais virsraksts], + "vismaz 64pt", + "Regulārs (parasts)", + "Regulārs", + "Var izmantot atšķirīgu krāsu, lai izceltu no citiem virsrakstiem.", + [H2:\ Apakšvirsraksti], + "vismaz 24pt", + "Regulārs (parasts)", + "Regulārs", + "Var izmantot atšķirīgu krāsu, lai izceltu no pamata teksta.", + [H3:\ Sekundārie virsraksti], + "36pt", + "Regulārs (parasts)", + "Regulārs", + "Var izmantot atšķirīgu krāsu.", + [H4:\ Apakšvirsraksti], + "18pt", + "Medium (vidējs treknraksts)", + "Regulārs", + "Izcelt ar atšķirīgu krāsu.", + "H5", + "16pt", + "Regulārs (parasts)", + "Regulārs", + "", + "H6", + "14pt", + "Regulārs (parasts)", + "Regulārs", + "", + "Pamatteksts", + "12pt", + "Regulārs (parasts)", + "Regulārs", + "", + "Saturteksts", + "14pt", + "Regulārs (parasts)", + "Regulārs", + "Var izmantot slīprakstu, lai akcentētu citātus vai īpaši teksta fragmentus.", + "Citāti un īpaši akcentēti teksti", + "16pt", + "Regulārs (parasts)", + "Italics (slīpraksts)", + "Lai iezīmētu citātus vai īpaši akcentētu tekstus var izmantot slīprakstu.", + "Sarunas un komentāri", + "18pt", + "Regulārs (parasts)", + "Regulārs", + "Var izmantot atšķirīgu krāsu, lai nošķirtu saturiskās daļas", + "Standarta saites", + "12pt", + "Regulārs (parasts)", + "Regulārs", + "Izmantot krāsas un pasvītrojumu, lai izceltu saites.", + "Apmeklētās un neapmeklētās saites", + "12pt", + "Regulārs (parasts)", + "Regulārs", + "Izmantot krāsas un pasvītrojumu, lai atšķirtu apmeklētās un neapmeklētās saites.", + "Numurētās un nenumurētās saraksta vienības", + "16pt", + "Regulārs (parasts)", + "Regulārs", + "Izmantot atzīmes (bullets) vai numurēšanas stilu.", + "Atzīmes (bullets)", + "12pt", + "Regulārs (parasts)", + "Regulārs", + "", + "Tabulu teksts un tabulu virsraksti", + "14pt", + "Regulārs (parasts)", + "Regulārs", + "", + "Ievades lauki", + "16pt", + "Regulārs (parasts)", + "Regulārs", + "", + "Izvēles rūtiņas un radio pogas", + "12pt", + "Regulārs (parasts)", + "Regulārs", + "Var izmantot atšķirīgu krāsu.", + "Ievades lauku kļūdu ziņojumi", + "10pt", + "Regulārs (parasts)", + "Regulārs", + "", + "Galvenās navigācijas saites", + "18pt", + "Bold (treknraksts)", + "Regulārs", + "", + "Sānu paneļa navigācijas saites", + "10pt", + "Regulārs (parasts)", + "Regulārs", + "", + ), ) // ==== Apratūras saskarne @@ -3390,8 +3478,8 @@ Lietotne var iekļaut teksta formatējuma klāstā, bet nav ierobežota ar aprak ==== Sakaru saskarne #indent-par([ -Visas iekšējās komponentes (pakalpojumi) komunicē, izmantojot HTTPS (drošu HTTP). -Komunikācija ar ārējo pakalpojumu sniedzēju API notiek, izmantojot HTTPS. + Visas iekšējās komponentes (pakalpojumi) komunicē, izmantojot HTTPS (drošu HTTP). + Komunikācija ar ārējo pakalpojumu sniedzēju API notiek, izmantojot HTTPS. ]) @@ -3405,56 +3493,56 @@ Komunikācija ar ārējo pakalpojumu sniedzēju API notiek, izmantojot HTTPS. === Datu bāzes loģiskais ER modelis #indent-par([ -Loģiskajā modelī datubāze tika normalizēta uz BCNF, tāpēc bija nepieciešams izveidot atsevišķas tabulas katram daudzvērtību atribūtam, kā parādīts @fig:logical-erd attēlā. + Loģiskajā modelī datubāze tika normalizēta uz BCNF, tāpēc bija nepieciešams izveidot atsevišķas tabulas katram daudzvērtību atribūtam, kā parādīts @fig:logical-erd attēlā. ]) #figure( caption: "Datu bāzes loģiskais ER modelis", - image("img/erd/LogiskaisERDModelis.svg") + image("img/erd/LogiskaisERDModelis.svg"), ) === Datu bāzes fiziskais ER modelis #indent-par([ -Fiziskajā modelī, salīdzinot ar loģisko modeli, nav redzamas pamanāmas izmaiņas, kā parādīts @fig:logical-erd un @fig:physical-erd attēlā. + Fiziskajā modelī, salīdzinot ar loģisko modeli, nav redzamas pamanāmas izmaiņas, kā parādīts @fig:logical-erd un @fig:physical-erd attēlā. ]) #figure( caption: "Datu bāzes fiziskais ER modelis", - image("img/erd/FiziskaisERDModelis.png") + image("img/erd/FiziskaisERDModelis.png"), ) === Datu bāzes tabulu apraksts #indent-par([ -Datubāzes tabulu lauku, datu tipi, lauka atribūti -- obligātums, noklusētās vērtības, primārā atslēga, unikalitāte -- ir aprakstītas atsevišķās tabulās (skat. -@tbl:entity-role-action tab., -@tbl:entity-image tab., -@tbl:entity-session tab., -@tbl:entity-password-recovery tab., -@tbl:entity-email-confirmation tab., -@tbl:entity-game-role tab., -@tbl:entity-account-status tab., -@tbl:entity-room-status tab., -@tbl:entity-player-status tab., -@tbl:entity-user tab., -@tbl:entity-game-setup tab., -@tbl:entity-room tab., -@tbl:entity-game-event tab., -@tbl:entity-player tab., -@tbl:entity-message tab. -@tbl:entity-player-action tab. -@tbl:entity-player-causes-event tab. -@tbl:entity-player-influences-event tab. -@tbl:entity-game-setup-roles tab. -@tbl:entity-event-actions tab. -@tbl:entity-game-role-events tab. -@tbl:entity-answer tab.) -Visām tabulām `VARCHAR` un `TEXT` laukiem tiek lietot UTF8 kodējums. + Datubāzes tabulu lauku, datu tipi, lauka atribūti -- obligātums, noklusētās vērtības, primārā atslēga, unikalitāte -- ir aprakstītas atsevišķās tabulās (skat. + @tbl:entity-role-action tab., + @tbl:entity-image tab., + @tbl:entity-session tab., + @tbl:entity-password-recovery tab., + @tbl:entity-email-confirmation tab., + @tbl:entity-game-role tab., + @tbl:entity-account-status tab., + @tbl:entity-room-status tab., + @tbl:entity-player-status tab., + @tbl:entity-user tab., + @tbl:entity-game-setup tab., + @tbl:entity-room tab., + @tbl:entity-game-event tab., + @tbl:entity-player tab., + @tbl:entity-message tab. + @tbl:entity-player-action tab. + @tbl:entity-player-causes-event tab. + @tbl:entity-player-influences-event tab. + @tbl:entity-game-setup-roles tab. + @tbl:entity-event-actions tab. + @tbl:entity-game-role-events tab. + @tbl:entity-answer tab.) + Visām tabulām `VARCHAR` un `TEXT` laukiem tiek lietot UTF8 kodējums. ]) -Saliktā atslēga tiek izmantota kā primārā atslēga daudziem pret daudziem entitātem (skat. +Saliktā atslēga tiek izmantota kā primārā atslēga daudziem pret daudziem entitātem (skat. @tbl:entity-player-action tab. @tbl:entity-player-causes-event tab. @tbl:entity-player-influences-event tab. @@ -3464,255 +3552,506 @@ Saliktā atslēga tiek izmantota kā primārā atslēga daudziem pret daudziem e #entity-table( caption: "LomasDarbiba", - "nosaukums", "varchar(255)", "unique, not null", "Lomas darbības nosaukums", - "apraksts", "text", "default '', not null", "Lomas darbības apraksts", + "nosaukums", + "varchar(255)", + "unique, not null", + "Lomas darbības nosaukums", + "apraksts", + "text", + "default '', not null", + "Lomas darbības apraksts", ) #entity-table( caption: "Attels", - "datnes_adrese", "varchar(255)", "unique, not null", "Saglabātā attēla adrese operētājsistēmā", - "pievienosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad tika izveidots/saglabāts dotais attēls datubāzē" + "datnes_adrese", + "varchar(255)", + "unique, not null", + "Saglabātā attēla adrese operētājsistēmā", + "pievienosanas_laiks", + "timestamp", + "default current_timestamp, not null", + "Laiks, kad tika izveidots/saglabāts dotais attēls datubāzē", ) #entity-table( caption: "Sesija", - "markieris","varchar(255)","unique, not null","Ģenerēts marķieris lietotāja sesijas", - "deriguma_termins", "timestamp", "not null", "Laiks, līdz kuram sesija ir aktīva" + "markieris", + "varchar(255)", + "unique, not null", + "Ģenerēts marķieris lietotāja sesijas", + "deriguma_termins", + "timestamp", + "not null", + "Laiks, līdz kuram sesija ir aktīva", ) #entity-table( caption: "ParolesAtjaunosana", - "markieris","varchar(255)","unique, not null","Ģenerēts marķieris paroles atjaunošanai", - "deriguma_termins","timestamp","not null","Laiks, līdz kuram paroles atjaunošana ir iespējama" + "markieris", + "varchar(255)", + "unique, not null", + "Ģenerēts marķieris paroles atjaunošanai", + "deriguma_termins", + "timestamp", + "not null", + "Laiks, līdz kuram paroles atjaunošana ir iespējama", ) #entity-table( caption: "EpastaApstiprinajums", - "markieris", "varchar(255)", "unique, not null", "Ģenerēts marķieris e-pasta lietotāja apstiprināšanai", - "deriguma_termins", "timestamp", "not null", "Laiks, līdz kuram e-pasta apstiprināšana ir iespējama" + "markieris", + "varchar(255)", + "unique, not null", + "Ģenerēts marķieris e-pasta lietotāja apstiprināšanai", + "deriguma_termins", + "timestamp", + "not null", + "Laiks, līdz kuram e-pasta apstiprināšana ir iespējama", ) #entity-table( caption: "SpelesLoma", - "nosaukums", "varchar(255)", "unique, not null", "Lomas nosaukums", - "apraksts", "text", "default '', not null", "Lomas apraksts", - "ir_pamata", "bool", "default false, not null", "Vai loma ir spēles pamatā vai lietotāju izveidots?", - "ir_mafija", "bool", "default false, not null", "Vai loma ir mafija?", - "attels", "int8", "", [Lomas attēls, `FOREING KEY`, uz #link()[Attels] tabulas id kolonnu], - "autors", "int8", "", [Lomas izveides autors, `FOREING KEY`, uz #link()[Lietotajs] tabulas id kolonnu], + "nosaukums", + "varchar(255)", + "unique, not null", + "Lomas nosaukums", + "apraksts", + "text", + "default '', not null", + "Lomas apraksts", + "ir_pamata", + "bool", + "default false, not null", + "Vai loma ir spēles pamatā vai lietotāju izveidots?", + "ir_mafija", + "bool", + "default false, not null", + "Vai loma ir mafija?", + "attels", + "int8", + "", + [Lomas attēls, `FOREING KEY`, uz #link()[Attels] tabulas id kolonnu], + "autors", + "int8", + "", + [Lomas izveides autors, `FOREING KEY`, uz #link()[Lietotajs] tabulas id kolonnu], ) #entity-table( caption: "KontaStavoklis", - "birka", "varchar(255)", "unique, not null", "Konta stāvokļa apraksts" + "birka", + "varchar(255)", + "unique, not null", + "Konta stāvokļa apraksts", ) #entity-table( caption: "IstabasStavoklis", - "birka", "varchar(255)", "unique, not null", "Istabas stāvokļa apraksts" + "birka", + "varchar(255)", + "unique, not null", + "Istabas stāvokļa apraksts", ) #entity-table( caption: "SpeletajaStavoklis", - "birka", "varchar(255)", "unique, not null", "Speletaja stāvokļa apraksts" + "birka", + "varchar(255)", + "unique, not null", + "Speletaja stāvokļa apraksts", ) #entity-table( caption: "Lietotajs", - "segvards", "varchar(255)", "unique, not null", "Lietotājvārds", - "epasts", "varchar(255)", "unique, not null", "Lietotāja e-pasts", - "parole", "varchar(255)", "not null", "Šifrēšanas algoritms, sāls un šifrēta lietotāja parole", - "vards", "varchar(255)", "default '', not null", "Lietotāja vārds", - "uzvards", "varchar(255)", "default '', not null", "Lietotāja uzvārds", - "dzimsanas_datums", "date", "", "Lietotāja dzimšanas datums", - "bio_info", "text", "default ''", "Lietotāja apraksts par sevi", - "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad tika izveidots/saglabāts dotais lietotājs datubāzē", - "ir_apstiprinats_ epasts", "bool", "default false, not null", "Vai lietoājs ir apsiprinājis savu e-pastu?", - "stripe_id", "varchar(50)", "unique", [Unikālais lietotāja identifikators, kas tiek iegūts no maksājuma apstrādātāja klienta -- #link("https://stripe.com")[Stripe]], - "ir_administrators", "bool", "default false, not null", [Vai lietotājam ir administratora privilēģijas?], - "attels", "int8", "", [Lietotāja profila attēls, `FOREING KEY` uz #link()[Attels] tabulas id kolonnu], - "konta_stavoklis", "int8", "not null", [Lietotāja konta stāvoklis, `FOREING KEY` uz #link()[KontaStavoklis] tabulas id kolonnu], - "sesija", "int8", "unique", [Lietotāja sesija, `FOREING KEY` uz #link()[Sesija] tabulas id kolonnu], - "epasta_ apstiprinajums", "int8", "unique", [Lietotāja e-pasta apstiprinājums, `FOREING KEY` uz #link()[EpastaApstiprinajums] tabulas id kolonnu], - "paroles_ atjaunosana", "int8", "unique", [Lietotāja paroles atjaunošana, `FOREING KEY` uz #link()[ParolesAtjaunojana] tabulas id kolonnu] + "segvards", + "varchar(255)", + "unique, not null", + "Lietotājvārds", + "epasts", + "varchar(255)", + "unique, not null", + "Lietotāja e-pasts", + "parole", + "varchar(255)", + "not null", + "Šifrēšanas algoritms, sāls un šifrēta lietotāja parole", + "vards", + "varchar(255)", + "default '', not null", + "Lietotāja vārds", + "uzvards", + "varchar(255)", + "default '', not null", + "Lietotāja uzvārds", + "dzimsanas_datums", + "date", + "", + "Lietotāja dzimšanas datums", + "bio_info", + "text", + "default ''", + "Lietotāja apraksts par sevi", + "izveidosanas_laiks", + "timestamp", + "default current_timestamp, not null", + "Laiks, kad tika izveidots/saglabāts dotais lietotājs datubāzē", + "ir_apstiprinats_ epasts", + "bool", + "default false, not null", + "Vai lietoājs ir apsiprinājis savu e-pastu?", + "stripe_id", + "varchar(50)", + "unique", + [Unikālais lietotāja identifikators, kas tiek iegūts no maksājuma apstrādātāja klienta -- #link("https://stripe.com")[Stripe]], + "ir_administrators", + "bool", + "default false, not null", + [Vai lietotājam ir administratora privilēģijas?], + "attels", + "int8", + "", + [Lietotāja profila attēls, `FOREING KEY` uz #link()[Attels] tabulas id kolonnu], + "konta_stavoklis", + "int8", + "not null", + [Lietotāja konta stāvoklis, `FOREING KEY` uz #link()[KontaStavoklis] tabulas id kolonnu], + "sesija", + "int8", + "unique", + [Lietotāja sesija, `FOREING KEY` uz #link()[Sesija] tabulas id kolonnu], + "epasta_ apstiprinajums", + "int8", + "unique", + [Lietotāja e-pasta apstiprinājums, `FOREING KEY` uz #link()[EpastaApstiprinajums] tabulas id kolonnu], + "paroles_ atjaunosana", + "int8", + "unique", + [Lietotāja paroles atjaunošana, `FOREING KEY` uz #link()[ParolesAtjaunojana] tabulas id kolonnu], ) #entity-table( caption: "SpelesUzstadijums", - "nosaukums", "varchar(255)", "unique, not null", "Uzstādījuma nosaukums", - "apraksts", "text", "default '', not null", "Uzstādījuma apraksts", - "ir_pamata", "bool", "default false, not null", "Vai spēles uzstādījums ir spēles pamatā vai lietotāju izveidots", - "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad dotais uzstādījums tika izveidots/saglabāts datubāzē", - "autors", "int8", "not null", [Uzstādījuma autors, `FOREING KEY` uz #link()[Lietotajs] tabulas id kolonnu] + "nosaukums", + "varchar(255)", + "unique, not null", + "Uzstādījuma nosaukums", + "apraksts", + "text", + "default '', not null", + "Uzstādījuma apraksts", + "ir_pamata", + "bool", + "default false, not null", + "Vai spēles uzstādījums ir spēles pamatā vai lietotāju izveidots", + "izveidosanas_laiks", + "timestamp", + "default current_timestamp, not null", + "Laiks, kad dotais uzstādījums tika izveidots/saglabāts datubāzē", + "autors", + "int8", + "not null", + [Uzstādījuma autors, `FOREING KEY` uz #link()[Lietotajs] tabulas id kolonnu], ) #entity-table( caption: "Istaba", - "nosaukums", "varchar(255)", "unique, not null", "Istabas Nosaukums", - "speles_saksanas_ laiks", "timestamp", "", "Laiks, kad spēle sākas", - "speles_beigsanas_ laiks", "timestamp", "", "Laiks, kad spēle beidzas", - "stavoklis", "int8", "not null", [Pašreizējais spēles stāvoklis, `FOREING KEY` uz #link()[IstabasStavoklis] tabulas id kolonnu], - "piekluves_kods", "char(6)", "unique, not null", "Unikāls istabas piekļuves kods, 6 lielie burtcipari", - "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad dotā spēles istaba tika izveidota/saglabāta datubāzē", - "speles_uzstadijums", "int8", "not null", [Spēles uzstādījumi, kurus izmanto dotā istaba, `FOREING KEY` uz #link()[SpelesUzstādījums] tabulas id kolonnu] + "nosaukums", + "varchar(255)", + "unique, not null", + "Istabas Nosaukums", + "speles_saksanas_ laiks", + "timestamp", + "", + "Laiks, kad spēle sākas", + "speles_beigsanas_ laiks", + "timestamp", + "", + "Laiks, kad spēle beidzas", + "stavoklis", + "int8", + "not null", + [Pašreizējais spēles stāvoklis, `FOREING KEY` uz #link()[IstabasStavoklis] tabulas id kolonnu], + "piekluves_kods", + "char(6)", + "unique, not null", + "Unikāls istabas piekļuves kods, 6 lielie burtcipari", + "izveidosanas_laiks", + "timestamp", + "default current_timestamp, not null", + "Laiks, kad dotā spēles istaba tika izveidota/saglabāta datubāzē", + "speles_uzstadijums", + "int8", + "not null", + [Spēles uzstādījumi, kurus izmanto dotā istaba, `FOREING KEY` uz #link()[SpelesUzstādījums] tabulas id kolonnu], ) #entity-table( caption: "SpelesNotikums", - "nosaukums", "varchar(255)", "unique, not null", "Notikuma nosaukums", - "nakts_pk", "int2", "default 0, not null, check (nakts_pk >= 0)", "Spēles nakts pēc kārtas", - "ir_redzams", "bool", "default false, not null", "Vai notikums ir redzams spēlētājiem procesa laikā?", - "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad dotais spēles notikums tika izveidots/saglabāts datubāzē", - "taimeris", "interval", "", "Laika intervāls taimera notikumiem spēles gaitā", - "lomas_darbiba", "int8", "not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], + "nosaukums", + "varchar(255)", + "unique, not null", + "Notikuma nosaukums", + "nakts_pk", + "int2", + "default 0, not null, check (nakts_pk >= 0)", + "Spēles nakts pēc kārtas", + "ir_redzams", + "bool", + "default false, not null", + "Vai notikums ir redzams spēlētājiem procesa laikā?", + "izveidosanas_laiks", + "timestamp", + "default current_timestamp, not null", + "Laiks, kad dotais spēles notikums tika izveidots/saglabāts datubāzē", + "taimeris", + "interval", + "", + "Laika intervāls taimera notikumiem spēles gaitā", + "lomas_darbiba", + "int8", + "not null", + [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], ) #entity-table( caption: "Speletajs", - "nosaukums", "varchar(255)", "unique, not null", "Notikuma nosaukums", - "ir_noslepkavots", "bool", "default false, not null", "Vai dotais spēlētājs ir noslepkavots?", - "ir_izbalsots", "bool", "default false, not null", "Vai dotais spēlētājs ir izbalsots?", - "stavoklis", "int8", "not null", [Spēlētāja stāvoklis, `FOREING KEY` uz #link()[SpeletajaStavoklis] tabulas id kolonnu], - "istaba", "int8", "", [Istaba, kurā spēlē dotais spēlētājs, `FOREING KEY` uz #link()[Istaba] tabulas id kolonnu], - "speles_loma", "int8", "not null", [Loma, kuru spēlē dotais spēlētājs, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu] + "nosaukums", + "varchar(255)", + "unique, not null", + "Notikuma nosaukums", + "ir_noslepkavots", + "bool", + "default false, not null", + "Vai dotais spēlētājs ir noslepkavots?", + "ir_izbalsots", + "bool", + "default false, not null", + "Vai dotais spēlētājs ir izbalsots?", + "stavoklis", + "int8", + "not null", + [Spēlētāja stāvoklis, `FOREING KEY` uz #link()[SpeletajaStavoklis] tabulas id kolonnu], + "istaba", + "int8", + "", + [Istaba, kurā spēlē dotais spēlētājs, `FOREING KEY` uz #link()[Istaba] tabulas id kolonnu], + "speles_loma", + "int8", + "not null", + [Loma, kuru spēlē dotais spēlētājs, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu], ) #entity-table( caption: "Sarakste", - "teksts", "text", "not null", "Sarakstes teksts", - "if_mafijas_sarakste", "bool", "default false, not null", "Vai sarakstes sūtītājs ir mafija?", - "ir_izmainita", "bool", "default false, not null", "Vai sarakstes saturs ir izmainīts?", - "autors", "int8", "not null", [Sarakstes sūtītājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu] + "teksts", + "text", + "not null", + "Sarakstes teksts", + "if_mafijas_sarakste", + "bool", + "default false, not null", + "Vai sarakstes sūtītājs ir mafija?", + "ir_izmainita", + "bool", + "default false, not null", + "Vai sarakstes saturs ir izmainīts?", + "autors", + "int8", + "not null", + [Sarakstes sūtītājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu], ) #entity-table( caption: "SpeletajaDarbibas", - id: ("speletajs", "int8", "primary key, not null", [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu]), - "lomas_darbiba", "int8", "primary key, not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], - "vai_pilda", "bool", "default true, not null", [Vai spēlētājs ir darbības izraisītājs?] + id: ( + "speletajs", + "int8", + "primary key, not null", + [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu], + ), + "lomas_darbiba", + "int8", + "primary key, not null", + [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], + "vai_pilda", + "bool", + "default true, not null", + [Vai spēlētājs ir darbības izraisītājs?], ) #entity-table( caption: "SpeletajsIzraisaNotikumu", - id: ("speletajs", "int8", "primary key, not null", [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu]), - "speles_notikums", "int8", "primary key, not null", [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], + id: ( + "speletajs", + "int8", + "primary key, not null", + [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu], + ), + "speles_notikums", + "int8", + "primary key, not null", + [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], ) #pagebreak(weak: true) #entity-table( caption: "SpeletajsIetekmeNotikumu", - id: ("speletajs", "int8", "primary key, not null", [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu]), - "speles_notikums", "int8", "primary key, not null", [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], + id: ( + "speletajs", + "int8", + "primary key, not null", + [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu], + ), + "speles_notikums", + "int8", + "primary key, not null", + [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], ) #entity-table( caption: "SpelesUzstatijumuLomas", - id: ("speles_uzstadijums", "int8", "primary key, not null", [Spēles uzstādījums, `FOREING KEY` uz #link()[SpelesUzstadijums] tabulas id kolonnu]), - "speles_loma", "int8", "primary key, not null", [Spēles loma, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu], - "skaits", "int2", "default 1, not null, check (skaits >= 1)", "Spēlē izmantojamo lomu skaits" - + id: ( + "speles_uzstadijums", + "int8", + "primary key, not null", + [Spēles uzstādījums, `FOREING KEY` uz #link()[SpelesUzstadijums] tabulas id kolonnu], + ), + "speles_loma", + "int8", + "primary key, not null", + [Spēles loma, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu], + "skaits", + "int2", + "default 1, not null, check (skaits >= 1)", + "Spēlē izmantojamo lomu skaits", ) #entity-table( caption: "NotikumsAizliedzAtlaujDarbibu", - id: ("lomas_darbiba", "int8", "primary key, not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu]), - "speles_notikums", "int8", "primary key, not null", [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], - "ir_atlauts", "bool", "default true, not null", [Apzīmē, vai notikums atļauj vai aizliedz darbību], + id: ( + "lomas_darbiba", + "int8", + "primary key, not null", + [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], + ), + "speles_notikums", + "int8", + "primary key, not null", + [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], + "ir_atlauts", + "bool", + "default true, not null", + [Apzīmē, vai notikums atļauj vai aizliedz darbību], ) #pagebreak(weak: true) #entity-table( caption: "SpelesLomasDarbiba", - id: ("speles_loma", "int8", "primary key, not null", [Spēles loma, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu]), - "lomas_darbiba", "int8", "primary key, not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], + id: ( + "speles_loma", + "int8", + "primary key, not null", + [Spēles loma, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu], + ), + "lomas_darbiba", + "int8", + "primary key, not null", + [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], ) #entity-table( caption: "Atbilde", - "raksta", "int8", "not null", [Lietotājs, kas atbild uz saraksti, `FORERING KEY` uz #link()[Sarakste] tabulas id kolonnu], - "atbild", "int8", "not null", [Lietotājs, uz kura saraksti atbild, `FORERING KEY` uz #link()[Sarakste] tabulas id kolonnu], + "raksta", + "int8", + "not null", + [Lietotājs, kas atbild uz saraksti, `FORERING KEY` uz #link()[Sarakste] tabulas id kolonnu], + "atbild", + "int8", + "not null", + [Lietotājs, uz kura saraksti atbild, `FORERING KEY` uz #link()[Sarakste] tabulas id kolonnu], ) == Daļējs funkciju projektējums #indent-par([ -Spēles notikumu izveidošanas algoritma aktivitātes diagramma (@fig:PD02-1 att.) apraksta spēles notikumu izveidošanu, ko veic sistēma. Ja fāzes taimeris nav aktīvs, tiek izveidoti nepieciešamie spēles notikumi nākamai fāzei, tiek mainīti spēlētāju stāvokļi. Dažu fāžu ietvaros tiek pārbaudīti spēles beigu nosacījumi, kuriem izpildoties, spēles istabas stāvoklis ir mainīts uz pabeigtu spēli. + Spēles notikumu izveidošanas algoritma aktivitātes diagramma (@fig:PD02-1 att.) apraksta spēles notikumu izveidošanu, ko veic sistēma. Ja fāzes taimeris nav aktīvs, tiek izveidoti nepieciešamie spēles notikumi nākamai fāzei, tiek mainīti spēlētāju stāvokļi. Dažu fāžu ietvaros tiek pārbaudīti spēles beigu nosacījumi, kuriem izpildoties, spēles istabas stāvoklis ir mainīts uz pabeigtu spēli. ]) Diagrammā ir iekļauta apakšaktivitāte spēlētāju stāvokļa izmaiņai atkarībā no darbībām, kas ir aprakstīta atsevišķi (skat. @fig:PD02-2 att.) Tajā tiek apstrādātas darbības un aprēķināta darbību ietekme uz spēles stāvokli, izveidojot jaunus notikumus. #figure( caption: "Spēles notikumu izveidošanas algoritms", - image("img/uml/EventCreationActivityDiagram-01.svg", height: 80%) + image("img/uml/EventCreationActivityDiagram-01.svg", height: 80%), ) #figure( caption: "Izmaiņas spēlētāju stāvoklī (apakšaktivitāte)", - image("img/uml/EventCreationActivityDiagram-02.svg") + image("img/uml/EventCreationActivityDiagram-02.svg"), ) #pagebreak(weak: true) #indent-par([ -Lietotāja spēles darbības veikšanas funkcijas projektējuma peldceliņu diagramma (@fig:PD01 att.) apraksta spēlētāja darbības izveidošanas procesu. Funkcija ietver darbības korektuma pārbaudi, spēles istabas un spēlētāja saistību, darbības autorizēšanu spēles ietvaros un darbības ieraksta izveidošanu. + Lietotāja spēles darbības veikšanas funkcijas projektējuma peldceliņu diagramma (@fig:PD01 att.) apraksta spēlētāja darbības izveidošanas procesu. Funkcija ietver darbības korektuma pārbaudi, spēles istabas un spēlētāja saistību, darbības autorizēšanu spēles ietvaros un darbības ieraksta izveidošanu. ]) #figure( caption: "Spēles darbības peldceliņu diagramma", - image("img/uml/GameActionSwimlaneChart.svg", height: 80%) + image("img/uml/GameActionSwimlaneChart.svg", height: 80%), ) #indent-par([ -Iespējamie spēles istabas stāvokļi un to pārejas ir aprakstīti stāvokļu pārejas diagrammā (skat. @fig:PD03 att.). + Iespējamie spēles istabas stāvokļi un to pārejas ir aprakstīti stāvokļu pārejas diagrammā (skat. @fig:PD03 att.). ]) #figure( caption: "Spēles istabas stāvokļu diagramma", - image("img/uml/GameRoomStateDiagram.svg") + image("img/uml/GameRoomStateDiagram.svg"), ) #pagebreak(weak: true) #indent-par([ -Abonementa pieteikuma process ir aprakstīts secību diagrammā (skat. @fig:PD04 att.). Process iekļauj aktīva abonementa pārbaudi, klienta konta izveidošanu, ja tāds neeksistē, apmaksas sesijas izveidi un apstiprinājumu. + Abonementa pieteikuma process ir aprakstīts secību diagrammā (skat. @fig:PD04 att.). Process iekļauj aktīva abonementa pārbaudi, klienta konta izveidošanu, ja tāds neeksistē, apmaksas sesijas izveidi un apstiprinājumu. ]) #figure( caption: "Abonementa pieteikuma secību diagramma", - image("img/uml/SubscriptionFunctionSequenceDiagram.svg") + image("img/uml/SubscriptionFunctionSequenceDiagram.svg"), ) #pagebreak(weak: true) #indent-par([ -Sistēmas izvietojuma diagramma (skat. @fig:PD05 att.) apraksta sistēmas izvietojuma -- programmatūras izvietojumu ierīcēs, uz kuras tiks darbināta sistēmas programmatūra. + Sistēmas izvietojuma diagramma (skat. @fig:PD05 att.) apraksta sistēmas izvietojuma -- programmatūras izvietojumu ierīcēs, uz kuras tiks darbināta sistēmas programmatūra. ]) #figure( caption: "Sistēmas izvietojuma diagramma", - image("img/uml/ManifiestationDiagram.svg") + image("img/uml/ManifiestationDiagram.svg"), ) /* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus; obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas piemēru (use case) diagrammas */ == Daļējs lietotāju saskarņu projektējums /* 5-7 lietotāja saskarnes un to apraksts */ -=== Navigācija +=== Navigācija #indent-par([ -Navigācijas shēma visām lietotāju grupām ir attēlota ekrānskatu plūsmas diagrammā (skat. @fig:view-flow-diagram att.) Diagrammā ir apvienoti visi skati, kas ieskaita gan parasta lietotāja pusi, gan administratora pusi. Diagrammā redzami visi pieejamie skati katram lietotāja veidam. Katru sadalīto skatu zonu manto lietotājs ar lielākām tiesībām par otru. Administratoram ir pieejami visi skati, maksas lietotājiem ir pieejama apakškopa no ekrānskatiem, reģistrētam lietotājam un nereģistrētam lietotājiem analoģiski ir pieejamas apakškopas. Šī hierarhija ir redzama diagrammas kreisā apakšējā stūrī. Pastāv ekrānskati, kas pieejami tikai neautentificētam lietotājam un nav pieejami nevienam citam. Tāpēc ir izdalīta atsevišķa grupa, kas netiek iekļauta citās grupās. + Navigācijas shēma visām lietotāju grupām ir attēlota ekrānskatu plūsmas diagrammā (skat. @fig:view-flow-diagram att.) Diagrammā ir apvienoti visi skati, kas ieskaita gan parasta lietotāja pusi, gan administratora pusi. Diagrammā redzami visi pieejamie skati katram lietotāja veidam. Katru sadalīto skatu zonu manto lietotājs ar lielākām tiesībām par otru. Administratoram ir pieejami visi skati, maksas lietotājiem ir pieejama apakškopa no ekrānskatiem, reģistrētam lietotājam un nereģistrētam lietotājiem analoģiski ir pieejamas apakškopas. Šī hierarhija ir redzama diagrammas kreisā apakšējā stūrī. Pastāv ekrānskati, kas pieejami tikai neautentificētam lietotājam un nav pieejami nevienam citam. Tāpēc ir izdalīta atsevišķa grupa, kas netiek iekļauta citās grupās. ]) #figure( caption: "Ekrānskatu plūsmas diagramma", - image("img/EkrānskatuPlūsmasDiagramma.svg") + image("img/EkrānskatuPlūsmasDiagramma.svg"), ) #indent-par([ -Saskarnes projektējuma ekrānskatos izmantotās funkcijas ir apkopotas @tbl:interface-views tabulā. + Saskarnes projektējuma ekrānskatos izmantotās funkcijas ir apkopotas @tbl:interface-views tabulā. ]) // For self check (sorta) and traceability #figure( @@ -3720,144 +4059,144 @@ Saskarnes projektējuma ekrānskatos izmantotās funkcijas ir apkopotas @tbl:int kind: table, tablex( columns: 3, - + /* --- header --- */ [*Ekrānskata nosaukums*], [*Ekrānskata identifikators*], [*Atbilstošās funkcijas*], /* -------------- */ - + [Galvenā lapa], [#link()[SS01]], [Statiska lapa#footnote[Statiskas lapas saturs mainās reti, tās saturs tiek atjaunots manuāli.]], - [Pieteikšanās], [SS02], [#link()[AMF06]], - [Atkārtotā apstiprinājuma pieteikšana], [SS03], [#link()[AMF02]], - [Paroles atjaunošanas pieteikums], [SS04], [#link()[AMF03]], - [Paroles atjaunošana], [SS05], [#link()[AMF04]], - [E-pasta apstiprināšana], [SS06], [#link()[AMF07]], - [Reģistrācija], [#link()[SS07]], [#link()[AMF01]], - [Spēles notikumu pārskats], [SS08], [#link()[SGMF03]], - [Spēļu vēstures pārskats], [SS09], [#link()[SIMF08]], - [Spēles istabu pārskats], [SS10], [#link()[SIMF01], #link()[SIMF03], #link()[AMF06], #link()[AMF04]], - [Atteikšanās], [SS11], [#link()[AMF05]], - [Lietotāju pārskats], [SS12], [#link()[LKMF01]], - [Konta detaļas], [SS13], [#link()[LKMF02]], - [Konta rediģēšana], [SS14], [#link()[LKMF04]], - [Konta dzēšana], [SS15], [#link()[LKMF05]], - [Abonementa pieteikšana], [SS16], [#link()[MAMF01]], - [Abonementu pārskats], [SS17], [#link()[MAMF02]], - [Abonementa atcelšana], [SS18], [#link()[MAMF03]], - [Abonementu plānu pārskats], [SS19], [#link()[MAMF04]], - - [Lomas detaļas], [SS20], [#link()[SLMF01]], - [Lomu pārskats], [SS21], [#link()[SLMF02]], - [Lomas darbību pārskats], [SS22], [#link()[SLMF03]], - [Lomas izveidošana], [SS23], [#link()[SLMF04]], - [Lomas rediģēšana], [SS24], [#link()[SLMF05]], - [Lomas dzēšana], [SS25], [#link()[SLMF06]], - [Spēles uzstādījumu pārskats], [#link()[SS26]], [#link()[SUMF01]], - [Spēles uzstādījuma lomu pārskats], [SS27], [#link()[SUMF02]], - [Spēles uzstādījuma izveidošana], [SS28], [#link()[SUMF03]], - [Spēles uzstādījuma rediģēšana], [SS29], [#link()[SUMF04]], - [Spēles uzstādījuma dzēšana], [SS30], [#link()[SUMF05]], - [Spēles istabas izveidošana], [SS31], [#link()[SIMF04]], - [Pievienošanās spēlei], [SS32], [#link()[SIMF02]], + [Pieteikšanās], [SS02], [#link()[AMF06]], + [Atkārtotā apstiprinājuma pieteikšana], [SS03], [#link()[AMF02]], + [Paroles atjaunošanas pieteikums], [SS04], [#link()[AMF03]], + [Paroles atjaunošana], [SS05], [#link()[AMF04]], + [E-pasta apstiprināšana], [SS06], [#link()[AMF07]], + [Reģistrācija], [#link()[SS07]], [#link()[AMF01]], + [Spēles notikumu pārskats], [SS08], [#link()[SGMF03]], + [Spēļu vēstures pārskats], [SS09], [#link()[SIMF08]], + [Spēles istabu pārskats], [SS10], [#link()[SIMF01], #link()[SIMF03], #link()[AMF06], #link()[AMF04]], + [Atteikšanās], [SS11], [#link()[AMF05]], + [Lietotāju pārskats], [SS12], [#link()[LKMF01]], + [Konta detaļas], [SS13], [#link()[LKMF02]], + [Konta rediģēšana], [SS14], [#link()[LKMF04]], + [Konta dzēšana], [SS15], [#link()[LKMF05]], + [Abonementa pieteikšana], [SS16], [#link()[MAMF01]], + [Abonementu pārskats], [SS17], [#link()[MAMF02]], + [Abonementa atcelšana], [SS18], [#link()[MAMF03]], + [Abonementu plānu pārskats], [SS19], [#link()[MAMF04]], + + [Lomas detaļas], [SS20], [#link()[SLMF01]], + [Lomu pārskats], [SS21], [#link()[SLMF02]], + [Lomas darbību pārskats], [SS22], [#link()[SLMF03]], + [Lomas izveidošana], [SS23], [#link()[SLMF04]], + [Lomas rediģēšana], [SS24], [#link()[SLMF05]], + [Lomas dzēšana], [SS25], [#link()[SLMF06]], + [Spēles uzstādījumu pārskats], [#link()[SS26]], [#link()[SUMF01]], + [Spēles uzstādījuma lomu pārskats], [SS27], [#link()[SUMF02]], + [Spēles uzstādījuma izveidošana], [SS28], [#link()[SUMF03]], + [Spēles uzstādījuma rediģēšana], [SS29], [#link()[SUMF04]], + [Spēles uzstādījuma dzēšana], [SS30], [#link()[SUMF05]], + [Spēles istabas izveidošana], [SS31], [#link()[SIMF04]], + [Pievienošanās spēlei], [SS32], [#link()[SIMF02]], [Pirmsspēles vestibils], [#link()[SS33]], [#link()[SIMF07], #link()[SIMF05], #link()[SUMF02], #link()[SIMF09], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], [Spēles sākums], [SS34], [#link()[SGMF04], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], [Spēles skats], [#link()[SS35]], [#link()[SGMF04], #link()[SMLF03], #link()[SLMF01], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], [Spēles darbība], [#link()[SS36]], [#link()[SGMF01], #link()[SLMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], - [Spēles fāzes maiņa], [#link()[SS37]], [#link()[SGMF04], #link()[SGMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], - // [Atslēgšanās no spēles istabas], [SS38], [#link()[SIMF03]], - [Spēles beigas], [SS38], [#link()[SGMF04], #link()[SGMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], - // [Spēles uzstādījuma detaļas], [SS40], [#link()[SUMF02]], + [Spēles fāzes maiņa], [#link()[SS37]], [#link()[SGMF04], #link()[SGMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + // [Atslēgšanās no spēles istabas], [SS38], [#link()[SIMF03]], + [Spēles beigas], [SS38], [#link()[SGMF04], #link()[SGMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + // [Spēles uzstādījuma detaļas], [SS40], [#link()[SUMF02]], [Spēles notikumu pārskats], [#link()[SS39]], [#link()[SGMF04], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], [Spēles novērošana], [SS40], [#link()[SGMF04], #link()[SIMF07], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], [Spēles iestatījumi], [SS41], [Lietotāju saskarnes iestatījumi], - [Lietotāja konta bloķēšana], [SS42], [#link()[LKMF03]], - [Spēlētāja izslēgšana], [SS43], [#link()[SIMF07], #link()[SIMF06]], - ) + [Lietotāja konta bloķēšana], [SS42], [#link()[LKMF03]], + [Spēlētāja izslēgšana], [SS43], [#link()[SIMF07], #link()[SIMF06]], + ), ) #pagebreak(weak: true) -=== Ekrānskati +=== Ekrānskati // UPDATED: 2024-01-18 17:37 #indent-par([ -Galvenās lapas ekrānskats (SS01; @fig:SS01 att.) parāda informāciju nereģistrētiem lietotājiem, kas ietver statistiku par mājaslapu un saiti uz reģistrāciju vai pieteikšanos un citu aktuālu informāciju. Informācija, kas tiek parādīta, ir statiska. + Galvenās lapas ekrānskats (SS01; @fig:SS01 att.) parāda informāciju nereģistrētiem lietotājiem, kas ietver statistiku par mājaslapu un saiti uz reģistrāciju vai pieteikšanos un citu aktuālu informāciju. Informācija, kas tiek parādīta, ir statiska. ]) #figure( caption: "Galvenās lapas ekrānskats", - image("img/ui/desktop/landingpage.png") + image("img/ui/desktop/landingpage.png"), ) #pagebreak(weak: true) #indent-par([ -Reģistrācijas ekrānskats (SS07; @fig:SS07 att.) satur reģistrācijas veidlapu. Jāievada reģistrācijai nepieciešamie dati. Paziņojumi par ievades datu validācijas neveiksmēm parādās pie attiecīgajiem ievades laukiem. Nospiežot reģistrācijas pogu lietotājs apstiprina mājaslapas noteikumiem un saistītām politikām. + Reģistrācijas ekrānskats (SS07; @fig:SS07 att.) satur reģistrācijas veidlapu. Jāievada reģistrācijai nepieciešamie dati. Paziņojumi par ievades datu validācijas neveiksmēm parādās pie attiecīgajiem ievades laukiem. Nospiežot reģistrācijas pogu lietotājs apstiprina mājaslapas noteikumiem un saistītām politikām. ]) #figure( caption: "Reģistrācijas ekrānskats", - image("img/ui/desktop/register.png") + image("img/ui/desktop/register.png"), ) #pagebreak(weak: true) #indent-par([ -Spēles istabu pārskata ekrānskats (SS26; @fig:SS26 att.) ir pirmais ekrānskats, kurā lietotājs iekļūst, veiksmīgi piesakoties sistēmā. Tas satur pieejamās spēles istabas ar informāciju par konkrētām istabām ar meklēšanas, filtru un kārtošanas iespēju. Pieejamām spēles istabām ir pieslēgšanās poga. Skatā ir iespēja arī nokļūt uz sava reģistrētā konta pārskatu. Ekrānskats satur papildus aktuālu informāciju. Papildus informācija ir statiska, informācija par abonementa iegādi un blogs. Maksas lietotājam ir redzama istabu izveidošanas poga. + Spēles istabu pārskata ekrānskats (SS26; @fig:SS26 att.) ir pirmais ekrānskats, kurā lietotājs iekļūst, veiksmīgi piesakoties sistēmā. Tas satur pieejamās spēles istabas ar informāciju par konkrētām istabām ar meklēšanas, filtru un kārtošanas iespēju. Pieejamām spēles istabām ir pieslēgšanās poga. Skatā ir iespēja arī nokļūt uz sava reģistrētā konta pārskatu. Ekrānskats satur papildus aktuālu informāciju. Papildus informācija ir statiska, informācija par abonementa iegādi un blogs. Maksas lietotājam ir redzama istabu izveidošanas poga. ]) #figure( caption: "Spēles istabu pārskata ekrānskats", - image("img/ui/desktop/available-game-room-list.png") + image("img/ui/desktop/available-game-room-list.png"), ) #pagebreak(weak: true) #indent-par([ -Pirmsspēles vestibila ekrānskats (SS33; @fig:SS33 att.) parāda informāciju par spēles istabu, kas ir aktuāla pirms spēle sākas. Tas iekļauj spēlētājus istabā un informāciju par spēles uzstādījumu un tajā iekļautām spēles lomām. + Pirmsspēles vestibila ekrānskats (SS33; @fig:SS33 att.) parāda informāciju par spēles istabu, kas ir aktuāla pirms spēle sākas. Tas iekļauj spēlētājus istabā un informāciju par spēles uzstādījumu un tajā iekļautām spēles lomām. ]) #figure( caption: "Spēles vestibila ekrānskats", - image("img/ui/mobile/lobby.png", height: 80%) + image("img/ui/mobile/lobby.png", height: 80%), ) #pagebreak(weak: true) #indent-par([ -Ekrānskats "Spēles skats" (SS35; @fig:SS35 att.) parāda būtiskāko informāciju spēles procesā. Ir iespēja apskatīt visus spēlētājus, kas ir pieslēgušies spēlei. Pie katra spēlētāja ar noteiktu krāsu tiek parādīts vai spēlētājs ir dzīvs vai nē. Oranža krāsa nozīmē, ka ir dzīvs, melns -- nē. Kā arī savu lomu un lomas aprakstu, kas tika piešķirta spēlētājam, spēles sākumā, šajā skatā mediķis. Skatā ir iespēja izmantot tērzētavu, sarunājoties ar citiem spēles dalībniekiem. Pieejams arī spēles pārskats, kurā ir redzama spēles fāze, dzīvo spēlētāju skaitu un diena. No šī skata ir iespējams nokļūt uz notikumu pārskata skatu. + Ekrānskats "Spēles skats" (SS35; @fig:SS35 att.) parāda būtiskāko informāciju spēles procesā. Ir iespēja apskatīt visus spēlētājus, kas ir pieslēgušies spēlei. Pie katra spēlētāja ar noteiktu krāsu tiek parādīts vai spēlētājs ir dzīvs vai nē. Oranža krāsa nozīmē, ka ir dzīvs, melns -- nē. Kā arī savu lomu un lomas aprakstu, kas tika piešķirta spēlētājam, spēles sākumā, šajā skatā mediķis. Skatā ir iespēja izmantot tērzētavu, sarunājoties ar citiem spēles dalībniekiem. Pieejams arī spēles pārskats, kurā ir redzama spēles fāze, dzīvo spēlētāju skaitu un diena. No šī skata ir iespējams nokļūt uz notikumu pārskata skatu. ]) #figure( caption: "Spēles skata ekrānskats", - image("img/ui/desktop/game-screen.png") + image("img/ui/desktop/game-screen.png"), ) #pagebreak(weak: true) #indent-par([ -Spēles notikumu pārskata ekrānskats (SS39; @fig:SS39 att.) attēlo spēles notikumu pārskatu. Tas ir līdzīgs spēles skatam (SS35; @fig:SS35 att.) ar savām dažām atšķirībām. Informācija sniedz pārskatu par svarīgiem spēles notikumiem atsevišķās spēles fāzēs – naktī un dienā. Spēles laikā ir notikuši konkrēti notikumi, piemēram, kāds spēlētājs ir nogalināts vai izglābts. Notikumi ir izmantoti, lai saprastu nesenos notikumus spēlē un plānotu nākamās darbības, balstoties uz spēles gaitu un citu spēlētāju lēmumiem. + Spēles notikumu pārskata ekrānskats (SS39; @fig:SS39 att.) attēlo spēles notikumu pārskatu. Tas ir līdzīgs spēles skatam (SS35; @fig:SS35 att.) ar savām dažām atšķirībām. Informācija sniedz pārskatu par svarīgiem spēles notikumiem atsevišķās spēles fāzēs – naktī un dienā. Spēles laikā ir notikuši konkrēti notikumi, piemēram, kāds spēlētājs ir nogalināts vai izglābts. Notikumi ir izmantoti, lai saprastu nesenos notikumus spēlē un plānotu nākamās darbības, balstoties uz spēles gaitu un citu spēlētāju lēmumiem. ]) #figure( caption: "Spēles notikumu pārskata ekrānskats", - image("img/ui/desktop/game-event-overview.png") + image("img/ui/desktop/game-event-overview.png"), ) #pagebreak(weak: true) #indent-par([ -Ekrānskats "Spēles darbība" (SS36; @fig:SS36 att.) parāda darbības izvēli, noteiktajai spēlētāja lomai, šajā gadījumā mediķim, kas ietekmē nākamos spēles soļus. Šis skats parādās katrā darbību momentā naktī. Katrai noteiktajai spēlētāja lomai šis skats ir nedaudz atšķirīgs. Mafijas gadījumā parādās saraksts ar vēl dzīvajiem spēlētājiem, kur jāizvēlas viens. Iedzīvotāja gadījumā nav nevienas darbības, kas jādara, tie vienkārši sagaida nākamo dienu. + Ekrānskats "Spēles darbība" (SS36; @fig:SS36 att.) parāda darbības izvēli, noteiktajai spēlētāja lomai, šajā gadījumā mediķim, kas ietekmē nākamos spēles soļus. Šis skats parādās katrā darbību momentā naktī. Katrai noteiktajai spēlētāja lomai šis skats ir nedaudz atšķirīgs. Mafijas gadījumā parādās saraksts ar vēl dzīvajiem spēlētājiem, kur jāizvēlas viens. Iedzīvotāja gadījumā nav nevienas darbības, kas jādara, tie vienkārši sagaida nākamo dienu. ]) #figure( caption: "Spēles darbības ekrānskats", - image("img/ui/desktop/game-action.png") + image("img/ui/desktop/game-action.png"), ) #pagebreak(weak: true) #indent-par([ -Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas momentu, atspoguļojot pāreju no dienas uz nakti vai otrādi. Ekrānā dominē grafiskais uzraksts "Trešā diena", kas simbolizē spēles iekšējo ciklu maiņu un pavada spēlētājus uz nākamo darbību sēriju. Fāzes maiņa informē spēlētājus par svarīgu spēles posmu notikumiem, šajā gadījumā par Jaunzemnieka slepkavību. + Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas momentu, atspoguļojot pāreju no dienas uz nakti vai otrādi. Ekrānā dominē grafiskais uzraksts "Trešā diena", kas simbolizē spēles iekšējo ciklu maiņu un pavada spēlētājus uz nākamo darbību sēriju. Fāzes maiņa informē spēlētājus par svarīgu spēles posmu notikumiem, šajā gadījumā par Jaunzemnieka slepkavību. ]) #figure( caption: "Fāzes maiņas ekrānskats", - image("img/ui/tablet/game-phase-change.png", height: 60%) + image("img/ui/tablet/game-phase-change.png", height: 60%), ) @@ -3865,94 +4204,94 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom #heading(numbering: none, "Izmantotā literatūra un avoti") + #hyperlink-source( - "Eiropas Parlaments.", - "Vispārēja datu aizsardzības regula (angl. GDPR). 2016, aprīlis.", - "https://eur-lex.europa.eu/legal-content/LV/TXT/PDF/?uri=CELEX:32016R0679", - datetime( - year: 2023, - month: 11, - day: 20, - ), -) + "Eiropas Parlaments.", + "Vispārēja datu aizsardzības regula (angl. GDPR). 2016, aprīlis.", + "https://eur-lex.europa.eu/legal-content/LV/TXT/PDF/?uri=CELEX:32016R0679", + datetime( + year: 2023, + month: 11, + day: 20, + ), + ) + #hyperlink-source( - "International standard organisation (Starptautiska standartu organizācija).", - [ISO/DIS 8601-1. Data elements and interchange formats -- Information interchange -- Representation of dates and times -- Part 1: Basic rules.], - "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", - datetime( - year: 2023, - month: 11, - day: 20, - ), -) + "International standard organisation (Starptautiska standartu organizācija).", + [ISO/DIS 8601-1. Data elements and interchange formats -- Information interchange -- Representation of dates and times -- Part 1: Basic rules.], + "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", + datetime( + year: 2023, + month: 11, + day: 20, + ), + ) + #hyperlink-source( - "International standard organisation.", - "ISO 4217. Currency codes. 2015.", - "https://www.iso.org/iso-4217-currency-codes.html", - datetime( - year: 2023, - month: 12, - day: 16, - ), -) + "International standard organisation.", + "ISO 4217. Currency codes. 2015.", + "https://www.iso.org/iso-4217-currency-codes.html", + datetime( + year: 2023, + month: 12, + day: 16, + ), + ) + #hyperlink-source( - "Internet Engineering Task Force (IETF).", - "RFC 7519. JSON Web Token (JWT). 2015, maijs.", - "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", - datetime( - year: 2023, - month: 11, - day: 20, - ), -) + "Internet Engineering Task Force (IETF).", + "RFC 7519. JSON Web Token (JWT). 2015, maijs.", + "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", + datetime( + year: 2023, + month: 11, + day: 20, + ), + ) + #hyperlink-source( - [Institūcija "Latvijas standarts".], - [LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis". 1996, marts.], - "", - datetime( - year: 2023, - month: 11, - day: 20, - ), -) + [Institūcija "Latvijas standarts".], + [LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis". 1996, marts.], + "", + datetime( + year: 2023, + month: 11, + day: 20, + ), + ) + #hyperlink-source( - [Institūcija "Latvijas standarts".], - [LVS 72:1996 PPS "Ieteicamā prakse programmatūras projektējuma aprakstīšanai". 1996, marts.], - "", - datetime( - year: 2023, - month: 11, - day: 20, - ), -) + [Institūcija "Latvijas standarts".], + [LVS 72:1996 PPS "Ieteicamā prakse programmatūras projektējuma aprakstīšanai". 1996, marts.], + "", + datetime( + year: 2023, + month: 11, + day: 20, + ), + ) + #hyperlink-source( - "QUALCOMM Incorporated.", - "RFC2822. Internet Message Format (Interneta ziņojumu formāts). 2001, aprīlis.", - "https://datatracker.ietf.org/doc/html/rfc2822", - datetime( - year: 2023, - month: 11, - day: 20, - ), -) + "QUALCOMM Incorporated.", + "RFC2822. Internet Message Format (Interneta ziņojumu formāts). 2001, aprīlis.", + "https://datatracker.ietf.org/doc/html/rfc2822", + datetime( + year: 2023, + month: 11, + day: 20, + ), + ) + #hyperlink-source( - "Maksas apstrādātāja lietošanas dokumentācija.", - "Stripe API Reference.", - "https://stripe.com/docs/api", - datetime( - year: 2023, - month: 12, - day: 17, - ), -) + "Maksas apstrādātāja lietošanas dokumentācija.", + "Stripe API Reference.", + "https://stripe.com/docs/api", + datetime( + year: 2023, + month: 12, + day: 17, + ), + ) /*+ #hyperlink-source( "W3C.", @@ -3995,14 +4334,14 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom stroke: none, columns: (1fr, 1fr), "Darba autori:", - [ - + Alens Aleksandrs Čerņa, ac22065, - + Kristiāns Francis Cagulis, kc22015, - + Ernests Gustavs Dane, eg22086, - + Miķelis Kukainis, mk22092, - + Jorens Štekeļs, js21283, + [ + + Alens Aleksandrs Čerņa, ac22065, + + Kristiāns Francis Cagulis, kc22015, + + Ernests Gustavs Dane, eg22086, + + Miķelis Kukainis, mk22092, + + Jorens Štekeļs, js21283, ], - ) + ), ) #v(vspace) @@ -4012,7 +4351,7 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom columns: (1fr, 1fr), "Darba vadītāja:", "prof. Dr. sc. comp. Laila Niedrīte", - ) + ), ) #v(vspace) @@ -4022,7 +4361,7 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom columns: (1fr, 1fr), "Darba galīgā versija izgatavota:", "18.01.2024.", - ) + ), ) #v(vspace) @@ -4032,7 +4371,7 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom columns: (1fr, 1fr), "Darba iesniegšanas datums:", "18.01.2024.", - ) + ), ) #v(vspace) @@ -4042,7 +4381,7 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom columns: (1fr, 1fr), "Darba aizstāvēšanas datums:", "22.01.2024.", - ) + ), ) #v(vspace) @@ -4052,7 +4391,7 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom columns: (1fr, 1fr), "Komisijas vērtējums:", line(length: 100%, start: (0pt, 10pt)), - ) + ), ) #v(vspace) @@ -4066,13 +4405,11 @@ Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas mom #line(length: 100%, start: (0pt, 30pt)) #line(length: 100%, start: (0pt, 50pt)) ], - ) + ), ) - - /*Dokumentārā lapa Dokumentārajā lapā (sk. 5. pielikumu) ietver: •darba nosaukumu, fakultātes nosaukumu; @@ -4081,4 +4418,4 @@ informācijas avoti un ka darba elektroniskā kopija atbilst izdrukai; •vadītāja atzinumu, vai darbs ir rekomendējams aizstāvēšanai; •atbildīgās personas atzīmi par darba saņemšanu; •recenzenta-/u datus (vārds, uzvārds, amats, zinātniskais grāds); -•noslēguma pārbaudījuma komisijas sēdes datumu un protokola numuru.*/ \ No newline at end of file +•noslēguma pārbaudījuma komisijas sēdes datumu un protokola numuru.*/ diff --git a/utils.typ b/utils.typ index 8b745c2..bc21eab 100644 --- a/utils.typ +++ b/utils.typ @@ -1,15 +1,17 @@ #import "@preview/tablex:0.0.6": tablex #import "@preview/big-todo:0.2.0": todo as TODO -#let custom-block(item) = { +#let custom-block( + item, +) = { set align(start) - block( + block( inset: 8pt, stroke: black, width: 100%, spacing: 0pt, breakable: true, - item + item, ) } @@ -17,84 +19,149 @@ title: "", titles: (), caption: "", - ..items + ..items, ) = { set par(first-line-indent: 0pt) figure( gap: 1.5em, kind: table, - caption: if caption != ""{ - caption + caption: if caption != "" { + caption + } else { + if titles.len() == 0 { + title } else { - if titles.len() == 0 { - title - } else { - titles.first() - } - }, + titles.first() + } + }, [ #if titles.len() == 0 { - custom-block(text(weight: "bold", title)) + custom-block( + text( + weight: "bold", + title, + ), + ) } - #for i in range(items.pos().len()) { + #for i in range( + items.pos().len(), + ) { if titles.len() > 0 { - custom-block(text(weight: "bold", titles.at(i))) + custom-block( + text( + weight: "bold", + titles.at(i), + ), + ) } - custom-block(items.pos().at(i)) + custom-block( + items.pos().at(i), + ) } - ] + ], ) linebreak() } -#let parameter-table(caption: "", ..items) = { +#let parameter-table( + caption: "", + ..items, +) = { if caption == "" { caption = items.pos().first() } longtable( - titles: ("Parametra nosaukums", "Parametra identifikators", "Parametra apraksts", "Parametra prasības", "Parametra piemērs (/-i)"), + titles: ( + "Parametra nosaukums", + "Parametra identifikators", + "Parametra apraksts", + "Parametra prasības", + "Parametra piemērs (/-i)", + ), caption: caption, - ..items - ) -} - -#let procedure-table(caption: "", ..items) = { - if caption == "" { - caption = items.pos().first() - } - longtable( - titles: ("Procedūras nosaukums", "Procedūras identifikators", "Procedūras apraksts", "Ievade", "Apstrāde", "Izvade"), - caption: caption, - ..items + ..items, ) } -#let function-table(caption: "", ..items) = { +#let procedure-table( + caption: "", + ..items, +) = { if caption == "" { caption = items.pos().first() } longtable( - titles: ("Funkcijas nosaukums", "Funkcijas identifikators", "Ievads", "Ievade", "Apstrāde", "Izvade", "Paziņojumi",), + titles: ( + "Procedūras nosaukums", + "Procedūras identifikators", + "Procedūras apraksts", + "Ievade", + "Apstrāde", + "Izvade", + ), caption: caption, - ..items + ..items, + ) +} + +#let function-table( + caption: "", + ..items, +) = { + if caption == "" { + caption = items.pos().first() + } + longtable( + titles: ( + "Funkcijas nosaukums", + "Funkcijas identifikators", + "Ievads", + "Ievade", + "Apstrāde", + "Izvade", + "Paziņojumi", + ), + caption: caption, + ..items, ) } -#let entity-table-row(..items) = { +#let entity-table-row( + ..items, +) = { ( items.pos().at(0), - upper(raw(items.pos().at(1), block: false)), - upper(raw(items.pos().at(2), block: false)), - items.pos().at(3) + upper( + raw( + items.pos().at(1), + block: false, + ), + ), + upper( + raw( + items.pos().at(2), + block: false, + ), + ), + items.pos().at(3), ) } -#let entity-table(caption: "", id: (), ..items) = { +#let entity-table( + caption: "", + id: (), + ..items, +) = { if id == () { - id = ("id", "serial8", "primary key, not null", "Unikālais identifikators") + id = ( + "id", + "serial8", + "primary key, not null", + "Unikālais identifikators", + ) } - + figure( caption: caption, kind: table, @@ -102,22 +169,34 @@ columns: (4cm, 3cm, auto, auto), repeat-header: true, /* Header */ - [*Lauks*], [*Datu tips*], [*Lauka atribūti*], [*Apraksts*], + [*Lauks*], [*Datu tips*], [*Lauka atribūti*], [*Apraksts*], ..entity-table-row(..id), // id row ..for i in range(items.pos().len(), step:4){ entity-table-row(..items.pos().slice(i, i+4)) }, - ) + ), ) } -#let todo(..body) = { - TODO(..body, inline: true, big_text: 14pt, small_text: 12pt) +#let todo( + ..body, +) = { + TODO( + ..body, + inline: true, + big_text: 14pt, + small_text: 12pt, + ) } -#let hyperlink-source(author, title, link_str, date) = { +#let hyperlink-source( + author, + title, + link_str, + date, +) = { if link_str == "" { [#author #title Aplūkots #date.display("[day].[month].[year]")] } else {