User Tools

Site Tools


doc-filling_modules

Návod na spustenie projektu

Nový vyplňovací modúl používa npm, čo znamená že je treba mať nainštalovaný. Projekt bol vyvinutý na linuxu, takže sa používa terminál na spustenie. Pre windows možno bude fungovať (neskúšal som).

Cez následujúce príkazy sa vybuildí aplikáciu a na jeho spustenie.

npm install // instalácie potrebných balíčku použivané v projektu, najdete ich v package.json súbor
npm run dev // spustenie aplikáciu v módu dev

Tip:

  • Pokud sa vymáže nejakú použitú komponentu a pri znova spustení môže hlási nuxt, že nenajde nejaký súbor. Tento problém sa vyrieší vymazaním node_modules složka a znovu nainštalovať balíčky cez npm install.
  • Na plnú funkcionalitu aplikácie si spuste aj json-server, slúži totiž na autentizácie a vrátenie dát.

Toast

Toast sa používa v komponentu CourseRating pri zobrazovanie chybových alebo úspešných hlášek. Jeho konfigurácia je možné nastaviť priamo v nuxt.config.js, alebo pri vytvorenie tohto objektu v komponentu (tým pádom sa prepíše konfiguráciu v nuxt.config.js).

Nastavenie jazyka

Nastavenie jazyka v tomto projektu je vyriešená pomocou i18n framework. Prepínanie jazyka je možné cez navigačnú líštinu alebo cez url s príznakom “cs” alebo “en”. Konfiguráciu i18n je v súboru nuxt.config.js

dokumentácie: https://i18n.nuxtjs.org/

Lokalizacie textu

Preklady textu sú uložené v súboru locale_CZ.js a locale_EN.js, záleží aký jazyk je potreba. V nuxt.config.js sa definujú locales jednotlivých jazykov.

Na lokalizáciu textu sa používa syntax $t('promena_lokalizacneho_textu'). Pokiaľ v lokalizačnom textu sú parametre, tak sa používa syntax $t('promena_lokalizacneho_textu', { parameter: hodnota_parametru}).

Princíp je veľmi podobný tohle frameworku. https://kazupon.github.io/vue-i18n/guide/messages.html#named-formatting

Navigačná lišta

Navigačná lišta je samostatná komponenta, ktorá je priamo použitá v layouts. Komponenta ako taková není nejak zaujimavá, obsahuje linky a prepínanie jazyka.

U nástenky sa počíta počet dostupných kurzov na vyplnenie. Na tuto slúži fetchSurveys() metóda, ktorá pri mounted uloží do Vuex číslo dostupných kurzov.

Nové endpointy

Seznam endpointov a jejích definíc bude priebežne aktualizován, pokiaľ vidíte v tom rozdieľ, klidne si samy upravte podľa potrieb.

/surveys

[
  {
    "id": 1,
    "semesterCode": "B192",
    "type": "course",
    "state": "openForSubscribed", // možno bude číselník
    "courseIds": [
        {
           "id": 1124706
           // ... ďalšie informacie k predmetu
        },
        // ...
    ],
    "shortNameCz": "FIT léto 19/20",
    "shortNameEn": "FIT summer 19/20",
    "nameCz": "FIT - předměty - letní semestr 2019/2020",
    "nameEn": "FIT - courses - summer semester 2019/2020",
    "openSince": null,
    "openUntil": null
  }
]

/surveys/surveyId

  {
    "id": 1,
    "semesterCode": "B192",
    "type": "course",
    "state": "openForSubscribed", // možno bude číselník
    "courseIds": [
        {
           "id": 1124706
           // ... ďalšie informacie k predmetu
        },
        // ...
    ],
    "shortNameCz": "FIT léto 19/20",
    "shortNameEn": "FIT summer 19/20",
    "nameCz": "FIT - předměty - letní semestr 2019/2020",
    "nameEn": "FIT - courses - summer semester 2019/2020",
    "openSince": null,
    "openUntil": null
  }

/surveys/surveyId/courses

[
  {
    "nameCz": "Softwarové inženýrství I",
    "nameEn": "Softwarové inženýrství I",
    "code": "BI-SI1.2",
    "teacherIds": [
      308376000,
      339481000
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 2778806
  },
  {
    "nameCz": "Technologie XML",
    "nameEn": "Technologie XML",
    "code": "BI-XML",
    "teacherIds": [
      339269000,
      2258206
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 1679006
  }
]

/surveys/surveyId/pubSettings

[
  {
    "id": 4,
    "nameCz": "Můj studijní průměr",
    "nameEn": "My study average",
    "property": null, // nevim co je property
    "helpTextCz": "U komentáře bude zobrazen váš studijní průměr",
    "helpTextEn": "Your study average will be shown under the comment"
  },
  {
    "id": 5,
    "nameCz": "Role předmětu",
    "nameEn": "Role of the course",
    "property": null,
    "helpTextCz": "U komentáře bude zobrazena role předmětu ve vašem studijním plánu",
    "helpTextEn": "The role of the course in your study plan will be shown under the comment"
  },
  {
    "id": 3,
    "nameCz": "Můj ročník studia",
    "nameEn": "My year of study",
    "property": null,
    "helpTextCz": "U komentáře bude zobrazen váš ročník studia",
    "helpTextEn": "Your year of study will be shown under the comment"
  },
  {
    "id": 2,
    "nameCz": "Můj obor studia",
    "nameEn": "My study branch",
    "property": null,
    "helpTextCz": "U komentáře bude zobrazen váš obor studia",
    "helpTextEn": "Your study branch will be shown under the comment"
  },
  {
    "id": 1,
    "nameCz": "Mé jméno",
    "nameEn": "My name",
    "property": null,
    "helpTextCz": "U textového komentáře bude zobrazeno vaše jméno",
    "helpTextEn": "Your name will be shown under the comment"
  }
]

/surveys/surveyId/questions

[
  {
    "id": 4,
    "hasValueAnswer": true,
    "hasTextAnswer": true,
    "valueQuestionCz": "Vyučující @teacherName\"",
    "valueQuestionEn": "Teacher @teacherName\"",
    "textContextCz": "Ohodnoťte vyučujícího v předmětu, níže lze přidat textový komentář.",
    "textExplNormalCz": "Přidejte textový komentář k svému hodnocení vyučujícího @teacherName (způsob výkladu, jednání se studenty, rovný přístup, apod.)",
    "textExplNormalEn": "Add a text comment to your teacher's rating @teacherName (way of interpretation, negotiation with students, equal access, etc.)",
    "textExplBadCz": "Hodnotili jste vyučujícího @teacherName negativně. Můžete, prosím, svoje výhrady vůči vyučujícímu uvést co nejkonkrétněji (způsob výkladu, jednání se studenty, rovný přístup apod.) Je to důležitá zpětná vazba",
    "textExplBadEn": "You have rated the teacher @teacherName negatively. Please, make your reservations about the teacher as specific as possible (way of interpretation, negotiation with students, equal access, etc.). This is an important feedback",
    "textQuestionNormalCz": "Komentář k vyučujícímu @teacherName",
    "textQuestionNormalEn": "Comments to Teacher @TeacherName",
    "textQuestionBadCz": "Komentář k vyučujícímu @teacherName",
    "textQuestionBadEn": "Comments to Teacher @TeacherName",
    "placeholderCz": "Zde můžete vložit svůj komentář k vyučujícímu @teacherName",
    "placeholderEn": "Here you can post your comment to @teacherName",
    "priority": 3,
    "textContextEn": "Evaluate the teacher in the subject, you can add a text comment below",
    "mandatory": false,
    "primary": false,
    "teacherQuestion": true
  },
  {
    "id": 1,
    "hasValueAnswer": true,
    "hasTextAnswer": true,
    "valueQuestionCz": "Obsah předmětu",
    "valueQuestionEn": "Course content",
    "textContextCz": "Ohodnoťte obsah předmětu (témata, přínos, studijní podpora). Níže lze přidat textový komentář",
    "textExplNormalCz": "Zaměřit se můžete na témata, přínos, studijní podpora, obtížnost, načasování, kontext, ...",
    "textExplNormalEn": "You can focus on topics, benefits, learning support, difficulty, timing, context, ...",
    "textExplBadCz": "Obsah předmětu jste hodnotil/a negativně. Abychom ho mohli zlepšit, potřebujeme další informace o tom, co bylo v předmětu špatně, a jak to můžeme do příštího roku napravit. Buďte, prosím, co nejkonkrétnější, pomůže nám to.",
    "textExplBadEn": "You have rated the content of the course negative. In order to improve it, we need more information about what was wrong in the subject and how we can fix it next year. Please be as specific as possible, it will help us.",
    "textQuestionNormalCz": "Váš komentář k obsahu předmětu",
    "textQuestionNormalEn": "Your comment on the content of the course",
    "textQuestionBadCz": "Váš komentář k obsahu předmětu",
    "textQuestionBadEn": "Your comment on the content of the course",
    "placeholderCz": "Zde můžete vložit textový komentář k obsahu předmětu",
    "placeholderEn": "Here you can insert a textual commentary on the content of the course",
    "priority": 1,
    "textContextEn": "Evaluate the content of the course (topics, benefits, study support). Below it is possible to add a text comment",
    "mandatory": false,
    "primary": false,
    "teacherQuestion": false
  },
  {
    "id": 2,
    "hasValueAnswer": true,
    "hasTextAnswer": false,
    "valueQuestionCz": "Celkový dojem",
    "valueQuestionEn": "Overall impresion",
    "textContextCz": "Ohodnoťte celkový dojem z předmětu (obsah+vyučující). Níže pak můžete přidat hodnocení předmětu a/nebo vyučujících",
    "textExplNormalCz": null,
    "textExplNormalEn": null,
    "textExplBadCz": null,
    "textExplBadEn": null,
    "textQuestionNormalCz": null,
    "textQuestionNormalEn": null,
    "textQuestionBadCz": null,
    "textQuestionBadEn": null,
    "placeholderCz": null,
    "placeholderEn": null,
    "priority": 0,
    "textContextEn": "Evaluate the overall impression of the course (content + teacher). Below you can add an evaluation of the subject and / or teachers",
    "mandatory": true,
    "primary": true,
    "teacherQuestion": false
  },
  {
    "id": 3,
    "hasValueAnswer": false,
    "hasTextAnswer": true,
    "valueQuestionCz": "Zakončení předmětu",
    "valueQuestionEn": "Classfication of the course",
    "textContextCz": null,
    "textExplNormalCz": "Můžete okomentovat zakončení předmětu. Např. náročnost, férovost, soulad s požadavky apod.",
    "textExplNormalEn": "You can comment on the classfication of the subject. E.g. complexity, fairness, compliance with requirements, etc.",
    "textExplBadCz": null,
    "textExplBadEn": null,
    "textQuestionNormalCz": "Váš komentář k zakončení předmětu",
    "textQuestionNormalEn": "Your comment on the classfication of the course",
    "textQuestionBadCz": null,
    "textQuestionBadEn": null,
    "placeholderCz": "Zde můžete vložit komentář k zakončení předmětu",
    "placeholderEn": "Here you can add a comment to the classfication of the course",
    "priority": 2,
    "textContextEn": null,
    "mandatory": false,
    "primary": false,
    "teacherQuestion": false
  }
]

/courses

Možno sa bude premenovať endpoint na questionaires

[
  {
    "nameCz": "Softwarové inženýrství I",
    "nameEn": "Softwarové inženýrství I",
    "code": "BI-SI1.2",
    "teacherIds": [
      308376000,
      339481000
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 2778806
  },
  {
    "nameCz": "Technologie XML",
    "nameEn": "Technologie XML",
    "code": "BI-XML",
    "teacherIds": [
      339269000,
      2258206
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 1679006
  },
  {
    "nameCz": "Operační systémy",
    "nameEn": "Operační systémy",
    "code": "BI-OSY",
    "teacherIds": [
      2005006,
      2046206,
      32401000,
      304060000
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 1121406
  },
  {
    "nameCz": "Jazyk SQL, pokročilý",
    "nameEn": "Jazyk SQL, pokročilý",
    "code": "BI-SQL.1",
    "teacherIds": [
      32669000
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 3319306
  },
  {
    "nameCz": "Bezpečnost",
    "nameEn": "Bezpečnost",
    "code": "BI-BEZ",
    "teacherIds": [
      33576000,
      33133000,
      317451000,
      3558306,
      318633000,
      3922706,
      7369406,
      14469906,
      5310206
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ],
    "id": 1124706
  },
  {
    "id": 1125406,
    "nameCz": "Právo a podnikání",
    "nameEn": "Právo a podnikání",
    "code": "BI-PRP",
    "teacherIds": [
      2891606
    ],
    "questionIds": [
      1,
      2,
      3,
      4
    ]
  }
]

/courses/courseId

{
  "nameCz": "Softwarové inženýrství I",
  "nameEn": "Softwarové inženýrství I",
  "code": "BI-SI1.2",
  "teacherIds": [
    308376000,
    339481000
  ],
  "questionIds": [
    1,
    2,
    3,
    4
  ],
  "id": 2778806
}

/courses/courseId/teachers

[
  {
    "id": 317451000,
    "fullName": "Buček Jiří Ing. Ph.D."
  },
  {
    "id": 3558306,
    "fullName": "Kodýtek Filip Ing."
  }
]

/overviews

[
  {
    "surveyId": "1",
    "semesterCode": "B192",
    "type": "course",
    "shortNameCz": "FIT léto 19/20",
    "shortNameEn": "FIT summer 19/20",
    "courses": [
      {
        "nameCz": "Softwarové inženýrství I",
        "nameEn": "Softwarové inženýrství I",
        "code": "BI-SI1.2",
        "id": 2778806,
        "state": "uncompleted"
      },
      {
        "nameCz": "Tělesná výchova",
        "nameEn": "Tělesná výchova",
        "code": "TVV",
        "id": 1111111,
        "state": "unevaluable"
      },
      {
        "id": 1121406,
        "nameCz": "Bezpečnost",
        "nameEn": "Bezpečnost",
        "code": "BI-OSY",
        "date": "2021-3-20",
        "state": "evaluated"
      },
      {
        "id": 1121406,
        "nameCz": "Operační systémy",
        "nameEn": "Operační systémy",
        "code": "BI-OSY",
        "date": "2021-8-20",
        "state": "unevaluated"
      },
      {
        "id": 3319306,
        "nameCz": "Jazyk SQL, pokročilý",
        "nameEn": "Jazyk SQL, pokročilý",
        "code": "BI-SQL.1",
        "date": "2021-8-20",
        "state": "unevaluated"
      }
    ]
  },
  {
    "surveyId": 118,
    "semesterCode": "B192",
    "type": "general",
    "shortNameCz": "FIT léto 19/20",
    "shortNameEn": "FIT summer 19/20",
    "date": "2021-3-20",
    "state": "evaluated"
  },
  {
    "surveyId": 118,
    "semesterCode": "B192",
    "type": "general",
    "shortNameCz": "FIT léto 19/20",
    "shortNameEn": "FIT summer 19/20",
    "date": "2021-3-20",
    "state": "unevaluated"
  }
]

/evaluations

Jedná sa o POST, která sa používa pri odoslaní odpovedi do backendu.

 [
    {
      "questionId": 2,
      "valueAnswer": 4,
      "textAnswer": "",
      "pubSettingSelected": []
    },
    {
      "questionId": 1,
      "valueAnswer": 2,
      "textAnswer": "123",
      "pubSettingSelected": []
    },
    {
      "questionId": 3,
      "textAnswer": "123123",
      "pubSettingSelected": [
        5,
        3
      ]
    },
    {
      "questionId": 4,
      "teacherId": 32669000,
      "valueAnswer": 1,
      "textAnswer": "123123",
      "pubSettingSelected": [
        3,
        5
      ]
    }
  ]

CourseRating

Komponenta slúži ako rodičovská komponenta source of truth, to znamená že tady sa zbierajú dáta, jejích spracovanie a posielanie do backendu.

CRNameWithHelper

CRPublicSetting

CRSmileyRating

CRTextRating

Navigacie

Navigacie je vyriešená pomocou NuxtJS frameworku, kde sa definuje štruktúra priečinku pages. Aby fungovalo ten link, musí byť definovaný jeden súbor “index.vue”. Ten _slug priečinok slúži ako parameter pri zadavaní URL.

Štruktúra je viditeľná na obrázku.

V každom súboru index.vue sa používa komponenta CourseRating s rôznými props. Jediný rozdiel v tomto čase je, že pre fakultnú anketu je courseId props prázdny.

<CourseRating :courseId=“null” :surveyId=“this.surveyId” />

doc-filling_modules.txt · Last modified: 2021/08/07 10:54 by nguyennamhai