Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Guardians of the Kretschmar Elock System
Doorcode
Commits
66b5995c
Commit
66b5995c
authored
Feb 10, 2020
by
Jacob Priddy
👌
Browse files
add vue project
parent
1fb10cba
Pipeline
#1203
passed with stages
in 1 minute and 42 seconds
Changes
46
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
src/web/frontend/.editorconfig
0 → 100644
View file @
66b5995c
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
src/web/frontend/.gitignore
View file @
66b5995c
node_modules/
.DS_Store
node_modules
/dist
/tests/e2e/reports/
selenium-debug.log
chromedriver.log
geckodriver.log
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
src/web/frontend/README.md
0 → 100644
View file @
66b5995c
# frontend
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Run your unit tests
```
npm run test:unit
```
### Run your end-to-end tests
```
npm run test:e2e
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See
[
Configuration Reference
](
https://cli.vuejs.org/config/
)
.
src/web/frontend/babel.config.js
0 → 100644
View file @
66b5995c
module
.
exports
=
{
presets
:
[
'
@vue/cli-plugin-babel/preset
'
]
}
src/web/frontend/package-lock.json
0 → 100644
View file @
66b5995c
This diff is collapsed.
Click to expand it.
src/web/frontend/package.json
View file @
66b5995c
{
"name"
:
"doorcode_frontend"
,
"version"
:
"0.0.1"
,
"description"
:
"The frontend for the doorcode website"
,
"main"
:
"index.js"
,
"name"
:
"frontend"
,
"version"
:
"0.1.0"
,
"private"
:
true
,
"scripts"
:
{
"serve"
:
"vue-cli-service serve"
,
"build"
:
"vue-cli-service build"
,
"test:unit"
:
"vue-cli-service test:unit"
,
"test:e2e"
:
"vue-cli-service test:e2e"
,
"lint"
:
"vue-cli-service lint"
},
"dependencies"
:
{
"vue-multiselect"
:
"^2.1.6"
"core-js"
:
"^3.6.4"
,
"vue"
:
"^2.6.11"
,
"vue-router"
:
"^3.1.5"
},
"devDependencies"
:
{},
"scripts"
:
{
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 1"
"devDependencies"
:
{
"@vue/cli-plugin-babel"
:
"~4.2.0"
,
"@vue/cli-plugin-e2e-nightwatch"
:
"~4.2.0"
,
"@vue/cli-plugin-eslint"
:
"~4.2.0"
,
"@vue/cli-plugin-router"
:
"~4.2.0"
,
"@vue/cli-plugin-unit-jest"
:
"~4.2.0"
,
"@vue/cli-service"
:
"~4.2.0"
,
"@vue/eslint-config-standard"
:
"^5.1.0"
,
"@vue/test-utils"
:
"1.0.0-beta.31"
,
"babel-eslint"
:
"^10.0.3"
,
"chromedriver"
:
"^80.0.0"
,
"eslint"
:
"^6.7.2"
,
"eslint-plugin-import"
:
"^2.20.1"
,
"eslint-plugin-node"
:
"^11.0.0"
,
"eslint-plugin-promise"
:
"^4.2.1"
,
"eslint-plugin-standard"
:
"^4.0.0"
,
"eslint-plugin-vue"
:
"^6.1.2"
,
"geckodriver"
:
"^1.19.1"
,
"lint-staged"
:
"^9.5.0"
,
"node-sass"
:
"^4.12.0"
,
"sass-loader"
:
"^8.0.2"
,
"vue-template-compiler"
:
"^2.6.11"
},
"eslintConfig"
:
{
"root"
:
true
,
"env"
:
{
"node"
:
true
},
"extends"
:
[
"plugin:vue/essential"
,
"@vue/standard"
],
"parserOptions"
:
{
"parser"
:
"babel-eslint"
},
"rules"
:
{},
"overrides"
:
[
{
"files"
:
[
"**/__tests__/*.{j,t}s?(x)"
,
"**/tests/unit/**/*.spec.{j,t}s?(x)"
],
"env"
:
{
"jest"
:
true
}
}
]
},
"browserslist"
:
[
"> 1%"
,
"last 2 versions"
],
"jest"
:
{
"preset"
:
"@vue/cli-plugin-unit-jest"
},
"repository"
:
{
"type"
:
"git"
,
"url"
:
"https://gitlab.cs.wallawalla.edu/kretschmar/doorcode.git"
"gitHooks"
:
{
"pre-commit"
:
"lint-staged"
},
"author"
:
"Jarod Owen"
,
"license"
:
"ISC"
"lint-staged"
:
{
"*.{js,jsx,vue}"
:
[
"vue-cli-service lint"
,
"git add"
]
}
}
src/web/frontend/public/favicon.ico
0 → 100644
View file @
66b5995c
4.19 KB
src/web/frontend/public/index.html
0 → 100644
View file @
66b5995c
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"utf-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1.0"
>
<link
rel=
"icon"
href=
"<%= BASE_URL %>favicon.ico"
>
<title><
%=
htmlWebpackPlugin.options.title
%
></title>
</head>
<body>
<noscript>
<strong>
We're sorry but
<
%=
htmlWebpackPlugin.options.title
%
>
doesn't work properly without JavaScript enabled. Please enable it to continue.
</strong>
</noscript>
<div
id=
"app"
></div>
<!-- built files will be auto injected -->
</body>
</html>
src/web/frontend/src/App.vue
0 → 100644
View file @
66b5995c
<
template
>
<div
id=
"app"
>
<div
id=
"nav"
>
<router-link
to=
"/"
>
Home
</router-link>
|
<router-link
to=
"/about"
>
About
</router-link>
</div>
<router-view/>
</div>
</
template
>
<
style
lang=
"scss"
>
#app
{
font-family
:
Avenir
,
Helvetica
,
Arial
,
sans-serif
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
text-align
:
center
;
color
:
#2c3e50
;
}
#nav
{
padding
:
30px
;
a
{
font-weight
:
bold
;
color
:
#2c3e50
;
&
.router-link-exact-active
{
color
:
#42b983
;
}
}
}
</
style
>
src/web/frontend/src/assets/logo.png
0 → 100644
View file @
66b5995c
6.69 KB
src/web/frontend/src/components/HelloWorld.vue
0 → 100644
View file @
66b5995c
<
template
>
<div
class=
"hello"
>
<h1>
{{
msg
}}
</h1>
<p>
For a guide and recipes on how to configure / customize this project,
<br>
check out the
<a
href=
"https://cli.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
vue-cli documentation
</a>
.
</p>
<h3>
Installed CLI Plugins
</h3>
<ul>
<li><a
href=
"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel"
target=
"_blank"
rel=
"noopener"
>
babel
</a></li>
<li><a
href=
"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router"
target=
"_blank"
rel=
"noopener"
>
router
</a></li>
<li><a
href=
"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint"
target=
"_blank"
rel=
"noopener"
>
eslint
</a></li>
<li><a
href=
"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-jest"
target=
"_blank"
rel=
"noopener"
>
unit-jest
</a></li>
<li><a
href=
"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-e2e-nightwatch"
target=
"_blank"
rel=
"noopener"
>
e2e-nightwatch
</a></li>
</ul>
<h3>
Essential Links
</h3>
<ul>
<li><a
href=
"https://vuejs.org"
target=
"_blank"
rel=
"noopener"
>
Core Docs
</a></li>
<li><a
href=
"https://forum.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
Forum
</a></li>
<li><a
href=
"https://chat.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
Community Chat
</a></li>
<li><a
href=
"https://twitter.com/vuejs"
target=
"_blank"
rel=
"noopener"
>
Twitter
</a></li>
<li><a
href=
"https://news.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
News
</a></li>
</ul>
<h3>
Ecosystem
</h3>
<ul>
<li><a
href=
"https://router.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
vue-router
</a></li>
<li><a
href=
"https://vuex.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
vuex
</a></li>
<li><a
href=
"https://github.com/vuejs/vue-devtools#vue-devtools"
target=
"_blank"
rel=
"noopener"
>
vue-devtools
</a></li>
<li><a
href=
"https://vue-loader.vuejs.org"
target=
"_blank"
rel=
"noopener"
>
vue-loader
</a></li>
<li><a
href=
"https://github.com/vuejs/awesome-vue"
target=
"_blank"
rel=
"noopener"
>
awesome-vue
</a></li>
</ul>
</div>
</
template
>
<
script
>
export
default
{
name
:
'
HelloWorld
'
,
props
:
{
msg
:
String
}
}
</
script
>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<
style
scoped
lang=
"scss"
>
h3
{
margin
:
40px
0
0
;
}
ul
{
list-style-type
:
none
;
padding
:
0
;
}
li
{
display
:
inline-block
;
margin
:
0
10px
;
}
a
{
color
:
#42b983
;
}
</
style
>
src/web/frontend/src/main.js
0 → 100644
View file @
66b5995c
import
Vue
from
'
vue
'
import
App
from
'
./App.vue
'
import
router
from
'
./router
'
Vue
.
config
.
productionTip
=
false
new
Vue
({
router
,
render
:
h
=>
h
(
App
)
}).
$mount
(
'
#app
'
)
src/web/frontend/src/router/index.js
0 → 100644
View file @
66b5995c
import
Vue
from
'
vue
'
import
VueRouter
from
'
vue-router
'
import
Home
from
'
../views/Home.vue
'
Vue
.
use
(
VueRouter
)
const
routes
=
[
{
path
:
'
/
'
,
name
:
'
Home
'
,
component
:
Home
},
{
path
:
'
/about
'
,
name
:
'
About
'
,
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component
:
()
=>
import
(
/* webpackChunkName: "about" */
'
../views/About.vue
'
)
}
]
const
router
=
new
VueRouter
({
routes
})
export
default
router
src/web/frontend/src/views/About.vue
0 → 100644
View file @
66b5995c
<
template
>
<div
class=
"about"
>
<h1>
This is an about page
</h1>
</div>
</
template
>
src/web/frontend/src/views/Home.vue
0 → 100644
View file @
66b5995c
<
template
>
<div
class=
"home"
>
<img
alt=
"Vue logo"
src=
"../assets/logo.png"
>
<HelloWorld
msg=
"Welcome to Your Vue.js App"
/>
</div>
</
template
>
<
script
>
// @ is an alias to /src
import
HelloWorld
from
'
@/components/HelloWorld.vue
'
export
default
{
name
:
'
Home
'
,
components
:
{
HelloWorld
}
}
</
script
>
src/web/frontend/tests/e2e/.eslintrc.js
0 → 100644
View file @
66b5995c
module
.
exports
=
{
rules
:
{
'
no-unused-expressions
'
:
'
off
'
}
}
src/web/frontend/tests/e2e/custom-assertions/elementCount.js
0 → 100644
View file @
66b5995c
/**
* A custom Nightwatch assertion. The assertion name is the filename.
*
* Example usage:
* browser.assert.elementCount(selector, count)
*
* For more information on custom assertions see:
* https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-assertions
*
*
* @param {string|object} selectorOrObject
* @param {number} count
*/
exports
.
assertion
=
function
elementCount
(
selectorOrObject
,
count
)
{
let
selector
// when called from a page object element or section
if
(
typeof
selectorOrObject
===
'
object
'
&&
selectorOrObject
.
selector
)
{
// eslint-disable-next-line prefer-destructuring
selector
=
selectorOrObject
.
selector
}
else
{
selector
=
selectorOrObject
}
this
.
message
=
`Testing if element <
${
selector
}
> has count:
${
count
}
`
this
.
expected
=
count
this
.
pass
=
val
=>
val
===
count
this
.
value
=
res
=>
res
.
value
function
evaluator
(
_selector
)
{
return
document
.
querySelectorAll
(
_selector
).
length
}
this
.
command
=
cb
=>
this
.
api
.
execute
(
evaluator
,
[
selector
],
cb
)
}
src/web/frontend/tests/e2e/custom-commands/customExecute.js
0 → 100644
View file @
66b5995c
/**
* A very basic Nightwatch custom command. The command name is the filename and the
* exported "command" function is the command.
*
* Example usage:
* browser.customExecute(function() {
* console.log('Hello from the browser window')
* });
*
* For more information on writing custom commands see:
* https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-commands
*
* @param {*} data
*/
exports
.
command
=
function
command
(
data
)
{
// Other Nightwatch commands are available via "this"
// .execute() inject a snippet of JavaScript into the page for execution.
// the executed script is assumed to be synchronous.
//
// See https://nightwatchjs.org/api/execute.html for more info.
//
this
.
execute
(
// The function argument is converted to a string and sent to the browser
function
(
argData
)
{
return
argData
},
// The arguments for the function to be sent to the browser are specified in this array
[
data
],
function
(
result
)
{
// The "result" object contains the result of what we have sent back from the browser window
console
.
log
(
'
custom execute result:
'
,
result
.
value
)
}
)
return
this
}
src/web/frontend/tests/e2e/custom-commands/openHomepage.js
0 → 100644
View file @
66b5995c
/**
* A basic Nightwatch custom command
* which demonstrates usage of ES6 async/await instead of using callbacks.
* The command name is the filename and the exported "command" function is the command.
*
* Example usage:
* browser.openHomepage();
*
* For more information on writing custom commands see:
* https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-commands
*
*/
module
.
exports
=
{
command
:
async
function
()
{
// Other Nightwatch commands are available via "this"
// .init() simply calls .url() command with the value of the "launch_url" setting
this
.
init
()
this
.
waitForElementVisible
(
'
#app
'
)
const
result
=
await
this
.
elements
(
'
css selector
'
,
'
#app ul
'
)
this
.
assert
.
strictEqual
(
result
.
value
.
length
,
3
)
}
}
src/web/frontend/tests/e2e/custom-commands/openHomepageClass.js
0 → 100644
View file @
66b5995c
/**
* A class-based Nightwatch custom command which is a variation of the openHomepage.js command.
* The command name is the filename and class needs to contain a "command" method.
*
* Example usage:
* browser.openHomepageClass();
*
* For more information on writing custom commands see:
* https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-commands
*
*/
const
assert
=
require
(
'
assert
'
)
module
.
exports
=
class
{
async
command
()
{
// Other Nightwatch commands are available via "this.api"
this
.
api
.
init
()
this
.
api
.
waitForElementVisible
(
'
#app
'
)
const
result
=
await
this
.
api
.
elements
(
'
css selector
'
,
'
#app ul
'
)
assert
.
strictEqual
(
result
.
value
.
length
,
3
)
}
}
Prev
1
2
3
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment