Compare commits
	
		
			No commits in common. "master" and "gh-pages" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										110
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						@ -1,110 +0,0 @@
 | 
				
			|||||||
# Logs
 | 
					 | 
				
			||||||
logs
 | 
					 | 
				
			||||||
*.log
 | 
					 | 
				
			||||||
npm-debug.log*
 | 
					 | 
				
			||||||
yarn-debug.log*
 | 
					 | 
				
			||||||
yarn-error.log*
 | 
					 | 
				
			||||||
lerna-debug.log*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
 | 
					 | 
				
			||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Runtime data
 | 
					 | 
				
			||||||
pids
 | 
					 | 
				
			||||||
*.pid
 | 
					 | 
				
			||||||
*.seed
 | 
					 | 
				
			||||||
*.pid.lock
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Directory for instrumented libs generated by jscoverage/JSCover
 | 
					 | 
				
			||||||
lib-cov
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Coverage directory used by tools like istanbul
 | 
					 | 
				
			||||||
coverage
 | 
					 | 
				
			||||||
*.lcov
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# nyc test coverage
 | 
					 | 
				
			||||||
.nyc_output
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
 | 
					 | 
				
			||||||
.grunt
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Bower dependency directory (https://bower.io/)
 | 
					 | 
				
			||||||
bower_components
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# node-waf configuration
 | 
					 | 
				
			||||||
.lock-wscript
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
 | 
					 | 
				
			||||||
build/Release
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Dependency directories
 | 
					 | 
				
			||||||
node_modules/
 | 
					 | 
				
			||||||
jspm_packages/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# TypeScript v1 declaration files
 | 
					 | 
				
			||||||
typings/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# TypeScript cache
 | 
					 | 
				
			||||||
*.tsbuildinfo
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Optional npm cache directory
 | 
					 | 
				
			||||||
.npm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Optional eslint cache
 | 
					 | 
				
			||||||
.eslintcache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Microbundle cache
 | 
					 | 
				
			||||||
.rpt2_cache/
 | 
					 | 
				
			||||||
.rts2_cache_cjs/
 | 
					 | 
				
			||||||
.rts2_cache_es/
 | 
					 | 
				
			||||||
.rts2_cache_umd/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Optional REPL history
 | 
					 | 
				
			||||||
.node_repl_history
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Output of 'npm pack'
 | 
					 | 
				
			||||||
*.tgz
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Yarn Integrity file
 | 
					 | 
				
			||||||
.yarn-integrity
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# dotenv environment variables file
 | 
					 | 
				
			||||||
.env
 | 
					 | 
				
			||||||
.env.test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# parcel-bundler cache (https://parceljs.org/)
 | 
					 | 
				
			||||||
.cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Next.js build output
 | 
					 | 
				
			||||||
.next
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Nuxt.js build / generate output
 | 
					 | 
				
			||||||
.nuxt
 | 
					 | 
				
			||||||
dist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Gatsby files
 | 
					 | 
				
			||||||
.cache/
 | 
					 | 
				
			||||||
# Comment in the public line in if your project uses Gatsby and *not* Next.js
 | 
					 | 
				
			||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
 | 
					 | 
				
			||||||
# public
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# vuepress build output
 | 
					 | 
				
			||||||
.vuepress/dist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Serverless directories
 | 
					 | 
				
			||||||
.serverless/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# FuseBox cache
 | 
					 | 
				
			||||||
.fusebox/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# DynamoDB Local files
 | 
					 | 
				
			||||||
.dynamodb/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# TernJS port file
 | 
					 | 
				
			||||||
.tern-port
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# utils/table-generator generated files
 | 
					 | 
				
			||||||
utils/table-generator/tables/
 | 
					 | 
				
			||||||
utils/table-generator/tables.md
 | 
					 | 
				
			||||||
utils/table-generator/activities/
 | 
					 | 
				
			||||||
utils/table-generator/activities.md
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 278 KiB After Width: | Height: | Size: 278 KiB  | 
| 
		 Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 232 KiB  | 
| 
		 Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 236 KiB  | 
| 
		 Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB  | 
| 
		 Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 264 KiB  | 
| 
		 Before Width: | Height: | Size: 246 KiB After Width: | Height: | Size: 246 KiB  | 
| 
		 Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 273 KiB  | 
| 
		 Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 281 KiB  | 
| 
		 Before Width: | Height: | Size: 247 KiB After Width: | Height: | Size: 247 KiB  | 
| 
		 Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 262 KiB  | 
| 
		 Before Width: | Height: | Size: 266 KiB After Width: | Height: | Size: 266 KiB  | 
| 
		 Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 125 KiB  | 
| 
		 Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 139 KiB  | 
| 
		 Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB  | 
| 
		 Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB  | 
| 
		 Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB  | 
| 
		 Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB  | 
| 
		 Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB  | 
| 
		 Before Width: | Height: | Size: 266 KiB After Width: | Height: | Size: 266 KiB  | 
| 
		 Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB  | 
| 
		 Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB  | 
| 
		 Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB  | 
| 
		 Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB  | 
| 
		 Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB  | 
| 
		 Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB  | 
| 
		 Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB  | 
| 
		 Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB  | 
| 
		 Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB  | 
| 
		 Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB  | 
| 
		 Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB  | 
| 
		 Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB  | 
| 
		 Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 162 KiB  | 
| 
		 Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB  | 
| 
		 Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB  | 
| 
		 Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 243 KiB  | 
							
								
								
									
										22
									
								
								404.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en-US">
 | 
				
			||||||
 | 
					  <head>
 | 
				
			||||||
 | 
					    <meta charset="utf-8">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width,initial-scale=1">
 | 
				
			||||||
 | 
					    <title>Xpertise</title>
 | 
				
			||||||
 | 
					    <meta name="generator" content="VuePress 1.8.2">
 | 
				
			||||||
 | 
					    <link rel="icon" href="/OBD-lab6/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">
 | 
				
			||||||
 | 
					    <meta name="description" content="Лабораторні роботи з дисципліни "Організація баз даних"">
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <link rel="preload" href="/OBD-lab6/assets/css/0.styles.4f6bfcd3.css" as="style"><link rel="preload" href="/OBD-lab6/assets/js/app.05910fbb.js" as="script"><link rel="preload" href="/OBD-lab6/assets/js/15.0dcddaf1.js" as="script"><link rel="prefetch" href="/OBD-lab6/assets/js/10.35d89b73.js"><link rel="prefetch" href="/OBD-lab6/assets/js/11.3c19866e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/12.9a82e5ab.js"><link rel="prefetch" href="/OBD-lab6/assets/js/13.49bd7085.js"><link rel="prefetch" href="/OBD-lab6/assets/js/14.1b3343f2.js"><link rel="prefetch" href="/OBD-lab6/assets/js/16.2ed446b3.js"><link rel="prefetch" href="/OBD-lab6/assets/js/17.fda359b2.js"><link rel="prefetch" href="/OBD-lab6/assets/js/18.0fc04f5f.js"><link rel="prefetch" href="/OBD-lab6/assets/js/19.040c6f24.js"><link rel="prefetch" href="/OBD-lab6/assets/js/2.d3067b7e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/20.90003659.js"><link rel="prefetch" href="/OBD-lab6/assets/js/21.e05a7bdf.js"><link rel="prefetch" href="/OBD-lab6/assets/js/22.c693ab35.js"><link rel="prefetch" href="/OBD-lab6/assets/js/23.cf94de76.js"><link rel="prefetch" href="/OBD-lab6/assets/js/24.34b35d62.js"><link rel="prefetch" href="/OBD-lab6/assets/js/25.039587ec.js"><link rel="prefetch" href="/OBD-lab6/assets/js/26.c4b8726e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/27.9a1f882a.js"><link rel="prefetch" href="/OBD-lab6/assets/js/3.1e247dfc.js"><link rel="prefetch" href="/OBD-lab6/assets/js/4.86a4386e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/5.53518b16.js"><link rel="prefetch" href="/OBD-lab6/assets/js/6.234fb2a8.js"><link rel="prefetch" href="/OBD-lab6/assets/js/7.7990c5f1.js"><link rel="prefetch" href="/OBD-lab6/assets/js/8.7de00471.js"><link rel="prefetch" href="/OBD-lab6/assets/js/9.0fa86d82.js">
 | 
				
			||||||
 | 
					    <link rel="stylesheet" href="/OBD-lab6/assets/css/0.styles.4f6bfcd3.css">
 | 
				
			||||||
 | 
					  </head>
 | 
				
			||||||
 | 
					  <body>
 | 
				
			||||||
 | 
					    <div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>There's nothing here.</blockquote> <a href="/OBD-lab6/" class="router-link-active">
 | 
				
			||||||
 | 
					      Take me home.
 | 
				
			||||||
 | 
					    </a></div></div><div class="global-ui"><!----></div></div>
 | 
				
			||||||
 | 
					    <script src="/OBD-lab6/assets/js/app.05910fbb.js" defer></script><script src="/OBD-lab6/assets/js/15.0dcddaf1.js" defer></script>
 | 
				
			||||||
 | 
					  </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 274 KiB  | 
							
								
								
									
										16
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						@ -1,16 +0,0 @@
 | 
				
			|||||||
ECL 2.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Copyright (c) 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.
 | 
					 | 
				
			||||||
							
								
								
									
										62
									
								
								README.md
									
									
									
									
									
								
							
							
						
						@ -1,62 +0,0 @@
 | 
				
			|||||||
# Шаблон репозиторію для виконання лабораторних робіт з дисципліни "Розподілені інформаційні системи"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Як використовувати
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
В цьому репозиторії знаходиться шаблон для виконання лабораторних робіт.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Для виконання лабораторних робіт необхідно зробити ```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 {24}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#!/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)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
***Happy learning! Happy coding!*** 
 | 
					 | 
				
			||||||
							
								
								
									
										28
									
								
								api/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en-US">
 | 
				
			||||||
 | 
					  <head>
 | 
				
			||||||
 | 
					    <meta charset="utf-8">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width,initial-scale=1">
 | 
				
			||||||
 | 
					    <title>Xpertise</title>
 | 
				
			||||||
 | 
					    <meta name="generator" content="VuePress 1.8.2">
 | 
				
			||||||
 | 
					    <link rel="icon" href="/OBD-lab6/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">
 | 
				
			||||||
 | 
					    <meta name="description" content="Лабораторні роботи з дисципліни "Організація баз даних"">
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <link rel="preload" href="/OBD-lab6/assets/css/0.styles.4f6bfcd3.css" as="style"><link rel="preload" href="/OBD-lab6/assets/js/app.05910fbb.js" as="script"><link rel="preload" href="/OBD-lab6/assets/js/2.d3067b7e.js" as="script"><link rel="preload" href="/OBD-lab6/assets/js/18.0fc04f5f.js" as="script"><link rel="prefetch" href="/OBD-lab6/assets/js/10.35d89b73.js"><link rel="prefetch" href="/OBD-lab6/assets/js/11.3c19866e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/12.9a82e5ab.js"><link rel="prefetch" href="/OBD-lab6/assets/js/13.49bd7085.js"><link rel="prefetch" href="/OBD-lab6/assets/js/14.1b3343f2.js"><link rel="prefetch" href="/OBD-lab6/assets/js/15.0dcddaf1.js"><link rel="prefetch" href="/OBD-lab6/assets/js/16.2ed446b3.js"><link rel="prefetch" href="/OBD-lab6/assets/js/17.fda359b2.js"><link rel="prefetch" href="/OBD-lab6/assets/js/19.040c6f24.js"><link rel="prefetch" href="/OBD-lab6/assets/js/20.90003659.js"><link rel="prefetch" href="/OBD-lab6/assets/js/21.e05a7bdf.js"><link rel="prefetch" href="/OBD-lab6/assets/js/22.c693ab35.js"><link rel="prefetch" href="/OBD-lab6/assets/js/23.cf94de76.js"><link rel="prefetch" href="/OBD-lab6/assets/js/24.34b35d62.js"><link rel="prefetch" href="/OBD-lab6/assets/js/25.039587ec.js"><link rel="prefetch" href="/OBD-lab6/assets/js/26.c4b8726e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/27.9a1f882a.js"><link rel="prefetch" href="/OBD-lab6/assets/js/3.1e247dfc.js"><link rel="prefetch" href="/OBD-lab6/assets/js/4.86a4386e.js"><link rel="prefetch" href="/OBD-lab6/assets/js/5.53518b16.js"><link rel="prefetch" href="/OBD-lab6/assets/js/6.234fb2a8.js"><link rel="prefetch" href="/OBD-lab6/assets/js/7.7990c5f1.js"><link rel="prefetch" href="/OBD-lab6/assets/js/8.7de00471.js"><link rel="prefetch" href="/OBD-lab6/assets/js/9.0fa86d82.js">
 | 
				
			||||||
 | 
					    <link rel="stylesheet" href="/OBD-lab6/assets/css/0.styles.4f6bfcd3.css">
 | 
				
			||||||
 | 
					  </head>
 | 
				
			||||||
 | 
					  <body>
 | 
				
			||||||
 | 
					    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/OBD-lab6/" class="home-link router-link-active"><!----> <span class="site-name">Xpertise</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/OBD-lab6/" class="nav-link">
 | 
				
			||||||
 | 
					  Початок
 | 
				
			||||||
 | 
					</a></div> <a href="http://139.162.162.130:3000/hasslesstech/edu-dis-labs" target="_blank" rel="noopener noreferrer" class="repo-link">
 | 
				
			||||||
 | 
					    Gitea
 | 
				
			||||||
 | 
					    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/OBD-lab6/" class="nav-link">
 | 
				
			||||||
 | 
					  Початок
 | 
				
			||||||
 | 
					</a></div> <a href="http://139.162.162.130:3000/hasslesstech/edu-dis-labs" target="_blank" rel="noopener noreferrer" class="repo-link">
 | 
				
			||||||
 | 
					    Gitea
 | 
				
			||||||
 | 
					    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav>  <ul class="sidebar-links"><li><a href="/OBD-lab6/intro/" class="sidebar-link">Вступ</a></li><li><section class="sidebar-group collapsable depth-0"><a href="/OBD-lab6/requirements/" class="sidebar-heading clickable"><span>Розроблення вимог до системи</span> <span class="arrow right"></span></a> <!----></section></li><li><a href="/OBD-lab6/use-cases/" class="sidebar-link">Розроблення вимог до функціональности системи</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/OBD-lab6/use-cases/#загальна-схема" class="sidebar-link">Загальна схема</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/use-cases/#схеми-використання-для-окремих-діячів" class="sidebar-link">Схеми використання для окремих діячів</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/use-cases/#сценаріі-використання" class="sidebar-link">Сценарії використання</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/OBD-lab6/use-cases/#для-гостя" class="sidebar-link">Для гостя</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/use-cases/#для-зареєстрованого-користувача" class="sidebar-link">Для зареєстрованого користувача</a></li></ul></li></ul></li><li><a href="/OBD-lab6/design/" class="sidebar-link">Проєктування архітектури системи</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/OBD-lab6/design/#be-модель" class="sidebar-link">BE модель</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/design/#er-модель" class="sidebar-link">ER-модель</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/design/#реляціина-схема" class="sidebar-link">Реляційна схема</a></li></ul></li><li><a href="/OBD-lab6/software/" class="sidebar-link">Реалізація інформаційного та програмного забезпечення</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/OBD-lab6/software/#sql-скрипт-для-створення-та-початкового-наповнення-бази-даних" class="sidebar-link">SQL-скрипт для створення та початкового наповнення бази даних</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/software/#програмнии-код-restful-сервісу" class="sidebar-link">Програмний код RESTful-сервісу</a></li></ul></li><li><a href="/OBD-lab6/test/" class="sidebar-link">Тестування працездатності системи</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/OBD-lab6/test/#обробка-запитів-з-методом-get" class="sidebar-link">Обробка запитів з методом GET</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/test/#обробка-запитів-з-методом-post" class="sidebar-link">Обробка запитів з методом POST</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/test/#обробка-запитів-з-методом-put" class="sidebar-link">Обробка запитів з методом PUT</a></li><li class="sidebar-sub-header"><a href="/OBD-lab6/test/#обробка-запитів-з-методом-delete" class="sidebar-link">Обробка запитів з методом DELETE</a></li></ul></li><li><a href="/OBD-lab6/conclusion/" class="sidebar-link">Висновки</a></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Останнє оновлення:</span> <span class="time">8/30/2021, 5:54:57 PM</span></div></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
 | 
				
			||||||
 | 
					    <script src="/OBD-lab6/assets/js/app.05910fbb.js" defer></script><script src="/OBD-lab6/assets/js/2.d3067b7e.js" defer></script><script src="/OBD-lab6/assets/js/18.0fc04f5f.js" defer></script>
 | 
				
			||||||
 | 
					  </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/css/0.styles.4f6bfcd3.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB  | 
| 
		 Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB  | 
| 
		 Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB  | 
| 
		 Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB  | 
| 
		 Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB  | 
| 
		 Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB  | 
| 
		 Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB  | 
| 
		 Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB  | 
							
								
								
									
										1
									
								
								assets/img/search.83621669.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="13"><g stroke-width="2" stroke="#aaa" fill="none"><path d="M11.29 11.71l-4-4"/><circle cx="5" cy="5" r="4"/></g></svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 216 B  | 
							
								
								
									
										1
									
								
								assets/js/10.35d89b73.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{566:function(n,o,e){},659:function(n,o,e){"use strict";e.r(o);e(566);var l={name:"Styles"},t=e(34),u=Object(t.a)(l,void 0,void 0,!1,null,null,null);o.default=u.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/11.3c19866e.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/12.9a82e5ab.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{566:function(n,o,e){},660:function(n,o,e){"use strict";e.r(o);e(566);var l={name:"Styles"},t=e(34),u=Object(t.a)(l,void 0,void 0,!1,null,null,null);o.default=u.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/13.49bd7085.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{619:function(t,a,s){t.exports=s.p+"assets/img/relational_scheme.50c04084.png"},651:function(t,a,s){"use strict";s.r(a);var r=s(34),e=Object(r.a)({},(function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"проєктування-бази-даних"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#проєктування-бази-даних"}},[t._v("#")]),t._v(" Проєктування бази даних")]),t._v(" "),r("h2",{attrs:{id:"be-модель"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#be-модель"}},[t._v("#")]),t._v(" BE модель")]),t._v(" "),r("center",{staticStyle:{"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"}},[r("img",{attrs:{src:"https://www.plantuml.com/plantuml/svg/VPJBReCm44Nt_Wh4CWeesKTHKYcBI8ZqmQ9TMZ1ghGQ3_4YRlwzji0EswP8vTsRiUoqEN60cP7j52AWWufuSwxgJL2IxtQcipjN7Vk-HN79W5BUW9DNflGe5FURyfsFDGs0LRvBTu1wPFO0yEdPaZMHOa8ukSSAViJgQtlfqkHIdOncHb6h1N64bBnBuEDu_d4MvW5yHNkeLUD_H6YAT5kKtV9KGjXQ4VaVQT5dPZ3-X82tHAyzbvM4sZbvMA3FulwrnscFnDJbfa7gMhMpIA4Xy2j4qL0s6R-Jd6I8NPGmD4Ku8yktAf8AwY29EUT2Ob4NrVjqOysX7NhY6s1f2yqTZe2qvKvDqkzwcQasIRjQhT7vL7xfkzr970RCAjzoDtom8pBiRQdg-cMFTF01jr0_X3m00",alt:"uml diagram"}})]),t._v(" "),r("h2",{attrs:{id:"er-модель"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#er-модель"}},[t._v("#")]),t._v(" ER-модель")]),t._v(" "),r("center",{staticStyle:{"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"}},[r("img",{attrs:{src:"https://www.plantuml.com/plantuml/svg/XL9TIyCm57tFhmXzShB1kiqYPPHL6JWedMvzyJ4q5mskQSd7T8Z_tIuDQQspvYavzvvpSWzt9HKHIXS7X80hfauuplDISuMNotMQRRBdACAV2DU7qN2JPkQg9GXE2WZl7-BTLR0O6RGYKhwNWZRex2OOeIydkmDPbJo7GTqZEMWhwWVpsqLNu4c3LApaWm8AFjH5-xqMHpWDSjk13FSCKIt8sRC7C_b8wWXeUBVT9kiujM1Q2xHOwvqm_lPVdD8zX0rATiha1H9MCFMhwITQ4VNQV7K-CyExqBtf-Dh3aqc4FN_iUovCv5BjTpI18PjRlsgN19dH_g1UCfzsoMW5dDQhzmq0",alt:"uml diagram"}})]),t._v(" "),r("h2",{attrs:{id:"реляціина-схема"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#реляціина-схема"}},[t._v("#")]),t._v(" Реляційна схема")]),t._v(" "),r("center",{staticStyle:{"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"}},[r("p",[r("img",{attrs:{src:s(619),alt:"relational_schema"}})])])],1)}),[],!1,null,null,null);a.default=e.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/14.1b3343f2.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{642:function(e,a,t){"use strict";t.r(a);var n={name:"my-component",components:{VueGoodTable:t(85).a},data:function(){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:.03343},{id:2,name:"Jane",age:24,createdAt:"2019-10-31",score:.03343},{id:3,name:"Susan",age:16,createdAt:"2011-10-30",score:.03343},{id:4,name:"Chris",age:55,createdAt:"2011-10-11",score:.03343},{id:5,name:"Dan",age:40,createdAt:"2011-10-21",score:.03343},{id:6,name:"John",age:20,createdAt:"2011-10-31",score:.03343}]}}},r=t(34),o=Object(r.a)(n,(function(){var e=this.$createElement,a=this._self._c||e;return a("div",[a("vue-good-table",{attrs:{columns:this.columns,rows:this.rows}})],1)}),[],!1,null,null,null);a.default=o.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/15.0dcddaf1.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{640:function(t,e,s){"use strict";s.r(e);var n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],o={methods:{getMsg:function(){return n[Math.floor(Math.random()*n.length)]}}},i=s(34),h=Object(i.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"theme-container"},[e("div",{staticClass:"theme-default-content"},[e("h1",[this._v("404")]),this._v(" "),e("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),e("RouterLink",{attrs:{to:"/"}},[this._v("\n      Take me home.\n    ")])],1)])}),[],!1,null,null,null);e.default=h.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/16.2ed446b3.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{644:function(t,n,e){"use strict";e.r(n);e(10),e(15),e(17);var i={name:"mermaid",mounted:function(){e.e(26).then(e.t.bind(null,637,7)).then((function(t){t.initialize({startOnLoad:!0}),t.init()}))}},a=e(34),l=Object(a.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"mermaid"},[this._t("default")],2)}),[],!1,null,null,null);n.default=l.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/17.fda359b2.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{650:function(e,t,r){"use strict";r.r(t);var n=r(34),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[r("strong",[e._v("Виконав:")])]),e._v(" "),r("p",[r("em",[e._v("студент 2-го курсу, групи ІО-23:")])]),e._v(" "),r("p",[r("em",[e._v("Євгеній ГОЛОВАТЕНКО [ievgeniigol@gmail.com, "),r("a",{attrs:{href:"https://t.me/yevholova",target:"_blank",rel:"noopener noreferrer"}},[e._v("@yevholova"),r("OutboundLink")],1),e._v("]")])]),e._v(" "),r("p",[r("strong",[e._v("Керівник")])]),e._v(" "),r("p",[r("em",[e._v("доцент кафедри ОТ ФІОТ, к.т.н., доцент")]),r("span",{attrs:{"padding-right:5em":""}}),e._v(" "),r("strong",[e._v("Андрій БОЛДАК")])]),e._v(" "),r("p",[r("a",{attrs:{href:"https://kpi.ua/",target:"_blank",rel:"noopener noreferrer"}},[e._v('НТУУ "КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені ІГОРЯ СІКОРСЬКОГО'),r("OutboundLink")],1)]),e._v(" "),r("p",[r("a",{attrs:{href:"https://fiot.kpi.ua/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Факультет інформатики та обчислювальної техніки"),r("OutboundLink")],1)]),e._v(" "),r("p",[r("a",{attrs:{href:"https://comsys.kpi.ua/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Кафедра обчислювальної техніки"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("Київ")])])}),[],!1,null,null,null);t.default=o.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/18.0fc04f5f.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{648:function(t,e,n){"use strict";n.r(e);var s=n(34),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/19.040c6f24.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{649:function(t,s,e){"use strict";e.r(s);var i=e(34),n=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"висновки"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#висновки"}},[this._v("#")]),this._v(" Висновки")]),this._v(" "),s("p",[this._v("Підсумовуючи, можу сказати, що розроблений мною RESTfull-сервіс працює коректно та має деякі особливості, зокрема й повернення статусу запиту окремим параметром в JSON-документі. Такі дрібниці спрощують роботу розробникам, що використовуватимуть мою систему, а це завжди є перевагою.")]),this._v(" "),s("p",[this._v("Крім того, завдяки простій та зрозумілій організації даних в БД цю систему можна швидко розгорнути на серверах, а її структура дозволить додавати в проєкт нову функціональність, тому цей проєкт має потенціал стати базою для подальших розробок.")])])}),[],!1,null,null,null);s.default=n.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/2.d3067b7e.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/20.90003659.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{652:function(t,n,e){"use strict";e.r(n);var s=e(34),r=Object(s.a)({},(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"вступ"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#вступ"}},[t._v("#")]),t._v(" Вступ")]),t._v(" "),e("p",[t._v("У вступі описується мета роботи і розглядається поставлене завдання з позиції її\nактуальності, значення її розв’язання для тієї предметної області, до якої відноситься\nтема бакалаврського проєкту.")]),t._v(" "),e("p",[t._v("Коротко характеризується сучасний рівень розв’язання\nданого завдання і взаємозв’язок з іншими проєктами по цій тематиці.")]),t._v(" "),e("p",[t._v("Наводяться\nосновні технічні характеристики розробки й очікуваний технічно-економічний ефект\nвід її реалізації.")])])}),[],!1,null,null,null);n.default=r.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/21.e05a7bdf.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{653:function(t,s,e){"use strict";e.r(s);var r=e(34),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"розроблення-загальних-вимог-до-системи"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#розроблення-загальних-вимог-до-системи"}},[this._v("#")]),this._v(" Розроблення загальних вимог до системи")]),this._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/requirements/state-of-the-art.html"}},[this._v("Аналіз предметної області")])],1),this._v(" "),s("li",[s("RouterLink",{attrs:{to:"/requirements/stakeholders-needs.html"}},[this._v("Запити зацікавлених осіб")])],1)])])}),[],!1,null,null,null);s.default=i.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/22.c693ab35.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/23.cf94de76.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/24.34b35d62.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/25.039587ec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										8589
									
								
								assets/js/26.c4b8726e.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/27.9a1f882a.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{636:function(n,e,t){"use strict";t.r(e),t.d(e,"register",(function(){return o})),t.d(e,"unregister",(function(){return c}));var r;function o(n,e){void 0===e&&(e={});var t=e.registrationOptions;void 0===t&&(t={}),delete e.registrationOptions;var o=function(n){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];e&&e[n]&&e[n].apply(e,t)};"serviceWorker"in navigator&&r.then((function(){Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))?(!function(n,e,t){fetch(n).then((function(r){404===r.status?(e("error",new Error("Service worker not found at "+n)),c()):-1===r.headers.get("content-type").indexOf("javascript")?(e("error",new Error("Expected "+n+" to have javascript content-type, but received "+r.headers.get("content-type"))),c()):a(n,e,t)})).catch((function(n){return i(e,n)}))}(n,o,t),navigator.serviceWorker.ready.then((function(n){o("ready",n)})).catch((function(n){return i(o,n)}))):(a(n,o,t),navigator.serviceWorker.ready.then((function(n){o("ready",n)})).catch((function(n){return i(o,n)})))}))}function i(n,e){navigator.onLine||n("offline"),n("error",e)}function a(n,e,t){navigator.serviceWorker.register(n,t).then((function(n){e("registered",n),n.waiting?e("updated",n):n.onupdatefound=function(){e("updatefound",n);var t=n.installing;t.onstatechange=function(){"installed"===t.state&&(navigator.serviceWorker.controller?e("updated",n):e("cached",n))}}})).catch((function(n){return i(e,n)}))}function c(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(n){n.unregister()})).catch((function(n){return i(emit,n)}))}"undefined"!=typeof window&&(r="undefined"!=typeof Promise?new Promise((function(n){return window.addEventListener("load",n)})):{then:function(n){return window.addEventListener("load",n)}})}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/3.1e247dfc.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{620:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-23-41.3f4a91f3.jpg"},621:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-23-49.d7fd6b90.jpg"},622:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-23-52.7858282b.jpg"},623:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-23-55.0dbb72ef.jpg"},624:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-23-46.67167aa6.jpg"},625:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-24-01.7df1a767.jpg"},626:function(t,r,a){t.exports=a.p+"assets/img/photo_2024-06-06_18-23-57.b4baa82c.jpg"},657:function(t,r,a){"use strict";a.r(r);var s=a(34),e=Object(s.a)({},(function(){var t=this,r=t.$createElement,s=t._self._c||r;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"тестування-працездатності-системи"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#тестування-працездатності-системи"}},[t._v("#")]),t._v(" Тестування працездатності системи")]),t._v(" "),s("h2",{attrs:{id:"обробка-запитів-з-методом-get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#обробка-запитів-з-методом-get"}},[t._v("#")]),t._v(" Обробка запитів з методом GET")]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(620),alt:""}})])]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(621),alt:""}})])]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(622),alt:""}})])]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(623),alt:""}})])]),t._v(" "),s("h2",{attrs:{id:"обробка-запитів-з-методом-post"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#обробка-запитів-з-методом-post"}},[t._v("#")]),t._v(" Обробка запитів з методом POST")]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(624),alt:""}})])]),t._v(" "),s("h2",{attrs:{id:"обробка-запитів-з-методом-put"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#обробка-запитів-з-методом-put"}},[t._v("#")]),t._v(" Обробка запитів з методом PUT")]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(625),alt:""}})])]),t._v(" "),s("h2",{attrs:{id:"обробка-запитів-з-методом-delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#обробка-запитів-з-методом-delete"}},[t._v("#")]),t._v(" Обробка запитів з методом DELETE")]),t._v(" "),s("center",{staticStyle:{"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","margin-bottom":"15px"}},[s("p",[s("img",{attrs:{src:a(626),alt:""}})])])],1)}),[],!1,null,null,null);r.default=e.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/4.86a4386e.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								assets/js/5.53518b16.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{585:function(t,e,i){},627:function(t,e,i){"use strict";i(585)},641:function(t,e,i){"use strict";i.r(e);var n={name:"Details",props:{title:{type:String,default:"title"},content:{type:String,default:"title"}}},s=(i(627),i(34)),l=Object(s.a)(n,(function(){var t=this.$createElement,e=this._self._c||t;return e("details",[e("summary",[this._v(this._s(this.title))]),this._v(this._s(this.content)+" ")])}),[],!1,null,"5c5bfe02",null);e.default=l.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/6.234fb2a8.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{590:function(t,e,n){},633:function(t,e,n){"use strict";n(590)},661:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(633),n(34)),p=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=p.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/7.7990c5f1.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{591:function(t,e,a){},634:function(t,e,a){"use strict";a(591)},646:function(t,e,a){"use strict";a.r(e);var n={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}},mounted:function(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}},i=(a(634),a(34)),s=Object(i.a)(n,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"759a7d02",null);e.default=s.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/8.7de00471.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{592:function(e,t,a){},635:function(e,t,a){"use strict";a(592)},647:function(e,t,a){"use strict";a.r(t);a(90),a(41),a(134),a(135);var o={name:"CodeGroup",data:function(){return{codeTabs:[],activeCodeTabIndex:-1}},watch:{activeCodeTabIndex:function(e){this.activateCodeTab(e)}},mounted:function(){this.loadTabs()},methods:{changeCodeTab:function(e){this.activeCodeTabIndex=e},loadTabs:function(){var e=this;this.codeTabs=(this.$slots.default||[]).filter((function(e){return Boolean(e.componentOptions)})).map((function(t,a){return""===t.componentOptions.propsData.active&&(e.activeCodeTabIndex=a),{title:t.componentOptions.propsData.title,elm:t.elm}})),-1===this.activeCodeTabIndex&&this.codeTabs.length>0&&(this.activeCodeTabIndex=0),this.activateCodeTab(0)},activateCodeTab:function(e){this.codeTabs.forEach((function(e){e.elm&&e.elm.classList.remove("theme-code-block__active")})),this.codeTabs[e].elm&&this.codeTabs[e].elm.classList.add("theme-code-block__active")}}},n=(a(635),a(34)),c=Object(n.a)(o,(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ClientOnly",[a("div",{staticClass:"theme-code-group"},[a("div",{staticClass:"theme-code-group__nav"},[a("ul",{staticClass:"theme-code-group__ul"},e._l(e.codeTabs,(function(t,o){return a("li",{key:t.title,staticClass:"theme-code-group__li"},[a("button",{staticClass:"theme-code-group__nav-tab",class:{"theme-code-group__nav-tab-active":o===e.activeCodeTabIndex},on:{click:function(t){return e.changeCodeTab(o)}}},[e._v("\n            "+e._s(t.title)+"\n          ")])])})),0)]),e._v(" "),e._t("default"),e._v(" "),e.codeTabs.length<1?a("pre",{staticClass:"pre-blank"},[e._v("// Make sure to add code blocks to your code group")]):e._e()],2)])}),[],!1,null,"deefee04",null);t.default=c.exports}}]);
 | 
				
			||||||
							
								
								
									
										1
									
								
								assets/js/9.0fa86d82.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{589:function(n,t,s){},632:function(n,t,s){"use strict";s(589)},645:function(n,t,s){"use strict";s.r(t);var i={name:"pros-cons",props:{intro:{type:String,required:!0},good:{type:Array,default:null},bad:{type:Array,default:null}}},a=(s(632),s(34)),e=Object(a.a)(i,(function(){var n=this,t=n.$createElement,s=n._self._c||t;return s("div",[s("p",{staticClass:"intro"},[n._v("\n    "+n._s(n.intro)+"\n  ")]),n._v(" "),s("div",{staticClass:"comparison"},[s("div",{staticClass:"comparison__container"},[n._m(0),n._v(" "),s("ul",n._l(n.good,(function(n){return s("li",{key:n,domProps:{innerHTML:n}})})),0)]),n._v(" "),s("div",{staticClass:"comparison__container comparison__container--donts"},[n._m(1),n._v(" "),s("ul",n._l(n.bad,(function(n){return s("li",{key:n,domProps:{innerHTML:n}})})),0)])])])}),[function(){var n=this.$createElement,t=this._self._c||n;return t("div",{staticClass:"comparison__heading"},[t("i",{staticClass:"material-icons blue-text"},[this._v("check")]),this._v("\n        Pros\n      ")])},function(){var n=this.$createElement,t=this._self._c||n;return t("div",{staticClass:"comparison__heading comparison__heading--donts"},[t("i",{staticClass:"material-icons"},[this._v("close")]),this._v("\n        Cons\n      ")])}],!1,null,"541222b7",null);t.default=e.exports}}]);
 | 
				
			||||||
							
								
								
									
										294
									
								
								assets/js/app.05910fbb.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										32
									
								
								conclusion/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										36
									
								
								design/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										2
									
								
								docs/.vuepress/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						@ -1,2 +0,0 @@
 | 
				
			|||||||
css
 | 
					 | 
				
			||||||
dist
 | 
					 | 
				
			||||||
@ -1,39 +0,0 @@
 | 
				
			|||||||
<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>
 | 
					 | 
				
			||||||
@ -1,324 +0,0 @@
 | 
				
			|||||||
<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>
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
<script>
 | 
					 | 
				
			||||||
import "vue-good-table/dist/vue-good-table.css";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  name: "Styles",
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style>
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
@ -1,56 +0,0 @@
 | 
				
			|||||||
<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>
 | 
					 | 
				
			||||||
@ -1,35 +0,0 @@
 | 
				
			|||||||
// .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>
 | 
					 | 
				
			||||||
@ -1,211 +0,0 @@
 | 
				
			|||||||
// .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(" ");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,116 +0,0 @@
 | 
				
			|||||||
// .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: '/OBD-lab6/',
 | 
					 | 
				
			||||||
  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/",
 | 
					 | 
				
			||||||
        children: [
 | 
					 | 
				
			||||||
            "/requirements/state-of-the-art",
 | 
					 | 
				
			||||||
            "/requirements/stakeholders-needs"
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      title: 'Розроблення вимог до функціональности системи',
 | 
					 | 
				
			||||||
      path:"/use-cases/"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      title: 'Проєктування архітектури системи',
 | 
					 | 
				
			||||||
      path:"/design/"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      title: 'Реалізація інформаційного та програмного забезпечення',
 | 
					 | 
				
			||||||
      path:"/software/"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      title: 'Тестування працездатності системи',
 | 
					 | 
				
			||||||
      path:"/test/"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      title: 'Висновки',
 | 
					 | 
				
			||||||
      path:"/conclusion/"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
    sidebarDepth: 2,
 | 
					 | 
				
			||||||
    displayAllHeaders: true, // Default: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    nav: [
 | 
					 | 
				
			||||||
      { text: 'Початок', link: '/' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    lastUpdated: 'Останнє оновлення', // string | boolean
 | 
					 | 
				
			||||||
      // Assumes GitHub. Can also be a full GitLab url.
 | 
					 | 
				
			||||||
    repo: 'http://139.162.162.130:3000/hasslesstech/edu-dis-labs',
 | 
					 | 
				
			||||||
    // Customising the header label
 | 
					 | 
				
			||||||
    // Defaults to "GitHub"/"GitLab"/"Bitbucket" depending on `themeConfig.repo`
 | 
					 | 
				
			||||||
    repoLabel: 'Gitea',
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 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: 'Xpertise',
 | 
					 | 
				
			||||||
  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'))
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,30 +0,0 @@
 | 
				
			|||||||
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'
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,7 +0,0 @@
 | 
				
			|||||||
import quiz1 from './quiz1.json'
 | 
					 | 
				
			||||||
import quiz2 from './quiz2.json'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export {
 | 
					 | 
				
			||||||
  quiz1,
 | 
					 | 
				
			||||||
  quiz2
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,185 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "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"
 | 
					 | 
				
			||||||
           }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,41 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "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"
 | 
					 | 
				
			||||||
           }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,179 +0,0 @@
 | 
				
			|||||||
    @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;
 | 
					 | 
				
			||||||
    }    
 | 
					 | 
				
			||||||
@ -1,89 +0,0 @@
 | 
				
			|||||||
// 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]
 | 
					 | 
				
			||||||
@ -1,27 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
home: true
 | 
					 | 
				
			||||||
actionText: Розпочати →
 | 
					 | 
				
			||||||
actionLink: /intro/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
footer: "ECL 2.0 Licensed | Copyright © 2024 [Your Name]"
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Виконав:** 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*студент 2-го курсу, групи ІО-23:*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*Євгеній ГОЛОВАТЕНКО [ievgeniigol@gmail.com, [@yevholova](https://t.me/yevholova)]*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Керівник**
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*доцент кафедри ОТ ФІОТ, к.т.н., доцент*<span padding-right:5em></span> **Андрій БОЛДАК** 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[НТУУ "КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені ІГОРЯ СІКОРСЬКОГО](https://kpi.ua/)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Факультет інформатики та обчислювальної техніки](https://fiot.kpi.ua/)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Кафедра обчислювальної техніки](https://comsys.kpi.ua/)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Київ
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
# Висновки
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Підсумовуючи, можу сказати, що розроблений мною RESTfull-сервіс працює коректно та має деякі особливості, зокрема й повернення статусу запиту окремим параметром в JSON-документі. Такі дрібниці спрощують роботу розробникам, що використовуватимуть мою систему, а це завжди є перевагою.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Крім того, завдяки простій та зрозумілій організації даних в БД цю систему можна швидко розгорнути на серверах, а її структура дозволить додавати в проєкт нову функціональність, тому цей проєкт має потенціал стати базою для подальших розробок.
 | 
					 | 
				
			||||||
@ -1,130 +0,0 @@
 | 
				
			|||||||
# Проєктування бази даних
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## BE модель
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Account <<ENTITY>>
 | 
					 | 
				
			||||||
entity Account.username <<TEXT>>
 | 
					 | 
				
			||||||
entity Account.password <<TEXT>>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Survey <<ENTITY>>
 | 
					 | 
				
			||||||
entity Survey.name <<TEXT>>
 | 
					 | 
				
			||||||
entity Survey.duration <<TEXT>>
 | 
					 | 
				
			||||||
entity Survey.isPaused <<BOOLEAN>>
 | 
					 | 
				
			||||||
entity Survey.isNamed <<BOOLEAN>>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Question <<ENTITY>>
 | 
					 | 
				
			||||||
entity Question.text <<TEXT>>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Responce <<ENTITY>>
 | 
					 | 
				
			||||||
entity Responce.value <<TEXT>>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Link <<ENTITY>>
 | 
					 | 
				
			||||||
entity Link.usageLimit <<INT>>
 | 
					 | 
				
			||||||
entity Link.responceLimit <<INT>>
 | 
					 | 
				
			||||||
entity Link.uses <<INT>>
 | 
					 | 
				
			||||||
entity Link.responces <<INT>>
 | 
					 | 
				
			||||||
entity Link.path <<TEXT>>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Account.username --* Account
 | 
					 | 
				
			||||||
Account.password --* Account
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Survey.name --* Survey
 | 
					 | 
				
			||||||
Survey.duration --* Survey
 | 
					 | 
				
			||||||
Survey.isPaused --* Survey
 | 
					 | 
				
			||||||
Survey.isNamed --* Survey
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Link.usageLimit -u-* Link
 | 
					 | 
				
			||||||
Link.responceLimit -u-* Link
 | 
					 | 
				
			||||||
Link.uses --* Link
 | 
					 | 
				
			||||||
Link.responces --* Link
 | 
					 | 
				
			||||||
Link.path -u-* Link
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Responce.value -u-* Responce
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Question.text -u-* Question
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Account "1,1" -- "0,*" Survey
 | 
					 | 
				
			||||||
Survey "1,1" -- "0,*" Question
 | 
					 | 
				
			||||||
Question "1,1" -r- "0,*" Responce
 | 
					 | 
				
			||||||
Account "0,1" -r- "0,*" Responce
 | 
					 | 
				
			||||||
Link "0,*" -- "1,1" Survey
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@enduml
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## ER-модель
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Account <<ENTITY>> {
 | 
					 | 
				
			||||||
    id:INT
 | 
					 | 
				
			||||||
    username:CHAR(64)
 | 
					 | 
				
			||||||
    password:CHAR(256)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Responce <<ENTITY>> {
 | 
					 | 
				
			||||||
    id:INT
 | 
					 | 
				
			||||||
    value:CHAR(16384)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Question <<ENTITY>> {
 | 
					 | 
				
			||||||
    id:INT
 | 
					 | 
				
			||||||
    text:CHAR(256)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Survey <<ENTITY>> {
 | 
					 | 
				
			||||||
    id:INT
 | 
					 | 
				
			||||||
    name:CHAR(256)
 | 
					 | 
				
			||||||
    duration:CHAR(256)
 | 
					 | 
				
			||||||
    isPaused:BOOLEAN
 | 
					 | 
				
			||||||
    isNamed:BOOLEAN
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
entity Link <<ENTITY>> {
 | 
					 | 
				
			||||||
    id:INT
 | 
					 | 
				
			||||||
    uses:INT
 | 
					 | 
				
			||||||
    responces:INT
 | 
					 | 
				
			||||||
    usageLimit:INT
 | 
					 | 
				
			||||||
    responceLimit:INT
 | 
					 | 
				
			||||||
    path:CHAR(32)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Responce "0,*" --> "1,1" Question
 | 
					 | 
				
			||||||
Question "0,*" --> "1,1" Survey
 | 
					 | 
				
			||||||
Survey "0,*" --> "1,1" Account
 | 
					 | 
				
			||||||
Link "0,*" --> "1,1" Survey
 | 
					 | 
				
			||||||
Responce "0,*" --> "0,1" Account
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@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;"
 | 
					 | 
				
			||||||
>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</center>
 | 
					 | 
				
			||||||
@ -1,12 +0,0 @@
 | 
				
			|||||||
# Вступ
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
У вступі описується мета роботи і розглядається поставлене завдання з позиції її
 | 
					 | 
				
			||||||
актуальності, значення її розв’язання для тієї предметної області, до якої відноситься
 | 
					 | 
				
			||||||
тема бакалаврського проєкту. 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Коротко характеризується сучасний рівень розв’язання
 | 
					 | 
				
			||||||
даного завдання і взаємозв’язок з іншими проєктами по цій тематиці. 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Наводяться
 | 
					 | 
				
			||||||
основні технічні характеристики розробки й очікуваний технічно-економічний ефект
 | 
					 | 
				
			||||||
від її реалізації. 
 | 
					 | 
				
			||||||