initial
							
								
								
									
										31
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						@ -1,21 +1,16 @@
 | 
			
		||||
MIT License
 | 
			
		||||
ECL 2.0
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2021 boldak
 | 
			
		||||
Copyright (c) 2021 Andrey Boldak
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
Licensed under the
 | 
			
		||||
Educational Community License, Version 2.0 (the "License"); you may
 | 
			
		||||
not use this file except in compliance with the License. You may
 | 
			
		||||
obtain a copy of the License at
 | 
			
		||||
	
 | 
			
		||||
https://opensource.org/licenses/ECL-2.0
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
SOFTWARE.
 | 
			
		||||
Unless required by applicable law or agreed to in writing,
 | 
			
		||||
software distributed under the License is distributed on an "AS IS"
 | 
			
		||||
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 | 
			
		||||
or implied. See the License for the specific language governing
 | 
			
		||||
permissions and limitations under the License.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										71
									
								
								README.md
									
									
									
									
									
								
							
							
						
						@ -1,2 +1,69 @@
 | 
			
		||||
# edu-dis-labs
 | 
			
		||||
Distributed Information Systems. Repo template.
 | 
			
		||||
 | 
			
		||||
# Шаблон репозиторію для виконання курсової роботи з дисципліни "Бази даних"
 | 
			
		||||
 | 
			
		||||
## Як використовувати
 | 
			
		||||
 | 
			
		||||
В цьому репозиторії знаходиться шаблон для виконання курсової роботи.
 | 
			
		||||
 | 
			
		||||
Для виконання курсової роботи необхідно зробити ```fork``` цього репозіторію, склонувати вже власний репозіторій та розміщувати документацію у відповідних діректоріях ```./docs```.
 | 
			
		||||
 | 
			
		||||
В цьому файлі необхідно вказати назву проекту. Коротку загальну характеристику
 | 
			
		||||
проекту, контактні дані виконавця, посилання на репо співвиконавців(за необхідністю).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Шаблон публікування курсової роботи підготовлено з використанням [VuePress](https://vuepress.vuejs.org/), та стартера 
 | 
			
		||||
[FriendlyUser/vuepress-theme-cool-starter](https://github.com/FriendlyUser/vuepress-theme-cool-starter).
 | 
			
		||||
 | 
			
		||||
Щоб опублікувати проект у Github Pages, налаштовуємо Github Pages (гілка ```gh-pages```), змінюємо файл ```./publish.sh```
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
 | 
			
		||||
#!/usr/bin/env sh
 | 
			
		||||
 | 
			
		||||
# abort on errors
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# build
 | 
			
		||||
npm run docs:build
 | 
			
		||||
 | 
			
		||||
# navigate into the build output directory
 | 
			
		||||
cd docs/.vuepress/dist
 | 
			
		||||
 | 
			
		||||
# if you are deploying to a custom domain
 | 
			
		||||
# echo 'www.example.com' > CNAME
 | 
			
		||||
 | 
			
		||||
git init
 | 
			
		||||
git add -A
 | 
			
		||||
git commit -m 'deploy'
 | 
			
		||||
 | 
			
		||||
# if you are deploying to https://<USERNAME>.github.io
 | 
			
		||||
# git push -f git@github.com:boldak/<USERNAME>.github.io.git master
 | 
			
		||||
 | 
			
		||||
# if you are deploying to https://<USERNAME>.github.io/<REPO>
 | 
			
		||||
git push -f https://github.com/<USERNAME>/dis-edu.git master:gh-pages
 | 
			
		||||
 | 
			
		||||
cd -
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Потім запускаємо
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
    npm run publish
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Для відлагодження документації в локальному режимі запускаємо
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
    npm run docs:dev
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Доступ до локально опублікованої версії [http://localhost:3030](http://localhost:3030)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Додаткова інформація
 | 
			
		||||
 | 
			
		||||
- [Теми проєктів](./guidelines/themes.md)
 | 
			
		||||
- [Методичні вказівки](./guidelines/guidelines.md)
 | 
			
		||||
 | 
			
		||||
***Happy learning! Happy coding!*** 
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								docs/.vuepress/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,2 @@
 | 
			
		||||
css
 | 
			
		||||
dist
 | 
			
		||||
							
								
								
									
										39
									
								
								docs/.vuepress/components/Details.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,39 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <details><summary>{{title}}</summary>{{content}} </details>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'Details',
 | 
			
		||||
  props: {
 | 
			
		||||
    title: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: "title"
 | 
			
		||||
    },
 | 
			
		||||
    content: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: "title"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
 | 
			
		||||
<style scoped lang="styl">
 | 
			
		||||
details {
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  background: #EEE;
 | 
			
		||||
}
 | 
			
		||||
details summary {
 | 
			
		||||
    font-size: 17px;
 | 
			
		||||
    vertical-align: top;
 | 
			
		||||
    background: #333;
 | 
			
		||||
    color: #FFF;
 | 
			
		||||
    border-radius: 3px;
 | 
			
		||||
    /* padding: 5px 10px; */
 | 
			
		||||
    padding: 5px 0px;
 | 
			
		||||
    outline: none;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										324
									
								
								docs/.vuepress/components/Quiz.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,324 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <!--container-->
 | 
			
		||||
  <section class="container">
 | 
			
		||||
 | 
			
		||||
      <!-- transition -->
 | 
			
		||||
      <transition :duration="{ enter: 500, leave: 300 }" enter-active-class="animated zoomIn" leave-active-class="animated zoomOut" mode="out-in">
 | 
			
		||||
 | 
			
		||||
        <!--questionContainer-->
 | 
			
		||||
        <div class="questionContainer" v-if="questionIndex<quiz.questions.length" v-bind:key="questionIndex">
 | 
			
		||||
          <header>
 | 
			
		||||
            <div class="shell">
 | 
			
		||||
              <div class="bar" :style="{width: questionIndex/quiz.questions.length*100 + '%' }">
 | 
			
		||||
                <span>{{(questionIndex/quiz.questions.length)*100}}%</span>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </header>
 | 
			
		||||
          <!--/progress-->
 | 
			
		||||
 | 
			
		||||
          <!-- questionTitle -->
 | 
			
		||||
          <h2 class="titleContainer title">{{ quiz.questions[questionIndex] && quiz.questions[questionIndex].text }}</h2>
 | 
			
		||||
          <!-- /questionTitle -->
 | 
			
		||||
          <!-- quizOptions -->
 | 
			
		||||
          <div class="optionContainer" v-if="quiz.questions[questionIndex]">
 | 
			
		||||
            <div class="option" v-for="(response, index) in quiz.questions[questionIndex].responses" @click="selectOption(index)" :class="{ 'is-selected': userResponses[questionIndex] == index}" :key="index">
 | 
			
		||||
              {{ index | charIndex }}. {{ response.text || "Mpthasdng"}}
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <!--quizFooter: navigation and progress-->
 | 
			
		||||
          <footer class="questionFooter">
 | 
			
		||||
 | 
			
		||||
            <!--pagination-->
 | 
			
		||||
            <nav class="pagination" role="navigation" aria-label="pagination">
 | 
			
		||||
 | 
			
		||||
              <!-- back button -->
 | 
			
		||||
              <a class="button" v-on:click="prev();" :disabled="questionIndex < 1">
 | 
			
		||||
                      Back
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
              <!-- next button -->
 | 
			
		||||
              <a class="button" :class="(userResponses[questionIndex]==null)?'':'is-active'" v-on:click="next();" :disabled="questionIndex>=quiz.questions.length">
 | 
			
		||||
                {{ (userResponses[questionIndex]==null)?'Skip':'Next' }}
 | 
			
		||||
              </a>
 | 
			
		||||
 | 
			
		||||
            </nav>
 | 
			
		||||
            <!--/pagination-->
 | 
			
		||||
 | 
			
		||||
          </footer>
 | 
			
		||||
          <!--/quizFooter-->
 | 
			
		||||
          </div>
 | 
			
		||||
      <!--/questionBox-->
 | 
			
		||||
      <!--quizCompletedResult-->
 | 
			
		||||
    <div v-if="questionIndex >= quiz.questions.length" v-bind:key="questionIndex" class="quizCompleted has-text-centered">
 | 
			
		||||
      <!-- quizCompletedIcon: Achievement Icon -->
 | 
			
		||||
      <span class="icon">
 | 
			
		||||
        <i class="fa" :class="score() > 3 ?'fa-check-circle-o is-active':'fa-times-circle'"></i>
 | 
			
		||||
      </span>
 | 
			
		||||
 | 
			
		||||
      <!--resultTitleBlock-->
 | 
			
		||||
      <h2 class="title">
 | 
			
		||||
        You did {{ (score() / quiz.questions.length  > 0.7 ?'an amazing':(score() / quiz.questions.length < 0.4 ?'a poor':'a good')) }} job!
 | 
			
		||||
      </h2>
 | 
			
		||||
      <p class="subtitle">
 | 
			
		||||
        Total score: {{ score() }} / {{ quiz.questions.length }}
 | 
			
		||||
      </p>
 | 
			
		||||
        <br>
 | 
			
		||||
        <a class="button" @click="restart()">restart <i class="fa fa-refresh"></i></a>
 | 
			
		||||
      <!--/resultTitleBlock-->
 | 
			
		||||
    </div>
 | 
			
		||||
    </transition>
 | 
			
		||||
    <!--/quizCompetedResult-->
 | 
			
		||||
  </section>
 | 
			
		||||
  <!--/container-->
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import * as quizzes from '../quizzes'
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'Quiz',
 | 
			
		||||
  props: {
 | 
			
		||||
    quizNum: Number
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    let quizData 
 | 
			
		||||
    switch (this.quizNum) {
 | 
			
		||||
    case 1:
 | 
			
		||||
      quizData = quizzes.quiz1
 | 
			
		||||
      break
 | 
			
		||||
    case 2:
 | 
			
		||||
      quizData = quizzes.quiz2
 | 
			
		||||
      break
 | 
			
		||||
    default:
 | 
			
		||||
      quizData = quizzes.quiz1
 | 
			
		||||
      break
 | 
			
		||||
    }
 | 
			
		||||
    const userResponseSkelaton = Array(quizData.questions.length).fill(null);
 | 
			
		||||
    return {
 | 
			
		||||
      quiz: quizData,
 | 
			
		||||
      questionIndex: 0,
 | 
			
		||||
      userResponses: userResponseSkelaton,
 | 
			
		||||
      isActive: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  filters: {
 | 
			
		||||
      charIndex: function(i) {
 | 
			
		||||
         return String.fromCharCode(97 + i);
 | 
			
		||||
      }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
		 restart: function(){
 | 
			
		||||
        this.questionIndex=0;
 | 
			
		||||
		 		this.userResponses=Array(this.quiz.questions.length).fill(null);
 | 
			
		||||
		 },
 | 
			
		||||
      selectOption: function(index) {
 | 
			
		||||
         this.$set(this.userResponses, this.questionIndex, index);
 | 
			
		||||
      },
 | 
			
		||||
      next: function() {
 | 
			
		||||
         if (this.questionIndex < this.quiz.questions.length)
 | 
			
		||||
            this.questionIndex++;
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      prev: function() {
 | 
			
		||||
         if (this.quiz.questions.length > 0) this.questionIndex--;
 | 
			
		||||
      },
 | 
			
		||||
      // Return "true" count in userResponses
 | 
			
		||||
      score: function() {
 | 
			
		||||
         var score = 0;
 | 
			
		||||
         for (let i = 0; i < this.userResponses.length; i++) {
 | 
			
		||||
            if (
 | 
			
		||||
               typeof this.quiz.questions[i].responses[
 | 
			
		||||
                  this.userResponses[i]
 | 
			
		||||
               ] !== "undefined" &&
 | 
			
		||||
               this.quiz.questions[i].responses[this.userResponses[i]].correct
 | 
			
		||||
            ) {
 | 
			
		||||
               score = score + 1;
 | 
			
		||||
            }
 | 
			
		||||
         }
 | 
			
		||||
         // calculate percentage
 | 
			
		||||
         return score;
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
 | 
			
		||||
<style scoped>
 | 
			
		||||
@import url("https://fonts.googleapis.com/css?family=Montserrat:400,400i,700");
 | 
			
		||||
@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700");
 | 
			
		||||
.button {
 | 
			
		||||
  transition: 0.3s;
 | 
			
		||||
}
 | 
			
		||||
.title, .subtitle {
 | 
			
		||||
  font-family: Montserrat, sans-serif;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
.animated {
 | 
			
		||||
  transition-duration: 0.15s;
 | 
			
		||||
}
 | 
			
		||||
.container {
 | 
			
		||||
  margin: 0 0.5rem;
 | 
			
		||||
  display: flex;
 | 
			
		||||
	align-items: center;
 | 
			
		||||
	justify-content: center;
 | 
			
		||||
}
 | 
			
		||||
.questionBox {
 | 
			
		||||
  max-width: 30rem;
 | 
			
		||||
  width: 30rem;
 | 
			
		||||
  min-height: 30rem;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  border-radius: 0.5rem;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
 | 
			
		||||
}
 | 
			
		||||
.questionContainer header {
 | 
			
		||||
  background-color: rgba(124, 32, 32, 0.025);
 | 
			
		||||
  background: rgba(124, 32, 32, 0.025);
 | 
			
		||||
  padding: 1.5rem;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
 | 
			
		||||
}
 | 
			
		||||
.questionContainer header h1 {
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
  margin-bottom: 1rem !important;
 | 
			
		||||
}
 | 
			
		||||
.progressContainer {
 | 
			
		||||
  width: 60%;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.titleContainer {
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
  padding: 1.5rem;
 | 
			
		||||
}
 | 
			
		||||
.quizForm {
 | 
			
		||||
  display: block;
 | 
			
		||||
  white-space: normal;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
.quizForm .quizFormContainer {
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  margin: 15px 18px;
 | 
			
		||||
}
 | 
			
		||||
.quizForm .quizFormContainer .field-label {
 | 
			
		||||
  text-align: left;
 | 
			
		||||
  margin-bottom: 0.5rem;
 | 
			
		||||
}
 | 
			
		||||
.quizCompleted {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  padding: 1rem;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
}
 | 
			
		||||
.quizCompleted > .icon {
 | 
			
		||||
  color: #f86c6b;
 | 
			
		||||
  font-size: 5rem;
 | 
			
		||||
}
 | 
			
		||||
.quizCompleted > .icon .is-active {
 | 
			
		||||
  color: #4dbd74;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer {
 | 
			
		||||
  white-space: normal;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .optionContainer {
 | 
			
		||||
  margin-top: 12px;
 | 
			
		||||
  flex-grow: 1;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .optionContainer .option {
 | 
			
		||||
  border-radius: 290486px;
 | 
			
		||||
  padding: 9px 18px;
 | 
			
		||||
  margin: 0 18px;
 | 
			
		||||
  margin-bottom: 12px;
 | 
			
		||||
  transition: 0.3s;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  background-color: #73818f;
 | 
			
		||||
  color: #f0f3f5;
 | 
			
		||||
  border: transparent 1px solid;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .optionContainer .option.is-selected {
 | 
			
		||||
  border-color: rgba(0, 0, 0, 0.25);
 | 
			
		||||
  background-color: #834c9d;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .optionContainer .option:hover {
 | 
			
		||||
  background-color: #B589D6;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .optionContainer .option:active {
 | 
			
		||||
  transform: scaleX(0.9);
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .questionFooter {
 | 
			
		||||
  background: rgba(0, 0, 0, 0.025);
 | 
			
		||||
  border-top: 1px solid rgba(0, 0, 0, 0.1);
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  align-self: flex-end;
 | 
			
		||||
}
 | 
			
		||||
.questionContainer .questionFooter .pagination {
 | 
			
		||||
  margin: 15px 25px;
 | 
			
		||||
}
 | 
			
		||||
.pagination {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
}
 | 
			
		||||
.button {
 | 
			
		||||
  padding: 0.5rem 1rem;
 | 
			
		||||
  border: 1px solid rgba(0, 0, 0, 0.25);
 | 
			
		||||
  border-radius: 5rem;
 | 
			
		||||
  margin: 0 0.25rem;
 | 
			
		||||
  transition: 0.3s;
 | 
			
		||||
}
 | 
			
		||||
.button:hover {
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  background: #552586;
 | 
			
		||||
  border-color: rgba(0, 0, 0, 0.25);
 | 
			
		||||
}
 | 
			
		||||
.button.is-active {
 | 
			
		||||
  background: #834c9d;
 | 
			
		||||
  color: white;
 | 
			
		||||
  border-color: transparent;
 | 
			
		||||
}
 | 
			
		||||
.button.is-active:hover {
 | 
			
		||||
  background: #0a2ffe;
 | 
			
		||||
}
 | 
			
		||||
@media screen and (min-width: 769px) {
 | 
			
		||||
  .questionBox {
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: center;
 | 
			
		||||
  }
 | 
			
		||||
  .questionContainer {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    flex-direction: column;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@media screen and (max-width: 768px) {
 | 
			
		||||
  .sidebar {
 | 
			
		||||
    height: auto !important;
 | 
			
		||||
    border-radius: 6px 6px 0px 0px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Custom Progress bar */
 | 
			
		||||
.shell {
 | 
			
		||||
  height: 20px;
 | 
			
		||||
  width: 250px;
 | 
			
		||||
  border: 1px solid #73818f;
 | 
			
		||||
  border-radius: 13px;
 | 
			
		||||
  padding: 3px;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
}
 | 
			
		||||
.bar {
 | 
			
		||||
  background: linear-gradient(to right, #B589D6, #804FB3);
 | 
			
		||||
  height: 20px;
 | 
			
		||||
  width: 15px;
 | 
			
		||||
  border-radius: 9px;
 | 
			
		||||
}
 | 
			
		||||
.bar span {
 | 
			
		||||
  float: right;
 | 
			
		||||
  padding: 4px 5px;
 | 
			
		||||
  color: #f0f3f5;
 | 
			
		||||
  font-size: 0.7em;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										10
									
								
								docs/.vuepress/components/Styles.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,10 @@
 | 
			
		||||
<script>
 | 
			
		||||
import "vue-good-table/dist/vue-good-table.css";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "Styles",
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										56
									
								
								docs/.vuepress/components/my-component.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,56 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <vue-good-table
 | 
			
		||||
      :columns="columns"
 | 
			
		||||
      :rows="rows"
 | 
			
		||||
     />
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { VueGoodTable } from 'vue-good-table';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'my-component',
 | 
			
		||||
 | 
			
		||||
  // add to component
 | 
			
		||||
  components: {
 | 
			
		||||
    VueGoodTable,
 | 
			
		||||
  },
 | 
			
		||||
  data(){
 | 
			
		||||
    return {
 | 
			
		||||
      columns: [
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Name',
 | 
			
		||||
          field: 'name',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Age',
 | 
			
		||||
          field: 'age',
 | 
			
		||||
          type: 'number',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Created On',
 | 
			
		||||
          field: 'createdAt',
 | 
			
		||||
          type: 'date',
 | 
			
		||||
          dateInputFormat: 'yyyy-mm-dd',
 | 
			
		||||
          dateOutputFormat: 'MMM Do yy',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Percent',
 | 
			
		||||
          field: 'score',
 | 
			
		||||
          type: 'percentage',
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
      rows: [
 | 
			
		||||
        { id:1, name:"John", age: 20, createdAt: '2011-10-31',score: 0.03343 },
 | 
			
		||||
        { id:2, name:"Jane", age: 24, createdAt: '2019-10-31', score: 0.03343 },
 | 
			
		||||
        { id:3, name:"Susan", age: 16, createdAt: '2011-10-30', score: 0.03343 },
 | 
			
		||||
        { id:4, name:"Chris", age: 55, createdAt: '2011-10-11', score: 0.03343 },
 | 
			
		||||
        { id:5, name:"Dan", age: 40, createdAt: '2011-10-21', score: 0.03343 },
 | 
			
		||||
        { id:6, name:"John", age: 20, createdAt: '2011-10-31', score: 0.03343 },
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										35
									
								
								docs/.vuepress/components/sample-timeline.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,35 @@
 | 
			
		||||
// .vuepress/components/sample-timeline.vue
 | 
			
		||||
<template>
 | 
			
		||||
  <timeline timeline-theme="lightblue">
 | 
			
		||||
    <timeline-title bg-color="#09FFAA">Prehistoric hunters cross over into Canada from Asia</timeline-title>
 | 
			
		||||
    <timeline-item bg-color="#9dd8e0">	Leif Ericsson leads a Viking expedition to the New World</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#9dFFe0">First Year 1B</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#FFF000">Accepted Computer Engineering</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#cFe8eF">The Iroquois Confederacy is formed</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#97Aec8">John Cabot reaches Newfoundland (or perhaps Cape Breton)</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#5744D4">Jacques Cartier first explores the St. Lawrence region</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#0F4859">Second Year 2B</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#094341">Samuel de Champlain establishes a French colony at Québec City</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#825F03">Hudson’s Bay Company is formed</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#954F08">Expulsion of the Acadians</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#A71490">Battle of the Plains of Abraham: Québec City is captured</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#C084A9">New France is formally ceded to Britain; Pontiac Rebellion erupts</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#7B71C2">Loyalist refugees begin arriving after the American Revolution</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#2348B1">War of 1812: U.S. invades Canada</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#915F15">Rebellions against British rule in Upper and Lower Canada</timeline-item>
 | 
			
		||||
    <timeline-item bg-color="#0909FA">	Responsible government is won, first in Nova Scotia, then in Canada</timeline-item>
 | 
			
		||||
  </timeline>
 | 
			
		||||
</template>
 | 
			
		||||
 
 | 
			
		||||
<script>
 | 
			
		||||
import { Timeline, TimelineItem, TimelineTitle } from 'vue-cute-timeline'
 | 
			
		||||
 
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'sample-timeline',
 | 
			
		||||
  components: {
 | 
			
		||||
    Timeline,
 | 
			
		||||
    TimelineItem,
 | 
			
		||||
    TimelineTitle,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										211
									
								
								docs/.vuepress/config-other.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,211 @@
 | 
			
		||||
// .vuepress/config.js
 | 
			
		||||
// missing markdownItAds boostnote admonitions
 | 
			
		||||
const fs = require('fs')
 | 
			
		||||
const path = require('path')
 | 
			
		||||
const util = require('util')
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  base: '/vuepress-theme-cool-starter/',
 | 
			
		||||
  theme: 'cool',
 | 
			
		||||
  //dest: 'dist',
 | 
			
		||||
  head: [
 | 
			
		||||
    ['link', { rel: 'icon', href: '/faviconCustom.ico' }],
 | 
			
		||||
    ['link', { rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css' }],
 | 
			
		||||
	  ['link', {href: 'https://fonts.googleapis.com/icon?family=Material+Icons', rel :'stylesheet'}]
 | 
			
		||||
  ],
 | 
			
		||||
  plugins: [ 
 | 
			
		||||
    '@vuepress/last-updated',
 | 
			
		||||
    '@vuepress/back-to-top',
 | 
			
		||||
    '@vuepress/pwa'
 | 
			
		||||
   ],
 | 
			
		||||
  themeConfig: {
 | 
			
		||||
    // logo: './myAvatar.png',
 | 
			
		||||
    sidebar: genSideBar('.'),
 | 
			
		||||
    sidebarDepth: 2,
 | 
			
		||||
    displayAllHeaders: true, // Default: false themeConfig: {
 | 
			
		||||
    nav:  genNavBarList(),
 | 
			
		||||
    lastUpdated: 'Last Updated', // string | boolean
 | 
			
		||||
    // Assumes GitHub. Can also be a full GitLab url.
 | 
			
		||||
    repo: 'FriendlyUser/vuepress-theme-cool-starter',
 | 
			
		||||
    // Customising the header label
 | 
			
		||||
    // Defaults to "GitHub"/"GitLab"/"Bitbucket" depending on `themeConfig.repo`
 | 
			
		||||
    repoLabel: 'Contribute!',
 | 
			
		||||
    // Optional options for generating "Edit this page" link
 | 
			
		||||
    // if your docs are in a different repo from your main project:
 | 
			
		||||
    //docsRepo: 'FriendlyUser/markdown-notes-template',
 | 
			
		||||
    // if your docs are not at the root of the repo:
 | 
			
		||||
    //docsDir: 'docs',
 | 
			
		||||
    // if your docs are in a specific branch (defaults to 'master'):
 | 
			
		||||
    docsBranch: 'gh-pages',
 | 
			
		||||
    // defaults to false, set to true to enable
 | 
			
		||||
    editLinks: true,
 | 
			
		||||
    // custom text for edit link. Defaults to "Edit this page"
 | 
			
		||||
    editLinkText: 'Help us improve this page!'
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
  title: 'Vuepress Theme Cool Starter',
 | 
			
		||||
  description: 'Example project to get started with the vuepress-theme-cool',
 | 
			
		||||
  configureWebpack: {
 | 
			
		||||
    resolve: {
 | 
			
		||||
      alias: {
 | 
			
		||||
        '@alias': '../img'
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  plugins: {
 | 
			
		||||
    '@vuepress/pwa': { serviceWorker: true,
 | 
			
		||||
      updatePopup: {
 | 
			
		||||
        message: "New content is available.",
 | 
			
		||||
        buttonText: "Refresh"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  markdown: {
 | 
			
		||||
    extendMarkdown: md => {
 | 
			
		||||
      md.set({ html: true })
 | 
			
		||||
      md.use(require('markdown-it-katex'))
 | 
			
		||||
      md.use(require('markdown-it-plantuml'))
 | 
			
		||||
      md.use(require('markdown-it-admonition'))
 | 
			
		||||
      md.use(require('markdown-it-task-lists'))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Helper functions
 | 
			
		||||
function fromDir(startPath,filter,callback){
 | 
			
		||||
  
 | 
			
		||||
    //console.log('Starting from dir '+startPath+'/');
 | 
			
		||||
    if (!fs.existsSync(startPath)){
 | 
			
		||||
        console.log("no dir ",startPath);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var files=fs.readdirSync(startPath);
 | 
			
		||||
    for(var i=0;i<files.length;i++){
 | 
			
		||||
        var filename=path.join(startPath,files[i]);
 | 
			
		||||
        var stat = fs.lstatSync(filename);
 | 
			
		||||
        if (stat.isDirectory()){
 | 
			
		||||
            fromDir(filename,filter,callback); //recurse
 | 
			
		||||
        }
 | 
			
		||||
        else if (filter.test(filename)) callback(filename);
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function getDirectories(path) {
 | 
			
		||||
  return fs.readdirSync(path).filter(function (file) {
 | 
			
		||||
    if (file != '.vuepress') {
 | 
			
		||||
        return fs.statSync(path+'/'+file).isDirectory();
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getFilesInDir(directoryName) {
 | 
			
		||||
    var files = []
 | 
			
		||||
    // sidebar settings
 | 
			
		||||
    const relPath = path.join('docs', directoryName)
 | 
			
		||||
    fromDir(relPath,/\.md$/,function(filename){
 | 
			
		||||
        console.log('-- found: ',filename);
 | 
			
		||||
        files.push(filename)
 | 
			
		||||
    });
 | 
			
		||||
    return files
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Base file names with removed file extensions
 | 
			
		||||
function getFilesInDirBase(directoryName) {
 | 
			
		||||
    var files = []
 | 
			
		||||
    // sidebar settings
 | 
			
		||||
    const relPath = path.join('docs', directoryName)
 | 
			
		||||
    fromDir(relPath,/\.md$/,function(filename){
 | 
			
		||||
        let baseName = path.basename(filename)
 | 
			
		||||
        // this it will fail on files without extension, see https://stackoverflow.com/questions/4250364/how-to-trim-a-file-extension-from-a-string-in-javascript
 | 
			
		||||
        baseName = baseName.split('.').slice(0, -1).join('.')
 | 
			
		||||
        
 | 
			
		||||
        // Add README as '', and everything else as standard
 | 
			
		||||
        if (baseName.toUpperCase() == 'README') {
 | 
			
		||||
            files.push('Home')
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            files.push(baseName)
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return files
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// pass in the folder relative to the folder docs
 | 
			
		||||
function genSideBarConfigFolder (titleName, directoryName) {
 | 
			
		||||
    const rawFilePaths = getFilesInDirBase(directoryName)
 | 
			
		||||
    return [
 | 
			
		||||
        {
 | 
			
		||||
            title: titleName,
 | 
			
		||||
            collapsable: true,
 | 
			
		||||
            children: rawFilePaths
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function genSideBar (directoryName) {
 | 
			
		||||
  const dirNames = getFilesInDirBase(directoryName)
 | 
			
		||||
  let markdownArray = []
 | 
			
		||||
  for (var i = 0; i < dirNames.length; i++) {
 | 
			
		||||
    let stringValue = dirNames[i].toString()
 | 
			
		||||
    if(stringValue === 'Home' || stringValue === '') {
 | 
			
		||||
      markdownArray.push('')
 | 
			
		||||
    } else {
 | 
			
		||||
      markdownArray.push(stringValue)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  const sideBarConfig = {
 | 
			
		||||
    '/': markdownArray
 | 
			
		||||
  }
 | 
			
		||||
  console.log(sideBarConfig)
 | 
			
		||||
  return sideBarConfig
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// doesn't work, fix later, can't figure out how to generate { text: link:} recursively? Or maybe have another function that returns text: link 
 | 
			
		||||
 function genNavBarList() {
 | 
			
		||||
    let dirNames = []
 | 
			
		||||
    // navbar settings
 | 
			
		||||
    dirNames = getFilesInDirBase('.')
 | 
			
		||||
    let navBarNames = [];
 | 
			
		||||
 | 
			
		||||
    var numOfDirs = dirNames.length;
 | 
			
		||||
    for (var i = 0; i < numOfDirs; i++) {
 | 
			
		||||
        let stringValue = dirNames[i].toString()
 | 
			
		||||
        // convert - to capitialization
 | 
			
		||||
        stringValue = transformToUpperCase(stringValue)
 | 
			
		||||
        let linkValue = '/'
 | 
			
		||||
        if (stringValue !== 'Home') {
 | 
			
		||||
          linkValue = `/${stringValue}/` 
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // @todo change loop to iterate for nested directories
 | 
			
		||||
        if (true) {
 | 
			
		||||
            navBarNames.push(genNavBarItem(stringValue,linkValue))
 | 
			
		||||
        }
 | 
			
		||||
        // last entry 
 | 
			
		||||
        else {
 | 
			
		||||
            //navBarNames = navBarNames + "{ text : \'" + stringValue + "\', " + "link: " + "\'/" + stringValue + "/\'}, \n";
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return navBarNames
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function genNavBarItem(textValue, linkValue) {
 | 
			
		||||
    return {
 | 
			
		||||
        text: textValue,
 | 
			
		||||
        link: linkValue
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function transformToUpperCase(str) {
 | 
			
		||||
  let upperString = str
 | 
			
		||||
  upperString = upperString.replace(/-/g, ' ');
 | 
			
		||||
  upperString = upperString.split(" ");
 | 
			
		||||
  for (var i = 0, x = upperString.length; i < x; i++) {
 | 
			
		||||
    upperString[i] = upperString[i][0].toUpperCase() + upperString[i].substr(1);
 | 
			
		||||
  }
 | 
			
		||||
  return upperString.join(" ");
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										113
									
								
								docs/.vuepress/config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,113 @@
 | 
			
		||||
// .vuepress/config.js
 | 
			
		||||
module.exports = {
 | 
			
		||||
  plugins: [
 | 
			
		||||
    '@vuepress/back-to-top', 
 | 
			
		||||
    '@vuepress/pwa', 
 | 
			
		||||
    {
 | 
			
		||||
      serviceWorker: true,
 | 
			
		||||
      updatePopup: true
 | 
			
		||||
    },
 | 
			
		||||
    ,
 | 
			
		||||
    ['container', {
 | 
			
		||||
      type: 'vue',
 | 
			
		||||
      before: '<pre class="vue-container"><code>',
 | 
			
		||||
      after: '</code></pre>'
 | 
			
		||||
    }]
 | 
			
		||||
  ],
 | 
			
		||||
  port: 3030,
 | 
			
		||||
  base: '/docs/',
 | 
			
		||||
  theme: 'cool',
 | 
			
		||||
  // dest: 'dist',
 | 
			
		||||
  head: [
 | 
			
		||||
    ['link', { rel: 'icon', href: '/favicon.ico' }],
 | 
			
		||||
    ['link', { rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css' }],
 | 
			
		||||
    ['link', {href: 'https://fonts.googleapis.com/icon?family=Material+Icons', rel :'stylesheet'}],
 | 
			
		||||
    
 | 
			
		||||
  ],
 | 
			
		||||
  themeConfig: {
 | 
			
		||||
    // logo: './myAvatar.png',
 | 
			
		||||
    sidebar: [
 | 
			
		||||
    
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Вступ',
 | 
			
		||||
      path:"/intro/"
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Розроблення вимог до системи',
 | 
			
		||||
        path:"/requirements/",
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Проєктування архітектури системи',
 | 
			
		||||
      path:"/design/"
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Реалізація інформаційного та програмного забезпечення',
 | 
			
		||||
      path:"/software/"
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Тестування працездатності системи',
 | 
			
		||||
      path:"/test/"
 | 
			
		||||
    },
 | 
			
		||||
    
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Висновки',
 | 
			
		||||
      path:"/conclusion/"
 | 
			
		||||
    },
 | 
			
		||||
    
 | 
			
		||||
    {
 | 
			
		||||
      title: 'API',
 | 
			
		||||
      path:"/api/"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  ],
 | 
			
		||||
    sidebarDepth: 2,
 | 
			
		||||
    displayAllHeaders: true, // Default: false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    nav: [
 | 
			
		||||
      { text: 'Початок', link: '/' },
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
    lastUpdated: 'Останнє оновлення', // string | boolean
 | 
			
		||||
      // Assumes GitHub. Can also be a full GitLab url.
 | 
			
		||||
    repo: 'https://github.com/boldak/edu-dis-labs',
 | 
			
		||||
    // Customising the header label
 | 
			
		||||
    // Defaults to "GitHub"/"GitLab"/"Bitbucket" depending on `themeConfig.repo`
 | 
			
		||||
    repoLabel: 'Github',
 | 
			
		||||
 | 
			
		||||
    // Optional options for generating "Edit this page" link
 | 
			
		||||
 | 
			
		||||
    // if your docs are in a different repo from your main project:
 | 
			
		||||
    // docsRepo: 'boldak/dis-edu',
 | 
			
		||||
    // if your docs are not at the root of the repo:
 | 
			
		||||
    docsDir: 'docs',
 | 
			
		||||
    // if your docs are in a specific branch (defaults to 'master'):
 | 
			
		||||
    docsBranch: 'master',
 | 
			
		||||
    // defaults to false, set to true to enable
 | 
			
		||||
    // editLinks: true,
 | 
			
		||||
    // custom text for edit link. Defaults to "Edit this page"
 | 
			
		||||
    // editLinkText: 'Ви можете покращити цю сторінку'
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
  title: 'Назва проєкту',
 | 
			
		||||
  description: 'Лабораторні роботи з дисципліни "Розподілені інформаційні системи"',
 | 
			
		||||
  configureWebpack: {
 | 
			
		||||
    resolve: {
 | 
			
		||||
      alias: {
 | 
			
		||||
        '@alias': '../img'
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  markdown: {
 | 
			
		||||
    extendMarkdown: md => {
 | 
			
		||||
      md.set({ html: true })
 | 
			
		||||
      md.use(require('markdown-it-katex'))
 | 
			
		||||
      md.use(require('markdown-it-plantuml'))
 | 
			
		||||
      md.use(require('markdown-it-admonition'))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								docs/.vuepress/enhanceApp.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,30 @@
 | 
			
		||||
import Vuex from 'vuex'
 | 
			
		||||
 | 
			
		||||
import VueChartkick from 'vue-chartkick'
 | 
			
		||||
import Chart from 'chart.js'
 | 
			
		||||
import VueGoodTablePlugin from 'vue-good-table';
 | 
			
		||||
 | 
			
		||||
// The styles are important in another component because of the way webpack is configured
 | 
			
		||||
// import 'vue-good-table/dist/vue-good-table.css' 
 | 
			
		||||
export default ({ Vue, options, router, siteData }) => {
 | 
			
		||||
    Vue.use(Vuex)
 | 
			
		||||
    Vue.use(VueChartkick, {adapter: Chart})
 | 
			
		||||
	Vue.use(VueGoodTablePlugin)
 | 
			
		||||
    Vue.mixin({
 | 
			
		||||
        computed: {
 | 
			
		||||
            $title() {
 | 
			
		||||
                const page = this.$page
 | 
			
		||||
                const siteTitle = this.$siteTitle
 | 
			
		||||
                const selfTitle = page.frontmatter.home ? null : (
 | 
			
		||||
                    page.frontmatter.title || // explicit title
 | 
			
		||||
                    (page.title ? page.title.replace(/[_`]/g, '') : '') // inferred title
 | 
			
		||||
                )
 | 
			
		||||
                return siteTitle
 | 
			
		||||
                    ? selfTitle
 | 
			
		||||
                        ? (selfTitle + ' | ' + siteTitle)
 | 
			
		||||
                        : siteTitle
 | 
			
		||||
                    : selfTitle || 'VuePress'
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-01.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 278 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-02.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 232 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-03.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 236 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-04.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 218 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-05.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 264 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-06.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 246 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-07.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 273 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-08.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 281 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-09.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 247 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-10.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 262 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/03-11.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 266 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/04-01.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 125 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/05-01.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 139 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-01.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-02.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-03.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-04.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 163 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-05.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 31 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-06.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 266 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/06-07.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 92 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/1.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.6 KiB  | 
							
								
								
									
										0
									
								
								docs/.vuepress/public/1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-01.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 214 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-02.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 87 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-03.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 44 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-04.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 75 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-05.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 70 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-06.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 83 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-07.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 314 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/12-08.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 121 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/13-01.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 43 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/13-02.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 87 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/13-03.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 162 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/2.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/3.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 62 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/4.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 243 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/5.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 274 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/faviconCustom.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 31 KiB  | 
							
								
								
									
										16
									
								
								docs/.vuepress/public/license.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,16 @@
 | 
			
		||||
<pre>
 | 
			
		||||
	
 | 
			
		||||
	Copyright 2021 Andrey Boldak Licensed under the
 | 
			
		||||
	Educational Community License, Version 2.0 (the "License"); you may
 | 
			
		||||
	not use this file except in compliance with the License. You may
 | 
			
		||||
	obtain a copy of the License at
 | 
			
		||||
	
 | 
			
		||||
	https://opensource.org/licenses/ECL-2.0
 | 
			
		||||
 | 
			
		||||
	Unless required by applicable law or agreed to in writing,
 | 
			
		||||
	software distributed under the License is distributed on an "AS IS"
 | 
			
		||||
	BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 | 
			
		||||
	or implied. See the License for the specific language governing
 | 
			
		||||
	permissions and limitations under the License.
 | 
			
		||||
 | 
			
		||||
</pre>	
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/myAvatar.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										7
									
								
								docs/.vuepress/quizzes/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,7 @@
 | 
			
		||||
import quiz1 from './quiz1.json'
 | 
			
		||||
import quiz2 from './quiz2.json'
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
  quiz1,
 | 
			
		||||
  quiz2
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										185
									
								
								docs/.vuepress/quizzes/quiz1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,185 @@
 | 
			
		||||
{
 | 
			
		||||
  "user": "Dave",
 | 
			
		||||
  "questions": [
 | 
			
		||||
     {
 | 
			
		||||
        "text": "What is the full form of HTTP?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyper text transfer package"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyper text transfer protocol",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyphenation text test program"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "HTML document start and end with which tag pairs?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "HTML",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "WEB"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "HEAD"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "BODY"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "Which tag is used to create body text in HTML?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "HEAD"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "BODY",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "TITLE"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "TEXT"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "Outlook Express is _________",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "E-Mail Client",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Browser"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Search Engine"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "What is a search engine?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "A hardware component "
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "A machinery engine that search data"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "A web site that searches anything",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "A program that searches engines"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "What does the .com domain represents?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Network"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Education"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Commercial",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "In Satellite based communication, VSAT stands for? ",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": " Very Small Aperture Terminal",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Varying Size Aperture Terminal "
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Very Small Analog Terminal"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "What is the full form of TCP/IP? ",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Telephone call protocol / international protocol"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Transmission control protocol / internet protocol",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Transport control protocol / internet protocol "
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "What is the full form of HTML?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyper text marking language"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyphenation text markup language "
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyper text markup language",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Hyphenation test marking language"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "\"Yahoo\", \"Infoseek\" and \"Lycos\" are _________?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Browsers "
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Search Engines",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "News Group"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										41
									
								
								docs/.vuepress/quizzes/quiz2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,41 @@
 | 
			
		||||
{
 | 
			
		||||
  "user": "Dave",
 | 
			
		||||
  "questions": [
 | 
			
		||||
     {
 | 
			
		||||
        "text": "Who is the Batman",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Laughing Bat"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Bruce Wayne",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Dick Grayson"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     },
 | 
			
		||||
     {
 | 
			
		||||
        "text": "\"Yahoo\", \"Infoseek\" and \"Lycos\" are _________?",
 | 
			
		||||
        "responses": [
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Browsers "
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "Search Engines",
 | 
			
		||||
              "correct": true
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "News Group"
 | 
			
		||||
           },
 | 
			
		||||
           {
 | 
			
		||||
              "text": "None of the above"
 | 
			
		||||
           }
 | 
			
		||||
        ]
 | 
			
		||||
     }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										179
									
								
								docs/.vuepress/styles/index.styl
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,179 @@
 | 
			
		||||
    @import url(https://fonts.googleapis.com/icon?family=Material+Icons)
 | 
			
		||||
    .admonition.note,
 | 
			
		||||
    .admonition.hint,
 | 
			
		||||
    .admonition.danger,
 | 
			
		||||
    .admonition.caution,
 | 
			
		||||
    .admonition.error,
 | 
			
		||||
    .admonition.attention {
 | 
			
		||||
        box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12), 0 3px 1px -2px rgba(0,0,0,0.2);
 | 
			
		||||
        position: relative;
 | 
			
		||||
        margin: 1.5625em 0;
 | 
			
		||||
        padding: 0 1.2rem;
 | 
			
		||||
        border-left: 0.4rem solid #448aff;
 | 
			
		||||
        border-radius: 0.2rem;
 | 
			
		||||
        overflow: auto;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    html .admonition>:last-child {
 | 
			
		||||
        margin-bottom: 1.2rem;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition .admonition {
 | 
			
		||||
        margin: 1em 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition p {
 | 
			
		||||
        margin-top: 0.5em;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.note>.admonition-title:before,
 | 
			
		||||
    .admonition.hint>.admonition-title:before,
 | 
			
		||||
    .admonition.danger>.admonition-title:before,
 | 
			
		||||
    .admonition.caution>.admonition-title:before,
 | 
			
		||||
    .admonition.error>.admonition-title:before,
 | 
			
		||||
    .admonition.attention>.admonition-title:before {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        left: 1.2rem;
 | 
			
		||||
        font-family: "Material Icons";
 | 
			
		||||
        font-size: 24px;
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        line-height: 1;
 | 
			
		||||
        text-transform: none;
 | 
			
		||||
        letter-spacing: normal;
 | 
			
		||||
        word-wrap: normal;
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
        direction: ltr;
 | 
			
		||||
    /* Support for all WebKit browsers. */
 | 
			
		||||
        -webkit-font-smoothing: antialiased;
 | 
			
		||||
    /* Support for Safari and Chrome. */
 | 
			
		||||
        text-rendering: optimizeLegibility;
 | 
			
		||||
    /* Support for Firefox. */
 | 
			
		||||
        -moz-osx-font-smoothing: grayscale;
 | 
			
		||||
    /* Support for IE. */
 | 
			
		||||
        font-feature-settings: 'liga';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.note>.admonition-title,
 | 
			
		||||
    .admonition.hint>.admonition-title,
 | 
			
		||||
    .admonition.danger>.admonition-title,
 | 
			
		||||
    .admonition.caution>.admonition-title,
 | 
			
		||||
    .admonition.error>.admonition-title,
 | 
			
		||||
    .admonition.attention>.admonition-title {
 | 
			
		||||
        margin: 0 -1.2rem;
 | 
			
		||||
        padding: 0.8rem 1.2rem 0.8rem 4rem;
 | 
			
		||||
        border-bottom: 0.1rem solid rgba(68,138,255,0.1);
 | 
			
		||||
        background-color: rgba(68,138,255,0.1);
 | 
			
		||||
        font-weight: 700;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition>.admonition-title:last-child {
 | 
			
		||||
        margin-bottom: 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.note {
 | 
			
		||||
        border-left-color: #448aff;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.note>.admonition-title {
 | 
			
		||||
        border-bottom-color: 0.1rem solid rgba(68,138,255,0.1);
 | 
			
		||||
        background-color: rgba(68,138,255,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.note>.admonition-title:before {
 | 
			
		||||
        color: #448aff;
 | 
			
		||||
        content: "note";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.hint {
 | 
			
		||||
        border-left-color: #00bfa5;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.hint>.admonition-title {
 | 
			
		||||
        border-bottom-color: 0.1rem solid rgba(0,191,165,0.1);
 | 
			
		||||
        background-color: rgba(0,191,165,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.hint>.admonition-title:before {
 | 
			
		||||
        color: #00bfa5;
 | 
			
		||||
        content: "info";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.danger {
 | 
			
		||||
        border-left-color: #ff1744;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.danger>.admonition-title {
 | 
			
		||||
        border-bottom-color: 0.1rem solid rgba(255,23,68,0.1);
 | 
			
		||||
        background-color: rgba(255,23,68,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.danger>.admonition-title:before {
 | 
			
		||||
        color: #ff1744;
 | 
			
		||||
        content: "block";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.caution {
 | 
			
		||||
        border-left-color: #ff9100;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.caution>.admonition-title {
 | 
			
		||||
        border-bottom-color: 0.1rem solid rgba(255,145,0,0.1);
 | 
			
		||||
        background-color: rgba(255,145,0,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.caution>.admonition-title:before {
 | 
			
		||||
        color: #ff9100;
 | 
			
		||||
        content: "warning";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.error {
 | 
			
		||||
        border-left-color: #ff1744;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.error>.admonition-title {
 | 
			
		||||
        border-bottom-color: 0.1rem solid rgba(255,23,68,0.1);
 | 
			
		||||
        background-color: rgba(255,23,68,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.error>.admonition-title:before {
 | 
			
		||||
        color: #ff1744;
 | 
			
		||||
        content: "error";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.attention {
 | 
			
		||||
        border-left-color: #64dd17;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.attention>.admonition-title {
 | 
			
		||||
        border-bottom-color: 0.1rem solid rgba(100,221,23,0.1);
 | 
			
		||||
        background-color: rgba(100,221,23,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .admonition.attention>.admonition-title:before {
 | 
			
		||||
        color: #64dd17;
 | 
			
		||||
        content: "priority_high";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    body {
 | 
			
		||||
      font-size 16px;
 | 
			
		||||
      text-align: justify;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .theme-default-content:not(.custom) {
 | 
			
		||||
        max-width: 950px;
 | 
			
		||||
        margin: 0 auto;
 | 
			
		||||
        padding: 2rem 2.5rem;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    .sidebar-heading {
 | 
			
		||||
        color: #2c3e50;
 | 
			
		||||
        transition: color 0.15s ease;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
        font-size: 1em !important;
 | 
			
		||||
        font-weight: 500 !important;
 | 
			
		||||
        padding: 0.35rem 1.5rem 0.35rem 1.25rem;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
        border-left: 0.25rem solid transparent;
 | 
			
		||||
    }    
 | 
			
		||||
							
								
								
									
										89
									
								
								docs/.vuepress/styles/palette.styl
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,89 @@
 | 
			
		||||
// showing default values
 | 
			
		||||
$accentColor = #0984e3
 | 
			
		||||
$textColor = #2c3e50
 | 
			
		||||
$borderColor = #eaecef
 | 
			
		||||
$codeBgColor = #282c34
 | 
			
		||||
 | 
			
		||||
$admonition
 | 
			
		||||
    box-shadow 0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)
 | 
			
		||||
    position relative
 | 
			
		||||
    margin 1.5625em 0
 | 
			
		||||
    padding 0 1.2rem
 | 
			
		||||
    border-left .4rem solid #448aff
 | 
			
		||||
    border-radius .2rem
 | 
			
		||||
    overflow auto
 | 
			
		||||
 | 
			
		||||
html .admonition>:last-child
 | 
			
		||||
    margin-bottom 1.2rem
 | 
			
		||||
 | 
			
		||||
.admonition .admonition
 | 
			
		||||
    margin 1em 0
 | 
			
		||||
 | 
			
		||||
.admonition p
 | 
			
		||||
    margin-top: 0.5em
 | 
			
		||||
 | 
			
		||||
$admonition-icon
 | 
			
		||||
    position absolute
 | 
			
		||||
    left 1.2rem
 | 
			
		||||
    font-family: "Material Icons"
 | 
			
		||||
    font-weight: normal;
 | 
			
		||||
    font-style: normal;
 | 
			
		||||
    font-size: 24px
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    line-height: 1;
 | 
			
		||||
    text-transform: none;
 | 
			
		||||
    letter-spacing: normal;
 | 
			
		||||
    word-wrap: normal;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    direction: ltr;
 | 
			
		||||
 | 
			
		||||
    /* Support for all WebKit browsers. */
 | 
			
		||||
    -webkit-font-smoothing: antialiased;
 | 
			
		||||
    /* Support for Safari and Chrome. */
 | 
			
		||||
    text-rendering: optimizeLegibility;
 | 
			
		||||
 | 
			
		||||
    /* Support for Firefox. */
 | 
			
		||||
    -moz-osx-font-smoothing: grayscale;
 | 
			
		||||
 | 
			
		||||
    /* Support for IE. */
 | 
			
		||||
    font-feature-settings: 'liga';
 | 
			
		||||
 | 
			
		||||
$admonition-title
 | 
			
		||||
    margin 0 -1.2rem
 | 
			
		||||
    padding .8rem 1.2rem .8rem 4rem
 | 
			
		||||
    border-bottom .1rem solid rgba(68,138,255,.1)
 | 
			
		||||
    background-color rgba(68,138,255,.1)
 | 
			
		||||
    font-weight 700
 | 
			
		||||
 | 
			
		||||
.admonition>.admonition-title:last-child
 | 
			
		||||
    margin-bottom 0
 | 
			
		||||
    
 | 
			
		||||
admonition_types = {
 | 
			
		||||
    note: {color: #0288D1, icon: "edit_sharp"},
 | 
			
		||||
    abstract: {color: #c5d845, icon: "speaker_notes_filled"},
 | 
			
		||||
    info: {color: #19d8f5, icon: "info"}
 | 
			
		||||
    tip: {color: #00bfa5, icon: "code"},
 | 
			
		||||
    success: {color: #00c853, icon: "check_circle_outline"},
 | 
			
		||||
    question: {color: #64dd17, icon: "help"},
 | 
			
		||||
    warning: {color: #ff9100, icon: "warning"},
 | 
			
		||||
    failure: {color: #ff5252, icon: "close"},
 | 
			
		||||
    danger: {color: #c2185b, icon: "flash_on"},
 | 
			
		||||
    bug: {color: #e040fb, icon: "bug_report"},
 | 
			
		||||
    example: {color: #651fff, icon: "format_list_numbered_rtl"},
 | 
			
		||||
    quote: {color: #9e9e9e, icon: "format_quote"}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
for name, val in admonition_types
 | 
			
		||||
    .admonition.{name}
 | 
			
		||||
        @extend $admonition
 | 
			
		||||
        border-left-color: val[color]
 | 
			
		||||
    
 | 
			
		||||
    .admonition.{name}>.admonition-title
 | 
			
		||||
        @extend $admonition-title
 | 
			
		||||
        border-bottom-color: .1rem solid rgba(val[color], 0.2)
 | 
			
		||||
        background-color: rgba(val[color], 0.2)
 | 
			
		||||
 | 
			
		||||
    .admonition.{name}>.admonition-title:before
 | 
			
		||||
        @extend $admonition-icon
 | 
			
		||||
        color: val[color]
 | 
			
		||||
        content: val[icon]
 | 
			
		||||
							
								
								
									
										29
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,29 @@
 | 
			
		||||
---
 | 
			
		||||
home: true
 | 
			
		||||
actionText: Розпочати →
 | 
			
		||||
actionLink: /intro/
 | 
			
		||||
 | 
			
		||||
footer: "ECL 2.0 Licensed | Copyright © [YYYY] [Your Name]"
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
**Виконали:** 
 | 
			
		||||
 | 
			
		||||
*студенти [X]-го курсу, групи (шифр групи)* 
 | 
			
		||||
 | 
			
		||||
**[ім’я ПРІЗВИЩЕ] [Посилання email, tg, fb]**
 | 
			
		||||
 | 
			
		||||
**[ім’я ПРІЗВИЩЕ] [Посилання email, tg, fb]**
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
**Керівник**
 | 
			
		||||
 | 
			
		||||
*доцент кафедри ОТ ФІОТ, к.т.н., доцент*<span padding-right:5em></span> **Андрій БОЛДАК** 
 | 
			
		||||
 | 
			
		||||
[НТУУ "КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені ІГОРЯ СІКОРСЬКОГО](https://kpi.ua/)
 | 
			
		||||
 | 
			
		||||
[Факультет інформатики та обчислювальної техніки](https://fiot.kpi.ua/)
 | 
			
		||||
 | 
			
		||||
[Кафедра обчислювальної техніки](https://comsys.kpi.ua/)
 | 
			
		||||
 | 
			
		||||
Київ
 | 
			
		||||
							
								
								
									
										0
									
								
								docs/api/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										12
									
								
								docs/conclusion/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,12 @@
 | 
			
		||||
# Висновки
 | 
			
		||||
 | 
			
		||||
У висновках наводять оцінку отриманих результатів, можливі галузі його використання. Висновки повинні містити в собі коротку узагальнену оцінку результатів розробки, у
 | 
			
		||||
тому числі і з погляду на їх технічно-економічну ефективність. Необхідно порівняти
 | 
			
		||||
отримані результати усіх характеристик об’єкта проєктування із завданням і з основними показниками сучасних аналогічних об’єктів.
 | 
			
		||||
 | 
			
		||||
Необхідно вказати яке нове технічне рішення покладене в основу проєкту і у чому її
 | 
			
		||||
переваги, що нового було запропоновано самим студентом. 
 | 
			
		||||
 | 
			
		||||
На базі отриманих висновків можуть надаватися рекомендації по використанню розробки. Вони повинні
 | 
			
		||||
мати конкретний характер і бути цілком підтверджені проєктом.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										86
									
								
								docs/design/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,86 @@
 | 
			
		||||
# Проєктування системи
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Вбудовування зображень діаграм здійснюється з використанням сервісу [plantuml.com](https://plantuml.com/). 
 | 
			
		||||
 | 
			
		||||
В markdown-файлі використовується опис діаграми
 | 
			
		||||
 | 
			
		||||
```md
 | 
			
		||||
 | 
			
		||||
<center style="
 | 
			
		||||
    border-radius:4px;
 | 
			
		||||
    border: 1px solid #cfd7e6;
 | 
			
		||||
    box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
 | 
			
		||||
    padding: 1em;"
 | 
			
		||||
>
 | 
			
		||||
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
participant Client
 | 
			
		||||
 | 
			
		||||
participant SR as "Service Registry"
 | 
			
		||||
 | 
			
		||||
participant Service
 | 
			
		||||
 | 
			
		||||
Service -> SR : register
 | 
			
		||||
SR -> SR
 | 
			
		||||
SR --> Service
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
SR -> Service: heartbeat
 | 
			
		||||
SR <-- Service: health
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
Client -> SR: find
 | 
			
		||||
Client <-- SR: service endpoint
 | 
			
		||||
Client -> Service: request
 | 
			
		||||
Client <-- Service: response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
</center>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
яка буде відображена наступним чином
 | 
			
		||||
 | 
			
		||||
<center style="
 | 
			
		||||
    border-radius:4px;
 | 
			
		||||
    border: 1px solid #cfd7e6;
 | 
			
		||||
    box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
 | 
			
		||||
    padding: 1em;"
 | 
			
		||||
>
 | 
			
		||||
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
    @startuml
 | 
			
		||||
 | 
			
		||||
participant Client
 | 
			
		||||
 | 
			
		||||
participant SR as "Service Registry"
 | 
			
		||||
 | 
			
		||||
participant Service
 | 
			
		||||
 | 
			
		||||
Service -> SR : register
 | 
			
		||||
SR -> SR
 | 
			
		||||
SR --> Service
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
SR -> Service: heartbeat
 | 
			
		||||
SR <-- Service: health
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
Client -> SR: find
 | 
			
		||||
Client <-- SR: service endpoint
 | 
			
		||||
Client -> Service: request
 | 
			
		||||
Client <-- Service: response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
</center>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								docs/intro/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,12 @@
 | 
			
		||||
# Вступ
 | 
			
		||||
 | 
			
		||||
У вступі описується мета роботи і розглядається поставлене завдання з позиції її
 | 
			
		||||
актуальності, значення її розв’язання для тієї предметної області, до якої відноситься
 | 
			
		||||
тема бакалаврського проєкту. 
 | 
			
		||||
 | 
			
		||||
Коротко характеризується сучасний рівень розв’язання
 | 
			
		||||
даного завдання і взаємозв’язок з іншими проєктами по цій тематиці. 
 | 
			
		||||
 | 
			
		||||
Наводяться
 | 
			
		||||
основні технічні характеристики розробки й очікуваний технічно-економічний ефект
 | 
			
		||||
від її реалізації. 
 | 
			
		||||
							
								
								
									
										25
									
								
								docs/requirements/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,25 @@
 | 
			
		||||
# Розроблення вимог до системи
 | 
			
		||||
 | 
			
		||||
## Основні визначення
 | 
			
		||||
 | 
			
		||||
*[Розділ містить визначення термінів та скорочень, які використовуються при аналізі предметної області.]*
 | 
			
		||||
 | 
			
		||||
## Підходи та способи вирішення завдання
 | 
			
		||||
 | 
			
		||||
*[Розділ містить опис підходів, моделей та способів вирішення завдання.]*
 | 
			
		||||
 | 
			
		||||
## Порівняльна характеристика існуючих засобів вирішення завдання
 | 
			
		||||
 | 
			
		||||
*[Розділ містить опис існуючих програм, інформаційних систем, сервісів, тощо, призначених для вирішення 
 | 
			
		||||
завдання. Дається порівняльна характеристика властивостей FURPS:*
 | 
			
		||||
- *Functionality (функциональні вимоги)*
 | 
			
		||||
- *Usability (вимоги до зручності роботи)*
 | 
			
		||||
- *Reliability (вимоги до надійності)*
 | 
			
		||||
- *Performance (вимоги до продуктивності)*
 | 
			
		||||
- *Supportability (вимоги до підтримки)*
 | 
			
		||||
 | 
			
		||||
 *(у вигляді таблиці).]*
 | 
			
		||||
 | 
			
		||||
## Висновки
 | 
			
		||||
 | 
			
		||||
*[Робляться висновки щодо доцільності розробки нової або модифікації існуючої інформаційної системи, необхідності та способів інтеграції з системами(сервісами) третіх сторін, тощо.]*
 | 
			
		||||
							
								
								
									
										3
									
								
								docs/software/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,3 @@
 | 
			
		||||
# Реалізація інформаційного та програмного забезпечення
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								docs/test/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,4 @@
 | 
			
		||||
# Тестування працездатності системи
 | 
			
		||||
 | 
			
		||||
*В цьому розділі необхідно вказати засоби тестування, навести вихідні коди тестів та результати тестування.*
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								jsdoc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,23 @@
 | 
			
		||||
{
 | 
			
		||||
    "tags": {
 | 
			
		||||
        "allowUnknownTags": false
 | 
			
		||||
    },
 | 
			
		||||
    "source": {
 | 
			
		||||
        "include": "src/",
 | 
			
		||||
        "includePattern": ".js$",
 | 
			
		||||
        "excludePattern": "(node_modules/|docs)"
 | 
			
		||||
    },
 | 
			
		||||
    "plugins": [
 | 
			
		||||
        "plugins/markdown"
 | 
			
		||||
    ],
 | 
			
		||||
    "opts": {
 | 
			
		||||
        "encoding": "utf8",
 | 
			
		||||
        "destination": "./.public/docs/",
 | 
			
		||||
        "recurse": true,
 | 
			
		||||
        "verbose": true
 | 
			
		||||
    },
 | 
			
		||||
    "templates": {
 | 
			
		||||
        "cleverLinks": false,
 | 
			
		||||
        "monospaceLinks": false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16508
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										26
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,26 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "dis-edu",
 | 
			
		||||
  "version": "2.1.0",
 | 
			
		||||
  "main": "index.js",
 | 
			
		||||
  "description": "Databases course work template",
 | 
			
		||||
  "repository": "https://github.com/boldak/dis-edu",
 | 
			
		||||
  "author": "Andrey Boldak <boldak.andrey@gmail.com>",
 | 
			
		||||
  "license": "ECL 2.0",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "docs:api": "jsdoc2md  src/**/*.js  > docs/api/README.md",
 | 
			
		||||
    "docs:dev": "npm run docs:api && npx vuepress dev docs",
 | 
			
		||||
    "docs:build": "npm run docs:api && npx vuepress build docs",
 | 
			
		||||
    "publish": "publish.sh"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@vuepress/plugin-back-to-top": "^1.7.1",
 | 
			
		||||
    "@vuepress/plugin-pwa": "^1.7.1",
 | 
			
		||||
    "vuepress": "^1.7.1",
 | 
			
		||||
    "vuepress-theme-cool": "^1.3.1"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "jest": "^27.1.0",
 | 
			
		||||
    "jsdoc-to-markdown": "^7.0.1"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								publish.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,25 @@
 | 
			
		||||
#!/usr/bin/env sh
 | 
			
		||||
 | 
			
		||||
# abort on errors
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# build
 | 
			
		||||
npm run docs:build
 | 
			
		||||
 | 
			
		||||
# navigate into the build output directory
 | 
			
		||||
cd docs/.vuepress/dist
 | 
			
		||||
 | 
			
		||||
# if you are deploying to a custom domain
 | 
			
		||||
# echo 'www.example.com' > CNAME
 | 
			
		||||
 | 
			
		||||
git init
 | 
			
		||||
git add -A
 | 
			
		||||
git commit -m 'deploy'
 | 
			
		||||
 | 
			
		||||
# if you are deploying to https://<USERNAME>.github.io
 | 
			
		||||
# git push -f git@github.com:boldak/<USERNAME>.github.io.git master
 | 
			
		||||
 | 
			
		||||
# if you are deploying to https://<USERNAME>.github.io/<REPO>
 | 
			
		||||
git push -f https://github.com/boldak/dis-edu.git master:gh-pages
 | 
			
		||||
 | 
			
		||||
cd -
 | 
			
		||||
							
								
								
									
										2
									
								
								src/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,2 @@
 | 
			
		||||
# програмні коди
 | 
			
		||||
В цьому розділі розміщені програмні коди.
 | 
			
		||||